關於循環中的作用域問題

定義變量的位置不同,在使用過程中所起的作用也不同。

看例子:

<!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的位置必須出現在這裏;

發佈了46 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章