有趣的非空判断函数 + ?? 介绍

2024-08-29 01:44

本文主要是介绍有趣的非空判断函数 + ?? 介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享一个好玩的函数,用于统一判断一个数据是否为“合法数据”,即判断该数据既不是空字符串,也不是 undefined 和 null。

1. 非空判断

const isLegalData = (data) => {if (((data ?? '') !== '')) {return true;}return false;
};

解析一下:data ?? ' '

使用空值合并操作符 ??,它会检查 data 的值:

- 如果 data 是 null 或 undefined,则使用空字符串 ' ' 代替,返回 false;

- 如果 data 是 空字符串,返回 false;

- 如果 data 是其他值,则保持 data 的原始值,返回 true。

console.log(isLegalData(undefined)); // false
console.log(isLegalData(null)); // false
console.log(isLegalData('')); // false
console.log(isLegalData('Hello')); // true
console.log(isLegalData(0)); // true
console.log(isLegalData(false)); // true

说到这,那就简单了解一下 空值合并操作符 --- ?? 吧。

2. 基本介绍

空值合并操作符是 JS 中一个非常实用的逻辑运算符,用于处理 null 和 undefined 值。它允许我们提供一个默认值,当一个表达式的结果是 null 或 undefined 时,就会返回这个默认值。

const value = someVariable ?? defaultValue;

- someVariable:被检查的变量或表达式。

- defaultValue:当 someVariable 为 null 或 undefined 时,返回的默认值。

举个 🌰

const username = null;
const displayName = username ?? 'Monica';
console.log(displayName); // 输出: Monica

3. ?? 与 || 的区别

在 JS 中,逻辑或运算符 || 也常常用于提供默认值,它不会对 null 和 undefined 做特殊处理,而是对其他的“假值”(如:0、'' 、false、NaN、null、undefined)进行统一处理,视为 false。

const value1 = 0 || 'default';
console.log(value1); // 输出: defaultconst value2 = 0 ?? 'default';
console.log(value2); // 输出: 0

- || :返回第一个“真值”

- ?? :只对 null 和 undefined 处理

如果我们只想处理 null 和 undefined,而保留其他“假值”,应该使用 ??。

4. 注意事项

4.1 优先级

在使用 ?? 时,必须注意运算符的优先级,特别是在与其他逻辑运算符(如 || 和 &&)混合使用时。

如果期望 || 优先执行:

const result = (someValue || otherValue) ?? defaultValue;

如果期望 ?? 优先执行:

const result = someValue || (otherValue ?? defaultValue);
4.2 使用环境

空值合并操作符是 ECMAScript 2020 (ES11) 中的新特性,因此需要确保在现代浏览器或支持 ES2020 的 JavaScript 环境中使用。

5. 实际 🌰

如果在实际开发中,某些配置项可以是 0 或者 空字符串,但当这些配置项是 null 或 undefined 时,则需要提供一个默认值。

const config = {maxRetries: 0,timeout: undefined,cacheSize: null,
};// 正确使用空值合并操作符
const retries = config.maxRetries ?? 5; // 输出: 0(因为 maxRetries 是有效的值)
const timeout = config.timeout ?? 100; // 输出: 100(因为 timeout 是 undefined)
const cache = config.cacheSize ?? 365; // 输出: 365(因为 cacheSize 是 null)

在这个例子中,如果使用 || ,即使 maxRetries 为 0,也会被替换为 5,不是我们想要的结果,所有这种情况下,?? 会更加合适。

空值合并操作符 ?? 对处理 null 和 undefined 非常有帮助,它与传统的 || 运算符相比,更加精确和安全。

这篇关于有趣的非空判断函数 + ?? 介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116485

相关文章

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序