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