美文网首页
JS-数据类型-null/undefined

JS-数据类型-null/undefined

作者: chrisghb | 来源:发表于2019-06-13 21:18 被阅读0次

参考文章:null 和 undefined

  • null类型只有一个值就是nullundefined类型只有一个值,就是undefined。它们的名称既是类型也是值。
  • null表示一个空的对象引用,表示该处的值现在为空,而这也正是typeof操作符检测null时候,返回object的原因。

    nullobject类型,但不是object的实例,用instanceoffalse
    因为Object.prototype的原型(__proto__)指向null

    undefined表示未定义,它是undefined类型;
  • nullundefined没有toString方法。所以nullundefined和其他数据比较都是false
  • 如果定义的变量准备将来用来保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就知道相应的变量是否已经保存了一个对象的引用:
if(car != null){
    //car保存了一个对象的引用,就可以对car变量指向的对象进行操作
}
  • 如果一个变量未定义,或者变量定义了但未赋值,则是undefined。无论在什么情况下都没有必要把一个变量的值显示地设置为undefined

    注意:变量未赋值与未定义的变量是不一样的,看下面的例子。
var message;
//var age;
console.log(message);//"undefined"
console.log(age);//Uncaught ReferenceError: age is not defined

对于尚未声明过的变量,只能执行一项操作typeof。对未声明的变量执行typeof操作符同样也会返回undefined值。

var message;
//var age;
console.log(typeof message);//"undefined"
console.log(typeof age);//"undefined"
  • NumberStringBoolean如果不作为构造函数调用(即调用时不加new),常常用于将任意类型的值转为数值、字符串和布尔值。
Boolean(undefined) //false
Number(undefined): //NaN
String(undefined): //"undefined"

Boolean(null) //false
Number(null): //0
String(null): //"null"
  • 下面是返回undefined的典型场景:
// 变量声明了,但没有赋值
var i;
i // undefined

// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 对象没有赋值的属性
var  o = new Object();
o.p // undefined

// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined
  • if语句中,它们都会被自动转为false

    undefined派生null,所以相等运算符(==)两者相等。但严格相等运算符(===)两者不等。

注意:(==)用于比较判断两者相等,它在比较的时候可以自动转换数据类型。(===)用于严格比较判断两者严格相等,不会进行自动转换,要求进行比较的操作数必须类型一致。

if (!undefined) {
  console.log('undefined is false');
}
// undefined is false

if (!null) {
  console.log('null is false');
}
// null is false

undefined == null
// true

相关文章

网友评论

      本文标题:JS-数据类型-null/undefined

      本文链接:https://www.haomeiwen.com/subject/ixiefctx.html