SORU
8 HAZİRAN 2012, Cuma


Neden ("deneme" === new String("deneme")) JavaScript yanlış değerlendirmesi?

String değerleri karşılaştırırken === (üçlü, sıkı karşılaştırma eşittir) kullanarak her zaman başlatmak için gidiyordu, ama şimdi görüyorum

"foo" === new String("foo")

yanlış, ve bu da aynı

var f = "foo", g = new String("foo");
f === g; // false

Tabii ki:

f == g; // true

Bu yüzden her zaman tavsiye == dize karşılaştırma için, ya da her zaman karşılaştırma önce dizelere değişkenleri dönüştürmek için mi kullanacaksın?

CEVAP
8 HAZİRAN 2012, Cuma


"foo" bir dizeilkel. (bu kavramı C yok# ya da Java)

new String("foo") kutulu string nesne.

=== operatör behaves differently on primitives and objects.
Karşılaştırma ilkel (aynı türden), === eğer ikisi de aynı değere sahip ise true döndürür.

Nesne aynı nesne (referans ile karşılaştırma) ifade ederse yalnızca doğru döndürecektir karşılaştırırken. Böylece, new String("a") !== new String("a").

, === sizin durumunuzda döner işlenen farklı türleri vardır çünkü yanlış (bir ilkel ve başka bir nesne).


İlkel tüm nesneler değildir.
typeof operatör temel öğeler için "object" döndürmez.

Bir ilkel bir özellik (bir nesne olarak kullanarak) erişmeye çalıştığınızda, Javascript dili bir nesne için yeni bir nesne her zaman oluşturma kutusu. Bu specification açıklanmıştır.

Bu temel öğeler koymak özelliklerini kullanamazsınız nedeni budur:

var x = "a";
x.property = 2;
alert(x.property) //undefined

Her zaman x.property bir yazarsınızfarklıString kutulu nesne oluşturulur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • jat4011

    jat4011

    16 EKİM 2010
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011