“意外令牌(”从第1行引出。为什么?
function (a,b,c) {
// code
}
答案 0 :(得分:4)
Techfoobar本质上是正确的,解释它的另一种方式是 FunctionDeclaration 必须有一个名称,而在 FunctionExpression 中,名称是可选的。
两者有什么区别?函数声明是以保留字function
开头的任何语句。所以:
function foo() {}
是一个函数声明。
函数表达式就像一个声明,但它出现在语句的开头之外的任何地方,所以:
(function (){});
var x = function(){};
if (6 != function(){return 'foo';}()){}
是所有函数表达式,不需要名称。
答案 1 :(得分:3)
因为存在语法错误。你的功能没有名字。
如果要按照您的方式定义,您的函数必须具有名称。
要检查这一点,请将代码粘贴到Firebug控制台中并执行它。你会收到错误
SyntaxError:函数语句需要名称
您可以通过为您的函数命名来纠正它。
例如:
function foo(blah) {
...
}
对于在全局范围内定义的匿名函数,您需要将其分配给某个OR,或者需要立即执行它。
即
或者
var x = function(blah) {
...
};
OR
(function(blah) {
...
})(arguments);
因为否则绝对无法调用它们。
答案 2 :(得分:0)
函数语句中缺少名称。使用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('');
}