空值NULL与undefined的区别

前言

不同语言有不同表示空值的写法和关键字

C++用NULL、java用null、Python用None NULL、JavaScript用NULL/undefined

一、NULL

null :空值

语义:希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。

在内存里的表示就是,栈中的变量没有指向堆中的内存对象。

1、NULL是一个特殊的对象
    typeof null	//object null值表示一个空对象指针,它代表的其实就是一个空对象
    Number(null)//0
    parseInt(null)//NaN
2、NULL是对象原型链的终点

对象Object的原型prototype为NULL

    console.log(Object.getPrototypeOf(Object.prototype))//null
3、NULL是对象变量初始值

定义了一个对象变量,在这个对象变量没有真正保存对象之前,一般情况会初始化为NULL。

4、释放引用NULL

当一个变量不再被需要被使用的时候,设置其值为NULL来解除引用。但是并不意味着会自动回收改值所占用的内存空间。设置为NULL的作用一方面是使得全局变量和全局变量的属性脱离执行环境,以便垃圾回收机制下次运行的时候将其回收;另一方面是避免循环引用的情况。(局部变量会在它们离开执行环境的时候自动解除引用)

二、undefined

声明一个空,js语言设计者认为不应该是或最好不是对象,于是发明了undefined表示缺少值,表示此处应该有值,但是没有定义,转换为数值时表示未定义。undefined 一般都来自于某个表达式最原始的状态值,不是人为操作的结果。

1、变量被声明但没有被初始化赋值
    var variable
    console.log(variable)

在这里插入图片描述

2、调用函数时,函数定义了形参,但调用函数时没有传递实参
    function fn(a) {
        console.log(a)
    }
    fn()

在这里插入图片描述

3、访问对象的不存在属性/未声明的变量
    console.log(Object.time)
    console.log(typeof day)

在这里插入图片描述

4、函数没有返回值
    function fn() {
        console.log('hello world')
    }
    var a = fn()
    console.log(a)

在这里插入图片描述

三、NULL和undefined的区别

NULL是人为设置的空对象的状态值

undefined不是人为设置的,是一个变量最原始、最自然的状态值

在开发过程中,为了更好的语义化,不要将一个变量随便赋值为undefined,释放对象的引用用NULL

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傲娇味的草莓

佛系少女只是想记录学习痕迹

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值