SyntaxError: missing formal parameter

当你的函数声明缺少有效参数时,就会出现 JavaScript 异常“缺少形参”。

消息

SyntaxError: missing formal parameter (Firefox)
SyntaxError: Unexpected number '3'. Expected a parameter pattern or a ')' in parameter list. (Safari)
SyntaxError: Unexpected string literal "x". Expected a parameter pattern or a ')' in parameter list. (Safari)

错误类型

SyntaxError

哪里出错了?

“形参”是“函数参数”的一种花哨说法。你的函数声明缺少有效参数。在函数声明中,参数必须是标识符,而不是数字、字符串或对象等任何值。声明函数和调用函数是两个独立的步骤。声明需要标识符作为参数,并且只有在调用(执行)函数时,你才提供函数应该使用的值。

JavaScript中,标识符只能包含字母数字字符(或“$”或“_”),并且不能以数字开头。标识符与字符串不同,字符串是数据,而标识符是代码的一部分。

示例

提供正确的函数参数

在设置函数时,函数参数必须是标识符。所有这些函数声明都失败了,因为它们为参数提供了值

js
function square(3) {
  return number * number;
}
// SyntaxError: missing formal parameter

function greet("Howdy") {
  return greeting;
}
// SyntaxError: missing formal parameter

function log({ obj: "value"}) {
  console.log(arg)
}
// SyntaxError: missing formal parameter

你需要在函数声明中使用标识符

js
function square(number) {
  return number * number;
}

function greet(greeting) {
  return greeting;
}

function log(arg) {
  console.log(arg);
}

然后你可以使用你喜欢的参数调用这些函数

js
square(2); // 4

greet("Howdy"); // "Howdy"

log({ obj: "value" }); // { obj: "value" }

另见