xTable of Contents [1] reason [2]undefined [3]null Front words
General programming language, which means null only, but JavaScript designer Brendan Eich design a undefined, which undoubtedly increases the complexity of the program, but there are some reasons for this. This article will detail the undefined and null in JavaScript
Historical reasons
When JavaScript was born in 1995, initially, like Java, only null was set as the value representing "none". According to the traditional C language, NULL is designed to automatically convert to 0.
However, JavaScript designers Brendan Eich that this is not enough, there are two reasons. First, NULL is treated as an object, as in Java. However, the value of JavaScript is divided into two categories: primitive type and object type, Brendan eich think that the value of "none" is best not an object. Second, the initial version of JavaScript does not include the error handling mechanism, when data type mismatch occurs, is often the type of automatic conversion or silently fail. Brendan Eich feel that if NULL is automatically converted to 0, it is not easy to find an error
Therefore, Brendan Eich also designed a undefined. He distinguishes between: null is an object that represents "none", a value of 0;undefined is a primitive value that represents "none", and a value of Nan when converted to a number
However, at present null and undefined are basically synonymous, are primitive types, and only a few subtle differences
Undefined
The undefined type has only one value, which is undefined. When the declared variable is not initialized, the default value of the variable is undefined. So in general, undefined indicates that the variable is not initialized
var test; // undefinedconsole.log (test = = undefined); // true var test = undefined; // undefined
You can only perform one operation on a variable that has not been declared, use the typeof operator to detect its data type, but strict mode causes an error
typeof (test); // undefined
"Scene appears"
"1" declared unassigned variable
"2" gets the property that the object does not exist
"3" execution result of a function with no return value
The parameters of the "4" function are not passed in
"5" void (expression)
var I;console.log (i); // undefined var o = {};console.log (O.P); // undefined function F () {};console.log (f ()); // undefined function f (x) { X;} Console.log (f ()); // undefined console.log ( void (0)); // undefined
"Type Conversion"
false Number (undefined): Nanstring (undefined): ' undefined '
Null
A null type has only one value, which is null. Null is a keyword in the JavaScript language that represents a special value that is commonly used to describe a "null value"
At a logical angle, a null value represents an empty object pointer
[Note that]null is an empty object pointer, while [] is an empty array, {} is an empty object, and the three are not the same
Console.log (typeofnull); // ' object '
Although null and undefined are different, they all represent "empty values", null means "null", and undefined means "undefined". The two are often interchangeable. Judging equality operators = = think they are equal
Console.log (null = = undefined); // true
In fact, because undefined and null are not constructor types, they do not have any properties and methods, and the members or methods that use. and [] to access both values will produce a type error
"Type Conversion"
Boolean (null): falsenumber(null): 0String (null): ' null ' ‘
Resources
"1" Ruan one peak JavaScript standard reference Tutorial--Grammar Overview Http://javascript.ruanyifeng.com/grammar/basic.html#toc21
"2" W3school-javascript Advanced Tutorial--Original type http://www.w3school.com.cn/js/pro_js_primitivetypes.asp
"3" JavaScript Definitive Guide (6th edition) 3rd Chapter type, value, and variable
"4" JavaScript Advanced Programming (3rd Edition), chapter 3rd Basic Concepts
JavaScript type system--undefined and NULL