我现在正沉浸在 ES2015+ 的奢华中,有几个项目,我想知道我是否可以摆脱令人讨厌的拐杖来检查undefined
新的仙境。
typeof varName === 'undefined'
在 ES2015+ 中是否有更短但仍然准确的方法?
当然我可以使用默认参数,但这也感觉像是一个不必要的分配。
function coolFn(a = null){
if (a===null) console.log("no a supplied");
}
我现在正沉浸在 ES2015+ 的奢华中,有几个项目,我想知道我是否可以摆脱令人讨厌的拐杖来检查undefined
新的仙境。
typeof varName === 'undefined'
在 ES2015+ 中是否有更短但仍然准确的方法?
当然我可以使用默认参数,但这也感觉像是一个不必要的分配。
function coolFn(a = null){
if (a===null) console.log("no a supplied");
}
只需检查varName === undefined
.
在较旧的浏览器中,可以为全局undefined
变量分配一个替代值,导致该测试失败,但在 ES2015+ 中,这现在是不可能的。
请注意,undefined
除了查看arguments.length
.
唯一typeof varName === 'undefined'
有用的情况是您不知道变量varName
是否已声明。
而且 IMO 如果您不知道您的变量是否已声明,那么您的代码就会出现严重问题。
在其他情况下,您有更好的选择:
varName === void 0
这将检测是否varName
未定义。
void
是一个接收参数的运算符(你可以使用任何东西来代替0
),并返回 undefined。
varName === undefined
这应该检测是否varName
未定义。
但是,请注意全局undefined
可能已被覆盖(在 ES5 之前)或被另一个值遮蔽。因此我更喜欢void
,它也更短。
varName == null
这将检测是否varName
未定义或为空。
!varName
这将检测是否varName
为 falsy(未定义、null、0、空字符串、NaN、false)。