全回顾扫盲js之Undifined和Null类型

Undifined类型

Undifined类型只有一个值,即特殊的undifined。在使用var声明变量但是没有对其加以初始化时,这个变量的值就是undefined

var message ;
console.log(message === undefined)  // true

对于未声明过的变量,只能进行一个操作,就是typeof操作,否则会产生错误。对未声明过的变量的typeof结果也是undifined,与声明但是未初始化的值的typeof操作,结果相同

var a;
console.log(a)  // undifined
console.log(b)  // 报错 b is not defined
console.log(typeof a)  // undifined
console.log(typeof b)  // undifined
console.log(typeof a === typeof b)  // true

Null 类型

Null 类型也是只有一个值的数据类型,特殊的值null,表示空的对象指针。我们在初始化变量时,如果将来准备保存对象,就给他初始化成null。这样我们以后方便检验这个变量是否有了新的赋值。功能类似于“是否为空”领域的布尔值

 var a = null
console.log(typeof a)   // object
a = {
    test: 'aaaa'
}
if (a !== null) {
    console.log('not empty')    // not empty
}

总结一下,因为有一个被问到Undifined和Null各自的一些特点

相同点

  • 1.if判断返回值都是false
  • 2.都是只有一个值的类型

各自特点

  • 一个变量,如果声明了但是没有进行初始化,它的值是undifined,类型是Undifined类型。如果初始化为null,那他是Null类型。
  • 初始化为null是为了保存空对象,方便以后对变量是否重新赋值进行判断,当然,这时候这个变量的typeof已经是对象了。
  • null作为对象原型链的终点
  • 变量被声明了,但没有赋值时,就等于undefined。
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
  • 对象没有赋值的属性,该属性的值为undefined。
  • 函数没有返回值时,默认返回undefined。

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。

随机浏览