gpt4 book ai didi

javascript - Null-Coalescing Operator (??) 在 Spider 中是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:37 24 4
gpt4 key购买 nike

Spider's空合并运算符 ?? 如果左侧表达式为 null 或未定义,则返回右侧表达式。

var name = options.name ?? "default name";

它是如何工作的?

最佳答案

空合并运算符通常与简单的条件表达式一起使用。例如,Spider 中的这段代码:

var name = options.name ?? "default name";

编译为以下 JavaScript:

var name = options.name == null ? "default name" : options.name;

(more about equals equals null)

未定义标识符问题

请注意,如果左侧表达式是一个标识符,而该标识符未定义,则 JS 解释器将引发错误。为了解决这个问题,Spider 编译器添加了一个未定义的检查。例如 Spider 中的这段代码:

var name = name ?? "value";

在JS中编译成如下代码:

var name = typeof name === "undefined" || name == null ? "value" : name;

请注意,如果您想执行类似 options.name ?? "default" 并且您不确定 options 是否已定义,您可以使用 null 传播运算符:

var name = options?.name ?? "default";

双重函数调用问题

如果左边的表达式是调用表达式(例如 fn()),那么它可能会被调用两次 - 第一次用于空值测试,第二次用于值。为了解决这个问题,Spider 编译器将调用表达式移动到一个不同的变量。例如 Spider 中的这段代码:

var name = getName() ?? "default name";

被编译成类似这样的东西:

var tmp = getName();
var name = tmp == null ? "default name" : tmp;

语句问题

如果空合并运算符用作语句而不是表达式,例如:

a() ?? b();

然后 Spider 编译器使用 if 语句而不是条件表达式:

if (a() == null) {
b();
}

关于javascript - Null-Coalescing Operator (??) 在 Spider 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079194/

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