js中的null和undefined区别

一、相同点

  1. 都是原始类型的值,且保存在栈中变量本地
  2. 进行条件判断时,都是false
//ECMAScript认为undefined是null派生出来的,所以定义他们值是相同的
console.log(undefined == null);//true  

二、不同点

  1. null是js的关键字,undefined是全局变量
  2. 类型不一样
     typeof(null) // object
     typeof(undefined) //undefined
     console.log(typeof(null) === 'object')//true
     console.log(typeof(undefied) === 'undefined')//true
    
  3. 转换值不一样
    console.log(Number(undefined));//NaN
    console.log(Number(1+ undefined));//NaN
    
    console.log(Number(null));//0
    console.log(Number(12+ null));//12
    

 出现场景

undefined

  1.  在变量提升(预解析)阶段,只声明未定义,默认值就是undefined。
  2. 2在JS的严格模式下(”use strict”),没有明确的主体,this指的就是undefined。
  3. 3函数定义没有返回值(return或者return后⾯什么也不带),默认的返回值就是undefined。
  4. 函数定义形参不传值,默认就是undefined。
  5. 对象没有这个属性名,属性值默认就是undefined。
  6. 在数组的find⽅法中,没有找到的情况下是undefined。

null

  1.  ⼿动设置变量的值或者对象某⼀个属性值为null(此时不赋值,会在后⾯的代码中进⾏赋值,相当于初始化。)
  2.  在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果⼀般是null。
  3. Object.prototype._proto_的值也是null。
  4.  在正则捕获的时候,如果没有捕获到结果,默认也是null。

总结

  1.  undefined 代表的含义是未定义,null 代表的含义是空对象。一般变量声明了但还没有定义的时候会返回 undefined,null主要用于赋值给一些可能会返回对象的变量,作为初始化。
  2. 开始不知道值,一般最好用null作为初始的空值,因为0值不是空值,它在栈内存中有自己的存储空间(占了位置)
  3. 当需要释放一个对象的时候可以将该对象赋值为null,进而来释放对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值