前言
不同语言有不同表示空值的写法和关键字
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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16141.html