'When is it okay/appropriate to use logical assignment in javascript?
I used logical assignments like b = a || [] in Javascript before, and there are many questions on SO about it.
To mention some:
- What does the construct x = x || y mean?
- JavaScript variable assignment with OR vs if check
- How does javascript logical assignment work?
And from what I read, b = a || [] is legit code.
However, I noticed in a recent case (checking for a variable set by another script), that this code does not work as I expected.
I assumed the code would check whether a is falsy, and if so [] would be assigned to b. Since undefined is falsy, I excepted the code to work and assign [] in the case when a was not defined.
But this code causes an error:
let b;
b = a || [];
console.log(b);
a = ["1", "2", "3"];
b = a || [];
console.log(b);
wheras
let b;
b = typeof a == "undefined" ? [] : b;
console.log(b);
a = ["1", "2", "3"];
b = a || [];
console.log(b);
does not.
And why is it causing an error, when the error says Uncaught ReferenceError: a is not defined, which implies a is undefined?
When can I use the logical assignment? Only when it is guaranteed that the variable (a) is at least declared?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
