null與undefined到底有啥區別?
阿新 • • 發佈:2021-10-11
undefined與null區別
應用場景:
話不多說,直接先上結論:
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