We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
undefined和null本质上没什么区别,只是用法上代表的含义不一样罢了。
undefined
null
为什么说,undefined和null本质上没什么区别?
通过这个来看看:
undefined == null //true null == undefined //true
另外,再阅读本文之前,建议大家先看看阮一峰老师的博客,以便了解下这二者的历史。
阮一峰 > undefined与null的区别
如何理解这2个定义?看看例子:
typeof(null) //object typeof(undefined) //undefined
另外,二者转换为Number的结果也不一样。
Number(null) // 0 Number(undefined) //NAN
NAN,Not a Number,在IEEE浮点数算术标准(IEEE 754)中定义,表示一些特殊数值。 INF,Infinity的缩写,无穷大的意思,比如:1/0,结果就是Infinity
说到这里大家可能就犯迷糊了,你一方面说没什么本质区别,另一方面通过定义又有区别,这让老夫如何是好?
好吧,接下来看看用途你大概就明白为什么Js这么定义二者了。
二者最大的用途不同在于 阶段不同:
阶段不同
我们知道变量的声明和赋值是2个不同阶段,只是有时候我们连起来写罢了,比如:
var name = 'night';
这里其实就是声明和赋值一起写了,拆分开来是这样:
var name; // 变量申明 name = 'night'; //变量赋值
好了,当您明白了这个逻辑有,再来看看上面说的二者迭代 阶段不同 是什么意思。
看看下面的两个例子,你可能就释然了:
var name; console.log(name); //undefined name = 'night'; console.log(name); //night name = null; console.log(name); //null
解释下上面的例子:
说到这里,你可能又会问:“好端端的我赋值一个 null 作甚?”
好吧,你是一个充满好奇心的人,且听洒家慢慢道来。
在Js中,你可以这么归类:“除了基本数据类型外,其余变量全部是对象”。
关于这句话解释下:
如果按照这么分类,那么 null 的一个作用就凸显了。
给一个变量赋值,基本数据类型可以直接赋值,那么我要赋值一个对象,或者清空一个对象的赋值,该怎么办呢?
那就发面一个空的对象吧,即:null。
当然变量被赋值为 null 后,还有另一层作用,那就是方便JS引擎对这个变量进行垃圾回收。
在JS中,凡是不用的变量,JS会定期清理掉。当我们把一个对象设置为 null 时,其实也就等于把这个对象标记为不用了,可以垃圾回收了。
The text was updated successfully, but these errors were encountered:
sunmaobin
No branches or pull requests
undefined
和null
本质上没什么区别,只是用法上代表的含义不一样罢了。前言
为什么说,
undefined
和null
本质上没什么区别?通过这个来看看:
另外,再阅读本文之前,建议大家先看看阮一峰老师的博客,以便了解下这二者的历史。
阮一峰 > undefined与null的区别
定义
null
,表示一个“无”的对象;undefined
,表示一个“无”的原始值;如何理解这2个定义?看看例子:
另外,二者转换为Number的结果也不一样。
用途
说到这里大家可能就犯迷糊了,你一方面说没什么本质区别,另一方面通过定义又有区别,这让老夫如何是好?
好吧,接下来看看用途你大概就明白为什么Js这么定义二者了。
二者最大的用途不同在于
阶段不同
:undefined
,用于变量声明时;null
,用于变量赋值时;我们知道变量的声明和赋值是2个不同阶段,只是有时候我们连起来写罢了,比如:
这里其实就是声明和赋值一起写了,拆分开来是这样:
好了,当您明白了这个逻辑有,再来看看上面说的二者迭代
阶段不同
是什么意思。看看下面的两个例子,你可能就释然了:
解释下上面的例子:
undefined
;undefined
的任务也就完成了;null
,那么结果也就是null
了;说到这里,你可能又会问:“好端端的我赋值一个
null
作甚?”好吧,你是一个充满好奇心的人,且听洒家慢慢道来。
关于Null
在Js中,你可以这么归类:“除了基本数据类型外,其余变量全部是对象”。
关于这句话解释下:
如果按照这么分类,那么
null
的一个作用就凸显了。给一个变量赋值,基本数据类型可以直接赋值,那么我要赋值一个对象,或者清空一个对象的赋值,该怎么办呢?
那就发面一个空的对象吧,即:
null
。当然变量被赋值为
null
后,还有另一层作用,那就是方便JS引擎对这个变量进行垃圾回收。在JS中,凡是不用的变量,JS会定期清理掉。当我们把一个对象设置为
null
时,其实也就等于把这个对象标记为不用了,可以垃圾回收了。参考
The text was updated successfully, but these errors were encountered: