Objective
I'm sure you all know that when you declare a variable and do not assign a value, its initial value is undefined. But in JavaScript, how do you check if a value is undefined?
In short, in modern browsers, you can safely compare whether a variable is undefined
if (name = = = undefined) {...}
Some people object to using the undefined variable directly for comparison because the value in the old browser allows it to be assigned a value, such as the following:
Using the undefined directive will not correctly detect whether a variable is assigned after being assigned a value.
However, this behavior was repaired in the 2009 ECMAScript 5.
15.1.1.3 undefined the
value of undefined is undefined (8.1). This property has the attributes {[[writable]]: false, [[Enumerable]]: false, [[configurable]]: false}.
In modern browsers, the value of undefined will not be overridden
What do we need to support IE8 or older browsers?
Usually the undefined instructions are safe. There is no reason to modify the value of undefined in the application.
Thomas's answer, using persuasive reasoning, demonstrates this.
I don ' t hear people telling I-I shouldn ' t use settimeout because someone can
I don't listen to people telling me that I shouldn't be using settimeout because someone like that :
Window.settimeout = function () {
alert ("Got you now!");
The following line, "It can be assigned again", raw === undefined
returns False
If you still care, there are two ways to check whether a value is undefined, even if the global window.undefined
has been overridden
if (name = = void (0)) {...}
In this example 0 does not have any practical meaning, you want to use also does not 1 or function(){}
matter. void(anything)
will be counted to get undefiend.
Alternatively, you can use the TypeOf operator to safely check whether you have been assigned a value. You can check whether the type of a value is "undefined" instead of the global undefined comparison.
if (typeof name = = "undefined") {...}
Note that the second option is slightly different from the previous one. Although name is not declared, TypeOf will return him as undefined. If you use name directly you undefinedor void(0)
will get ReferenceError
an unusual error.
But do not use void (0) directives
Avoid void (0) in your code or typeof x === "undefined"
, you can use isUndefined function
the method to wrap them up so that you don't have to specify them when you use them.
function isundefined (value) {
//get undefined to ensure that it has not been assigned
var undefined = void (0);
return value = = undefined;
}
Some tool libraries have already deployed this method, for example: _.isUndefined
, the underscore
isUndefined
methods in
Summarize
The above is the entire content of this article, I hope to be able to learn or work to bring certain help, if you have questions you can message exchange.