繁体   English   中英

让声明变量= functionName()混淆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM