SORU
26 Mayıs 2010, ÇARŞAMBA


Neden boş >= 0 && null <= 0` ama ` = = 0`null değil mi?

Kaldım yazmak için rutin aralıklarla değer bir değişken tarafından 1 türü number ve atar 0 değişken değilse, nerede bu değişken başlangıçta null undefined.

İlk uygulama bir sayıyı aritmetik bir ifade yanlış olmaz hiçbir şey düşündüğüm için v >= 0 ? v = 1 : v = 0 ama null >= 0 true olarak değerlendirilir beri yanlıştı. Sonra null 0 gibi davranır öğrendim ve aşağıdaki ifadeleri doğru olarak değerlendirilir.

  • null >= 0 && null <= 0
  • !(null < 0 || null > 0)
  • null 1 === 1
  • 1 / null === Infinity
  • Math.pow(42, null) === 1

Tabii ki, null 0. null == 0 yanlış olarak değerlendirilir. Bu görünüşte tautological ifade (v >= 0 && v <= 0) === (v == 0) yanlış yapar.

Neden aslında 0 olmasa da 0, 17**?

CEVAP
26 Mayıs 2010, ÇARŞAMBA


Gerçek soru gibi görünüyor:

Neden:

null >= 0; // true

Ama:

null == 0; // false

Gerçekte olan şey buDaha büyük-daha-veya-eşit Operatörü(>=), gerçekleştirir tür zorlama (ToPrimitive), biripucuNumber aslında tüm ilgili operatörler, bu tür bir davranışı var.

The Abstract Relational Comparison Algorithm bu sürecin iç detayları görebilirsiniz.

null tarafından özel bir şekilde tedavi edilirOperatör Eşittir(==). Kısa sadecekullanmaya zorlar25**:

null == null; // true
null == undefined; // true

false, '', '0', ve [] gibi değer sayısal tür zorlama tabi, hepsi sıfır koşuyorlar.

The Abstract Equality Comparison Algorithm bu sürecin iç detayları görebilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008