null與undefined到底有啥區別?


話不多說,直接先上結論: nullundefined 基本相同,只有細微差別

  • null 是表示缺少的標識,指示變量未指向任何對象,轉為數值為 0
  • undefined 表示 “缺少值”,即該處應該有值,但還沒有定義,轉為數值為 NaN
//(1)null轉為數值為0
console.log(Number(null));//0
console.log(null+3);//3
console.log(null == null);//true
console.log(null === null); //true
console.log(isNaN(null));false

//(2)undefined轉為數值為NaN
console.log(Number(undefined));//NaN(not a number)
console.log(3+undefined);//NaN
console.log(isNaN(undefined));//true

//(3)null和undefined比較
console.log(null == undefined); //true,存在隱式類型轉換
console.log(null === undefined);//false
/* "==="表示全等,二者類型不同,所以為false */
console.log(typeof null);//object數據類型
console.log(typeof undefined);//undefined數據類型

null 應用場景:

(1)作為函數的參數,表示該函數的參數不是對象

(2)作為對象原型鏈的終點

console.log(Object.getPrototypeOf(Object.prototype));//null

undefined 應用場景:

(1)一個沒有被賦值的變量的類型是undefined

(2)調用函數時,應該提供的參數沒有提供,該參數為undefined

(3)對象沒有賦值的屬性,該屬性的值為undefined

(4)一個函數如果沒有使用return語句指定返回值,就會返回undefined

//(1)變量未賦值        
let a
console.log(a);//undefined

//(2)函數參數未賦值
(function fn(x) {
    console.log(x); //undefined
})()

//(3)對象屬性未賦值
let obj = {
    name:'張三'
}
console.log(obj.name);
console.log(obj.age);//undefined

//(4)函數沒有返回值
function fn(){}
var x = fn();
console.log(x);//undefined

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM