有人可以告诉我这个片段在做什么吗?
如果y未定义,是否将x设置为true?
var x = false;
var y = x === true;
答案 0 :(得分:2)
代码
var x = false;
var y = x === true;
console.log(y);
只是检查条件x === true
,就像它将导致true
或false
的其他编程语言一样。由于var x = false;
条件x === true
导致false
,因为false === true
始终为假。现在,此条件的结果将作为y
分配给新变量var y = x === true;
,因此y的值将为false
。
答案 1 :(得分:0)
x
设为false
x
与true
完全相同吗?
2.1。如果是,请将y
设置为true
2.2。否则,请将y
设置为false
此片段中没有global.undefined
的调用。
答案 2 :(得分:0)
第一行应该非常明确,它会将x
设置为false
。第二行有点困难,首先,它将x
与true
进行比较。如果x
完全等于true
,则会将y
设置为true。由于x
为false
,因此比较也将返回false
,因此y
将设置为false
。
TL; DR,这是一种将y
设置为false
的复杂方式。
答案 3 :(得分:0)
===
是strict comparison operator。变量y
的值只有true
如果{{1>} 布尔且真,x
将y
false
1}}否则。例如,检查此代码段:
let a = 1;
console.log(a == true); // print true
let b = 1;
console.log(b === true); // print false, because `b` is a number, not boolean
let c = true;
console.log(c == true); // print true
let d = true;
console.log(d === true); // print true, because `d` is a boolean and its value is `true`

此var y = x === true;
语句表示:将(x === true)
的返回值保留在y
变量中。在您的情况下,y
将保留false
作为其值,因为x
是布尔值,但其值为 false 。< / p>
答案 4 :(得分:-2)
严格的等式运算符,===
优先于赋值运算符=
。因此,x
的检查在将其值分配给y
之前已完成。
你可以将其分为三个陈述。
var x = false
var tmp = (x === true)
var y = tmp
由于x
为false
,y
也会设置为false
。