null、underfined、void 0

  • 2020.11.05

我们首先要明白的是,javascript中变量只声明不赋值的话默认就是undefined

undefined表示未定义,它的类型只有一个就是 undefined

undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true

对于尚未声明过的变量,只能使用typeof操作符检测其数据类型(对未经声明的变量调用delete不会导致错误,但这样做没什么实际意义,在严格模式下确实会导致错误)。

null == undefined; // true
null === undefined; // false

var a;
typeof a; // undefined

function func() {
  console.log(1111);
}

const fn = func();
console.log(fn); // 没有返回值的函数 返回的值也是undefined

如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为undefined,可是同样的规则对null却不适用。

TIP

换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。

这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分nullundefined

void 0 与 undefined

在 js 中undefined是一个变量而并非是一个关键字所以可能存在无意中被篡改的问题,在这种情况下我们可以使用void 0 来代替 undefined的值。

或者我们想要返回一个undefined的计算值的时候。

function getYear() {
  return 2020;
}

console.log(getYear());
// Output: 2020

console.log(void getYear());
// Output: undefined

// Useful use case
button.onclick = () => void getYear();
上次更新时间: 2021-06-25 09:36:00