1

当我在寻找一些网站的 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中做了什么?为什么编码器使用这个运算符?

谢谢。

4

4 回答 4

12

它在javascript中做了什么?

它会引发语法错误。

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

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

进行合理的猜测(除了“他们犯了一个错误”)需要更多的上下文。肯定地说需要读心术:)

于 2012-08-30T12:33:26.393 回答
4

在 JavaScript 中,这不是有效的代码。但是,该序列在 C 中以三元组??!的形式存在(存在?),表示. 也许那不是 JavaScript 代码,或者它是从古老的 C 代码移植得不好。但即便如此,也很难称得上是有用的陈述。|x = x | x

编辑:现在问题中有一点背景,这种猜测可能是错误的。一位朋友建议该序列可能x??是一个错字,随后尝试更正它,其中退格被一些中间修饰(在终端或通过 SSH 键入时并不罕见)变成了一个字符,并且有问题的行应该是x = !x.

于 2012-08-30T12:38:32.703 回答
3

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

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

于 2012-08-30T12:44:22.423 回答
1

这是一个错误吗?

你是这个意思吗?

x= x?x:!x;
于 2012-08-30T12:39:36.590 回答