js判斷一個變數是否已經宣告或者宣告未賦值

antzone發表於2017-03-21

一個變數無非由三種狀態:

1.變數沒有宣告。

2.變數宣告未賦值。

3.變數宣告且賦值。

在網上有一段比較常用的程式碼,如下:

[JavaScript] 純文字檢視 複製程式碼
if(typeof(a)=='undefined'){
  var a="antzone";
}

但是上面的程式碼只能夠判斷並不能明確區分變數是否是未宣告還是宣告未賦值,因為如果變數宣告和變數宣告未賦值,typeof運算子的返回值都是undefined。下面是一段能夠實現此功能的程式碼,如下:

[JavaScript] 純文字檢視 複製程式碼
function func(){ 
  if(typeof(v)=='undefined'){ 
    try{ 
      if(v==null)//說明v是已宣告未賦值 
      v=1; //如果v是全域性變數,這樣不會改變它的作用域 
    } 
    catch(err){//說明v是未宣告 
      eval('var v');v=2; //這裡不一樣 
    } 
  } 
  console.log(v); 
} 
func();

相關文章