SyntaxError: JavaScript 中的非法 return 语句
SyntaxError: Illegal return statement in JavaScript
“SyntaxError: Illegal return statement”发生在return
函数外部使用该语句时。
要解决错误,请确保仅使用return
命名函数或箭头函数内的语句。该语句结束函数的执行并将值返回给调用者。
以下是错误发生时间的示例。
索引.js
// ⛔️ don't return outside a function return 42; // ✅ Use return inside a function function getNum() { return 42; } if (true) { // ⛔️ don't return outside a function return 10; } for (let i = 0; i < 3; i++) { // ⛔️ don't return outside a function return 15; } function example() // 👈️ has a missing curly brace { return true }
“SyntaxError: Illegal return statement”最常见的原因是在return
函数外部使用语句。
确保只return
在函数内部使用关键字。
索引.js
// ✅ return inside named function function getNum() { return 42; } // ✅ return inside arrow function const example = () => { return 42; }; // ✅ implicit return using arrow function const another = () => 'bobbyhadz.com'; // ✅ implicitly return object from arrow function const another2 = () => ({ id: 1, site: 'bobbyhadz.com', });
下面的if
语句和for
循环不在函数内部,所以我们不能return
在其中使用语句。
索引.js
if (true) { // ⛔️ don't return outside a function return 10; } for (let i = 0; i < 3; i++) { // ⛔️ don't return outside a function return 15; }
相反,您应该将if
语句包装在一个函数中。
索引.js
function test() { if (true) { return 100; } return 200; }
如果你需要退出一个for
循环,你应该使用一个break
语句而不是
return
.
索引.js
const arr = ['bobby', 'hadz', 'com']; for (let index = 0; index < arr.length; index++) { console.log(arr[index]); if (arr[index] === 'hadz') { // 👇️ exit the loop break; } }
break
语句 can 用于提前退出循环。
我们可以break
在以下场景中使用该语句:
- 基本
for
循环 for ... of
循环for ... in
循环while
循环switch
声明
下面是一个使用break
语句退出for...of
循环的例子。
索引.js
let arr = ['a', 'b', 'c']; for (const element of arr) { if (element === 'b') { break; } console.log(element) // 👉️ a }
循环中的if
语句for...of
检查每次迭代是否满足条件。
一旦if
块运行,我们使用break
语句退出for...of
循环。
引发错误的另一个常见原因是我们代码中的语法错误。
您可以通过打开浏览器的控制台或 Node.js 终端来检查代码的哪一行引发了错误。
在屏幕截图中,我们可以看到错误是index.js
在 line 上的文件中引发的5
。
您可以将代码粘贴到在线语法验证器中。验证器应该能够告诉您错误发生在哪一行。
您可以将鼠标悬停在波浪形的红线上,以获取有关引发错误原因的更多信息。
要解决“非法返回语句”错误:
- 确保只
return
在函数内部使用语句。 - 更正代码中的任何语法错误。