如果变量已经声明但尚未初始化,则称其为“undefined”。 而“null”被分配给当时没有值的变量。
简单来说,当您不为变量赋值时,JavaScript 引擎会将其视为undefined。 null值是由程序员分配的,以指示变量内部没有变量,但打算在以后的程序执行中使用该值。
undefined
请参阅下面的 JavaScript 语句以了解undefined。
var myVar; //Variable declaration without assigning any value to itconsole.log( myVar ); //undefinedconsole.log( typeof(myVar) ); //undefinedconsole.log( undeclaredVar ); //Uncaught ReferenceError: undeclaredVar is not defined
如果看到一个值undefined的变量,则说明:
- 该变量已在程序中声明。
- 变量没有赋值。
- 如果检查变量
type,它将是undefined。 请注意,这是 JavaScript 中的原始类型之一:字符串,数字,布尔值,null,undefined,符号(ES6 中的新增功能)。 - 如果函数返回
undefined,则未返回任何值。
undefined在 JavaScript 中不是保留关键字。
null
null表示故意缺乏的值。 从概念上讲,它与 Java,C# 等其他编程语言中的null非常相似。null表示缺少标识,表示变量指向没有对象。
var myVar = null; //Variable declared and assigned to nullconsole.log( myVar ); //nullconsole.log( typeof(myVar) ); //object
请注意,null的类型为object,具有有效值,无属性,不可更改,并且系统中始终只存在相同的单个实例。
将相等运算符与null和undefined一起使用
当您想清楚地区分null和undefined变量时,请始终记住使用严格相等运算符(===)将变量与null和undefined进行比较。
了解更多:JavaScript 中的
==vs===
var myUndefinedVar; //undefinedvar myNullVar = null; //nullmyUndefinedVar == myNullVar; //true - which not correct as both are differentmyUndefinedVar === myNullVar; //false - correct behavior
null等于零
null和undefined之间的主要区别在于将它们转换为原始类型的方式。
null在执行基本操作时会转换为零(0)。undefined转换为NaN。
var myUndefinedVar; //undefinedvar myNullVar = null; //nullmyUndefinedVar + 100; //NaNmyNullVar + 100; //100
将我的问题放在评论部分。
学习愉快!
