Home  >  Article  >  Web Front-end  >  Detailed explanation of the difference between null and undefined usage in JavaScript

Detailed explanation of the difference between null and undefined usage in JavaScript

伊谢尔伦
伊谢尔伦Original
2017-07-18 14:07:141541browse

Judge undefined and null:

<span style="font-size: small;">var tmp = undefined; 
if (tmp== undefined) 
{ 
alert("null or undefined"); 
} </span>
<span style="font-size: small;">var tmp = undefined; 
if (tmp== null) 
{ 
alert("null or undefined"); 
}</span>

Explanation: null==undefined

But:
null !== undefined
So what is the difference between the two?
null
This is an object, but it is empty. Because it is an object, typeof null returns 'object' .
null is a JavaScript reserved keyword.
The value of null will be automatically converted to 0 when participating in numerical operations. Therefore, the following expression will obtain the correct value after calculation:
Expression: 123 + null Result value: 123
Expression: 123 * null result value: 0
undefined
undefined is a special property of the global object (window), and its value is undefined. But typeof undefined returns 'undefined' .
Although undefined has a special meaning, it is indeed a property, and it is a property of the global object (window).

alert(&#39;undefined&#39; in window);//输出:true 
var anObj = {}; 
alert(&#39;undefined&#39; in anObj); //输出:false

It can be seen that undefined is a property of the window object, but it is not a property of the anObj object.
Note: Although undefined is an attribute with special meaning, it is not a reserved keyword in JavaScript.
When undefined participates in any numerical calculation, the result must be NaN.
By the way, NaN is another special property of the global object (window), and so is Infinity. None of these special attributes are reserved keywords for JavaScript!

Improve undefined performance
When we use the undefined value in the program, we actually use the undefined property of the window object.
Similarly, when we define a variable but do not assign it an initial value, for example:
var aValue;
At this time, JavaScript will set its initial value to the window.undefined property during so-called precompilation Reference,
So, when we compare a variable or value with undefined, it is actually compared with the undefined property of the window object. During this comparison process, JavaScript will search for the property named 'undefined' of the window object, and then compare whether the reference pointers of the two operands are the same.
Since there are many attribute values ​​​​of the window object, in each comparison with undefined, it will take time to search for the undefined attribute of the window object. This can be a performance problem in functions that require frequent comparisons to undefined.

Among them, when defining an undefined local variable, its initial value will be a reference to the window.undefined property value. The newly defined local undefined variable exists in the scope of the function. In subsequent comparison operations, there is no change in the way the JavaScript code is written, but the comparison speed is very fast. Because the number of variables in the scope will be far less than the properties of the window object, the speed of searching for variables will be greatly improved.
This is why many front-end JS frameworks often define a local undefined variable themselves!

The above is the detailed content of Detailed explanation of the difference between null and undefined usage in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn