亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年09月28日 09:57:56   投稿:daisy  
這篇文章給大家詳細(xì)介紹了在Javascript中如何判斷一個值是否為undefined,對大家的日常工作和學(xué)習(xí)很有幫助,下面來一起看看吧。

前言

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

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

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

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

undefined = "test"

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

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

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 }.

在現(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)部署了這個方法,例如: _.isUndefined,underscore中的isUndefined方法

總結(jié)

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

相關(guān)文章

  • 微信小程序自定義導(dǎo)航的方法

    微信小程序自定義導(dǎo)航的方法

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義導(dǎo)航的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 詳解數(shù)組Array.sort()排序的方法

    詳解數(shù)組Array.sort()排序的方法

    JavaScript中數(shù)組的sort()方法主要用于對數(shù)組的元素進(jìn)行排序。其中,sort()方法有一個可選參數(shù)。接下來通過本文給大家介紹數(shù)組Array.sort()排序的方法,需要的朋友參考下
    2017-03-03
  • JavaScript 類型轉(zhuǎn)換的詳細(xì)實現(xiàn)

    JavaScript 類型轉(zhuǎn)換的詳細(xì)實現(xiàn)

    本文主要介紹了JavaScript 類型轉(zhuǎn)換的詳細(xì)實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 將CKfinder整合進(jìn)CKEditor3.0的新方法

    將CKfinder整合進(jìn)CKEditor3.0的新方法

    最新發(fā)布的CKFinder 1.4版 已經(jīng)提供了對CKEditor3.0的支持
    2010-01-01
  • js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果

    js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果

    這篇文章主要介紹了js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果,本文通過實例代碼給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • TypeError document.getElementById(...) is null錯誤原因

    TypeError document.getElementById(...) is null錯誤原因

    這篇文章主要介紹了TypeError document.getElementById(...) is null錯誤原因,這是很容易犯的一個低級錯誤,需要的朋友可以參考下
    2015-05-05
  • 詳解layui?laydate選擇時間的回調(diào)方法

    詳解layui?laydate選擇時間的回調(diào)方法

    這篇文章主要介紹了layui?laydate選擇時間的回調(diào)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • JavaScript setInterval()與setTimeout()計時器

    JavaScript setInterval()與setTimeout()計時器

    這篇文章主要介紹了JavaScript setInterval()與setTimeout()計時器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • javascript簡易緩動插件(源碼打包)

    javascript簡易緩動插件(源碼打包)

    最近,同事在做一個項目的時候,有個需求,需要一款動畫庫來支持
    2012-02-02
  • Javascript非構(gòu)造函數(shù)的繼承

    Javascript非構(gòu)造函數(shù)的繼承

    本文給大家介紹的是不使用構(gòu)造函數(shù)實現(xiàn)"繼承",非常的簡單,小伙伴們仔細(xì)了解下就可以非常熟悉了。
    2015-04-04

最新評論