有人可以解释这个JS片段正在做什么吗?

时间:2017-09-19 09:56:38

标签: javascript

有人可以告诉我这个片段在做什么吗?

如果y未定义,是否将x设置为true?

var x = false;
var y = x === true;

5 个答案:

答案 0 :(得分:2)

代码

 var x = false;
 var y = x === true;
 console.log(y);

只是检查条件x === true,就像它将导致truefalse的其他编程语言一样。由于var x = false;条件x === true导致false,因为false === true始终为假。现在,此条件的结果将作为y分配给新变量var y = x === true;,因此y的值将为false

答案 1 :(得分:0)

  1. x设为false
  2. x true完全相同吗?

    2.1。如果是,请将y设置为true

    2.2。否则,请将y设置为false

  3. 此片段中没有global.undefined的调用。

答案 2 :(得分:0)

第一行应该非常明确,它会将x设置为false。第二行有点困难,首先,它将xtrue进行比较。如果x完全等于true,则会将y设置为true。由于xfalse,因此比较也将返回false,因此y将设置为false

TL; DR,这是一种将y设置为false的复杂方式。

答案 3 :(得分:0)

===strict comparison operator。变量y的值只有true如果{{1>} 布尔xy 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

由于xfalsey也会设置为false