typeof
Cevapların bolluğuna bir alternatif ;
Globalvar varname = value;
kapsamda ifade ile beyan edilen global değişkenler
pencere nesnesinin özellikleri olarak erişilebilir.
Gibi, hasOwnProperty()
yöntem, hangi
nesnenin belirtilen özelliği kendi özelliği olarak (devralma yerine) olup olmadığını gösteren bir boole döndürür
olup olmadığını belirlemek için kullanılabilir
Bir var
ait "varName" küresel ilan edilmiştir , yani bir özelliktir window
.
// Globally established, therefore, properties of window
var foo = "whatever", // string
bar = false, // bool
baz; // undefined
// window.qux does not exist
console.log( [
window.hasOwnProperty( "foo" ), // true
window.hasOwnProperty( "bar" ), // true
window.hasOwnProperty( "baz" ), // true
window.hasOwnProperty( "qux" ) // false
] );
Hakkında harika olan şey hasOwnProperty()
, onu çağırırken, henüz bildirilmemiş olan bir değişkeni kullanmamamızdır - ki bu da sorunun ilk etapta yarısıdır.
Olmasa da hep de mükemmel ya İdeal çözelti, bazı durumlarda, sadece iş!
notlar
Kullanırken, yukarıda doğru var
değişken tanımlamak aksine, let
burada:
isteğe bağlı olarak bir değere başlatan bir blok kapsamı yerel değişkeni bildirir.
var
blok kapsamından bağımsız olarak bir değişkeni global olarak veya yerel olarak tüm bir işleve tanımlayan anahtar kelimeden farklıdır .
En üst düzeyde programlar ve işlevler let
, aksine var
, genel nesne üzerinde bir özellik oluşturmaz.
Tamlık için: const
sabitler, tanım gereği, aslında değişken değildir (içerikleri olmasına rağmen); daha alakalı olarak:
Genel sabitler, var
değişkenlerin aksine, pencere nesnesinin özellikleri haline gelmez . Bir sabit için bir başlatıcı gereklidir; yani, değerini bildirildiği ifadeyle belirtmeniz gerekir.
Bir sabitin değeri, yeniden atama yoluyla değiştirilemez ve yeniden belirtilemez.
Sabit bildirimi bir değere salt okunur bir başvuru oluşturur. Sahip olduğu değerin değişmez olduğu anlamına gelmez, sadece değişken tanımlayıcının yeniden atanamayacağı anlamına gelir.
Yana let
değişkenler ya da const
sabitler miras kalan herhangi bir nesnenin özellikleri asla hasOwnProperty()
yöntemi, onların varlığını kontrol etmek üzere kullanılamaz.
Kullanılabilirliği ve kullanımı ile ilgili olarak hasOwnProperty()
:
Soyundan Her nesne Nesne devralır hasOwnProperty()
yöntemi. [...] in
operatörün aksine , bu yöntem nesnenin prototip zincirini kontrol etmez.
foo
beyan edilip edilmediğini bilmek istiyorsanıztypeof foo === 'undefined'
veyatypeof foo === typeof undefined