【问题标题】:why const value's name instead of `this` [duplicate]为什么 const 值的名称而不是 `this` [重复]
【发布时间】:2017-06-19 20:05:33
【问题描述】:

我正在学习airbnb coding style。为什么在以下代码(第 3.3 节)中使用atom.value 而不是this.value?有什么好处吗?

// good
const atom = {
  value: 1,

  addValue(value) {
    return atom.value + value;
  },
};

更新

以下代码是其优点的一个示例。还有其他好处吗?

const bias = atom.addValue;
console.log(bias(11))

谢谢

【问题讨论】:

  • 没有看过文档,但他们可能更喜欢使用atom,因为this 因范围而异。使用atom 清楚地表明了预期的范围。
  • @CarlMarkham 我刚刚知道了。
  • @BAE Yeh、thisatom 在这种情况下是一样的,只是代码可读性而已。

标签: javascript


【解决方案1】:

如果您使用this,它将引用addValue 范围:

addValue(value) {
  return this.value + value;
}

这里的this 不会指代atom,而是指没有任何value 属性的addValue()

const atom = {
  value: 1,

  addValue(value) {
    console.log( atom.value + value);
    return atom.value + value;
  },
};

atom.addValue(20);

【讨论】:

  • @MysteryDownvoter 为什么投反对票?
  • this 指的是全局对象。您可以通过编辑您的 sn-p 以使用 this.value + value 来看到这一点,结果将是相同的。
  • addValue scope 不是 JS 对象。你是说调用上下文吗?
  • @Bergi 可能,术语不是我的强项。
  • 不管怎样,this 不指方法,使用this.valueatom.value 基本相同。似乎是他们的个人喜好
猜你喜欢
  • 1970-01-01
  • 2013-12-28
  • 2010-11-07
  • 2016-07-08
  • 2023-02-04
  • 2015-06-27
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多