我以为我理解了this
和箭头函数之间的关系,但是下面的代码片段让我怀疑我的理解。
let person = {
name: 'Jim',
sayName: () => {
console.log(this.name);
}
};
person.sayName();
我知道箭头函数捕获包含上下文的this
值。我原以为这个
是对象,但它是窗口
。
有人能帮我理解为什么会这样吗?
您对箭头函数的理解基本上是正确的:箭头函数有一个词法this
,它在箭头函数中的值由周围的作用域决定。
您可能会假设this
在person
对象文本中获得不同的值。事实并非如此。
因此,让我们看看这个
在您的(全局)范围中引用了什么:
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