2012-12-27 32 views
6

Her zaman JavaScript'in dahili olarak null değerlerini nasıl depoladığını merak ettim. null, herhangi bir değerden farklıdır. Kapsamın değişkenlerinin bir yapı dizisi, her yapı bir değişkene karşılık gelen bir şekilde saklandığını hayal ediyorum. Bu yapının "null" adlı bir tür boolean özelliği var mı?JavaScript null değerlerini dahili olarak nasıl saklar?

Kendimi V8 kaynak kodunda bunun için olmazdı, ama oldukça

Google'da bir şey bulamadı. Sonuçların çoğu gibi sorulara ile ilgili idi "Nasıl C++ kodunda :(kaybolduğum am Değişkenin tanımsız veya boş olup olmadığını belirleme "veya benzer.

+3

Muhtemelen tercümana bağlıdır, ancak bunun sıfırdan farklı bir şey olduğunu öğrenmeye şaşırabilirdim. Bu gerçekten önemli bir detay değil. – Pointy

+1

Birkaç "falsy" değeri olduğunu unutmayın: null, undefined, false, 0, vb. Daha büyük olasılıkla, her değişkendeki değerin null, undefined, number, a olup olmadığını belirten bir "type" alanı vardır. boolean, bir nesne, vb. – cdhowie

+0

@Pointy Elbette, tercümana bağlıdır. Boş değerleri sıfır olarak saklarsa neden '(null === 0)' 'false'ı döndürür? –

cevap

3

Zayıf yazılmış bir betik dili olan JavaScript, muhtemelen her türdeki değerleri destekleyen bir varyant türüne sahiptir. PHP'nin aynı tür değişkenleri kullandığını Diğer dillerde de biliniyorlar ve COM otomasyonunda önemli bir rol oynasa da,

Bir tür ve bir değer içeren müttefik yapıları. Değer basit bir değer veya daha büyük veya daha karmaşık bir değere işaretçi olabilir. null, desteklenen türlerden yalnızca biridir, bu durumda değerin kendisi hiçbir rol oynamaz.

Fakat JavaScript birçok çevirmene hitap ettiğinden, nasıl uygulandığına dair bir kural yoktur ve endişelenmeniz gereken bir şeydir. Normalde, yalnızca JavaScript'te yazılmaması gereken, kritik önem taşıyan uygulamalar için böyle temel teknikler hakkında bilgi sahibi olmanız gerekir.

+2

'null', ayrı bir tür değil; Nesne referans değerleri için boş değerdir. – Pointy

+0

Yaygın olarak bilinen varyant kayıtlarındaki uygulama hakkında konuşuyordum. Javascript, "null" ı özel bir nesne türü olarak tanımlayabilir, ancak içsel olarak aslında bir nesne olduğuna şüphe duyuyorum. – GolezTrol

+1

@Pointy ('typeof (null) '' '' '' '' '' '' 'döndürdüğüne biraz şaşırmış olmamıza rağmen. –

İlgili konular