JavaScript中undefined、null与NaN的区别

 更新时间:2023年09月11日 16:01:25   作者:刘瓜皮Alison  
undefined、null和NaN都属于javascript中的数据类型,本文主要介绍了 JavaScript中undefined、null与NaN的区别,具有一定的参考价值,感兴趣的可以了解一下

undefined、null与NaN的区别

1. 含义

undefined: 表示变量应该有值,但未赋值。其类型是undefined

null: 表示定义了一个空对象 ( 内存地址指向为空 )。其类型是object

NaN: 表示非数字 ( Not a number )。其类型是number。( Q: 既然表示非数字,为何其类型却是number? )

2. typeof、==、===的区别

/** typeof */
typeof undefined;     // undefined
typeof null;          // object
typeof NaN;           // number
/** == */
undefined == null;   // true
undefined == NaN/** NaN跟NaN都不相等,跟其他值当然更不相等啦 **/;  // false
NaN == null;         // false
/** === */
undefined === null;  // false
undefined === NaN;   // false
NaN === null;        // false

3. JSON.stringify、toString的区别

const obj = { property1: undefined, property2: null, property3: NaN };
const arr = [ undefined, null, NaN ];
/** JSON */
console.log(JSON.stringify(obj));   // {"[property2":null,"[property3":null,}
console.log(JSON.stringify(arr));   // [null,null,null]
/** toString */
console.log(obj.toString());        // [object Object]
console.log(arr.toString());        // [,,NaN]

JSON.stringifyArray.prototype.toString中的参数中有undefined、null、NaN时,结果可能非我们预期。故使用JSON.stringfy深拷贝对象或使用Array.prototype.toString扁平化数组时,应评估其结果的影响。

用于处理 null、NaN 和undefined 的 18 个 JavaScript 代码片段

Null、NaN 和 undefined 是程序员在使用 JavaScript 时遇到的常见值。

有效处理这些值对于确保代码的稳定性和可靠性至关重要。

因此,在今天这篇文章中,我们将探讨 18 个 JavaScript 代码片段,它们为处理 null、NaN 和未定义场景提供了便捷的解决方案。

这些代码片段将帮助你通过有效处理这些值来编写更清晰、更优雅的代码。

1. 检查是否为null:

要检查变量是否为 null,可以使用严格相等运算符 (===) 将其直接与 null 进行比较:

if (variable === null) {
  // Code to handle null value
}

2. 检查undefined:

同样,你可以使用 typeof 运算符检查变量是否为undefined:

if (typeof variable === 'undefined') {
  // Code to handle undefined value
}

3. 检查 NaN:

要检查值是否为 NaN(非数字),可以使用 isNaN() 函数:

if (isNaN(value)) {
  // Code to handle NaN value
}

4. 如果为 null 或undefined则默认为某个值:

如果变量为 null 或undefined,您可以使用逻辑 OR 运算符 (||) 提供默认值:

const result = variable || defaultValue;

5. 如果为 NaN,则默认为一个值:

如果值为 NaN,您可以使用 isNaN() 函数以及逻辑 OR 运算符来提供默认值:

const result = isNaN(value) ? defaultValue : value;

6. 将 null 或 undefined 转换为空字符串:

要将 null 或undefined的值转换为空字符串,可以使用逻辑 OR 运算符和空字符串:

const result = variable || '';

7. 将 null 或 undefined 转换为零:

如果需要将 null 或 undefined 转换为零,可以使用逻辑 OR 运算符和数字零:

const result = variable || 0;

8. 将 null 或 undefined 转换为默认对象:

要将 null 或 undefined 转换为默认对象,可以将逻辑 OR 运算符与空对象文字结合使用:

const result = variable || {};

9. 检查变量是否为 null 或undefined:

您可以使用逻辑 OR 运算符组合 null 和未定义检查:

if (variable === null || typeof variable === 'undefined') {
  // Code to handle null or undefined value
}

10. 检查值是否为 null、undefined或 NaN:

将 null、未定义和 NaN 检查与逻辑 OR 运算符结合起来:

if (variable === null || typeof variable === 'undefined' || isNaN(variable)) {
  // Code to handle null, undefined, or NaN value
}

