鉴于这段JavaScript...

var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';

var f = a || b || c || d || e;

alert(f); // 4

有人能给我解释一下这个技巧叫什么吗(我最好的猜测是在这个问题的标题中!)?以及它到底是如何/为什么工作的?

我的理解是,变量f将被指定为第一个变量的最接近值(从左到右),该变量的值既不是空的,也不是未定义的,但我还没有找到很多关于这项技术的参考资料,并且已经看到它被大量使用.

此外,这种技术是特定于JavaScript的吗?我知道在PHP中执行类似操作会导致f具有真正的布尔值,而不是d本身的值.

推荐答案

有关说明,请参见short-circuit evaluation.这是实现这些运算符的一种常见方式;它并不是JavaScript独有的.

Javascript相关问答推荐

创建1:1比例元素,以另一个元素为中心

JS生成具有给定数字和幻灯片计数的数组子集

如何在使用fast-xml-parser构建ML时包括属性值?

useNavigation更改URL,但不呈现或显示组件

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

React Code不在装载上渲染数据,但在渲染上工作

空的结果抓取网站与Fetch和Cheerio

在带有背景图像和圆形的div中添加长方体阴影时的重影线

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

在执行异步导入之前判断模块是否已导入()

WP Bootstrap NavWaker:下拉菜单一次打开所有下拉菜单

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

如何在箭头函数中引入or子句?

在JS中动态创建对象,并将其追加到HTML表中

不同表的条件API端点Reaction-redux

每隔3个项目交替显示,然后每1个项目交替显示

未捕获的不变违规:即使在使用DndProvider之后也应使用拖放上下文

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

如何使用fltter_js将对象作为参数传递给javascrip?

暂停后只有一次旋转JS