JavaScript变量虽然已定义,但未定义

时间:2018-02-27 05:27:43

标签: javascript javascript-objects prototypejs

在console.log中,var damage未定义。我错过了什么?我已经在原型中定义了损坏但仍然没有。有任何想法吗?基本上只需要生成随机数,然后从玩家健康状况中减去该数字,并将剩余余额显示为受到的伤害量。

function Player(name, weapons) {
    this.playerName = name;
    this.playerHealth = 10;
    this.playerStrength = 2;
    this.playerWeapons = [];
}

Player.prototype.applyDamage = function(damage) {

    var damage = Math.floor(Math.random() * 10);
    var total = this.playerHealth - damage;

    return total;
};
console.log("Player sustained " + damage + " " + "amount of damage.");

2 个答案:

答案 0 :(得分:1)

您将damage定义为 Player.prototype.applyDamage内的变量,因此此函数damage之外仍未定义

答案 1 :(得分:0)

Javascript中的变量具有函数范围。这意味着它们只能在声明它们的函数中被访问或分配,并且它们存在于函数的任何地方,即使变量是在函数的子部分内声明的。

异常是在任何函数(全局变量)之外声明的变量和用“let”而不是var声明的变量。用let声明的变量具有块范围。