我现在已经看到了这种奇怪的行为,我无法定义
function(){}
Run Code Online (Sandbox Code Playgroud)
要么
function(a){
console.log(a)
}
Run Code Online (Sandbox Code Playgroud)
它抛出一个Uncaught SyntaxError.
但是test = function(){}或者(function(){})确实有效.
Safari开发工具有一个更好的错误报告:它说
SyntaxError:Function语句必须具有名称.
好吧,如果你永远不会使用它,那么定义一个类似的函数是没有意义的.但它仍然很奇怪.我想我已经在问题中提供了答案.
Mar*_*ulz 28
JavaScript具有函数声明和函数表达式.前者不能立即调用,而后者可以.这是语言语法的问题.
功能声明:
function foo() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
函数表达式(在右侧=):
var foo = function() {
// ...
};
Run Code Online (Sandbox Code Playgroud)
通过在函数周围添加括号,您强制将函数解析为函数表达式,因为不可能在括号内放置函数声明(只有表达式是预期和接受的):
(function foo() {
// ...
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以立即调用它:
(function foo() {
// ...
})();
Run Code Online (Sandbox Code Playgroud)
有关更详细的说明,请查看JavaScript中的函数定义.
括号(function(){})表示函数计算,对象现在包含在括号内,此评估返回函数.它可以被称为:(function(){})();.
function(){}没评价.导致错误是有道理的,因为如你所说,你将无法以任何方式使用它.
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |