这是什么??!Javascript中的运算符

What is the ??! operator in Javascript?

本文关键字:运算符 是什么 Javascript      更新时间:2023-09-26

当我在寻找一些站点的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中做什么?

它抛出一个语法错误。

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

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

进行合理的猜测(除了"他们犯了一个错误")需要更多的背景。说肯定需要读心术:)

我认为这是一个错误。他们正在生成一个菜单,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

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

在JavaScript中,这不是有效的代码。然而,序列??!在C中作为一个三图存在(存在?),表示|。也许这不是JavaScript代码,或者它是从古老的C代码移植而来的。但即便如此,x = x | x也很难被称为一个有用的语句。

编辑:现在问题中有一点上下文,这种猜测可能是错误的。一位朋友提出,序列x??可能是一个拼写错误,随后试图纠正它,因为backspace被一些中间篡改(在终端或SSH中键入时并不罕见)变成了一个字符,并且有问题的行应该是x = !x

这是个错误吗?

你是这个意思吗?

x= x?x:!x;