当前位置: 首页 > wzjs >正文

自适应网站建设公司十大管理培训课程

自适应网站建设公司,十大管理培训课程,流浪地球利用了什么样的网络营销方式,物流公司介绍模板在 JavaScript 中,null、undefined 和 NaN 是三个特殊的「非正常值」,正确判断它们是保证代码健壮性的关键。本文结合 ECMA 规范与 MDN 权威文档,系统梳理三者的判断方法、原理及典型场景,帮助开发者规避常见误区。 一、理解三个…

在 JavaScript 中,nullundefined 和 NaN 是三个特殊的「非正常值」,正确判断它们是保证代码健壮性的关键。本文结合 ECMA 规范与 MDN 权威文档,系统梳理三者的判断方法、原理及典型场景,帮助开发者规避常见误区。

一、理解三个特殊值的本质

  • undefined:表示「变量未初始化」或「对象属性未显式赋值」(如声明变量未赋值、访问不存在的对象属性)。
  • null:表示「有意为之的空值」(通常用于表示「空对象」,如 let obj = null)。
  • NaN(Not a Number):表示「非数字」,常见于数值计算失败场景(如 0/0"abc" - 1)。

二、判断 undefined 的权威方法

undefined 的核心特征是「未初始化」,判断时需注意兼容性。

1. 使用 typeof(推荐,兼容未声明变量)

typeof 返回变量的类型字符串("undefined" 表示未初始化)。即使变量未声明,typeof 也不会抛出错误,适合安全检查。

javascript

// 变量已声明但未初始化
let a; 
console.log(typeof a === "undefined"); // true// 检查对象不存在的属性(安全)
const obj = { name: "张三" };
console.log(typeof obj.age === "undefined"); // true(age属性未定义)// 变量未声明(不会报错)
console.log(typeof b === "undefined"); // true(b未声明)
2. 直接比较 === undefined(需变量已声明)

若变量已声明,可通过严格等于 undefined 判断,但未声明变量会抛出 ReferenceError

javascript

let c; 
console.log(c === undefined); // true(变量已声明未初始化)// 未声明变量直接比较会报错!
// console.log(d === undefined); // Uncaught ReferenceError: d is not defined

三、判断 null 的权威方法

null 是「主动设置的空对象」,需严格区分于其他值。

唯一可靠方式:=== null

typeof null 会返回 "object"(历史遗留问题),因此必须通过严格等于 null 判断。

javascript

const obj = null;
console.log(obj === null); // true(正确判断null)// 错误示例:typeof无法区分null和对象
console.log(typeof null); // "object"(无法用typeof判断null)

四、判断 NaN 的权威方法

NaN 是唯一不满足 x === x 的值(NaN !== NaN),判断需结合其特性。

1. ES6 新增 Number.isNaN(严格判断,推荐)

仅当值本身是 NaN 时返回 true,不会隐式转换其他类型。

javascript

console.log(Number.isNaN(NaN)); // true(直接判断NaN)
console.log(Number.isNaN("abc" - 1)); // true(计算结果为NaN)
console.log(Number.isNaN("123")); // false(字符串不是NaN)
2. 传统 isNaN(非严格,需谨慎)

先将参数隐式转换为数字,再判断是否为 NaN,可能误判其他类型。

javascript

console.log(isNaN(NaN)); // true(正确)
console.log(isNaN("abc")); // true("abc"转数字为NaN)
console.log(isNaN("123")); // false("123"转数字为123)
3. 利用 NaN !== NaN 特性(兼容旧环境)

NaN 是唯一不满足自身相等的值,可手动实现判断函数。

javascript

function isNaNPolyfill(value) {return value !== value; 
}
console.log(isNaNPolyfill(NaN)); // true
console.log(isNaNPolyfill("abc" - 1)); // true(结果为NaN)

五、综合场景与补充方法

实际开发中,需根据需求灵活组合判断逻辑。

场景 1:统一判断 null 或 undefined

利用宽松相等(null == undefined 为 true),快速判断两者。

javascript

const value = null;
if (value == null) { // 等价于 value == undefinedconsole.log("值为null或undefined"); // 触发
}
场景 2:函数参数默认值处理(ES6 解构赋值)

解构赋值的默认值仅在参数为 null 或 undefined 时生效,其他假值(如 0)不触发。

javascript

function getUserInfo({ age = "未知" } = {}) { console.log(`年龄:${age}`);
}getUserInfo({ age: null }); // 输出 "年龄:未知"(null触发默认值)
getUserInfo({ age: 0 }); // 输出 "年龄:0"(0是有效值,不触发默认值)
场景 3:使用工具库(如 Lodash)

成熟工具库提供语义化方法,提升代码可读性。

javascript

import { isNil, isNull, isUndefined } from "lodash";isNull(null); // true(仅判断null)
isUndefined(undefined); // true(仅判断undefined)
isNil(null); // true(判断null或undefined)
isNil(undefined); // true

六、总结与最佳实践

权威判断方法适用场景
undefinedtypeof value === "undefined"安全检查未声明变量或对象属性
nullvalue === null明确判断「主动设置的空对象」
NaNNumber.isNaN(value)(ES6)严格判断非数字结果
综合判断value == null(null/undefined)
lodash.isNil(工具库)
无需区分 null 和 undefined 时快速过滤

参考规范

  • ECMA-262 规范:typeof、Null、NaN。
  • MDN 文档:undefined、null、NaN。
http://www.dtcms.com/wzjs/32357.html

相关文章:

  • 搭建网站程序河南网站关键词优化代理
  • 百度没有投放的网站点击苏州网站建设书生商友
  • 网站运营培训机构提升seo排名的方法
  • qq技术教程wordpressseo外包软件
  • 百度做网站需要多少钱佛山市seo推广联系方式
  • 南昌市城乡建设委员会门户网站seo网站排名查询
  • 优秀网站设计参考个人发布信息免费推广平台
  • 网站网页设计制作潍坊快速网站排名
  • 企业网站做的好的有什么公司班级优化大师电脑版
  • 教学督导网站建设报告百度趋势搜索
  • 通用精品课程网站建设的需求分析友情链接的英文
  • 顺德做网站的公司新闻头条最新
  • 海城做网站新闻头条最新消息摘抄
  • 做生存分析的网站有哪些seo交流群
  • 公司网站建设需要注意的地方seo网站优化培训多少价格
  • 网站开发属于程序员吗自己开发网站怎么盈利
  • 那些论坛网站做的比较好quark搜索引擎入口
  • 如何做网站拥有自己的地址海淀区seo搜索优化
  • 大好网站六安seo
  • 福建省建设工程职业注册网站网站排名top排行榜
  • 开发一个网站做公司内部用360优化大师软件
  • 江西奶茶加盟网站建设搜索引擎优化培训
  • 国外做彩票网站违法吗凡科建站代理
  • 绍兴网站建设专业的公司4000-262-优化seo培训班
  • 微信公众号文章怎么转换wordpress南宁seo优化
  • 怎样建设网站赚钱免费网络推广的方法
  • 合肥网站开发公司福建百度代理公司
  • 那个网站使用bs做的宁波网络推广产品服务
  • 建设公司自己的网站如何优化网页
  • 制作公众号网站开发企业网站有哪些