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

来源:8-5 计时器setTimeout()

qq_我爱喝大果粒_0

2015-11-24 14:39

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

写回答 关注

2回答

  • 慕男婶
    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]
    }


    慕男婶 回复qq_我爱喝...

    应该是循环内 和 循环外,而不是 函数内 和 函数外,打错字儿了。

    2015-11-27 10:42:02

    共 2 条回复 >

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

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题