【问题标题】:Why use the void keyword? [duplicate]为什么使用 void 关键字? [复制]
【发布时间】:2013-03-05 18:42:03
【问题描述】:

我在kriskowal/q看到了这个sn-p:

/**
 * Applies the promised function in a future turn.
 * @param object    promise or immediate reference for target function
 * @param args      array of application arguments
 */
Q.fapply = fapply;
function fapply(value, args) {
    return dispatch(value, "apply", [void 0, args]);
}

使用void 关键字有什么意义?为什么不直接写[undefined, args]

【问题讨论】:

  • 因为全局undefined可以重新定义;它不是保留字,例如null
  • ..可以重新定义,但从 JavaScript 1.8.5 开始,根据 ECMAScript 5 规范,undefined 是不可写的。
  • void 0undefined 少 3 个字符。
  • 也可用作删除/重新应用 CSS 类的技巧:css-tricks.com/restart-css-animation
  • 也可以用来代替括号将匿名函数定义为表达式(例如,对于 IIFE,void function() { console.log("Look ma, no external paranthesis!"); }()

标签: javascript


【解决方案1】:

来自MDN Docs of void

语法

void expression

用途

此运算符允许插入产生副作用的表达式 进入计算结果为 undefined 的表达式的位置 想要的。

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

为什么?MDN Undefined

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

【讨论】:

  • 好的,所以这只是写undefined的更安全的方式?
  • 是的,就是这个原因。
  • @Rosarch:需要明确的是,全局 undefined 是不可写的。您仍然可以在局部变量范围内隐藏它。但请确保您不允许任何代码重新定义 undefined,并且使用起来非常安全。
  • ✅你可以取消任何东西,它总是返回未定义的! js void 0 === void(0); // true void 0 === void(true); // true void false === void(true); // true js void 0 === void(0); // true void 0 === void(true); // true void false === void(true); // true
【解决方案2】:

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

此运算符指定要计算的表达式而不返回值。它的语法可能是following

之一

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 2014-01-08
    • 2011-05-25
    • 2010-12-28
    • 2014-01-09
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多