Chr*_*ris 15 operators assignment-operator coffeescript
这两者有什么区别?从Ruby开始,apple ||= walrus只有当apple为null 时,我习惯将apple设置为等于walrus.这似乎在JS/CS中是相同的,但是?=似乎做同样的事情.令我困惑的是:
apple = 0
walrus = 9
apple ?= walrus // outputs 0
apple ||= walrus // outputs 9
Run Code Online (Sandbox Code Playgroud)
笏
log*_*yth 23
最好的办法是查看生成的JS.
CoffeeScript的:
apple = 0
walrus = 9
apple ?= walrus // outputs 0
apple ||= walrus // outputs 9
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var apple, walrus;
apple = 0;
walrus = 9;
if (apple == null) apple = walrus;
apple || (apple = walrus);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,?=明确检查的东西是null或undefined在JS.这是非常不同的||=,只依赖于是否apple是一个虚假的价值.
要扩展一点apple ||= walrus就意味着相同apple = apple || walrus,所以苹果的任何价值都会使逻辑短路而不会改变苹果的价值.
| 归档时间: |
|
| 查看次数: |
3838 次 |
| 最近记录: |