gpt4 book ai didi

javascript - 箭头函数在定义时绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 05:33:57 25 4
gpt4 key购买 nike

我正在学习 es6 箭头函数,如何才能通过此测试?

describe('arrow functions have lexical `this`, no dynamic `this`', () => {

it('bound at definition time, use `=>` ', function() {
var bound = new LexicallyBound();
var fn = () => getFunction();

assert.strictEqual(fn(), bound);
});

最佳答案

由于 getFunction 返回的函数没有做任何事情来证明它在 this 上关闭,所以我认为在这里使用你没有任何用处。

如果目标是证明箭头函数是词法绑定(bind)的(即它们在 this 上闭合),那么:

it('is lexically bound', function() {
const obj = {
arrow: () => {
return this;
}
};
assert.strictEqual(obj.arrow(), this);
});

如果arrow没有关闭this,它将返回obj,而不是this的当前值> 在该回调中。

示例:

function it(label, test) {
try {
test();
console.log(label, "OK");
} catch (e) {
console.log(label, "FAILED", e.message);
}
}
const assert = {
strictEqual(a, b) {
if (a !== b) {
throw new Error("a == b was false");
}
}
};

it('Arrow function is lexically bound', function() {
const obj = {
arrow: () => {
return this;
}
};
assert.strictEqual(obj.arrow(), this);
});


it('Non-arrow function is not lexically bound', function() {
const obj = {
nonarrow: function() {
return this;
}
};
assert.strictEqual(obj.nonarrow(), obj);
});

关于javascript - 箭头函数在定义时绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com