问答详情
源自:8-5 计时器setTimeout()

为什么把sum定义在函数内跟定义在函数外的运行结果不一样,求解答!谢谢

为什么把sum定义在函数内跟定义在函数外的运行结果不一样,求解答!谢谢

提问者:qq_我爱喝大果粒_0 2015-11-24 14:39

个回答

  • 慕男婶
    2015-11-24 15:30:03
    已采纳

    举个栗子

    比如想要循环一个数组,求出数组中所有元素之合

    定义在函数外:

    var arr = [1,2,3,4];
    var sum = 0;// 定义在函数外
    for(var i = 0;i<arr.length;i++){
      // 因为sum在外部定义的,所以只管往sum上累加值即可
      sum += arr[i]
    }

    定义在函数内:

    var arr = [1,2,3,4];
    for(var i = 0;i<arr.length;i++){
      // 每次进循环之后,都重新定义了一个sum变量,其值是0,所以上一次累加的元素值会被冲(覆盖)掉
      var sum = 0;
      // 累加元素值
      sum += arr[i]
    }


  • 江湖書生
    2015-11-24 14:47:36

    应该是局部变量和全局变量的原因吧,大神勿喷!