当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《ES2015/2016'typeofvarName==='undefined`的方式?》经验,为你挑选了2个好方法。

我现在正在沉溺于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.



1> Alnitak..:

检查一下varName === undefined.

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

请注意,undefined除了通过查看之外,没有办法区分显式传递作为参数而不是完全不参数arguments.length.


从ES5开始,您无法改变全局`undefined`属性.但你仍然可以用局部变量来遮蔽它.
ES5的@torazaburo [附件E](http://www.ecma-international.org/ecma-262/5.1/#sec-E)列出了"全局对象的值属性NaN,无穷大和未定义"已更改是只读属性"与ES3不兼容.因此,更改也会影响非严格模式.

2> Oriol..:

唯一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).

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有