这如何为 循环和 if 语句工作
How does this for loop and if statement work?
试图弄清楚我自己理解的函数的 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 的原因是,只有当值大于您已经看到的值时,您才会打印出值。
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环