当我寻找一些网站的 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??
是一个拼写错误,随后尝试纠正它,其中退格键通过某种中间损坏变成了一个字符(在终端或通过 SSH 键入时并不罕见),并且有问题的行应该是是x = !x
。
这是一个错误吗?
你是这个意思吗?
x= x?x:!x;
在 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,并将使用右侧值在这些情况下。