11. unll或undefined的短路评估:

如果变量为 null 或undefined,请使用逻辑 AND 运算符 (&&) 执行短路计算:

const result = variable && someFunction();

12. 使用 NaN 进行短路评估:

如果值为 NaN,则可以使用逻辑 AND 运算符进行短路评估:

const result = !isNaN(value) && someFunction();

13. 可选链接:

为了避免在访问可能为 null 或未定义的对象的属性时出现错误,您可以使用可选链接运算符 (?.):

const result = object?.property;

14. 空合并运算符:

空值合并运算符 (??) 提供了一种简洁的方法来为 null 或未定义的变量提供默认值:

const result = variable ?? defaultValue;

15. 将 null 或 undefined 转换为布尔值:

要将 null 或 undefined 转换为布尔值,可以使用逻辑 NOT 运算符 (!):

const result = !!variable;

16. 将 NaN 转换为布尔值:

要将 NaN 转换为布尔值,可以使用 isNaN() 函数和逻辑 NOT 运算符:

const result = !isNaN(value);

17. 处理函数参数中的 null 或 undefined:

您可以使用默认参数值来处理函数参数中的 null 或undefined:

function myFunction(param = defaultValue) {
  // Code that uses the parameter
}

18. 从数组中删除 null 或undefined的值:

要从数组中删除 null 或undefined的值,可以使用 filter() 方法:

const newArray = originalArray.filter((value) => value !== null && typeof value !== 'undefined');

结论:

以上就是我今天与您分享的18 个 JavaScript 代码片段,希望这些代码片段对您有用,因为,这些代码片段可以帮助您有效地处理代码中的 null、NaN 和undefined的使用场景。

这些代码片段,无论您需要检查这些值、提供默认值还是将它们转换为不同的类型,它们都将帮助您编写更清晰、更优雅的 JavaScript 代码。

到此这篇关于 JavaScript中undefined、null与NaN的区别的文章就介绍到这了,更多相关 JavaScript undefined null NaN内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 个人小程序接入支付解决方案

    个人小程序接入支付解决方案

    这篇文章主要介绍了个人小程序接入支付解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 支持移动端原生js轮播图

    支持移动端原生js轮播图

    这篇文章主要介绍了支持移动端原生js轮播图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JavaScript中number转换成string介绍

    JavaScript中number转换成string介绍

    这篇文章主要介绍了JavaScript中number转换成string介绍,本文讲解了4个把number转换成string的函数,需要的朋友可以参考下
    2014-12-12
  • 简述ES6新增关键字let与var的区别

    简述ES6新增关键字let与var的区别

    最近看了很多文章,偶然间看到ES6中新增了一个关键字 let ,它具有与 var 关键字相似的功能。接下来通过本文给大家介绍ES6新增关键字let与var的区别,需要的朋友可以参考下
    2019-08-08
  • JavaScript的setAttribute兼容性问题解决方法

    JavaScript的setAttribute兼容性问题解决方法

    JavaScript的setAttribute存在兼容性问题,下面与大家分享下具体的解决方法,感兴趣的朋友可以参考下
    2013-11-11
  • javascript文本模板用法实例

    javascript文本模板用法实例

    这篇文章主要介绍了javascript文本模板用法,实例分析了文本模板的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • js中将String转换为number以便比较

    js中将String转换为number以便比较

    string没转换就拿去比较,结果是很头疼的,下面为大家介绍下js中String转换为number,需要的朋友可以参考下
    2014-07-07
  • JavaScript创建对象的四种常用模式实例分析

    JavaScript创建对象的四种常用模式实例分析

    这篇文章主要介绍了JavaScript创建对象的四种常用模式,结合实例形式分析了javascript使用工厂模式、构造函数模式、原型模式及动态原型模式创建对象的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-01-01
  • fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法

    fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法

    这篇文章主要介绍了fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法,分析了问题出现的原因及相关配置文件设置技巧,需要的朋友可以参考下
    2017-03-03
  • 微信小程序实现拼图小游戏

    微信小程序实现拼图小游戏

    这篇文章主要为大家详细介绍了微信小程序实现拼图小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10

最新评论