我正在尝试找到所提供句子中最长的单词,并返回该单词的长度。
我最初写了这个函数:
function findLongestWord(str) {
var myArray = str.split(' ');
var longest=0;
for(var i=0; i<myArray.length; i++) {
if(myArray[i].length>longest) {
longest = myArray[i].length;
}
return longest;
}
}
findLongestWord('The quick brown fox jumped over the lazy dog'); returns 3.
然后我移动倒数第二个花括号,使它看起来像这样:
function findLongestWord(str) {
var myArray = str.split(' ');
var longest=0;
var word = null;
for(var i=0; i<myArray.length; i++) {
if(myArray[i].length>longest) {
longest = myArray[i].length;
}
}
return longest;
}
findLongestWord('The quick brown fox jumped over the lazy dog'); returns 6.
有谁可以解释为什么第一个函数返回3? 3代表什么?
答案 0 :(得分:3)
在第一个代码中,你没有完成for循环,因此返回打破循环并返回第一个字长,而在第二个代码中,当循环完成后返回结果,所以你得到了正确的结果
答案 1 :(得分:2)
在第一个函数中,return语句在for循环中,因此它将返回第一个单词的长度,即“The”,因此将返回3.而第二个单词将正确返回最长的词。
答案 2 :(得分:1)
在第一个版本中,无论发生什么,都会在for循环的第一次迭代时返回。在第二个版本中,在for循环完成之前不会返回。这就是结果不同的原因。返回值是myArray[i].length
的字符串长度。
答案 3 :(得分:0)
在第一个示例中,您将在for循环中返回变量最长。这将导致执行离开该功能。所以函数返回3,因为它只迭代数组的第一个元素,即&#39; The&#39;。
祝你好运!