我是一名初學者,所以我正在解決一個練習,它是一個函數,返回字符串中第一個重複的字母,我的答案完全不起作用,所以當我看到解決方案時,發現它與我的類似除了答案表已經在for循環內重新分配了一個全局變量,並且重新分配甚至沒有改變變量的值。 你能解釋一下爲什麼你需要重新分配函數才能正常工作。在JavaScript中爲for循環重新分配變量的目的是什麼?
這裏是我的代碼:
function find(str) {
var array = str.split('');
var result = '';
var counter = 0; // counter declared here
for (var x = 0; x < array.length; x++) {
//counter missing here
for (var y = 0; y < array.length; y++) {
if (array[x] === array[y]) { counter = counter + 1;}
}
if (counter < 2) {
result = array[x];
break;
}
}
return result;
}
,這是從答卷的起作用正確的代碼:
function find(str) {
var array = str.split('');
var result = '';
var counter = 0; //counter declared here
for (var x = 0; x < array.length; x++) {
counter = 0; //counter is reassigned here
for (var y = 0; y < array.length; y++) {
if (array[x] === array[y]) { counter = counter + 1;}
}
if (counter < 2) {
result = array[x];
break;
}
}
return result;
}
「counter」實際上不是全局變量,因爲它是在一個函數內聲明的 - 這使得它成爲一個局部變量(局部於該函數)。 –
對不起,我的意思是全局到循環而不是整個函數,換句話說計數器沒有被聲明爲循環內的變量 –
想一下'counter'的值。在循環內部有'counter = 0'這個行有什麼不同?在你的想法中(或在一張紙上)運行這兩個函數,逐行並迭代迭代。看看差異以及它們對結果的影響。 – mmgross