“意外令牌(”从第 1 行抛出。为什么?
function (a,b,c) {
// code
}
Techfoobar 本质上是正确的,另一种解释方式是FunctionDeclaration必须有名称,而在FunctionExpression中名称是可选的。
两者有什么区别?函数声明是以保留字开头的任何语句function
。所以:
function foo() {}
是一个函数声明。
函数表达式类似于声明,但它出现在除 start 之外的语句中的任何位置,因此:
(function (){});
var x = function(){};
if (6 != function(){return 'foo';}()){}
都是函数表达式,不需要名称。
因为有语法错误。您的函数没有名称。
如果要按照您所做的方式定义您的函数,则它必须有一个名称。
要检查这一点,请将您的代码粘贴到 Firebug 控制台并执行它。你会得到错误
SyntaxError:函数语句需要名称
您可以通过为函数命名来更正它。
例如:
function foo(blah) {
...
}
对于在全局范围内定义的匿名函数,您要么需要将其分配给某个东西,要么需要立即执行它。
IE
任何一个
var x = function(blah) {
...
};
或者
(function(blah) {
...
})(arguments);
因为否则绝对不可能调用它们。
函数语句中缺少名称。检查它jslint
尝试
function tdip() {
var ts = tdip.find('>span');
var trap = [];
ts.contents().each(
function () {
if ($(this).is(':visible')) {
if (this.nodeType == 3 && this.data.length > 0) {
trap.push(this.data.trim());
} else if ($(this).text && $(this).text().length > 0) {
trap.push($(this).text().trim());
}
}
});
return trap.join('');
}