[英]Let declaration variable = functionName() confusion
我正在阅读打字稿手册的功能; 我对let声明非常困惑:
let deck = {
suits: ["hearts", "spades", "clubs", "diamonds"],
cards: Array(52),
createCardPicker: function() {
// NOTE: the line below is now an arrow function, allowing us to capture 'this' right here
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 +" "+ typeof(pickedCard)
+" "+ typeof(cardPicker));
以下两个命令看起来完全相同,但是当我打印出cardPicker时,它是一个“函数”,而PickCard是“对象”。
let cardPicker = deck.createCardPicker();
let pickedCard = cardPicker();
如果我将第一个命令更改为:
let cardPicker = deck.createCardPicker;
cardPicker和PickedCard都将是“功能”
任何人都可以提供更多细节。 谢谢!
deck.createCardPicker()
在调用createCardPicker()
之后返回函数,在该函数下您将返回对象。
如果仅调用deck.createCardPicker
它将返回function
变量,但不执行实际功能。
喜欢
let cardPicker = deck.createCardPicker;
//返回函数变量
现在,如果你打电话
let pickedCard = cardPicker();
//执行该函数并作为createCardPicker()
提到的结果返回该函数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.