JavaScript 中的双竖线/或 || 赋值语法说明

编程 > WEB > JavaScript (185) 2026-02-04 17:25:11

1. || 是逻辑 OR(逻辑或)运算符

在 JavaScript 中,x || y 的行为是:
  • 如果 xtruthy,返回 x
  • 如果 xfalsy,返回 y
注意:它不是返回 true/false,而是返回其中一个操作数的原始值(短路求值)。

2. 什么是 falsy 值?

以下 8 种值被认为是 falsy
  • false
  • 0
  • -0
  • 0n(BigInt 零)
  • ""''、``(空字符串)
  • null
  • undefined
  • NaN
其余所有值都是 truthy(包括 "0""false"[]{}Infinity 等)。


举例说明

let b;
// 情况1: b 是 undefined(falsy)
let a = b || 1;  // a = 1
// 情况2: b = 0(falsy)
b = 0;
a = b || 1;      // a = 1
// 情况3: b = ""(falsy)
b = "";
a = b || 1;      // a = 1
// 情况4: b = null(falsy)
b = null;
a = b || 1;      // a = 1
// 情况5: b = 5(truthy)
b = 5;
a = b || 1;      // a = 5
// 情况6: b = "hello"(truthy)
b = "hello";
a = b || 1;      // a = "hello"
// 情况7: b = [](truthy!)
b = [];
a = b || 1;      // a = [] (注意!空数组是 truthy)

 

常见陷阱

这个写法不能区分 0、空字符串等有效值和“未设置”状态:
 
let b = 0;          // 用户明确输入了数字 0
let a = b || 1;     // 结果 a = 1 ❌ 可能不是你想要的!
如果你希望 只在 bnullundefined 时设默认值,应该用:

✅ 更安全的写法(ES2020+):空值合并运算符 ??

 

let a = b ?? 1;
  • 仅当 bnullundefined 时,才使用默认值 1
  • 0""false 等都会被保留。
let b = 0;
let a = b ?? 1;  // a = 0 ✅

 

✅ 总结

表格

 
写法 含义 适用场景
`a = b   1`
a = b ?? 1 bnull/undefined 时用 1 更精确的默认值处理(推荐)
💡 如果你控制不了 b 的类型(比如可能为 0 或空字符串但仍是有效值),优先使用 ?? 而不是 ||
 

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
1. || 是逻辑 OR(逻辑或)运算符在 JavaScript 中,x || y 的行为是:如果 x 是 truthy,返回 x;如果 x 是 falsy,返
JavaScript/JS数组清空,删除数组内所有数据。Array=[]与Array.length=0的区别
前言有时候,我们需要对js的原生对象进行扩展,达到全局使用更方便的效果
Javascript/JS 复制内容到系统剪切板/粘贴板/** * 复制内容到剪切板 * @param content 文本内容 */function copy
Js也导出Excel,能在前台导出的话,将会大大减轻数据库的压力
jquery插件Viewer.js是一个强大的图片查看工具,Viewer也提供了一个纯js版本的工具,图片查看,Viewer.js,Viewer
本文说一下在thymeleaf模板引擎中,如何给 textarea 赋值
这里讲解的是一种通过扩展原生JS的方式进行日期格式化​首先,在需要使用的地方添加以下代码Date.prototype.format = function(fmt) { var o ...
<body&gtl; <script type="text/javascript"&gtl;   function test(){     let obj={        ...
清空input 类型为file的文件选择常见的方法分两类一. javascript 方式清空file选择首先获取dom元素filevar file=document.getElementById...
javascript(js)onclick 传递多个字符变量参数<a title="点击下载附件" onclick="downloadFile(\''+row.url+'\',\''+ro...
JavaScript/JS读取文本/JSON文件内容let file = files[0];var reader = new FileReader();read
现有js数组数据如下:let dataArray=[{id:1,name:'张三'},{id:2,name:'李四'}];根据id获取js数组的对象let findId=1; let findO...
步骤:1、配置文件webpack.config.js:  {     test:/\.css$/,     loader:'style-loader!css-loader'  ...
js 生成二维码引入qrcode.js该框架基于HTML5原生编写,兼容性较好。支持H5 vue uniapp 微信小程序等。基本使用参考<div id="qrcode"&gtl;<...