function test(json_parameters){console.log(json_parameters);}({"foo":"bar"});
在FF中不起作用,但它应该。这是一个错误吗?
答案 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"});