cms大型门户网站,免费试用平台网站源码,产品网站免费模板下载地址,html5国内网站建设1. 前言 null 和 undefined 的区别 #xff1f;这是一道基础面试题
很多人都会说 null 是空#xff0c;undefined 是未定义#xff0c;这样回答太过于笼统。
面试官反问#xff1a;null 是空代表没有值是吧#xff0c;undefined 是未定义也是没有值是吧#xff0c;都是…1. 前言 null 和 undefined 的区别 这是一道基础面试题
很多人都会说 null 是空undefined 是未定义这样回答太过于笼统。
面试官反问null 是空代表没有值是吧undefined 是未定义也是没有值是吧都是没有值它们的区别到底是什么
应聘者这下芭比Q了 !
2. 历史原因 JavaScript 语言居然有两个表示 “无” 的值null、undefined这是为什么
1995 年 JS 诞生时最初像 Java 一样只设置了 null 作为表示 “无”根据 C 语言的传统null 被设计成可以自动转为 0
但是JS 的设计者觉得这样做还不够主要有下面两个原因
一、JS 中的 null 像 Java 中的 null 一样被当作一个对象。但是 JS 中的数据类型分为 原始类型 和 合成类型(复合类型)作者觉得表示 “无” 的值最好不是对象也可以理解为不应该是对象 // 返回值是 objecttypeof null
二、JS 的最初版本没有错误处理机制发生数据类型不匹配时会自动进行类型转换作者觉得如果 null 自动转为 0很不容易发现错误 // 2null 2// NaNundefined 2
因此作者又设计了一个 undefined。先有 null 后有 undefined出来 undefined 是为填充之前的坑
3. 具体区别 a. 自动转换
JS 最初版本是这样区分的
null 表示一个 “无” 的对象空对象指针转为数值时是 0undefined 表示一个 “无” 的原始值转为数值时是 NaN
b. 含义不同
null 的含义是空对象。一般用于赋值给那些可能返回对象的变量作为初始化值。typeof null 的返回值是 object
undefined 的含义是未定义。变量声明了但没有赋值变量的值是 undefined。typeof undefined 的返回值是 undefined