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

首頁 > 語言 > JavaScript > 正文

JavaScript中的null和undefined區別介紹

2024-05-06 16:13:28
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript中的null和undefined區別介紹,JavaScript中存在2個代表信息不存在的特殊值:null和undefined,本文主要講解它們的區別,需要的朋友可以參考下
 
 

JavaScript中存在2個代表信息不存在的特殊值:null和undefined。個人認為可以從以下角度來理解這兩個特殊值之間的區別:

 

1.null代表有存儲信息的容器(比如之前被賦過值的變量),但該容器中的內容為空。
2.undefined代表不存在用于存儲信息的容器。

 

JavaScript中的null與其它多數編程語言中的null沒有什么區別,基本用于表示信息值為空;而在JavaScript中下述情況下表達式返回結果為undefined:

 

1.從未被賦過值的變量。
2.訪問某個對象不存在的屬性值。
3.訪問數組中不存在的成員。
4.調用沒有return語句的函數。
5.調用return語句為空(“return ;”)的函數。

 

事實上,和Infinity、NaN一樣,undefined在JavaScript中是一個全局變量,在ECMAScript 3中甚至可以被賦予其它值。ECMAScript 5糾正了這個錯誤,并將undefined變量設定為只讀。

 

對于null和undefined之間的比較,可以使用===全等操作符。如果使用普通的==操作符,null與undefined是等價的:

 

復制代碼代碼如下:

console.log(null == undefined);//true
console.log(null === undefined);//false

 


在程序編寫過程中,如果需要對某個變量賦以空值,一般使用null而不是undefined。其原因在于:

 

1.undefined一般認為是屬于系統層面的、報錯層面的信息缺失。
2.null一般認為是屬于編程層面的、邏輯操作層面的信息值為空。

 

如果在程序中涉及類型轉換,那么當轉換為number類型時,null和undefined的結果是不一樣的:

 

1.undefined轉換為number的結果是NaN。
2.null轉換為number的結果是0。

 

值得一提的是,空字符串和空數組轉換成number后的結果也是0。

至于JavaScript中為什么要設計兩個表示“沒有”的值,可以參見阮一峰的博客文章。

 

實驗

 

在下述實驗代碼中,表達式結果均為undefined:

復制代碼代碼如下:

var a;
console.log(a);

 

function Sample(x){
  this.x = x;
}
var s = new Sample();
console.log(s.x)
console.log(s.notExistVariable);

var n = [2,3,4];
console.log(n[8]);

function test(){
  //no return value for this function
}
console.log(test());

function test2(){
  return;
}
console.log(test2());


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 灵川县| 板桥市| 新晃| 连南| 南丹县| 留坝县| 桂东县| 滦南县| 星子县| 汝南县| 上思县| 广水市| 富川| 瓦房店市| 全南县| 通化县| 墨竹工卡县| 娄烦县| 平安县| 洪雅县| 宝应县| 蓬安县| 武功县| 石柱| 碌曲县| 观塘区| 建阳市| 南昌县| 赞皇县| 昌吉市| 景宁| 肇东市| 涟水县| 海门市| 青阳县| 河东区| 九寨沟县| 麻城市| 阜新市| 茂名市| 广西|