null和undefined

本文详细探讨了JavaScript中null和undefined的区别及其判断方法。null是一个特殊的值,typeof判断返回object,而Object.prototype.toString.call()返回'[object Null]'。另一方面,undefined表示变量未定义或未赋值,typeof判断返回undefined,toString.call()返回'[object Undefined]'。对于var、let和const声明的变量,它们在不同场景下的表现也有所不同,涉及变量提升和暂时性死区的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

null
 声明变量并且赋值为null;
 判断方法:
 如果typeof 判断,则返回object, 因为在 JS 的最初版本中,使用的是32位系统,为了性能考虑使用低位存储了变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。
 如果用Object.prototype.toString.call(变量),则会返回'[object Null]';
 
undefined
   变量如果声明了没有赋值,或者后期去声明了没有赋值,就去去使用了这个变量,根据不同的声明方式就会出现不同的返回结果
   情况一:
      如果是var声明(由于var的显式变量提升),就会返回undefined;
   情况二:
      如果是let声明,前期声明了但是没有赋值,就会返回undefined;
      补充:如果后期才声明,但是没有赋值,不会返回undefined,因为这个时候出现tzd暂时性死区;
    情况三:  
      如果用const声明,是必须赋值的,可以赋值任何,如果只声明不赋值,就会报错Missing initializer in const declaration (译:缺少初始值设定项),如果赋值的是undefined,并且是在声明后使用,就会返回undefined,生命前使用也会出现tzd暂时性死区;
     
    判断方法:
    如果是typeof 判断,则会返回undefined,如果用Object.prototype.toString.call(变量),则会返回'[object Undefined]';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值