js的null,undefined或undeclared的区别
js中null,undefined或undeclared的区别
undeclared
undeclared是一种Js语法错误
a // Uncaught ReferenceError: a is not defined
typeof undeclared
var a;
typeof a; // "undefined"
typeof b; // "undefined"
null,undefined
在JavaScript中,有两个表示‘空’的值undefined和null。
undefined是Js语言类型,undefined 表示一个变量没有被声明,不存在这个值,或者被声明了但没有被赋值;
null 表示一个对象是“没有值”的值,也就是值为“空”;
var a;
var b = null;
a // "undefined"
null == undefined
null == undefined //true
typeof null 、typeof undefined
typeof null; // "object"
typeof undefined; //"undefined"
Number(null) 、 Number(undefined)
Number(null); // 0
Number(undefined); //NaN
//同理
+null; //0
+undefined; //NaN
判断null和undefined
判断undefined
var exp = null;
if (typeof exp == "undefined"){
alert("is undefined");
}
判断null
var exp = null;
if (exp === null){
alert("is null");
}
var exp = null;
if (!exp && typeof exp == "object"){
alert("is null");
}
null和undefined典型用法
null典型用法
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype)
// null
undefined典型用法
- 变量被声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined