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)。
我现在沉迷于 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)。