gpt4 book ai didi

javascript - 为什么 void 运算符在计算结果总是未定义时调用 GetValue(expr)?

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:41 24 4
gpt4 key购买 nike

The void operator in JavaScript将调用内部 GetValue(expr),但始终返回 undefined,无论值或表达式是什么。

规范说:

11.4.2 The void Operator

The production UnaryExpression : void UnaryExpression is evaluated as follows:

  1. Let expr be the result of evaluating UnaryExpression.
  2. Call GetValue(expr).
  3. Return undefined.

GetValue must be called even though its value is not used because it may have observable side-effects.

我的问题是,为什么?会发生什么样的可观察到的副作用?我们能否演示 void 如何改变程序流程,并讨论如果我们不运行 GetValue 会发生什么情况?

最佳答案

如果您正在编写一个没有副作用的程序,那么总是返回未定义的函数就没有帮助,因为它不会将有用的信息返回给调用者。在这种情况下,如果您始终知道会返回什么,您还不如根本不调用该函数。

但是,如果一种语言有“副作用”,即使返回未定义的函数在编程上仍然有用。 “副作用”是一些不属于函数返回值一部分的效果的技术术语。作为一个具体示例,改变 DOM 是一种副作用,它不会计算并返回有用的值,但您仍然希望 DOM 树的状态发生改变。播放声音也是一种副作用。

作为旁注,void 可能很有用,因为在语法上,它强制表达式上下文,以便可以明确地表达函数表达式值之类的东西。例如

void function(){alert('hi')}()

关于javascript - 为什么 void 运算符在计算结果总是未定义时调用 GetValue(expr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8331891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com