【发布时间】:2015-08-01 19:57:23
【问题描述】:
所以我正在阅读Airbnb's JS styleguide,但我不明白 OR 运算符在以下示例中在做什么。更具体地说,在 Jedy 构造函数中 options || (options = {}); 如果没有将参数传递给构造函数,则基本上是在创建一个空对象?因此,Jedi 构造函数的name 属性将设置为'no name'?
function Jedi(options) {
options || (options = {});
this.name = options.name || 'no name';
}
Jedi.prototype.getName = function getName() {
return this.name;
};
Jedi.prototype.toString = function toString() {
return 'Jedi - ' + this.getName();
};
附言。似乎有很多用 JS 做事的速记方法。是否有任何好的资源或文章来解释这些是什么以及何时最好使用它们?
【问题讨论】:
-
这是惯用的 JS;它在这里的使用与
if语句中的用法完全相同——它只是一个表达式,并且由于短路,您的假设是正确的。 -
iirc,airbnb 风格指南还建议使用
function Jedi (options = {}) {…而不是上面的内容(对于 es6)。 -
@DaveNewton:我习惯的模式是
options = options || {};。另一个是罕见而奇怪的(尽管我很快就明白了它的意思):-) -
@Bergi 哦,是的,我指的是第二个,名字之一——我的错。
标签: javascript