5

指南显示了一个用反引号编写的计算属性。我不确定它们是否有必要。

可以这样:

fullName: Ember.computed('firstName', 'lastName', function() {
    return `${this.get('firstName')} ${this.get('lastName')}`;
})

改写成这样:

fullName: Ember.computed('firstName', 'lastName', function() {
    return this.get('firstName') + ' ' + this.get('lastName');
})

?

对我来说,这不那么晦涩难懂。每种方法的优缺点是什么?

4

2 回答 2

4

后面的记号与 Ember 无关。它们是 ES6 的一部分,称为模板字符串。它们只是使字符串插值更容易。您可以在花括号中包含任何有效的 js 语句并对其进行评估。它们还允许多行字符串。

我知道的一个要点是模板字符串会立即得到评估。因此不能通过将其分配给变量来重用。变量只会得到评估结果。

这是 MDN 中有关它们的更多信息。

于 2015-12-31T11:24:43.713 回答
4

它们基本相同。事实上,目前,反引号语法或es6 模板字符串正在被转换回最终代码中的第二个版本。

有些人可能会争辩说第一种形式更合乎逻辑,并且当使用更简单的变量名时,更具可读性。它还允许对 i18n 库进行代码扫描,例如基于 gettext 的库,以便轻松找到它们。在浏览器广泛支持反引号语法之前,我怀疑他们是否可以对此有所帮助。它来了。Chrome、Firefox、Safari、Edge 支持它。

最后,喜欢就用,不喜欢就不用。不要紧。

规格中的正式定义)

于 2015-12-31T11:25:15.313 回答