虚空被遗忘了吗?JavaScript:有用的部分
虚空被遗忘了吗?JavaScript:有用的部分
原文:https://medium.com/hackernoon/is-void-forgotten-javascript-the-useful-parts-2de88901a1e0

Photo by Johnson Cameraface on Flickr
在许多语言中,
void是一个没有值的类型。在 JavaScript 中,void是一个接受操作数并返回undefined的运算符。这个没啥用,而且很混乱。避开void。~道格拉斯·克洛克福特。 JavaScript:好的部分
如果你同意这种说法,我不想浪费你的时间,从这里跳出来,继续拯救世界。😎如果不是,让我们来看看为什么 void 是有用的,你不应该避免它。
为什么虚空会混淆?
void 0 === undefined //true😰 😱 😵
为什么?怎么会?什么是虚空?这是 JavaScript 吗?
当我问开发人员关于虚空的问题时得到的答案,这里主要的困惑是开发人员忘记了或者不知道或者觉得奇怪。
[**void**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void) 运算符对给定的*expression*求值,然后返回[undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)。这就是你需要了解的关于void操作员的所有信息。
虚空能有多大用处?
1.计算表达式并从函数中跳出
有一次我做了一次代码审查,发现了一个这样的方法:
function doStuff(a) {
if (a) {
doSomething()
} else {
doSomethingElse()
return
} doSomethingMore()
}
因此,从这个方法中你可以看到,在doSomethingElse()的情况下,我们返回undefined并从函数中跳出。让我们保存一行,用void让它更易读。
function doStuff(a) {
if (a) {
doSomething()
} else {
return void doSomethingElse()
} doSomethingMore()
}
从 void 描述中你知道它评估doSomethingElse()并返回undefined。这正是我们需要的👍
2.检查未定义的
旧的浏览器允许undefined被重新分配undefined = 'test'。但是,ECMAScript 5 在 2009 年修复了这个问题。
这是 ECMAScript 规范 5.1 版的带注释的超链接 HTML 版本,其源代码是…
es5.github.io](https://es5.github.io/#x15.1.1.3)
如果你需要支持旧的浏览器,例如 IE8,这里有一个帮助功能😊
function isUndefined(value) {
return value === void 0
}
3.链接的 preventDefault()行为
我们都知道没有href属性的a标签是无效的,但是在 HTML5 中href属性是不需要的,所以可以省略。
[## HTML 5.1: 4.8。链接
同样,对于具有 href 属性和属性的和元素,必须为的关键字创建链接
www.w3.org](https://www.w3.org/TR/2016/REC-html51-20161101/links.html#element-attrdef-a-href)
不知何故,如果你需要阻止href作品使用void。
<a href="javascript: void(0)">About</a>
4.立即调用的函数表达式
当使用立即调用的函数表达式时,void可用于强制将function关键字视为表达式而非声明。
void function IIFE() {
// do something ...
}()
结论
void是一个简单的操作符,我觉得它很有用。我估计,更多的开发者不使用是因为学习的时候没有接触过。当然,如果一个团队感到困惑,最好进行讨论。在帮助中,ESLint 有规则( no-void )。编码快乐!😎
👏感谢您的阅读。欢迎建议、评论、想法:)
如果你喜欢这个,鼓掌吧,跟着我上 中[推特](https://twitter.com/shystrukk)github和你的朋友们分享一下 ✌️****