Open super-fool opened 3 years ago
null 被归类为 基本类型(primitive data).
null
primitive data
但是typeof null 的值是object. 它为什么是个对象呢?
typeof null
object
当然, 这是个历史遗留问题, 后面会详细解释
如何理解null和 undefined, 我们看看以下三个场景:
undefined
人 = 变量 翔 = 值 厕坑 = 栈 厕所 = 内存
我们只看第二个场景: 我就占这厕所, 我就不拉, 哎, 就是玩. 典型的null.
我们再看第三个场景: 我有文明, 没翔我就走, 留给有翔的人用. 典型的undefined.
应该明白 null 和 undefined 的区别了吧.
JS的GC(警察) 怎么处理这些场景呢 ? 在场景二中, 警察打开门发现这是占着茅坑不拉屎啊, 强行把没翔的人拖走; 在场景三中, 警察以为有人, 打开门发现, 哎哟, 卧槽, 没人啊.
言归正传哈
为什么我们经常会用null来表示空值 而不是 undefined 呢?
其实还有个比较重要的一点是类型转换上的不同
详细解释: 百度搜索: 阮一峰说: null和undefined的区别
当我们打算给一个变量赋值对象时, 我们可以将该变量初始化为null. 这里的意思就是告诉内存, 我先在栈中占一个坑, 在将来的某一个点我会填上这个坑;
当我们给一个变量赋值为一个原始类型的值时, 我们可以初始化为undefined. 这里代表, 我不需要占位置, 因为变量和原始类型的值都是保存在堆中的.
null
被归类为 基本类型(primitive data
).但是
typeof null
的值是object
. 它为什么是个对象呢?当然, 这是个历史遗留问题, 后面会详细解释
如何理解
null
和undefined
, 我们看看以下三个场景:人 = 变量 翔 = 值 厕坑 = 栈 厕所 = 内存
我们只看第二个场景: 我就占这厕所, 我就不拉, 哎, 就是玩. 典型的
null
.我们再看第三个场景: 我有文明, 没翔我就走, 留给有翔的人用. 典型的
undefined
.应该明白 null 和 undefined 的区别了吧.
JS的GC(警察) 怎么处理这些场景呢 ? 在场景二中, 警察打开门发现这是占着茅坑不拉屎啊, 强行把没翔的人拖走; 在场景三中, 警察以为有人, 打开门发现, 哎哟, 卧槽, 没人啊.
言归正传哈
为什么我们经常会用null来表示空值 而不是 undefined 呢?
其实还有个比较重要的一点是类型转换上的不同
详细解释: 百度搜索: 阮一峰说: null和undefined的区别