2015-07-28 43 views
0

我要檢查,如果一個變量在使用之前定義的,所以我寫了這樣的事情使用Javascript - 如果變量沒有定義

if(!variable){ 
    return null; 
} 

但它拋出一個錯誤

ReferenceError: variable is not defined

如果條件我這樣做

if(typeof variable === 'undefined'){ 
    return null; 
} 

它按預期工作。

這些方法與爲什麼它在第一個示例中沒有返回null的區別是什麼,但它是否因錯誤而死亡?

+3

可能重複[在'未定義'和'未定義'之間的Javascript有什麼區別?](http://stackoverflow.com/questions/833661/what-is-the-difference-in-javascript-between -dedefined-and-not-defined) –

+1

你正在使用變量而沒有定義它。變量的值是未知的。 Javascript不允許我們這樣做。 – Kenny

回答

2

!variable被評估時,它試圖獲得變量的值,如per spec將拋出ReferenceError。

但是調用typeof最初不會嘗試獲取變量的值,而是會檢查傳入的表達式是否爲引用,如果是,則檢查它是否可以解析,如果返回undefined