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

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


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

一、Null数据类型

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

  1. 定义与概念:
  • Null 类型仅有一个值,就是 null
  • null 值表示“无”或“空”,它通常用来表示变量尚未指向任何有效的对象或者有意清空一个变量的引用。
  1. 用途:
  • 当一个变量应该被赋予对象值但当前为空或未定义时,可以设置为 null
  • 在API调用中,返回 null 可以明确地指示没有有效结果或者资源不存在。
  • 作为函数参数,传递 null 可能意味着不需要提供对象或值。
  1. 示例:
// 定义一个变量并赋值为 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');
}
  1. 逻辑运算:
  • 在逻辑表达式中,null 被视为 false,因此可以用在条件语句中:
if (!value) {
  console.log('Value is falsy, which includes being null');
}
  1. 类型检查:
  • 使用 typeof 运算符检测变量类型时,尽管 null 是一种特殊的原始类型,但它会返回 "object"
console.log(typeof null); // 输出 "object"
  1. 比较运算:
  • null 与自身或其他原始类型的比较结果是明确的:
console.log(null == undefined); // 输出 true (抽象相等比较)
console.log(null === undefined); // 输出 false (严格相等比较)
console.log(null > 0); // 输出 false
console.log(null < 0); // 输出 false
  1. 赋值和销毁引用:
  • null 赋给一个变量可以清除该变量对任何对象的引用:
let obj = { name: 'Alice' };
obj = null; // 现在 obj 不再指向任何对象
  1. JSON.stringify():
  • 当使用 JSON.stringify() 方法序列化数据时,null 值会被保留:
let data = { user: null };
let json = JSON.stringify(data);
console.log(json); // 输出 '{"user":null}'

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

小结

  • undefined 表示变量声明了但还没有赋值,或者访问的对象属性不存在。
  • null 则是开发者显式地设定变量为“无”值状态,强调是有意为之。
相关文章
|
11月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
710 24
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
791 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
642 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
293 32
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
|
JavaScript 前端开发
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
403 2

热门文章

最新文章