关于数组声明的JavaScript

时间:2018-12-18 02:03:06

标签: javascript

var Arr_avg = function() {
  var total = 0;
  var arr = [];
  while (true) {
    var inp = Number(prompt("enter value"));
    if (inp !== 0) {
      arr.push(inp);
      var total = arr.reduce(
        (accumulator, currentValue) => accumulator + currentValue
      );
    } else {
      alert("values are" + arr);
      alert("total is" + total);
      alert("average is" + (total / arr.length));
      break;
    }
  }
}

这是我的js程序,用于计算数组中数字的总和,平均值并显示数组。代码工作正常,但我对此表示怀疑,如下所示:

当我在while循环之外声明空数组var arr=[];时,程序运行正常,但是当我在if块中声明它时,程序仅打印最后附加的数字运行时将其移至数组。

我是js新手,这是一些全局/局部变量吗?

请解释

谢谢

1 个答案:

答案 0 :(得分:1)

如果将var arr = []放在if块中,则每次在循环中清空数组之前,都将输入推入其中。因此,数组仅包含最后一个输入。 var arr = []可以视为

的快捷方式
var arr;
arr = [];

第一行仅声明变量,第二行为其分配值。如果变量已经有一个值,则将旧值替换为该值。因此,您将丢失数组的旧内容。

您可能已经了解到var声明已“悬挂”在函数顶部。这仅涉及声明部分,该赋值仍在编写声明的位置执行。因此,如果它在循环内,则每次都会对该变量进行重新初始化。