常見的有三種比較 undefined 的方法,看代碼
var test1 = (function(undefined) { return function() { var value; // undefined
console.log("test1", value === undefined);
};
})("hello");var test2 = (function(undefined) { return function() { var value; // undefined
console.log("test2", typeof (value) === "undefined");
};
})("hello");var test3 = (function(undefined) { return function() { var value; // undefined
console.log("test3", value === void (0));
};
})("hello");
test1();
test2();
test3();
由于 javascript 的 undefined 是可以重定義的,所以上面的代碼模擬了 undefined 被重新定義了的情況,結果可以看到 value === undefined 判斷出錯了。另外兩種辦法,其實差不多,不過明顯 value === void(0) 寫的字要少些,懶人可選!
注:上面的代碼都是在 value 變量被定義了的情況。如果連變量都沒定義,只有 typeof(value) 不會拋異常出來。