这如何为 循环和 if 语句工作

How does this for loop and if statement work?

本文关键字:if 语句 工作 循环      更新时间:2023-09-26

试图弄清楚我自己理解的函数的 for 循环和 if 语句是如何工作的。之所以如此,是因为在谷歌上搜索了挑战后,这段代码更短,但与我最初的代码相同。混淆是最长的变量。它存储大于 str.length(5( 的单词的最长长度 - 或者我可能是错的。出于某种不为人知的原因,语言 (8( 的长度没有存储在变量中,尽管 5、10 和 18 存储了。

function longestWord(str) {
    str = str.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length; i++) {
        if (longest < str[i].length) {
            console.log("str = " + str[i]);
            longest = str[i].length;
            console.log("longest = " + longest); //What happended to 8 for language?
            word = str[i];
        }
    }
    return word;
}
console.log(longestWord("Using the JavaScript language bademnostalgiastic"));

所有这些都会跟踪最长的单词(并将字符计数存储在longest中(。 对于每次迭代,它都会测试下一个字符串的字符数是否多于当前记录的最长字符串(由 longest 确定(。 如果是这样,它会存储新的字符计数,因为它是新的"最长的赢家"。

以下是这里发生的事情:

  • 取一个字符串并将其拆分为单词(由空格决定(
  • 此时,您有一个由所有单个字符串组成的字符串数组,除以" ">
  • 遍历数组中的所有字符串
  • 如果要循环访问的当前字符串的字符计数器比以前任何其他字符串都多,则将此当前字符计数存储在变量中longest
  • 继续循环并使用上一点中的上述逻辑

因此,在这一切结束时,您拥有实际字符串(存储在word中(和字符数(存储在longest中(具有最多字符的单词。

JavaScript 的长度为 10 个字符,并且在 language 之前进行测试,因此if测试失败并被跳过。

它存储大于str.length(5(的单词的最长长度

不。它存储迄今为止看到的最长长度。测试Using时它会5,但很快就会被覆盖。

"JavaScript"的长度是10,比"语言"长。由于"JavaScript"排在第一位,因此"language"不会超过最长的长度,因此if语句将导致false。

array str[]={Using, the,JavaScript, language ,bademnostalgiastic}

迭代 1

str[i]=Using
str.length=5 (a)
Longest =0   (b)
since (a)>(b)
Longest =5
word=Using

迭代 2

str[i]=the
str.length=3 (a)
Longest =5   (b)
since (a)<(b)
Longest and word remain same
so,Longest =5
and,word=Using

迭代 3

str[i]=JavaScript
str.length=10 (a)
Longest =5   (b)
since (a)>(b)

so,Longest =10
and,word=JavaScript

迭代4

str[i]=language
str.length=8 (a)
Longest =10   (b)
since (a)<(b)

所以最长保持不变

so,Longest =10
and,word=JavaScript

迭代5

str[i]=bademnostalgiastic
str.length=18 (a)
Longest =10   (b)
since (a)>(b)

so,Longest =18
and,word=bademnostalgiastic
END OF LOOP

所以最长的单词bademnostalgiastic

以下是细分:

str = str.split(" ");

这会使字符串数组在空格上拆分。

for (var i = 0; i < str.length; i++)

我们从 0 处的 i(迭代器变量(开始。我们将继续执行此循环,而i小于str的长度。每次通过此循环时,我们将i增加 1。

if (longest < str[i].length)

在这里,我们检查我们保存的longest是否小于我们正在查看的字符串长度。

longest = str[i].length;

在这里,我们分配新的最长字符串,因为这个字符串更长。

word = str[i];

我们还保存了这个词,可能是为了以后可以使用它。

return word;

循环结束后,我们将word作为结果发回。

console.log(longestWord("Using the JavaScript language bademnostalgiastic"));

这是您的电话和打印声明。

看到 5、10 和 18 的原因是,只有当值大于您已经看到的值时,您才会打印出值。