国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript中判斷一個值是否為undefined的方法詳解

2019-11-20 08:51:30
字體:
供稿:網(wǎng)友

前言

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

簡單來說,在現(xiàn)代瀏覽器中,你可以安全的比較變量是否為undefined

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

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

undefined = "test"

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

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

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

在現(xiàn)代瀏覽器中,undefined的值將不能被重寫

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

通常undefined指令是安全的。在應(yīng)用中并沒有什么理由需要修改undefined的值。

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

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

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

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

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

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

另外一種選擇,你可以使用typeof操作符安全地檢查是否已經(jīng)被賦值。你可以檢查一個值的類型是否為”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;}

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

總結(jié)

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 谢通门县| 静安区| 华坪县| 遂宁市| 上栗县| 伊金霍洛旗| 克东县| 新泰市| 辛集市| 株洲市| 红桥区| 陈巴尔虎旗| 孝昌县| 辽阳市| 高清| 雷州市| 察哈| 林甸县| 宝应县| 庆元县| 文水县| 额济纳旗| 巫溪县| 桐乡市| 宁化县| 额敏县| 山阴县| 马龙县| 囊谦县| 黄石市| 卓资县| 喀喇沁旗| 黑龙江省| 葫芦岛市| 哈巴河县| 星子县| 兴国县| 五原县| 治多县| 英德市| 龙泉市|