如果变量已经声明但尚未初始化,则称其为“undefined
”。 而“null
”被分配给当时没有值的变量。
简单来说,当您不为变量赋值时,JavaScript 引擎会将其视为undefined
。 null
值是由程序员分配的,以指示变量内部没有变量,但打算在以后的程序执行中使用该值。
undefined
请参阅下面的 JavaScript 语句以了解undefined
。
var myVar; //Variable declaration without assigning any value to it
console.log( myVar ); //undefined
console.log( typeof(myVar) ); //undefined
console.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 null
console.log( myVar ); //null
console.log( typeof(myVar) ); //object
请注意,null
的类型为object
,具有有效值,无属性,不可更改,并且系统中始终只存在相同的单个实例。
将相等运算符与null
和undefined
一起使用
当您想清楚地区分null
和undefined
变量时,请始终记住使用严格相等运算符(===
)将变量与null
和undefined
进行比较。
了解更多:JavaScript 中的
==
vs===
var myUndefinedVar; //undefined
var myNullVar = null; //null
myUndefinedVar == myNullVar; //true - which not correct as both are different
myUndefinedVar === myNullVar; //false - correct behavior
null
等于零
null
和undefined
之间的主要区别在于将它们转换为原始类型的方式。
null
在执行基本操作时会转换为零(0)。undefined
转换为NaN
。
var myUndefinedVar; //undefined
var myNullVar = null; //null
myUndefinedVar + 100; //NaN
myNullVar + 100; //100
将我的问题放在评论部分。
学习愉快!