JavaScript中for循环内的return语句是否会提前终止整个循环?
解答
你的判断完全正确:在函数内部的循环体中执行return语句时,会立刻终止整个循环流程,同时直接退出当前函数,将return后的值返回给函数调用位置,后续所有未执行的循环迭代都不会再运行。
你修改后的代码仅输出第一个元素的原因非常明确:
循环第一次迭代时i=0,程序正常拼接出第一个全名John Stewart,执行到return fullNameArray.push(temp)时,会先完成push操作把第一个元素存入数组,随后立刻触发return逻辑:不仅for循环直接终止,整个fullName函数也直接退出,后续i=1、i=2、i=3对应的拼接、push逻辑完全没有执行机会,最终数组里自然只有第一个元素。
额外提两个你这段代码里需要注意的细节:
Array.push()方法的返回值是执行push操作后数组的新长度,并不是数组本身,你把push的执行结果放在return后面,就算逻辑位置对,返回的也不是你想要的全名数组。- 不建议在函数内部直接操作全局作用域的
fullNameArray,更好的写法是在函数内部定义结果数组,等所有循环逻辑执行完成后,再在循环外部return结果,参考写法如下:
let firstName = ["John","Maria","Brandon","Gaby"]; let lastName = ["Stewart","Rambeau","Waffel","Sinclair"]; function fullName (array1,array2){ let fullNameArray = []; let temp; for (let i=0;i<array2.length;i++){ temp = array1[i] + " " + array2[i]; fullNameArray.push(temp); } // 所有元素处理完成后再返回结果 return fullNameArray; }; const result = fullName(firstName,lastName); console.log(result); // 预期输出:['John Stewart','Maria Rambeau','Brandon Waffel','Gaby Sinclair']
你可以顺便记一下三个常用循环控制逻辑的区别,避免后续写代码再踩坑:
return:仅能在函数内部使用,执行后直接终止循环+退出所在函数,返回指定值break:仅终止当前所在的循环,不会退出函数,循环之后的函数代码会继续执行continue:跳过本次循环的剩余代码,直接进入下一轮循环判断
内容的提问来源于stack exchange,提问作者Juan Yeremia
相关产品推荐
相关产品推荐

