为什么}的位置确定结果?

时间:2015-07-30 22:45:26

标签: javascript

我正在尝试找到所提供句子中最长的单词,并返回该单词的长度。

我最初写了这个函数:

 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代表什么?

4 个答案:

答案 0 :(得分:3)

在第一个代码中,你没有完成for循环,因此返回打破循环并返回第一个字长,而在第二个代码中,当循环完成后返回结果,所以你得到了正确的结果

答案 1 :(得分:2)

在第一个函数中,return语句在for循环中,因此它将返回第一个单词的长度,即“The”,因此将返回3.而第二个单词将正确返回最长的词。

答案 2 :(得分:1)

在第一个版本中,无论发生什么,都会在for循环的第一次迭代时返回。在第二个版本中,在for循环完成之前不会返回。这就是结果不同的原因。返回值是myArray[i].length的字符串长度。

答案 3 :(得分:0)

在第一个示例中,您将在for循环中返回变量最长。这将导致执行离开该功能。所以函数返回3,因为它只迭代数组的第一个元素,即&#39; The&#39;。

祝你好运!