2

当调用 'hypotenuse' 函数时,'x' 的值从 1 更改。修复它,使 'x' 在全局范围内仍然为 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);
4

2 回答 2

3

要做到这一点,您需要做的就是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 范围

于 2013-11-10T14:37:53.317 回答
1

尝试这个:

  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);
于 2013-11-10T14:42:24.193 回答