当前位置: 首页 > 知识库问答 >
问题:

对象内部箭头函数的值[重复]

鲁英卫
2023-03-14

我以为我理解了this和箭头函数之间的关系,但是下面的代码片段让我怀疑我的理解。

let person = {
  name: 'Jim',
  sayName: () => {
    console.log(this.name);
  }
};

person.sayName();

我知道箭头函数捕获包含上下文的this值。我原以为这个是对象,但它是窗口

有人能帮我理解为什么会这样吗?

共有1个答案

董和泽
2023-03-14

您对箭头函数的理解基本上是正确的:箭头函数有一个词法this,它在箭头函数中的值由周围的作用域决定。

您可能会假设thisperson对象文本中获得不同的值。事实并非如此。

因此,让我们看看这个在您的(全局)范围中引用了什么:

console.log(this === window); // true

let person = {
  name: 'Jim',
  test: console.log(this === window), // true
  sayName: () => {
    console.log(this === window); // true
  }
};

person.sayName();
 类似资料:
  • 我试图弄清楚为什么对象文本中的箭头函数被调用为作为。有人能给我点见识吗? 控制台日志来自Fiddle(其中不使用)。

  • 这4个函数具有混合匹配的函数语法。调用嵌套函数时,func:with arrow函数返回空格。

  • 或者javascript引擎足够聪明,不会在内存中保存函数的词法环境的值,而它不使用这个环境?

  • 问题内容: 从箭头函数返回对象时,由于语法上的歧义,似乎有必要使用额外的和关键字集。 那意味着我不会写,但必须写。 如果arrow函数返回的不是对象,则和都是不必要的,例如:。 返回。 修饰符抛出 “::意外标记:‘”。 有什么明显的我想念的吗? 问题答案: 您必须将返回的对象文字包装在括号中。否则,花括号将被视为表示功能的主体。以下作品: 您不需要将任何其他表达式包装到括号中: 等等。

  • 不鼓励将箭头函数(“lambdas”)传递给 Mocha。Lambdas词法绑定 this,无法访问 Mocha 上下文。例如,以下代码将失败: describe('my suite', () => { it('my test', () => { // should set the timeout of this test to 1000 ms; instead will fail thi

  • ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 在继续学习箭头函数之前,请测试你的浏览器是否支持ES6的Arrow Function: 'use strict'; ---- var f