2009-06-23 93 views
1

考慮以下代碼:變量作爲屬性在JavaScript

<script type="text/javascript"> 
    if ('mySuperProperty' in window) 
    { 
    alert(window['mySuperProperty']); 
    } 
    var mySuperProperty = 1; 
</script> 

條件的if語句的計算結果爲真實的,即使mySuperProperty尚未設定。爲什麼?

Try it yourself的JS代碼被第一解析和分析

我從http://dfilatov.blogspot.com/2009/04/javascript.html(俄羅斯)

+1

爲什麼不檢查window.mySuperProperty?更短,更可讀的imo。 – anddoutoi 2009-06-23 07:25:26

+0

這是包裹在一個函數中,或簡單地在

1

表述「window.mySuperProperty」檢查mySuperProperty的值,它是在警報未定義

在另一方面mySuperProperty在窗口如果檢查窗口具有mySuperProperty的時間,在整個窗口命名空間中檢查(在每個屬性名稱設置後)。

THEREFOR,

如果(在窗口 'mySuperProperty')返回true>變量存在,但是沒有值尚未 如果(window.mySuperProperty)返回false> undefined是一個Falsy值。