Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript变量未定义,尽管已定义_Javascript_Javascript Objects_Prototypejs - Fatal编程技术网

JavaScript变量未定义,尽管已定义

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 = [

在console.log中,var损坏未定义。我错过了什么?我已经在原型中定义了损坏,但仍然无法确定。有什么想法吗?基本上只需要生成一个随机数,然后从玩家的生命值中减去该数字,并显示剩余的余额作为所受伤害的数量

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
内作用域上的局部变量。在此处阅读有关作用域的内容()