DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript中判斷一個值是否為undefined的方法詳解
Javascript中判斷一個值是否為undefined的方法詳解
編輯:關於JavaScript     

前言

相信大家都知道當聲明一個變量,並且沒有給賦值的情況下,它的初始值是undefined。但是在javascript中,怎麼檢查一個值是否為undefined呢?

簡單來說,在現代浏覽器中,你可以安全的比較變量是否為undefined

if (name === undefined) {...}

一些人反對直接使用undefined變量進行比較,因為在舊的浏覽器中允許它的值被重新賦值,比如下面這樣:

undefined = "test"

在被重新賦值後,使用undefined指令將不能正確的檢測一個變量是否被賦值。

不過,這個行為在2009年的ECMAScript 5被修復了。

15.1.1.3 undefined
The value of undefined is undefined (see 8.1). This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.

在現代浏覽器中,undefined的值將不能被重寫

我們需要支持IE8或者更古老的浏覽器怎麼辦

通常undefined指令是安全的。在應用中並沒有什麼理由需要修改undefined的值。

Thomas的回答使用具有說服力的推理,論證了這一點。

I don't hear people telling me that I shouldn't use setTimeout because someone can
我不聽別人告訴我,我不應該使用setTimeout,因為有的人像這樣用:
window.setTimeout = function () {
  alert("Got you now!");
};

下面一行,“它可以被重新賦值”,raw === undefined返回false

如果你仍然很在意,有兩個方法可以檢查一個值是否為undefined,即使全局window.undefined已經被重寫

if (name === void(0)) {...}

在這個例子中0沒有任何實際意義,你想要使用 1 or function(){}也無所謂。 void(anything)都會計算得到undefiend

另外一種選擇,你可以使用typeof操作符安全地檢查是否已經被賦值。你可以檢查一個值的類型是否為”undefined”代替與全局的undefined比較.

if (typeof name === "undefined") {...}

注意第二個選擇與前一個方案稍微有點差異.盡管name沒有被聲明,typeof會返回他是undefined。如果你直接使用name與undefinedor void(0)你會得到ReferenceError異常的錯誤.

但是不要使用VOID(0)指令

在代碼中避免使用void(0)或者 typeof x === "undefined" ,你可以使用isUndefined function方法把他們包起來,這樣你使用的時候就不用再特意說明了.

function isUndefined(value){
  //獲得undefined,保證它沒有被重新賦值
  var undefined = void(0);
  return value === undefined;
}

一些工具庫已經部署了這個方法,例如: _.isUndefinedunderscore中的isUndefined方法

總結

以上就是這篇文章的全部內容了,希望能對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved