I’m doing some experimenting with this malicious JavaScript line: var undefined = true;
Every uninitialized variable in JavaScript has the value of undefined which is just a variable that holds the special value of 'undefined', so the following should execute the alert:
var undefined = true,
x;
if (x) {
alert('ok');
}
But it doesn’t, and my question is why?
On further experimentation, I tried the following:
var undefined = true,
x = undefined;
if (x) {
alert('ok');
}
This time, the alert is executed.
So my question is…since in the first snippet x holds undefined (because it is not initialized), why didn’t the alert execute? The strange thing is that when explicitly stating that x is undefined (x = undefined), the alert executed…
There is a difference between a variable named
undefinedand the value calledundefined.In this example, the variable
undefinedis set to the valuetrue, andxto the value (not the variable!)undefined.In this example, the variable
undefinedis set to the valuetrueas well, andxis set to the value contained in the variableundefined(which istrue).So, while you can declare a variable named
undefined, you cannot change the fact that non-initialized variables are set to the valueundefined.