1. 程式人生 > 其它 >null與undefined到底有啥區別?

null與undefined到底有啥區別?

undefined與null區別

話不多說,直接先上結論: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

本文來自部落格園,作者:不知名前端李小白,轉載請註明原文連結:https://www.cnblogs.com/libo-web/p/15392956.html