AI智能
改变未来

[JS]先定义(??)

先定义是一个二元操作符,只有在第一个操作对象为 null 或 undefined 时才会返回第二个操作对象。

let a = nulla ?? 10 // => 10

对于上面的例子,先定义又类似于三元操作符。

let a = nulla === null || a === undefined ? 10 : null // => 10

但是,对于下面的情况,先定义与逻辑或有着明显的区别。

let start = nulllet o = {title: \'\',maxWidth: 120,visited: false}let max = start ?? o.title ?? o.visited ?? o.maxWidth ?? 500 // => \'\'

start 为 null,先定义不会返回它。但是对于逻辑与,start 为 null 、title 为空字符串(或者为0),都将被是作为假值,不会返回它们,所以最终返回的是 120 。

let max = start || o.title || o.visited || o.maxWidth || 500 // => 120

先定义与逻辑与在不同的情况下进行选择。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » [JS]先定义(??)