JavaScript中表示空的undefined與null的差異及用法
我剛開始學習JavaScript的時候
就覺得undefined挺新鮮
因為其他語言沒有
而且不只有undefined,居然還有一個表示空的null
我相信很多同學都說不出來undefined與null有什麼區別
今天我就總結一下JavaScript中表示空的undefined與null的區別
相似
undefined和null都是JavaScript中的基本型別
而且它們的型別值各只有一個,就是undefined和null,與它們的型別同名
正常來說,這兩個值看起來還真沒什麼差別
var foo = undefined;
var foo = null;
#而且標準還有這樣的規定
console.log(null == undefined) // true
(但是null !== undefined
)
轉換為布林值都是false
if(!undefined){ console.log(1);//1}if(!null){ console.log(1);//1}
區別
但其實,有差別
先來看看這幾行程式碼
console.log(undefined in window);// trueconsole.log(null in window);// false
這是其中不同的一點
null是JavaScript的關鍵字
而undefined是window上的一個特殊的的屬性(和NaN、Infinity一樣)
雖然ES5undefined變成只讀屬性,但是仍然有不合理的地方,比如說這樣
function fn(){ var undefined = 1;// 注意:前方高能 console.log(undefined);// 1} fn();
看吧,因為undefined不是關鍵字,所以我們可以在局部變數中宣告undefined(簡直無語)
即便你是嚴格模式
function fn(){ "use strict"; var undefined = 1; console.log(undefined);// 1} fn();
我們可千萬不要寫這麼令人髮指的程式碼
在進行數學運算時也存在差異
console.log(undefined + 1); //NaNconsole.log(null + 1); //1
undefined進行任何運算會轉換為NaN
而null轉換為0
歷史
JavaScript有兩種表示空的值是有道理的
js之父Brendan Eich最開始設計得時候像Java一樣,只有null
但是他考慮到js有基本值和引用值兩種
用一個物件來表示空怪怪的typeof null === 'object'
,而且null轉換為數字0導致很多bug不好找
於是他又設計了undefined
用法
#依照js之父的設計
undefined表示缺少值
null表示為空物件
但是現在我們並不是這樣使用的
#可以這樣來理解
undefined表示變數沒有初始化,沒有值
null表示變數初始化了,值為「空值」
undefined是js用的,而null是給我們用的
這句話不知道大家能不能理解
例如在這些情況
var a;
宣告變量,引擎會在預編譯給它賦上預設值undefinedfunction a(){}
宣告函數,沒有回傳值預設回傳undefinedvar obj = {};obj.a;
存取不存在的物件屬性,預設值undefined#var a = function(a){};a();
沒有指定實參,預設參數值undefined…
這都是系統給我們預設的undefined,也就是js使用的
而我們要用的是null
比如說
var obj = Object.create(null);
建立空物件#demo.onclick = null;
解除綁定事件#……
只要我們想要使用空,就用null肯定沒錯,某些情況還可以方便瀏覽器的垃圾回收
總結
#最後給大家總結一下
undefined是window上的特殊屬性,是標識符,可以賦值;null是特殊關鍵字,不是標識符,不能賦值
undefined == null –> true | undefined = == null –> false
undefined轉換為number為NaN,null轉換為number為0
undefined與null轉換為boolean都是false
undefined表示沒有值,null表示空值
我們應該使用null表示空而不要使用undefined
永遠不要重定義undefined
以上就是JavaScript中表示空的undefined與null的區別及用法的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

如果你在使用Vue.js進行開發時,經常遇到「TypeError:Cannotreadproperty'$XXX'ofundefined」的錯誤提示,那麼該如何處理呢?本文將介紹這個錯誤的原因以及如何解決。問題的原因在使用Vue.js的時候,我們常常會用this來呼叫Vue元件的方法,例如:exportdefault{data()

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。
