Coffeescript中的存在条件赋值运算符

Coffeescript中的存在条件赋值运算符,coffeescript,operators,conditional-operator,Coffeescript,Operators,Conditional Operator,当我阅读Coffeescript文档时,我被这个问题弄糊涂了。文件说明 它(?=)也可以用于比|124;=更安全的条件赋值 提供,用于处理数字或字符串的情况 ?=和| |=运算符之间有什么区别?何时使用一个运算符与另一个运算符??和|检查完全不同(但重叠)的条件 |操作符的工作方式与JavaScript中的工作方式完全相同,因此就|而言,0和'等内容都是错误的| |检查JavaScript意义上的真实性 ?运算符在JavaScript中转换为==null,因此a?当a为null或未定义时,b仅为

当我阅读Coffeescript文档时,我被这个问题弄糊涂了。文件说明

它(
?=
)也可以用于比
|124;=
更安全的条件赋值 提供,用于处理数字或字符串的情况


?=
| |=
运算符之间有什么区别?何时使用一个运算符与另一个运算符?

|
检查完全不同(但重叠)的条件

|
操作符的工作方式与JavaScript中的工作方式完全相同,因此就
|
而言,
0
'
等内容都是错误的<代码>| |检查JavaScript意义上的真实性

运算符在JavaScript中转换为
==null
,因此
a?当
a
null
未定义时,b
仅为
b
<代码>?
检查咖啡脚本意义上的定义

考虑这些:

for v in [false, 0, '', null, undefined, 6]
    do (v) ->
        a = v
        a ||= 'pancakes'
        console.log("#{v} ||= 'pancakes':", a)

for v in [false, 0, '', null, undefined, 6]
    do (v) ->
        a = v
        a ?= 'pancakes'
        console.log("#{v} ?= 'pancakes':", a)
第一个循环将为您提供五个煎饼和一个
6
,第二个循环将为您提供一个
false
0
'
、两个煎饼和一个
6

演示:


因此,如果您只想要JavaScript风格的行为(即,
0
false
,和
'
被忽略),那么您可能想要
|124;=
。如果你只想跳过
null
undefined
,那么你想要
?=

我想你的意思是“{v}”而不是“{a}”,为什么要打印两次呢?@NickSotiros:我想你是对的,
控制台.log
调用中的字符串应该(现在确实)使用
{v}
而第二个参数应该是
a
。谢谢你的提醒。