-5

Can someone please tell me what this snippet is doing?

Is it setting x to true if y is undefined?

var x = false;
var y = x === true;
Dai
  • 141,631
  • 28
  • 261
  • 374
Daft
  • 10,277
  • 15
  • 63
  • 105

5 Answers5

2

The code

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

is simply checking the condition x === true, like other programming language it will result to either true or false. Since you have var x = false; the condition x === true will result in false as false === true is always false. Now, the result of this condition is being assigned to the new variable y as var y = x === true; so the value for y will be false.

Ankit Agarwal
  • 30,378
  • 5
  • 37
  • 62
0
  1. Set x to false
  2. Is x exactly-equal to true?

    2.1. If so, then set y to true

    2.2. Otherwise, set y to false

There is no invokation of of global.undefined in this fragment.

Dai
  • 141,631
  • 28
  • 261
  • 374
0

The first line should be pretty clear, it sets x to false. The second line is a bit more difficult, first, it compares x to true. If x is exactly equal to true, it will set y to true. Since x is false, the comparison will also return false, so y will be set to false.

TL;DR, this is a convoluted way of setting y to false.

CerebralFart
  • 3,336
  • 5
  • 26
  • 29
0

=== is a strict comparison operator. The value of variable y will only true if x is boolean and true, y will be false otherwise. Check this snippet out for example:

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`

This var y = x === true; statement means: keep the returned value of (x === true) in the y variable. In your case, y will hold false as its value since x is a boolean, but its value is false.

samAlvin
  • 1,648
  • 1
  • 11
  • 35
-2

Strict Equality Operator, === has a greater precedence over Assignment Operator, =. Therefore the check for x is done before assigning its value to y.

You can break this down into three statements.

var x = false
var tmp = (x === true)
var y = tmp

Since x is false, y will also get set to false.

Varun Sharma
  • 1,602
  • 1
  • 13
  • 37