JavaScript中undefined和null的用法与区别 短命女 2022-05-16 04:22 227阅读 0赞 ### **一、undefined** ### undefined类型只有一个值,就是undefined。当声明的变量未初始化时,该变量的默认值是undefined。所以一般地,undefined表示变量没有初始化。 var test;//undefined console.log(test == undefined);//true var test = undefined;//undefined 对于尚未声明过的变量使用typeof操作符检测其数据类型 typeof(test);//undefined **【出现场景】** 【1】已声明未赋值的变量 【2】获取对象不存在的属性 【3】无返回值的函数的执行结果 【4】函数的参数没有传入 【5】void(expression) var i; console.log(i);//undefined var o = {}; console.log(o.p);//undefined function f(){}; console.log(f());//undefined function f(x){return x;} console.log(f());//undefined console.log(void(0));//undefined **【类型转换】** Boolean(undefined): //false Number(undefined): //NaN String(undefined): //'undefined' ### **二、null** ### Null类型只有一个值,就是null。null是javascript语言的关键字,它表示一个特殊值,常用来描述"空值" 逻辑角度看,null值表示一个空对象指针 \[注意\]null是空对象指针,而\[\]是空数组,\{\}是空对象,三者不相同 console.log(typeof null); //'object' 尽管null和undefined是不同的,但它们都表示"值的空缺",null表示"空值",undefined表示"未定义"。两者往往可以互换。判断相等运算符==认为两者是相等的 console.log(null == undefined);//true 实际上,因为undefined和null不是构造器类型,所以它们没有任何的属性和方法,使用.和\[\]来存取这两个值的成员或方法都会产生一个类型错误 **【类型转换】** Boolean(null): //false Number(null): //0 String(null): //'null' ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。 alert(null === undefined); // "false" alert(typeof null == typeof undefined); // "false" 使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。
还没有评论,来说两句吧...