最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript中表示空的undefined与null的区别及用法

来源:懂视网 责编:小采 时间:2020-11-27 20:24:38
文档

JavaScript中表示空的undefined与null的区别及用法

JavaScript中表示空的undefined与null的区别及用法:我刚开始学习JavaScript的时候 就感觉undefined挺新鲜 因为其他语言没有 而且不仅有undefined,居然还有一个表示空的null 相信很多同学都说不出来undefined与null有什么区别 今天我就总结一下JavaScript中表示空的undefined与null的区别相似
推荐度:
导读JavaScript中表示空的undefined与null的区别及用法:我刚开始学习JavaScript的时候 就感觉undefined挺新鲜 因为其他语言没有 而且不仅有undefined,居然还有一个表示空的null 相信很多同学都说不出来undefined与null有什么区别 今天我就总结一下JavaScript中表示空的undefined与null的区别相似

我刚开始学习JavaScript的时候

就感觉undefined挺新鲜
因为其他语言没有
而且不仅有undefined,居然还有一个表示空的null
相信很多同学都说不出来undefined与null有什么区别
今天我就总结一下JavaScript中表示空的undefined与null的区别

相似

undefined和null都是JavaScript中的基本类型
并且它们的类型值各只有一个,就是undefined和null,与它们的类型同名
正常来说,这两个值看起来还真没什么区别

var foo = undefined;
var foo = null;

而且标准还有这样的规定

console.log(null == undefined) // true

(但是null !== undefined

转化为布尔值都是false

if(!undefined){
 console.log(1);//1}if(!null){
 console.log(1);//1}

区别

但其实,有区别
先来看看这几行代码

console.log(undefined in window);// trueconsole.log(null in window);// false

这是其中不同的一点
null是JavaScript的关键字
而undefined是window上的一个特殊的的属性(和NaN、Infinity一样)
虽然ES5undefined变为只读属性,但是仍然有不合理的地方,比如说这样

function fn(){
 var undefined = 1;// 注意:前方高能
 console.log(undefined);// 1}
fn();

看吧,因为undefined不是关键字,所以我们可以在局部变量中声明undefined(简直无语)
即便你是严格模式

function fn(){ "use strict"; var undefined = 1;
 console.log(undefined);// 1}
fn();

我们可千万不要写这么令人发指的代码

在进行数学运算时也存在差别

console.log(undefined + 1); //NaNconsole.log(null + 1); //1

undefined进行任何运算会转换为NaN
而null转换为0

历史

JavaScript有两种表示空的值是有道理的
js之父Brendan Eich最开始设计得时候像Java一样,只有null
但是他考虑到js有基本值和引用值两种
用一个对象来表示空怪怪的typeof null === 'object',而且null转化为数字0导致很多bug不好找
于是他又设计了undefined

用法

按照js之父的设计
undefined表示缺少值
null表示为空对象
但是现在我们并不是这样使用的

可以这样来理解
undefined表示变量没有初始化,没有值
null表示变量初始化了,值为“空值”

undefined是js用的,而null是给我们用的
这句话不知道大家能不能理解
比如在这些情况

  • var a; 声明变量,引擎会在预编译给它赋上默认值undefined

  • function a(){} 声明函数,没有返回值默认返回undefined

  • var obj = {};obj.a; 访问不存在的对象属性,默认值undefined

  • var a = function(a){};a(); 没有指定实参,默认参数值undefined

  • ……

  • 这都是系统给我们默认的undefined,也就是js使用的
    而我们要用的是null
    比如说

  • var obj = Object.create(null); 创建空对象

  • demo.onclick = null; 解除绑定事件

  • ……

  • 只要我们想要使用空,就用null肯定没错,某些情况还可以方便浏览器的垃圾回收

    总结

    最后给大家总结一下

  • undefined是window上的特殊属性,是标识符,可以赋值;null是特殊关键字,不是标识符,不能赋值

  • undefined == null –> true | undefined === null –> false

  • undefined转化为number为NaN,null转化为number为0

  • undefined与null转换为boolean都是false

  • undefined表示没有值,null表示空值

  • 我们应该使用null表示空而不要使用undefined

  • 永远不要重定义undefined

  • 文档

    JavaScript中表示空的undefined与null的区别及用法

    JavaScript中表示空的undefined与null的区别及用法:我刚开始学习JavaScript的时候 就感觉undefined挺新鲜 因为其他语言没有 而且不仅有undefined,居然还有一个表示空的null 相信很多同学都说不出来undefined与null有什么区别 今天我就总结一下JavaScript中表示空的undefined与null的区别相似
    推荐度:
    标签: 区别 用法 的区别
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top