问题 为什么要使用void关键字? [重复]


这个问题在这里已有答案:


11860
2018-03-05 18:42


起源

因为全球化 undefined 可以重新定义;这不是一个保守的词,比如 null。 - raina77ow
..可以重新定义,但从JavaScript 1.8.5开始,undefined是不可写的,根据ECMAScript 5规范。 - epascarello
void 0 是少于3的字符 undefined。 - Rocket Hazmat
也可用作删除/重新应用CSS类的hack: css-tricks.com/restart-css-animation - Sphinxxx
也可用于代替paranthesis将匿名函数定义为表达式(例如,对于IIFE, void function() { console.log("Look ma, no external paranthesis!"); }()) - Nick Bull


答案:


来自 MDN Docs无效

句法

void expression

用途

此运算符允许插入产生副作用的表达式   到评估为undefined的表达式的地方   期望。

void运算符通常仅用于获取未定义的运算符   原始价值,通常使用“void(0)”(相当于“void”   0“)。在这些情况下,可以使用未定义的全局变量   (假设它尚未分配给非默认值)。

为什么? 看到 MDN未定义

在旧版本的JavaScript中 undefined 可以被覆盖,但是从JavaScript 1.8.5开始,undefined是不可写的,根据ECMAScript 5规范。


10
2018-03-05 18:48



好的,所以这只是一种更安全的写作方式 undefined? - Nick Heiner
是的,这就是原因。 - epascarello
@Rosarch:要明确,全球化 undefined 是不可写的。您仍然可以在局部变量范围内对其进行遮蔽。但请确保您不允许任何代码重新定义 undefined,它使用起来非常安全。 - the system


void是JavaScript中的一个重要关键字,可用作在单个操作数之前出现的一元运算符,该操作数可以是任何类型。

此运算符指定要计算的表达式而不返回值。它的语法可能是其中之一 以下


1
2018-03-05 18:53