(()=>;{})而不是JavaScript函数表达式
我正在学习打字脚本,却被其中一个主题“函数”所困扰 在这里,我浏览了子主题Lambdas并使用它 这里,当我使用普通函数表达式时,我得到了一个错误(()=>;{})而不是JavaScript函数表达式,javascript,typescript,Javascript,Typescript,我正在学习打字脚本,却被其中一个主题“函数”所困扰 在这里,我浏览了子主题Lambdas并使用它 这里,当我使用普通函数表达式时,我得到了一个错误 let deck = { suits: ["hearts", "spades", "clubs", "diamonds"], cards: Array(52), createCardPicker: function() { return function() { let pickedCa
let deck = {
suits: ["hearts", "spades", "clubs", "diamonds"],
cards: Array(52),
createCardPicker: function() {
return function() {
let pickedCard = Math.floor(Math.random() * 52);
let pickedSuit = Math.floor(pickedCard / 13);
return {suit: this.suits[pickedSuit], card: pickedCard % 13};
}
}
}
let cardPicker = deck.createCardPicker();
let pickedCard = cardPicker();
alert("card: " + pickedCard.card + " of " + pickedCard.suit);
但是当我使用箭头语法(()=>{})而不是JavaScript函数表达式时,它工作正常,我得到了警告
let deck = {
suits: ["hearts", "spades", "clubs", "diamonds"],
cards: Array(52),
createCardPicker: function() {
// Notice: the line below is now a lambda, allowing us to capture 'this' earlier
return () => {
let pickedCard = Math.floor(Math.random() * 52);
let pickedSuit = Math.floor(pickedCard / 13);
return {suit: this.suits[pickedSuit], card: pickedCard % 13};
}
}
}
let cardPicker = deck.createCardPicker();
let pickedCard = cardPicker();
alert("card: " + pickedCard.card + " of " + pickedCard.suit);
但问题是我不知道第一个的问题是什么
我已经通过了考试
但我无法清楚地理解它
非常感谢您的解释。您正在返回的函数中使用此 通常,this的值取决于函数的调用方式
箭头函数从创建它的作用域中以词汇方式绑定
此
值。您正在返回的函数中使用此
通常,this的值取决于函数的调用方式
arrow函数从创建它的作用域中以词汇形式绑定该值。与以往一样,区别在于此,阅读有关arrow函数的MDN文档可能会有所帮助?当然,我会一直阅读ITA,不同之处在于,阅读MDN文档中的箭头函数可能会有所帮助?当然,我会看一遍,所以当我们使用箭头函数时,这里是createCardPicker作用域?所以当我们使用箭头函数时,这里是createCardPicker作用域?