我正在努力弄清被调用的函数及其用法。我有一个名为addExp
的函数-它会向玩家对象添加经验值,并确定玩家是否已升级。
功能如下:
function addExp(amt) {
return function(amt) {
player.exp += amt;
while(player.exp >= player.reqExp) {
var carry = player.exp - player.reqExp;
player.level++;
nextLevel(player.level);
player.exp = 0 + carry;
}
}
}
这是我使用它时发生的事情:
addExp(200); // adds no exp to the player
addExp(200)(200); // adds 200 exp to the player
addExp()(200); // adds 200 exp to the player
我在网上搜索并阅读了其他问题,但是不明白为什么它会这样工作-这些功能调用中的哪一个(如果有的话)正确完成了?有人可以用足够简单的术语解释一下,为什么在一个函数内返回一个函数为什么有好处?