使用javascript `?`操作符作为速记可以吗

使用javascript `?`操作符作为速记可以吗,javascript,Javascript,我通常使用三元运算符,如: let foo = str.match(/[*]/g) ? str.match(/[*]/g) : "none!"; 自从使用PHP以来,我注意到该语言有很多速记,对于三元运算符,将使用: $foo = $view->test ?? "none"; 我没有在javascript(或其文档)中看到这一点,但尝试了如下方式: let str = "1234"; let foo1 = str.match(

我通常使用三元运算符,如:

let foo = str.match(/[*]/g) ? str.match(/[*]/g) : "none!";
自从使用PHP以来,我注意到该语言有很多速记,对于三元运算符,将使用:

$foo = $view->test ?? "none";
我没有在javascript(或其文档)中看到这一点,但尝试了如下方式:

let str = "1234";
let foo1 = str.match(/[*]/g) ?? "none;
console.log(foo) // "none"

let str1 = "1*2*";
let foo1 = str1.match(/[*]/g) ?? "none;
console.log(foo1) // ['*','*']

这似乎是可行的。在检查元素是否存在时,这是一种可以接受的使用三元运算符的方法吗?

我想使用
空聚结运算符
是完全合法的。 有关示例和一些文档,请参见

但一定要检查浏览器兼容性

=======

还有逻辑OR
|
运算符,可用于类似操作:

o1=true | | true//t | | t返回true
o2=false | | true//f | | t返回true
o3=true | | false//t | | f返回true
o4=false | |(3==4)//f | | f返回false
o5='Cat'| |'Dog'//t | | t返回“Cat”
o6=false | | Cat'//f | | t返回“Cat”
o7='Cat'| | false//t | | f返回“Cat”
o8=“”| | false//f | | f返回false
o9=false | |“”//f | | f返回值“”
o10=false | | varObject//f | | object返回varObject

签出:供参考

这是一个问题,请参见此处的兼容性图表:这是否回答了您的问题?这不是一条捷径。如果第一个操作数为
未定义
(与假值相比),则使用第二个操作数。@ddjk
|
覆盖任何值。