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

时间:2012-08-30 12:31:02

标签: javascript syntax

当我在寻找一些网站的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 个答案:

答案 0 :(得分:12)

  

它在javascript中的作用是什么?

它会引发语法错误。

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

编码器为何使用此运算符?

采取合理的猜测(超出“他们犯了一个错误”)需要更多的背景。说肯定会需要读心:)

答案 1 :(得分:4)

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

编辑:现在问题中有一点上下文,这种推测可能是错误的。一位朋友建议可能序列x??是一个拼写错误,后来尝试通过一些中间修改将退格变成一个字符(在输入终端或通过SSH时并不罕见)并且所涉及的行是应该是x = !x

答案 2 :(得分: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

但混乱/混乱的思维导致了过度的恭维。

答案 3 :(得分:1)

这是一个错误吗?

你的意思是?

x= x?x:!x;