这个JavaScript表达式意味着什么:return 0 == a?!1:void 0 == a.x?

时间:2016-03-24 06:30:53

标签: javascript

这是一个很长的回复声明的一部分,但我更感兴趣的是了解" a?!1:void0"代表。

当我检查一个网页时,我发现它正试图弄清楚它的javascript代码是如何运作的。

编辑:从下面的评论中,我收集到的是我写的确切问题很糟糕。最初我试图简化"返回0 == a?!1:void 0 == a.x" to" a?!1:void 0" - 为了表明我对该陈述的那一部分特别感到困惑。但回想一下,这样做是没有意义的,因为实际上我正在改变条件的含义。

"?"最后,是@Amadan指出的英文问号。

3 个答案:

答案 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;
}