Ruby的|| =(或等于)在JavaScript中?
我喜欢Ruby的||=
机制。 如果一个variables不存在或者nil
,那么创build它并将其设置为等于某事:
amount # is nil amount ||= 0 # is 0 amount ||= 5 # is 0
我现在需要在JavaScript中做类似的事情。 什么是常规或正确的方法来做到这一点? 我知道||=
是无效的语法。 处理它的两个明显的方法是:
window.myLib = window.myLib || {}; // or if (!window.myLib) window.myLib = {};
两者都是绝对正确的,但是如果你正在寻找像Ruby中那样工作的东西。 第一种方法是variable = variable || {}
variable = variable || {}
是你正在寻找的人:)
您可以使用逻辑OR运算符||
如果lVal
是一个伪数值,它将评估它的右操作数。
Falsy值包括例如null,false,0,"",undefined,NaN
var x = x || 1
var x = x || 1
;
如果你正在使用对象,你可以使用解构(从ES6开始)如下:
({ myLib: window.myLib = {} } = window);
…但除了混淆之外,你不能接受任何接受的答案。
Ruby的|| =运算符短路分配。 可以这样想:
return a || a = b
所以在JavaScript中,这看起来非常相似:
return a || (a = b);
但是,在下面的评论中似乎指出,这个字面上的rubyforms比标准的javascript成语a = a ||效率低。 湾
作为参考: http : //www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html