2015-06-22 136 views
0

我正在構建一個javascript for循環,我想將數組的值與數組中的下一個值進行比較。Javascript:Forloop i ++和(i + 1)之間的區別

如果兩個值都不相等,我想返回true,否則我想返回false。

在下面的代碼我傳遞字符串 「ABA」,將它和它然而排序,以

sortedLetters = ["a", "a", "b"] 

,當我比較sortedLetters sortedLetters [0]( 「一」)[1]

功能isIsogram(STR){

// split each letter into an array and sort 
    sortedLetters = str.split("").sort(); 

    console.log(sortedLetters[0]); // is "a" 
    console.log(sortedLetters[1]); // should be "a" 

    // iterate through the array and see if the next array is equal to the current 
    // if unequal, return true 
    for(i = 0; i < sortedLetters.length; i++) { 
     if(sortedLetters[i] !== sortedLetters[(i+1)]) return true; 
    } 
    // for "a" and "a", it should return false 

    return false; 

}; 

document.write(isIsogram("aba")); 

然而,爲什麼if語句的工作,但上面的代碼不下列?

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

回答

2

i++使用後增量,所以表達式i++的值是什麼值在變量i增量之前。此代碼:

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

做同樣的事情:

if(sortedLetters[i] !== sortedLetters[i]) return true; 
i = i + 1; 

由於x !== x總是對的x任何穩定值爲false,代碼做同樣的事情:

if(false) return true; 
i = i + 1; 

您可以使用預增加版本++i,但是如果您在語句中增加變量,則不應在循環中增加它:

for (i = 0; i < sortedLetters.length;) { 
    if (sortedLetters[i] !== sortedLetters[++i]) return true; 
} 
1

很簡單,索引是相同的在此表達式:

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

如果for循環計數器在3,例如,它會評估sortedLetters[3] !== sortedLetters[3]之前中的值遞增。

在for循環中使用i++也會使您的計數器增加兩倍。

相關問題