我想知道JavaScript中null和undefined之间的区别。
当前回答
好吧,当我们听到null和undefined时,我们可能会感到困惑,但让我们简单地开始吧,它们都是假的,在很多方面都很相似,但JavaScript的奇怪部分,使它们有一些显著的区别,例如,typeof null是“object”,而typeof undefineed是“undefined'。
typeof null; //"object"
typeof undefined; //"undefined";
但如果你用下面的==检查它们,你会发现它们都是假的:
null==undefined; //true
此外,您可以将null赋给对象属性或原语,而undefined可以通过不赋给任何对象来实现。
我创建了一个快速的图像,以一目了然地显示差异。
其他回答
对于未定义的类型,只有一个值:undefined。
对于null类型,只有一个值:null。
因此,对于这两种情况,标签既是其类型,也是其值。
他们之间的区别。例如:
null是空值undefined是一个缺失的值
Or:
undefined还没有值null有一个值,但不再存在
实际上,null是一个特殊的关键字,而不是标识符,因此不能将其视为要赋值的变量。
然而,undefined是一个标识符。然而,在非严格模式和严格模式下,都可以创建一个名为undefined的局部变量。但这是一个可怕的想法!
function foo() {
undefined = 2; // bad idea!
}
foo();
function foo() {
"use strict";
undefined = 2; // TypeError!
}
foo();
当您在javascript中声明一个变量时,它被赋值为undefined。这意味着变量是未被修改的,可以在将来分配任何值。这也意味着您不知道该变量在声明时将保持的值。
现在可以显式地将变量赋值为null。这意味着变量没有任何值。例如,有些人没有中间名。因此,在这种情况下,最好将值null赋给person对象的中间名变量。
现在假设某人正在访问person对象的中间名变量,并且该变量的值未定义。他不知道开发人员是否忘记初始化这个变量,或者它是否没有任何值。如果它的值为null,那么用户可以很容易地推断middlename没有任何值,并且它不是一个未触及的变量。
空的类型为Object,而未定义的类型为undefined。Null表示“无值”,而undefined表示“不存在”。
typeof undefined; //undefined
typeof null; // Object
undefined !== null; //true
undefined == null; //true
undefined === null; //false
var var1;
var1; //undefined
var var2 = null;
var2; //null
const data = { banners: null }
const { banners = [] } = data;
console.log(data) // null
const data = { banners: undefined }
const { banners = [] } = data;
console.log(data) // []
null:缺少变量值;undefined:缺少变量本身;
..,其中变量是与值关联的符号名称。
JS可以用null隐式初始化新声明的变量,但它没有。