at.*_*at. 118 javascript ruby syntax
我喜欢Ruby的||=
机制.如果变量不存在或是nil
,则创建它并将其设置为等于:
amount # is nil
amount ||= 0 # is 0
amount ||= 5 # is 0
Run Code Online (Sandbox Code Playgroud)
我现在需要在JavaScript中做类似的事情.什么是惯例或正确的方法来做到这一点?我知道||=
语法不正确.处理它的两种明显方法是:
window.myLib = window.myLib || {};
// or
if (!window.myLib)
window.myLib = {};
Run Code Online (Sandbox Code Playgroud)
nXq*_*Xqd 135
两者都绝对正确,但如果你正在寻找像||=
红宝石一样的东西.第一种方法就是variable = variable || {}
你要找的那个:)
您询问的运算符已被提议作为 JavaScript 中的一项功能。它目前处于第 4 阶段,并将在下一个 ECMAScript 标准中引入,预计将于 2021 年发布。
您现在可以使用plugin-proposal-logical-assignment-operators Babel 插件来使用它。我从来没有用过那个插件,所以我不知道它的效果如何。
如果您正在处理对象,则可以像这样使用解构(ES6 起):
({ myLib: window.myLib = {} } = window);
Run Code Online (Sandbox Code Playgroud)
...但是除了困惑之外,您对接受的答案没有任何好处。
截至 2021 年,||=
只要您正在转译或不关心 Opera/IE,您就可以使用与 Ruby 相同的行为。
||=
现在,除 Opera 和 IE 之外的所有主要浏览器上的 javascript 都原生支持逻辑 OR 赋值。当前的canuse矩阵。MDN 参考。
Typescript 在版本 4中添加了对运算符的支持。如果您需要支持 IE/Opera,您可以使用babel 插件进行转译以获得广泛的兼容性。
归档时间: |
|
查看次数: |
38856 次 |
最近记录: |