ES2015 / 2016方式' typeof varName ===' undefined`?

时间:2016-01-04 17:23:54

标签: javascript ecmascript-6 ecmascript-2016

我现在沉迷于ES2015 +奢侈品,现在有几个项目,我想知道我是否可以摆脱那些讨厌的拐杖来检查新仙境中的undefined

ES2015 +中的typeof varName === 'undefined'已经有了更短但更精确的方法吗?

当然我可以使用default parameters,但这也感觉就像是一项不必要的任务。

function coolFn(a = null){
   if (a===null) console.log("no a supplied");
}

2 个答案:

答案 0 :(得分:70)

只需检查varName === undefined

在较旧的浏览器中,可以为全局undefined变量分配备用值,导致该测试失败,但在ES2015 +中现在是不可能的。

请注意,除了查看undefined之外,无法区分显式传递arguments.length作为参数,而不是将参数全部删除。

答案 1 :(得分:22)

typeof varName === 'undefined'有用的唯一情况是,当您不知道变量varName是否已被声明时。

如果您不知道您的变量是否已声明,那么您的代码会出现严重问题。

在其他情况下,您有更好的选择:

  • varName === void 0

    这将检测varName是否未定义。

    void是一个接收参数的运算符(您可以使用任何而不是0),并返回undefined。

  • varName === undefined

    应该检测varName是否未定义。

    但是,请注意全局undefined可能已被覆盖(在ES5之前)或被其他值遮蔽。因此,我更喜欢void,它也更短。

  • varName == null

    这将检测varName是否未定义或为空。

  • !varName

    这将检测varName是否为假(未定义,null,0,空字符串,NaN,false)。