JavaScript 作用域:在函数后保留全局变量值

javascript scope : retain global variable value after a function

本文关键字:保留 全局 变量值 函数 作用域 JavaScript      更新时间:2023-09-26

当调用"斜边"函数时,"x"的值从1开始变化。修复它,使"x"在 gobal 范围内仍然是 1。

  var x = 1;
  var y = 1;
  function hypotenuse(a , b) {
    var cSquared = a * a + b * b;
    x = Math.sqrt(cSquared);
    return x;
  }
  hypotenuse(x, y);

要实现这一点,您需要做的就是在函数中使用var重新声明 x 变量。这将在函数的作用域内声明x变量,保持原始的全局作用域x变量不变:

  var x = 1;
  var y = 1;
  function hypotenuse(a , b) {
    var cSquared = a * a + b * b,
        x = Math.sqrt(cSquared);
    return x;
  }
  hypotenuse(x, y);

或者,使用您最初采用的代码样式(拆分出var声明):

  var x = 1;
  var y = 1;
  function hypotenuse(a , b) {
    var cSquared = a * a + b * b;
    var x = Math.sqrt(cSquared);
    return x;
  }
  hypotenuse(x, y);

有关此处发生的事情的更多详细信息,请阅读javascript范围

试试这个:

  var x = 1;
  var y = 1;
  function hypotenuse(a, b) {
    var cSquared = a * a + b * b;
    var x = Math.sqrt(cSquared);
    return x;
  }
  //console.log(hypotenuse(x, y));
  //console.log('x = ' + x);