为什么javascript不允许没有赋值的匿名函数?

Why does javascript not allow an anonymous function with no assignment?

本文关键字:函数 赋值 javascript 不允许 为什么      更新时间:2023-09-26

"Unexpected Token("从第一行抛出。为什么?

function (a,b,c) {
        // code    
    } 

Techfoobar本质上是正确的,另一种解释它的方式是FunctionDeclaration必须有一个名称,而在FunctionExpression中,名称是可选的。

两者的区别是什么?函数声明是以保留字function开头的任何语句。所以:

function foo() {}

是函数声明。

函数表达式类似于声明,但它出现在语句中的任何地方,而不是开始,因此:

(function (){});
var x = function(){};
if (6 != function(){return 'foo';}()){}

都是函数表达式,不需要名称

因为有语法错误。你的函数没有名字

如果你想按照你的方式定义函数,你的函数要么必须有一个名字

要检查这一点,将代码粘贴到Firebug控制台中并执行它。你会得到错误

SyntaxError: function statement required a name

你可以给你的函数一个名字来纠正它。

例如:

function foo(blah) {
    ...
}

对于在全局作用域中定义的匿名函数,你要么需要给它赋值,要么需要立即执行它。

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('');
}