JavaScript变量未定义,尽管已定义
在console.log中,var损坏未定义。我错过了什么?我已经在原型中定义了损坏,但仍然无法确定。有什么想法吗?基本上只需要生成一个随机数,然后从玩家的生命值中减去该数字,并显示剩余的余额作为所受伤害的数量JavaScript变量未定义,尽管已定义,javascript,javascript-objects,prototypejs,Javascript,Javascript Objects,Prototypejs,在console.log中,var损坏未定义。我错过了什么?我已经在原型中定义了损坏,但仍然无法确定。有什么想法吗?基本上只需要生成一个随机数,然后从玩家的生命值中减去该数字,并显示剩余的余额作为所受伤害的数量 function Player(name, weapons) { this.playerName = name; this.playerHealth = 10; this.playerStrength = 2; this.playerWeapons = [
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.");
您将
damage
定义为Player.prototype.applyDamage
中的变量,因此,在这个函数之外,损坏
仍然没有定义您正在从全局范围访问损坏变量,但该变量是在原型范围中定义的。这就是它显示为未定义的原因。Javascript中的变量具有函数范围。这意味着它们只能在声明它们的函数中访问或分配,并且它们存在于函数中的任何地方,即使变量是在函数的子部分中声明的
例外情况是在任何函数之外声明的变量(全局变量)和用“let”而不是var声明的变量。用let声明的变量具有块作用域。请说明如何调用此函数?
var-damage
仅是函数applyDamage
内作用域上的局部变量。在此处阅读有关作用域的内容()