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