我想知道JavaScript中null和undefined之间的区别。
当前回答
我将解释undefined、null和UncaughtReferenceError:
1-未捕获引用错误:脚本中未声明变量,没有对此变量的引用2-未定义:变量已声明但未初始化3-null:声明的变量为空值
其他回答
null是一个特殊的关键字,表示缺少值。
将其视为一种价值,例如:
“foo”是字符串,true为布尔值,1234是数字,null未定义。
undefined属性表示尚未为变量分配包含null的值。喜欢
var foo;
定义的空变量为null,数据类型为undefined
它们都表示一个没有值的变量的值
以及null不表示没有值的字符串-空字符串-
Like
var a = '';
console.log(typeof a); // string
console.log(a == null); //false
console.log(a == undefined); // false
现在如果
var a;
console.log(a == null); //true
console.log(a == undefined); //true
BUT
var a;
console.log(a === null); //false
console.log(a === undefined); // true
所以每个人都有自己的使用方法
undefined使用它来比较变量数据类型
null使用它来清空变量的值
var a = 'javascript';
a = null ; // will change the type of variable "a" from string to object
tl;博士
使用null设置一个已知为Object的变量。
使用undefined设置类型混合的变量。
这是我对5个原语和Object类型的用法,这解释了未定义或空的«用例»之间的区别。
一串
如果您知道一个变量在整个生命周期中只是一个字符串,那么按照惯例,您可以将其初始化为“”:
("") ? true : false; // false
typeof ""; // "string";
("Hello World") ? true : false; // true
typeof "Hello World"; // "string"
数字
如果您知道一个变量在所有生命周期中都只是一个数字,那么按照惯例,您可以将其初始化为0(如果0在您的使用中是一个重要值,则为NaN):
(0) ? true : false; // false
typeof 0; // "number";
(16) ? true : false; // true
typeof 16; // "number"
or
(NaN) ? true : false; // false
typeof NaN; // "number";
(16) ? true : false; // true
typeof 16; // "number"
布尔型
如果您知道一个变量只是一个布尔值,而所有生命周期,按照惯例,您可以将其初始化为false:
(false) ? true : false; // false
typeof false; // "boolean";
(true) ? true : false; // true
typeof true; // "boolean"
对象
如果您知道一个变量在所有生命周期中都只是一个Object,那么按照惯例,您可以将其初始化为null:
(null) ? true : false; // false
typeof null; // "object";
({}) ? true : false; // true
typeof {}; // "object"
注意:关闭null的智能用法是Object的错误版本,因为Object始终为true,因为typeof null返回对象。这意味着typeof myVarObject返回Object和null类型的一致值。
All
如果您知道一个变量有一个混合类型(所有生命周期中的任何类型),按照惯例,您可以将其初始化为undefined。
由于typeof返回undefined,undefineed是一种类型,其中null是一个初始值设定项,表示变量指向任何对象(实际上Javascript中的所有内容都是一个对象)。
null-它是一个赋值值,与变量一起使用以表示任何值(它是对象)。
undefined-它是一个没有赋值的变量,所以JavaScript会给它赋值一个undefineed(它是一种数据类型)。
未声明-如果根本没有创建变量,则称为未声明。
undefined表示变量已声明但尚未赋值:
var测试var;console.log(testVar)//显示未定义console.log(testVar类型)//显示未定义
null是赋值。它可以作为无值表示分配给变量:
var testVar=空;console.log(testVar)//显示nullconsole.log(testVar类型)//显示对象
从前面的示例中可以清楚地看到,undefined和null是两种不同的类型:undefineed是类型本身(undefine),而null是对象。
证明:
console.log(null==未定义)//false(类型不同)console.log(null==undefined)//true(但为“相同值”)console.log(null==null)//true(类型和值相同)
and
null = 'value' // Uncaught SyntaxError: invalid assignment left-hand side
undefined = 'value' // 'value'