SORU
16 Mayıs 2014, Cuma


Neden !!1=="1" eşit ve doğru !!2=="2" eşit yanlış?

Başlık devletler gibi, neden:

> !!1=="1"

eşit

True

ve

> !!2=="2"

eşit:

False

Aynı şekilde, neden > "1"==true true > "2"==true eşit false eşit oluyor

Çok şaşırdım. Bu sadece ya neler oluyor JS hataları burada?

CEVAP
16 Mayıs 2014, Cuma


Operator precedence kurallar ! mantıksal olarak başına == aşırı yüksek önceliğe sahiptir. Yani, her iki durumda da, !! ilk olarak değerlendirilir.

Not:Çeşitli nesneler Truthiness benim this answer ifade edilmiştir.

İlk Vaka

!!1 == "1"

!1 1 Truthy olmasından dolayı, 24**, değerlendirilecek. Biz yine inkar true. İfade olur

true == "1"

Şimdi, zorlama kuralları The Abstract Equality Comparison Algorithm ECMA 5.1 şartnamede başı olarak değerlendirir 28 ** operatör,, kullandığınız gibi tekme

6. Type(x) Boolean karşılaştırma sonucu ToNumber(x) == y dönüş.

Yani, true ToNumber algorithm for Boolean values başına 1 olan bir dizi dönüştürülür. Şimdi ifade olur

1 == "1"

Şimdi

4. Type(x) Number Type(y) Stringise, karşılaştırma sonucu x == ToNumber(y) dönüş.

Yani "1" bir numara çevrilir ve 1, ToNumber algorithm başı olarak verecektir. İlk durumda true gösteriyor.

İkinci Vaka

Aynı kurallar burada da geçerli.

!!2 == "2"

olur

true == "2"

sonra

1 == "2"

olur

1 == 2

ikinci dava false parmak izi neden olduğunu true, değildir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • Jonathan D.

    Jonathan D.

    3 Kasım 2006
  • TheRightTire

    TheRightTire

    14 EKİM 2009