javascript || 逻辑或 非布尔值用法
2024-09-01
48
Logical OR (||) 概念
当且仅当其一个或多个操作数为真时,一组操作数的逻辑或 (||) 运算符(逻辑析取)为真。 它通常与布尔(逻辑)值一起使用。 如果是,它返回一个布尔值。 然而,|| 运算符实际上返回指定操作数之一的值,因此如果此运算符与非布尔值一起使用,它将返回一个非布尔值。
Logical OR (||) 语法
expr1 || expr2
如果 expr1 可以转换为 true,则返回 expr1; 否则,返回 expr2。
如果一个值可以转换为 true,那么这个值就是所谓的 truthy。 如果一个值可以转换为 false,则该值就是所谓的 falsy。
可以转换为 false 的表达式示例如下:
null;
NaN;
0;
empty string ("" or '' or ``);
undefined.
尽管 || 运算符可以与不是布尔值的操作数一起使用,它仍然可以被认为是布尔运算符,因为它的返回值总是可以转换为布尔基元。 要将其返回值(或任何一般表达式)显式转换为相应的布尔值,请使用双 NOT 运算符 (en-US) 或布尔 (en-US) 构造函数。
短路评估
逻辑 OR 表达式从左到右求值,使用以下规则测试可能的“短路”求值:
(some truthy expression) || expr 被短路计算为真值表达式。
短路意味着上面的 expr 部分未被评估,因此这样做的任何副作用都不会生效(例如,如果 expr 是一个函数调用,则调用永远不会发生)。 发生这种情况是因为运算符的值在对第一个操作数求值后就已经确定了。 例子:
function A(){ console.log('called A'); return false; }
function B(){ console.log('called B'); return true; }
console.log( B() || A() );
// logs "called B" due to the function call,
// then logs true (which is the resulting value of the operator)
运算符优先级
以下表达式可能看起来是等价的,但实际上它们不是,因为 && 运算符在 || 之前执行 运算符。
true || false && false // returns true, because && is executed first
(true || false) && false // returns false, because operator precedence cannot apply
一些例子
以下代码显示了 || 的示例 (逻辑或)运算符。
o1 = true || true // t || t returns true
o2 = false || true // f || t returns true
o3 = true || false // t || f returns true
o4 = false || (3 == 4) // f || f returns false
o5 = 'Cat' || 'Dog' // t || t returns "Cat"
o6 = false || 'Cat' // f || t returns "Cat"
o7 = 'Cat' || false // t || f returns "Cat"
o8 = '' || false // f || f returns false
o9 = false || '' // f || f returns ""
o10 = false || varObject // f || object returns varObject
赞一波!
相关文章
- 【说站】javascript判断变量相等的方法整理
- 【说站】javascript字符串类型的转换
- 常用的javascript网页数字滚动插件
- 轻量级 JavaScript 动画库 mo.js使用教程
- 文件上传JavaScript库FilePond使用教程
- Swapy - 开源JavaScript js拖拽插件
- JavaScript 的 sessionStorage 能否加锁?
- 全栈工程师看过来!PHP Javascript语法对照、速查
- Javascript事件与功能说明大全
- Javascript脚本运算符执行顺序对照表
- 如何使用JavaScript从字符串中删除HTML标签?
- 如何在 JavaScript 中使用正则表达式删除 HTML 标签?
- 使用 HTML、CSS 和 JavaScript 的实时计算器
- 使用VSCode开发.NET MVC常用插件
- JS判断是否在微信浏览器打开
- JavaScript设计模式学习网站Patterns
- 解释 JavaScript 中计时器的工作原理
- JavaScript 常用自定义功能函数
- PHP,JavaScript 获取当前域名、判断网址协议是否为 HTTPS
- javascript使用正则RegExp匹配到的值replace替换
文章评论
评论问答