我见过一些人在他们的代码中使用 void
运算符。我也在 href
属性中看到了这个: javascript:void(0)
这似乎并不比 javascript:;
那么,使用 void
运算符的理由是什么?
原文由 mkoryak 发布,翻译遵循 CC BY-SA 4.0 许可协议
我见过一些人在他们的代码中使用 void
运算符。我也在 href
属性中看到了这个: javascript:void(0)
这似乎并不比 javascript:;
那么,使用 void
运算符的理由是什么?
原文由 mkoryak 发布,翻译遵循 CC BY-SA 4.0 许可协议
这就是 bookmarklet 通常将代码包装在 void() 或不返回任何内容的匿名函数中以阻止浏览器尝试显示执行 bookmarklet 的结果的原因。例如:
javascript:void(window.open("dom_spy.html"))
如果您直接使用返回某些东西的代码(在这种情况下是一个新的窗口实例),浏览器最终将显示:
javascript:window.open("dom_spy.html");
在 Firefox 中,上面将显示:
[object Window]
原文由 Crescent Fresh 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
JavaScript
void
运算符用于显式返回undefined
。它是一个一元运算符,意味着它只能使用一个操作数。您可以像下面这样使用它——独立的或带括号的。让我们看一些例子:
如果你问为什么你需要一个特殊的关键字来返回
undefined
而不是只返回undefined
:原因是在 ES5 之前你实际上可以命名一个全局变量undefined
,就像这样:var undefined = "hello"
或var undefined = 23
,大多数浏览器都会接受它;标识符undefined
并未承诺实际上是未定义的¹。因此,要返回 实际的 未定义值,使用/曾经使用void
运算符。虽然它不是一个非常流行的运算符,但很少使用。让我们看一个带有
void
的函数示例:void
丢弃函数的返回值并显式返回undefined
。您可以从我的教程帖子中阅读更多内容: https ://josephkhan.me/the-javascript-void-operator/
¹ 在 ECMAScript 5 及更高版本中,全局变量
undefined
保证未定义( ECMA-262 第五版,§ 15.1.1.3),尽管内部范围内的变量仍然可能是命名为undefined
。