欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 中null和undefined區(qū)分和比較

 更新時間:2017年04月19日 16:55:42   投稿:lqh  
這篇文章主要介紹了javascript 中null和undefined區(qū)分和比較的相關資料,需要的朋友可以參考下

javascript 中null和undefined區(qū)分和比較

Undefined類型

Undefined 類型只有一個值,即特殊 undefined 。在使用 var 聲明變量但未對其加以初始化時,這個變量的值就是 undefined ,

例如:

var message;
alert(message == undefined); //true

這個例子只聲明了變量 message ,但未對其進行初始化。比較這個變量與 undefined 字面量,結果表明它們是相等的。這個例子與下面的例子是等價的:

var message = undefined;
alert(message == undefined); //true

這個例子使用 undefined 值顯式初始化了變量message 。但我們沒有必要這么做,因為未經初始化的值默認就會取得 undefined 值。

一般而言,不存在需要顯式地把一個變量設置為undefined 值的情況。字面值 undefined 的主要目的是用于比較,而ECMA-262第3版之前的版本中并沒有規(guī)定這個值。第3版引入這個值是為了正式區(qū)分空對象指針與未經初始化的變量。

不過,包含 undefined 值的變量與尚未定義的變量還是不一樣的。看看下面這個例子:

 var message; // 這個變量聲明之后默認取得了undefined值
// 下面這個變量并沒有聲明
// var age  
alert(message);  // "undefined"
alert(age);  // 產生錯誤

運行以上代碼,第一個警告框會顯示變量message 的值,即 “undefined” 。而第二個警告框——由于傳遞給 alert() 函數的是尚未聲明的變量age ——則會導致一個錯誤。對于尚未聲明過的變量,只能執(zhí)行一項操作,即使用 typeof 操作符檢測其數據類型(對未經聲明的變量調用delete 不會導致錯誤,但這樣做沒什么實際意義,而且在嚴格模式下確實會導致錯誤)。

然而,令人困惑的是:對未初始化的變量執(zhí)行typeof 操作符會返回 undefined 值,而對未聲明的變量執(zhí)行typeof操作符同樣也會返回undefined值。來看下面的例子:

var message; // 這個變量聲明之后默認取得了undefined值
// 下面這個變量并沒有聲明 
// var age
alert(typeof message);  // "undefined" 
alert(typeof age);  // "undefined"

結果表明,對未初始化和未聲明的變量執(zhí)行 typeof 操作符都返回了 undefined 值;這個結果有 其邏輯上的合理性。因為雖然這兩種變量從技術角度看有本質區(qū)別,但實際上無論對哪種變量也不可能執(zhí)行真正的操作。

提示:

即便未初始化的變量會自動被賦予undefined值,但顯式地初始化變量依然是明智的選擇。如果能夠做到這一點,那么當typeof操作符返回”undefined”值時,我們就知道被檢測的變量還沒有被聲明,而不是尚未初始化。

Null類型

Null 類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯角度來看, null 值表示一個 空對象指針 ,而這也正是使用 typeof 操作符檢測 null 值時會返回 “object” 的原因,如下面的例子所示:

 var car = null;
 alert(typeof car);  // "object"

如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為 null 而不是其他值。這樣一來,只要直接檢查null值就可以知道相應的變量是否已經保存了一個對象的引用,如下面的例子所示:

if (car != null){
// 對car對象執(zhí)行某些操作
}
實際上,undefined值是派生自null值的,因此ECMA-262規(guī)定對它們的相等性測試要返回true:
alert(null == undefined);  //true

這里,位于 null 和 undefined 之間的相等操作符(==)總是返回 true ,不過要注意的是,這個操作符出于比較的目的會轉換其操作數,盡管null 和 undefined 有這樣的關系,但它們的用途完全不同。如前所述,無論在什么情況下都沒有必要把一個變量的值顯式地設置為 undefined,可是同樣的規(guī)則對 null 卻不適用。換句話說,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存 null 值。這樣做不僅可以體現null 作為空對象指針的慣例,而且也有助于進一步區(qū)分 null 和 undefined。

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • JavaScript判斷變量是否為undefined的兩種寫法區(qū)別

    JavaScript判斷變量是否為undefined的兩種寫法區(qū)別

    這篇文章主要是對JavaScript判斷變量是否為undefined的兩種寫法區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • js實現淡入淡出輪播切換功能

    js實現淡入淡出輪播切換功能

    本文主要分享了javascript實現淡入淡出輪播切換功能的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • JS實現百度搜索框關鍵字推薦

    JS實現百度搜索框關鍵字推薦

    這篇文章主要為大家詳細介紹了JS實現百度搜索框關鍵字推薦,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • js全選按鈕的實現方法

    js全選按鈕的實現方法

    在我們進行項目選擇時,會出現選擇多個項目或者是項目實現全選,這樣的功能如何實現吶,本文給出了js實現checkbox全選的詳細代碼,希望大家喜歡。
    2015-11-11
  • JS實現購物車中商品總價計算

    JS實現購物車中商品總價計算

    這篇文章主要為大家詳細介紹了JS實現購物車中商品總價的計算 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • javascript 最常用的10個自定義函數[推薦]

    javascript 最常用的10個自定義函數[推薦]

    如果不使用類庫或者沒有自己的類庫,儲備一些常用函數總是有好處的。
    2009-12-12
  • javaScript中slice函數用法實例分析

    javaScript中slice函數用法實例分析

    這篇文章主要介紹了javaScript中slice函數用法,較為詳細的分析了javascript中slice函數的功能、定義及使用方法,需要的朋友可以參考下
    2015-06-06
  • 淺析C/C++,Java,PHP,JavaScript,Json數組、對象賦值時最后一個元素后面是否可以帶逗號

    淺析C/C++,Java,PHP,JavaScript,Json數組、對象賦值時最后一個元素后面是否可以帶逗號

    這篇文章主要介紹了淺析C/C++,Java,PHP,JavaScript,Json數組、對象賦值時最后一個元素后面是否可以帶逗號的相關資料,需要的朋友可以參考下
    2016-03-03
  • Webpack?ECMAScript?模塊詳解

    Webpack?ECMAScript?模塊詳解

    ECMAScript 模塊(ESM)是在 Web 中使用模塊的規(guī)范, 所有現代瀏覽器均支持此功能,同時也是在 Web 中編寫模塊化代碼的推薦方式,這篇文章主要介紹了Webpack?ECMAScript?模塊,需要的朋友可以參考下
    2023-12-12
  • 詳解uniapp頁面跳轉URL傳參大坑

    詳解uniapp頁面跳轉URL傳參大坑

    本文主要介紹了詳解uniapp頁面跳轉URL傳參大坑,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論