编程笔记 html5cssjs 070 JavaScript Null数据类型

编程笔记 html5&css&js 070 JavaScript Null数据类型

  • 一、Null数据类型
  • 二、 类型运算
  • 小结

在JavaScript中,Null 是一种基本数据类型,它是JavaScript七种原始数据类型(包括:BooleanNumberStringNullUndefinedSymbol(ES6新增)和 BigInt(ES10新增))之一。尽管它在技术上是原始类型,但在使用 typeof 运算符检测时会返回 "object",这是JavaScript语言设计上的一个历史遗留问题,而不是因为它真的是对象。

一、Null数据类型

在JavaScript中,Null 是一种基本数据类型,它是JavaScript七种原始数据类型(包括:BooleanNumberStringNullUndefinedSymbol(ES6新增)和 BigInt(ES10新增))之一。尽管它在技术上是原始类型,但在使用 typeof 运算符检测时会返回 "object",这是JavaScript语言设计上的一个历史遗留问题,而不是因为它真的是对象。

  1. 定义与概念:

    • Null 类型仅有一个值,就是 null
    • null 值表示“无”或“空”,它通常用来表示变量尚未指向任何有效的对象或者有意清空一个变量的引用。
  2. 用途:

    • 当一个变量应该被赋予对象值但当前为空或未定义时,可以设置为 null
    • 在API调用中,返回 null 可以明确地指示没有有效结果或者资源不存在。
    • 作为函数参数,传递 null 可能意味着不需要提供对象或值。
  3. 示例:

// 定义一个变量并赋值为 null
let myVariable = null;// 使用 typeof 检测该变量的类型
console.log(typeof myVariable); // 输出 "object" (注意此处是语言特性的表现)// 检查变量是否为 null
if (myVariable === null) {console.log('myVariable is null');
} else {console.log('myVariable is not null');
}// 示例:清空对象引用
let myObject = { name: 'Alice' };
myObject = null; // 此时 myObject 不再引用任何对象// 示例:从函数返回 null
function findUser(id) {// 假设执行查找逻辑...if (!userExists(id)) {return null;}return getUserById(id);
}let user = findUser(12345);
if (user === null) {console.log('User with id 12345 does not exist');
}

需要注意的是,在实际开发中,undefinednull 都常用来表示某种形式的“无”,但它们有微妙的区别:

二、 类型运算

在JavaScript中,Null 类型的值只有 null 这一个特定的实例。虽然它是一个单独的数据类型,但因为它只有一个值,因此直接针对 null 的运算相对有限。以下是一些与 null 值相关的常见运算:

  1. 相等性检查:

    • 使用 ===== 检查变量是否为 null
      let value = null;
      if (value === null) {console.log('Value is indeed null');
      }
      
  2. 逻辑运算:

    • 在逻辑表达式中,null 被视为 false,因此可以用在条件语句中:
      if (!value) {console.log('Value is falsy, which includes being null');
      }
      
  3. 类型检查:

    • 使用 typeof 运算符检测变量类型时,尽管 null 是一种特殊的原始类型,但它会返回 "object"
      console.log(typeof null); // 输出 "object"
      
  4. 比较运算:

    • null 与自身或其他原始类型的比较结果是明确的:
      console.log(null == undefined); // 输出 true (抽象相等比较)
      console.log(null === undefined); // 输出 false (严格相等比较)
      console.log(null > 0); // 输出 false
      console.log(null < 0); // 输出 false
      
  5. 赋值和销毁引用:

    • null 赋给一个变量可以清除该变量对任何对象的引用:
      let obj = { name: 'Alice' };
      obj = null; // 现在 obj 不再指向任何对象
      
  6. JSON.stringify():

    • 当使用 JSON.stringify() 方法序列化数据时,null 值会被保留:
      let data = { user: null };
      let json = JSON.stringify(data);
      console.log(json); // 输出 '{"user":null}'
      

总之,对于 null 数据类型的直接运算并不多,主要是用于比较、类型判断和清空引用,以及与其他数据类型交互时的行为表现。

小结

  • undefined 表示变量声明了但还没有赋值,或者访问的对象属性不存在。
  • null 则是开发者显式地设定变量为“无”值状态,强调是有意为之。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(策略游戏)

[CSP-S 2022] 策略游戏 题目描述 小 L 和小 Q 在玩一个策略游戏。 有一个长度为 n n n 的数组 A A A 和一个长度为 m m m 的数组 B B B&#xff0c;在此基础上定义一个大小为 n m n \times m nm 的矩阵 C C C&#xff0c;满足 C i j A i B j C_{i j} A_i \times …

多维时序 | Matlab实现CNN-RVM卷积神经网络结合相关向量机多变量时间序列预测

多维时序 | Matlab实现CNN-RVM卷积神经网络结合相关向量机多变量时间序列预测 目录 多维时序 | Matlab实现CNN-RVM卷积神经网络结合相关向量机多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现CNN-RVM卷积神经网络结合相关向量机多变量时间序…

springboot整合Sa-Token实现登录认证和权限校验(万字长文)

目前在国内的后端开发中&#xff0c;常用的安全框架有spring security、shiro。现在&#xff0c;介绍一款由国人开发的安全框架Sa-Token。这个框架完全由国人开发&#xff0c;所提供的Api文档和一些设置都是比较符合国人的开发习惯的&#xff0c;本次就来介绍一下如何在spring …

