[JS]先定义(??)
2021-08-09 17:58
671 查看
先定义是一个二元操作符,只有在第一个操作对象为 null 或 undefined 时才会返回第二个操作对象。
let a = null a ?? 10 // => 10
对于上面的例子,先定义又类似于三元操作符。
let a = null a === null || a === undefined ? 10 : null // => 10
但是,对于下面的情况,先定义与逻辑或有着明显的区别。
let start = null let 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
先定义与逻辑与在不同的情况下进行选择。
相关文章推荐
- ASP.NET中母版页引用外部js或css文件无效,提示对象未定义解决方法
- 用css定义一个div,如何用js取得样式的属性呢?
- [JS脚本]ajax status 错误定义
- js 函数的定义内存分配
- js split 的用法和定义 js split分割字符串成数组的实例代码
- JS中定义String方法-StartWith及EndWith
- JS高级 - 面向对象2(prototype定义)
- 使用js创建div、添加子div并给div设置在css中定义的class选择属性以及设置style属性
- JS关于Object定义的两种方式
- JS 定义两个函数,计算两个数的最大公约数和最小公倍数
- JS - IE中没有console定义
- js 动态创建一个变量,以字符串形式定义变量,定义对象
- js判断一个变量是否定义的方法
- js定义对象简单学习例子
- js数组的定义及添加
- js对象定义,表格数据转成json上传提交
- js中三种定义变量 const, var, let 的区别
- js定义父类窗口,接收子窗口返回的内容,window.opener.document取得父类窗口的对象.html
- in window js 未定义和undifined的区别
- js中定义变量的几种方式