JavaScript 逻辑或 || 的妙用及相关知识普及

 更新时间:2024年12月07日 14:13:21   作者:Peter-Lu  
本文给大家介绍了JavaScript中的逻辑或运算符||的用法,包括其基本概念、真值和假值、常见应用以及与其他逻辑运算符的对比,感兴趣的朋友跟随小编一起看看吧

在 JavaScript 中,||(逻辑或运算符)是一个非常常见但又容易被忽视的运算符。它不仅能用于条件判断,还能在日常编程中提供默认值、防止错误甚至优化代码逻辑。本文将带你全面了解 || 的用法及其相关知识。

一、逻辑或的基本用法

1. 什么是 || 运算符?

|| 是 JavaScript 的逻辑运算符之一,称为“逻辑或”。它的核心功能是返回两个值中的“真值”:

  • 如果第一个操作数是真值,直接返回第一个操作数。
  • 如果第一个操作数是假值,返回第二个操作数。

2. 什么是真值和假值?

在 JavaScript 中,以下值被认为是假值(falsy):

  • false
  • 0
  • NaN
  • null
  • undefined
  • 空字符串(''

其他所有值都是真值(truthy),包括:

  • 非零数字(如 1-1
  • 非空字符串(如 'hello'
  • 对象(如 {} 或 []

3. 示例讲解

console.log(true || false); // 输出:true
console.log(false || 'hello'); // 输出:'hello'
console.log(0 || 42); // 输出:42
console.log('' || 'default'); // 输出:'default'
console.log(undefined || null || 'fallback'); // 输出:'fallback'

在这些例子中,如果第一个值是假值,|| 运算符就会返回后面的值。

二、|| 在代码中的常见应用

1. 提供默认值

最常见的用法之一是给可能为假值的变量提供一个默认值。比如,当函数的参数未传递时:

function greet(name) {
  name = name || 'Guest';
  console.log(`Hello, ${name}!`);
}
greet(); // 输出:Hello, Guest!
greet('Alice'); // 输出:Hello, Alice!

如果 nameundefined 或空字符串,那么默认值 'Guest' 会生效。

2. 防止报错

当访问一个可能不存在的对象属性时,可以通过 || 提供默认值,避免程序崩溃:

const user = { name: 'Alice' };
console.log(user.age || 'N/A'); // 输出:N/A

这里 user.ageundefined|| 返回了 'N/A'

3. 短路特性优化代码

|| 的短路特性是指:一旦左侧操作数为真值,右侧操作数就不会被计算。这种特性可以用于优化代码逻辑:

const getData = () => {
  console.log('Fetching data...');
  return { key: 'value' };
};
const result = true || getData();
// 输出:没有输出“Fetching data...”
// 解释:因为左侧的 `true` 是真值,`getData()` 不会被调用。

三、|| 和其他逻辑运算符的对比

1. ||&&

  • || 返回第一个真值,或最后一个假值。
  • && 返回第一个假值,或最后一个真值。
console.log(false || 'hello'); // 输出:'hello'
console.log(false && 'hello'); // 输出:false
console.log('world' || 0); // 输出:'world'
console.log('world' && 0); // 输出:0

2. || 与三元运算符 ? :

有时可以用 || 替代简单的三元运算符:

const value = input || 'default'; // 等价于:
const value2 = input ? input : 'default';

但需要注意,|| 的逻辑并不完全等同于三元运算符,当需要区分假值(如 0false)时,三元运算符更准确。

推荐:

到此这篇关于JavaScript 逻辑或 || 的妙用及相关知识详解的文章就介绍到这了,更多相关js 逻辑或 || 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript位置参数实现原理及过程解析

    JavaScript位置参数实现原理及过程解析

    这篇文章主要介绍了JavaScript位置参数实现原理及过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • JS封装通过className获取元素的函数示例

    JS封装通过className获取元素的函数示例

    这篇文章主要介绍了JS封装通过className获取元素的函数,涉及javascript针对页面元素属性的遍历与数组相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • Ajax和Comet技术总结

    Ajax和Comet技术总结

    Ajax是一种技术,一种能够向服务器请求额外的数据而无需卸载页面的技术,能够使网页具备更优的用户体验。Ajax技术的核心是XMLHttpRequest对象(XHR)。本文从XHR开始谈起,理解Ajax技术的特点,再对跨域以及Comet等技术进行简要理解和总结。下面跟着小编一起来看下吧
    2017-02-02
  • JavaScript Base64 作为文件上传的实例代码解析

    JavaScript Base64 作为文件上传的实例代码解析

    这篇文章主要介绍了JavaScript Base64 作为文件上传的实例代码解析,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 详解Webpack多环境代码打包的方法

    详解Webpack多环境代码打包的方法

    这篇文章主要介绍了详解Webpack多环境代码打包的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • CSS3 动画卡顿性能优化的完美解决方案

    CSS3 动画卡顿性能优化的完美解决方案

    今天小编就为大家分享一篇关于css3 动画卡顿性能优化的完美解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • 微信小程序下拉框组件使用方法

    微信小程序下拉框组件使用方法

    这篇文章主要为大家详细介绍了微信小程序下拉框组件使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • js将字符转换为UTF-8字符的工具

    js将字符转换为UTF-8字符的工具

    在下面的文本框中输入中文文字,按“转化”,即可将其转化为UTF-8字符。
    2010-06-06
  • onclick与listeners的执行先后问题详细解剖

    onclick与listeners的执行先后问题详细解剖

    javascript中onclick与listeners的执行先后问题一直都是大家所疑惑的地方,接下来将为大家解决此疑惑,感兴趣的朋友可以了解下哦
    2013-01-01
  • JavaScript中时间日期函数new Date()详解(5种获取时间戳的函数)

    JavaScript中时间日期函数new Date()详解(5种获取时间戳的函数)

    这篇文章主要给大家介绍了关于JavaScript中时间日期函数new Date()的相关资料,主要讲的是JS中5种获取时间戳的函数,new Date()是JavaScript中用于获取当前日期和时间的内置函数,需要的朋友可以参考下
    2024-04-04

最新评论