这是一个很长的回复声明的一部分,但我更感兴趣的是了解" a?!1:void0"代表。
当我检查一个网页时,我发现它正试图弄清楚它的javascript代码是如何运作的。
编辑:从下面的评论中,我收集到的是我写的确切问题很糟糕。最初我试图简化"返回0 == a?!1:void 0 == a.x" to" a?!1:void 0" - 为了表明我对该陈述的那一部分特别感到困惑。但回想一下,这样做是没有意义的,因为实际上我正在改变条件的含义。
"?"最后,是@Amadan指出的英文问号。
答案 0 :(得分:1)
您可以拆分操作(0 == a)吗? !1:(void 0 == a.x) void 0可以被设想为void(0),这只是未定义的。 如果未定义a.x, !1等于false。 (void 0 == a.x)等于true。 所以表达式求值为(0 == a)?假:真
可能是生成的代码,不知道为什么要编写逻辑呢。
答案 1 :(得分:0)
等于,
if (a) {//return true if a is truthy
return !1;// !1 is always false, !0 is true
}else{
return void(0);//void(0) is undefined
}
答案 2 :(得分:0)
如果定义true
,则返回a.x
;如果false
是假的,或a
未定义,则为a.x
。它相当于
if (!a) { // !a === (a == 0)
return false; // false === !1
} else if (a.x == undefined) { // undefined === void 0
return false;
} else {
return true;
}