gpt4 book ai didi

Javascript:for 循环 i++ 和 (i+1) 之间的区别

转载 作者:行者123 更新时间:2023-11-30 12:21:17 25 4
gpt4 key购买 nike

我正在构建一个 javascript for 循环,我想将数组的值与数组中的下一个值进行比较。

如果两个值不相等,我想返回 true,否则我想返回 false。

在下面的代码中,我传递了字符串“aba”,将其拆分并排序为

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

然而,当我将 sortedLetters[0] ("a") 与 sortedLetters[1] 进行比较时

函数isogram(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;

最佳答案

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;
}

关于Javascript:for 循环 i++ 和 (i+1) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com