js--基本数据类型null和undefined的区别

1. null类型

  只有一个值null,逻辑上表示一个空对象的指针,如果要定义一个变量来保存对象,最好将该变量初始化为null,比如let a="",而不要let b这样,其实null就是一个空对象的指针,并没有指向任何一个对象,不同于空对象,空对象是一个对象,但是它的值是指向没有任何属性的对象的引用,{}是指向不含任何属性(即js的字面值和函数)的对象。

2. undefined类型

  只有一个值undefined,指未初始化的变量,比如let b,只是声明了变量b,并没有初始化,此时使用b(console.log(b))变量会输出为undefined,
  若没有声明变量直接使用会报错,比如没有声明msg,直接console.log(msg),会报错,此时typeof msg输出为undefined
  undefined派生自null值,null作为空对象指针用于区分两者

3.转化为数字时不同

  Number(null) 输出0
  Number(undefined)输出NaN非数值
  undefined == null输出true
  undefined === null输出false

4. 使用场景不同

  undefined和null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等。
  
  null类型
        作为函数从参数 if(car != null){//操作car}
        作为对象原型的终点,Object.getPrototypeOf(Object.prototype)输出null

  undefined类型
        函数没有返回值时,默认返回undefined
        对象没有赋值属性,该属性的值为undefined
        调用函数时,应该提供的参数没有提供,该参数等于undefined
        变量被声明了,但没有赋值时,就等于undefined。
posted @   zaisy'Blog  阅读(670)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示