这是什么?? JavaScript 中的运算符?

问题描述 投票:0回答:5

当我寻找一些网站的 Javascript 代码时,我看到了这个

function hrefLeftMenu() {
    var x = true;
    for (i in info) {
        $(".leftmenu ul").append("<li" + (x ? " class='active'" : "") + " onclick='openAnInfo(\"" + i + "\", this);'> - " + info[i].title + "</li>");
        x = x??!x;
    }
    openAnInfo("0", ".lelelesakineyy");
}

它在 JavaScript 中的作用是什么?为什么编码员使用这个运算符?

谢谢。

javascript syntax
5个回答
12
投票

它在 javascript 中的作用是什么?

它会引发语法错误。

> x = x??!x;
SyntaxError: Unexpected token ?

为什么编码员使用这个运算符?

做出合理的猜测(除了“他们犯了一个错误”之外)需要更多的背景信息。肯定地说需要读心术:)


4
投票

我认为这是一个错误。他们正在生成一个菜单,并且

x
用于将项目设置为活动状态,看起来他们想默认选择第一个项目。他们希望
x
第一次为真,然后为其余的假。它可能应该是类似的东西

x = x?!x:x; // If first time through, then set x = false for the rest

又名

x = false; // Set x = false for the rest

但是混乱/混乱的思维导致了过度复杂化。


4
投票

在 JavaScript 中,这不是有效的代码。然而,序列

??!
在C中作为三字母存在(存在?),代表
|
。也许这不是 JavaScript 代码,或者它是从古老的 C 代码移植过来的。但即便如此,
x = x | x
也很难被称为有用的陈述。

编辑:现在有了问题的背景,这种猜测可能是错误的。一位朋友建议,也许序列

x??
是一个拼写错误,随后尝试纠正它,其中退格键通过某种中间损坏变成了一个字符(在终端或通过 SSH 键入时并不罕见),并且有问题的行应该是是
x = !x


2
投票

这是一个错误吗?

你是这个意思吗?

x= x?x:!x;

0
投票

在 JavaScript 中,??运算符称为 nullish 合并运算符。当左侧操作数为空或未定义时,它用于提供默认值。此运算符对于处理变量可能为 null 或未定义并且您想要分配后备值的情况很有用。

语法:

let result = a ?? b;

a 是要检查的值。 如果 a 为 null 或未定义,b 是后备值。

示例:

let foo = null;
let bar = foo ?? 'default value';
console.log(bar); // Output: 'default value'

let baz = 0;
let qux = baz ?? 'default value';
console.log(qux); // Output: 0

工作原理:

如果 foo 为 null 或未定义,则 bar 将被赋予值“默认值”。 如果 foo 有任何其他值(包括 0、false 或空字符串),bar 将被赋予 foo 的值。

与||的区别(逻辑或)运算符 逻辑 OR 运算符 (||) 还提供了一种回退到默认值的方法,但它将其他假值(0、false、NaN、'' 等)视为 false,并将使用右侧值在这些情况下。

如果您想了解更多: https://www.freecodecamp.org/news/what-is-the-nullish-coalescing-operator-in-javascript-and-how-is-it-useful/

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.