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;
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;
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
.
x
to false
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.
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
.
===
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.
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
.