关于循环中的作用域问题

来源:互联网 发布:ajaxupload.js 编辑:程序博客网 时间:2024/06/06 09:00

定义变量的位置不同,在使用过程中所起的作用也不同。

看例子:

<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script type="text/javascript">//判断数值里是否完数,有则打印出来var arr = [8,34,56,28,6,7];// 循环遍历每一个数组元素for (var i=0; i<arr.length; i++){// 初始化sum的值var sum=0;// 循环数组其中一个元素的从1到前一个数的每一个值for (var j=1; j<arr[i]; j++){// 如果这个值对其中的数可以除尽,则把这些数都加进来if(arr[i]%j == 0){sum += j;}}// 判断这些约数加起来是否为自身if(sum == arr[i]){// 打印出完数console.log(arr[i]);}}</script></body></html>

这里的关键就是在于sum初始化的位置,如果放在整个循环外边或者最里面都不能得到结果,

如果在循环的最外边,那么sum的值是一直递增的,不会因为值得改变而归0;

如果在里面那么每加都是都是加0;

所以sum的位置必须出现在这里;

原创粉丝点击