typeofCevapları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 varait "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 vardeğişken tanımlamak aksine, letburada:
isteğe bağlı olarak bir değere başlatan bir blok kapsamı yerel değişkeni bildirir.
varblok 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, vardeğ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 letdeğişkenler ya da constsabitler 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. [...] inoperatörün aksine , bu yöntem nesnenin prototip zincirini kontrol etmez.
foobeyan edilip edilmediğini bilmek istiyorsanıztypeof foo === 'undefined'veyatypeof foo === typeof undefined