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

ES2015/2016 way of 'typeof varName === 'undefined`?

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

在 ES2015+ 中是否有更短但仍然准确的 typeof varName === 'undefined' 方法?

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

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

只需检查 varName === undefined

在旧版浏览器中,可以为全局 undefined 变量分配一个替代值,从而导致该测试失败,但在 ES2015+ 中,这现在是不可能的。

请注意,除了查看 arguments.length.

之外,无法区分将 undefined 作为参数显式传递与将参数完全排除在外

只有当您不知道变量 varName 是否已声明时,typeof varName === 'undefined' 才有用。

IMO 如果你不知道你的变量是否被声明,你的代码就有严重的问题。

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

  • varName === void 0

    这将检测varName是否未定义。

    void 是一个接收参数的运算符(您可以使用任何东西代替 0),并且 returns 未定义。

  • varName === undefined

    这个应该检测varName是否未定义。

    但是,请注意全局 undefined 可能已被覆盖(在 ES5 之前)或被其他值覆盖。所以我更喜欢void,也比较短

  • varName == null

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

  • !varName

    这会检测varName是否为falsy(undefined, null, 0, empty string, NaN, false)。