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

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

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

一、Null数据类型

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

  1. 定义与概念:

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

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

javascript 复制代码
// 定义一个变量并赋值为 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');
}

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

二、 类型运算

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

  1. 相等性检查:

    • 使用 == 或 === 检查变量是否为 null:

      javascript 复制代码
      let value = null;
      if (value === null) {
        console.log('Value is indeed null');
      }
  2. 逻辑运算:

    • 在逻辑表达式中,null 被视为 false,因此可以用在条件语句中:

      javascript 复制代码
      if (!value) {
        console.log('Value is falsy, which includes being null');
      }
  3. 类型检查:

    • 使用 typeof 运算符检测变量类型时,尽管 null 是一种特殊的原始类型,但它会返回 "object":

      javascript 复制代码
      console.log(typeof null); // 输出 "object"
  4. 比较运算:

    • null 与自身或其他原始类型的比较结果是明确的:

      javascript 复制代码
      console.log(null == undefined); // 输出 true (抽象相等比较)
      console.log(null === undefined); // 输出 false (严格相等比较)
      console.log(null > 0); // 输出 false
      console.log(null < 0); // 输出 false
  5. 赋值和销毁引用:

    • 将 null 赋给一个变量可以清除该变量对任何对象的引用:

      javascript 复制代码
      let obj = { name: 'Alice' };
      obj = null; // 现在 obj 不再指向任何对象
  6. JSON.stringify():

    • 当使用 JSON.stringify() 方法序列化数据时,null 值会被保留:

      javascript 复制代码
      let data = { user: null };
      let json = JSON.stringify(data);
      console.log(json); // 输出 '{"user":null}'

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

小结

  • undefined 表示变量声明了但还没有赋值,或者访问的对象属性不存在。
  • null 则是开发者显式地设定变量为"无"值状态,强调是有意为之。
相关推荐
程序员大阳5 小时前
HTML+CSS+JS对话式实战(3)-活动管理页实现查询、新增、删除API后端接口
javascript·css·html·实战·删除·查询·新增
炫酷的大高个6 小时前
6 亿播放的闪身步,我用前端算出 15 倍重心差
前端·javascript
林小帅7 小时前
【笔记】Prisma v7 + SQLite TS2305 及连锁 TS7006 问题
前端·javascript·后端
Dumbness7 小时前
订阅消息弹窗必须在用户点击里调:联调实验室里 timing 和 Mock 支付通知踩的坑
javascript·uni-app
黄连木笛7 小时前
不改一行 Postman 源码,把它汉化了:Electron preload 注入 + fetch 拦截实战
javascript·electron
叼烟扛炮8 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
卋罖7509 小时前
Razor 视图 + JavaScript + Vue/iView 组件实现的表格自定义列
javascript·vue·iview·razor视图
系统集成-鹰翔1 天前
ERP图片改名后仍命中识别缓存:缓存键、十分钟到期与调用计数
javascript·经验分享·后端
FlyWIHTSKY1 天前
vue2和vue3有什么区别,用法上有哪些区别
前端·javascript·vue.js
程序员大阳1 天前
副队长JavaScript教程(66)-本地存储实战:待办事项网页的开发
javascript·json·实战·待办事项·本地存储·案例