在嵌套函数Javascript中访问全局范围变量

时间:2015-08-04 15:54:42

标签: global-scope

我试图了解功能范围与Gobal范围,以下示例:

<script>
// The following variables are defined in the global scope
var num1 = 2,
    num2 = 3,
    name = "Chamahk";

// This function is defined in the global scope
function multiply() {
  return num1 * num2;
}

console.log(multiply()); // Returns 60

// A nested function example
function getScore () {
  var num1 = 20,
      num2 = 30;

  function add() {
    var num1 = 200,
      num2 = 300;
    return name + " scored " + (num1 * num2);
  }

  return add();
}

console.log(getScore()); // Returns "Chamahk scored 60000"
</script>

我用Google搜索并发现可以使用此访问Global Scoped变量。将返回代码更改为

return name + " scored " + (this.num1 * this.num2);

输出为“Chamahk得分为6”,表示这是访问全局var num1和num2。

这很清楚,但我想知道的是,如何访问getScore()函数中声明的num1和num2 .i.e。将输出设为600。

1 个答案:

答案 0 :(得分:0)

我不得不说你的问题有点令人困惑。

通常,您可能希望使用函数的参数来传递值。

你获得60000的原因是因为在你的添加功能中你设置了num1,而num2设置为200和300。

如果您更改了add函数以将num1和num2作为参数,而不是重新声明它们,则可以在getScore()中传入值;

例如return add(num1,num2);

var player = new System.Media.SoundPlayer("c:\\tes.wav");
player.Play();