function(){}(args)在FF中不起作用?

时间:2011-05-06 17:19:01

标签: javascript

function test(json_parameters){console.log(json_parameters);}({"foo":"bar"});

在FF中不起作用,但它应该。这是一个错误吗?

3 个答案:

答案 0 :(得分:5)

你需要将函数包装在parens中:

(function test(json_parameters){console.log(json_parameters);})({"foo":"bar"});

否则,它将被视为函数声明,后跟对象文字语句,如下所示:

function test(json_parameters) {
    console.log(json_parameters);
};
({"foo":"bar"});

所有主流浏览器的工作方式都相同。

答案 1 :(得分:1)

您需要在函数定义周围加上括号才能生效。

(function test(json_parameters){console.log(json_parameters);})({"foo":"bar"});

答案 2 :(得分:1)

根据标准an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration的{​​{3}},它不是有效的Javascript语句。由于它不是有效的语句,因此在}符号后面会自动插入分号以使其有效,每12.4将分号分成两个独立的部分,7.9.1和表达式语句(没有做任何事情)。

要使其正常运行,您必须确保它不以function关键字开头。这两种常见的方法是

(function test(json_parameters){console.log(json_parameters);})({"foo":"bar"});

(function test(json_parameters){console.log(json_parameters);}({"foo":"bar"}));

但其他任何事情都应该有效,比如

+function test(json_parameters){console.log(json_parameters);}({"foo":"bar"});