JSLint在遇到function关键词之后紧跟一堆括号,而此时应当被用作一个声明语句时,会抛出"Missing name in function statement"的错误。下面例子中,我们尝试着定义一个函数,但是没有给其函数名:
这个错误是为了强调一个JavaScript语法错误。除非你更正了这个问题,否则你的代码是不会正常运行的。
ECMAScript语法描述了一个函数语句(或者说描述语句)必须有一个标示符:(ES5 §13):
FunctionDeclaration :
function Identifier ( FormalParameterListopt) { FunctionBody }
Notice that the Identifier part of the grammer is not optional. Compare this to the grammar for a function expression:
FunctionExpression :
function Identifieropt ( FormalParameterListopt) { FunctionBody }
这一次,注意标示符是可选的。这个可选的标示符在函数表达式中会让函数变成一个匿名函数。但是在我们上面的例子中,代码会被解析成一个语句而非表达式。为了解决这个问题,必须给这个函数一个标示符:
Alternatively, make sure the code is parsed as an expression, rather than a statement. There are numerous way of doing this, but in our example the only one that really makes sense is to assign the anonymous function to a variable (don't forget the semi-colon): 当然,如果确定代码会被解析成一个表达式,而非一个语句。就有多种方法可以实现这种目的,但是在我们的例子中,真正起作用的是要把它作为成一个匿名函数赋值给一个变量(不要忘了分号):