Multisim14.0仿真(四十五)AC220V转DC12V稳压电源设计

一、仿真原理图&#xff1a; 二、运行效果&#xff1a;

【Vue】组件间通信的7种方法(全)

目录 组件之前的通信方法 1. props/$emit 2.parent/children 3.ref 4.v-model 5.sync 6.attrs,attrs,attrs,listeners 7.provide/inject 7.eventBus 组件之前的通信方法 1. props/$emit 父传子 props 这个只能够接收父组件传来的数据 不能进行修改 可以静态传递 也可…

机器学习系列——(九)决策树

简介 决策树作为机器学习的一种经典算法&#xff0c;在数据挖掘、分类和回归等任务中广泛应用。本文将详细介绍机器学习中的决策树算法&#xff0c;包括其原理、构建过程和应用场景。 原理 决策树是一种基于树状结构的监督学习算法&#xff0c;它通过构建一棵树来对数据进行分…

【Rust】——基础Hello_world

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

68.Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决&#xff1f; 在 Spring MVC 中&#xff0c;默认情况下控制器是单例模式&#xff0c;也就是说&#xff0c;每个控制器类只有一个实例&#xff0c;该实例在应用程序启动时创建&#xff0c;并在整个应用程序的生命周…

DBeaver添加阿里maven镜像

1、点击数据库->驱动管理器 2、选择任意数据库&#xff0c;点击编辑按钮 3、点击下载/更新(D) 4、点击下载配置 5、点击添加 6、添加阿里云地址 http://maven.aliyun.com/nexus/content/groups/public/ 7、将阿里云地址移动到首位并点击"应用并关闭"

笔记---容斥原理

AcWing,890.能被整除的数 给定一个整数 n n n 和 m m m 个不同的质数 p 1 , p 2 , … , p m p_{1},p_{2},…,p_{m} p1​,p2​,…,pm​。 请你求出 1 ∼ n 1∼n 1∼n 中能被 p 1 , p 2 , … , p m p_{1},p_{2},…,p_{m} p1​,p2​,…,pm​ 中的至少一个数整除的整数有多少…

【项目日记(八)】第三层: 页缓存的具体实现(下)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

Android14 WMS-DisplayArea层级结构生成

每个手机可以有多个屏幕, 一个屏幕是一个displaycont, 下面从displaycont开始, 看下层级结构是如何构建的 02-02 19:55:04.258 3530 3530 V jinyanmeiWMS: java.lang.RuntimeException: jinyanmeiWMS 02-02 19:55:04.258 3530 3530 V jinyanmeiWMS: at com.android.serve…

【大数据面试题】001 Flink 的 Checkpoint 原理

一步一个脚印&#xff0c;一天一道大数据面试题。 Flink 是大数据实时处理计算框架。实时框架对检查点&#xff0c;错误恢复的功能要比离线的更复杂&#xff0c;所以一起来了解 Flink 的 Checkpoint 机制吧。 Checkpoint 机制 触发 Checkpoint 通过设置时间或数据量阈值来触…

LangChain 81 LangGraph 从入门到精通三

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

低版本MATLAB打开高版本Simulink文件的方法

打开simulink&#xff0c;依次点击“建模”、“环境”、“simulink预设项”&#xff0c;如图所示&#xff1a; 然后在弹出的窗口中&#xff0c;点击“模型文件”&#xff0c;并取消勾选“不要加载用更新版本的simulink创建的模型”&#xff0c;接着点击“应用”即可。如图所示&…

EAK厚膜功率电阻成功在eVTOL大量使用

eVTOL操作的特点是更高的放电曲线&#xff0c;特别是在起飞和着陆期间。 “传统上&#xff0c;电池要么被设计成提供大量能量&#xff0c;要么被设计成高功率&#xff0c;”Cuberg创始人兼首席执行官Richard Wang说。“对于eVTOL电池来说&#xff0c;在能量和功率之间保持良好…

记一次python爬虫多线程报错问题(多线程优先级别问题)。

部分python脚本&#xff1a; def sap_logon():try:os.system(taskkill /F /IM saplogon.exe)print("SAP程序已关闭&#xff01;")except:print("SAP程序没打开&#xff01;")sap_app r"C:\\Program Files (x86)\\SAP\FrontEnd\\SAPgui\\saplogon.ex…

情人节适合送哪些礼物?2024年情人节送礼指南大推荐!

情人节即将来临&#xff0c;这是一年一度表达爱意的时刻。在这个特殊的日子里&#xff0c;送上一份精心挑选的礼物&#xff0c;将会让爱意更加深刻。但是&#xff0c;肯定会有朋友会困惑于选择哪种礼物能够最好地表达您的心意。不用担心&#xff0c;今天小编就为大家精心准备了…

Linux的7个运行级别

目录 1、有那7个运行级别&#xff1f; 2、那么如何查看运行级别呢?  3、那么我想临时切换运行级别? 4、那么我想修改配置文件中的运行级别呢? 1、有那7个运行级别&#xff1f; 0&#xff1a;停机状态。系统默认运行级别不能设置为0&#xff0c;否则系统不能正常启动&a…

JDK17中的密封类sealed和permits使用指南:什么是Java中的sealed和permits?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …