关于循环中的作用域问题

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

看例子:

<!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的位置必须出现在这里;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值