写匿名函数报错
Writing anonymous function is giving error
我正在尝试将 'named function' 与 'anonymous function' 进行比较,但在一个简单的程序中我遇到了错误。我做的一切都是对的,不知道为什么会出现错误。有人可以帮忙吗?
<html>
<head></head>
<body>
<script>
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
function(){
alert('hello');
}
//IIFE
(function (){
alert('good day');
})();
alpha();
</script>
</body>
</html>
我希望 'good day' 和 'hi' 收到警报,但收到错误消息。
Note: I read anonymous function is one without a name so wrote the
second function without name. Please, someone paste correct snippet as
I don't know why this is wrong
function(){ <------------------- A function without name.
你不能真正声明一个匿名函数。您需要在需要时使用它。你有:
function(){
alert('hello');
}
这将始终引发错误,因为您尚未为其命名。如果你将它附加到适合匿名函数的地方,你会没事的。如:
setTimeout(function(){
alert('hello');
}, 500);
所以您已修改,工作代码片段如下所示:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
setTimeout(function(){
alert('hello');
}, 500);
//IIFE
(function (){
alert('good day');
})();
alpha();
你也可以像这样把它变成一个 IIFE:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
(function(){
alert('hello');
})();
//IIFE
(function (){
alert('good day');
})();
alpha();
您只能将像您的 hello
这样的匿名函数编写为 表达式 - 也就是说,在解释器期望 的地方value,例如在括号内,作为另一个函数的参数。否则,解释器会尝试将其解析为函数 declaration(其函数名称被提升为 var
)——但没有名称,这是不可能的,因为没有什么可提取的作为名称,提升为变量,并分配给。
解决办法就是将匿名函数放在括号内:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
(function(){
alert('hello');
});
//IIFE
(function (){
alert('good day');
})();
alpha();
您可以将 javascript 代码复制并粘贴到浏览器的控制台(开发人员工具)中。
在 Firefox 上,您将收到以下错误:
SyntaxError: function statement requires a name [Learn More]
点击 [了解更多],您将被引导至 relevant documentation。
A function statement (or function declaration) requires a name, this
won't work:
function () {
return 'Hello world';
} // SyntaxError: function statement requires a name
You can use a function expression (assignment) instead:
var greet = function() {
return 'Hello world';
};
我正在尝试将 'named function' 与 'anonymous function' 进行比较,但在一个简单的程序中我遇到了错误。我做的一切都是对的,不知道为什么会出现错误。有人可以帮忙吗?
<html>
<head></head>
<body>
<script>
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
function(){
alert('hello');
}
//IIFE
(function (){
alert('good day');
})();
alpha();
</script>
</body>
</html>
我希望 'good day' 和 'hi' 收到警报,但收到错误消息。
Note: I read anonymous function is one without a name so wrote the second function without name. Please, someone paste correct snippet as I don't know why this is wrong
function(){ <------------------- A function without name.
你不能真正声明一个匿名函数。您需要在需要时使用它。你有:
function(){
alert('hello');
}
这将始终引发错误,因为您尚未为其命名。如果你将它附加到适合匿名函数的地方,你会没事的。如:
setTimeout(function(){
alert('hello');
}, 500);
所以您已修改,工作代码片段如下所示:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
setTimeout(function(){
alert('hello');
}, 500);
//IIFE
(function (){
alert('good day');
})();
alpha();
你也可以像这样把它变成一个 IIFE:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
(function(){
alert('hello');
})();
//IIFE
(function (){
alert('good day');
})();
alpha();
您只能将像您的 hello
这样的匿名函数编写为 表达式 - 也就是说,在解释器期望 的地方value,例如在括号内,作为另一个函数的参数。否则,解释器会尝试将其解析为函数 declaration(其函数名称被提升为 var
)——但没有名称,这是不可能的,因为没有什么可提取的作为名称,提升为变量,并分配给。
解决办法就是将匿名函数放在括号内:
//named Fn
function alpha(){
alert('hi');
}
//Anonymous Fn
(function(){
alert('hello');
});
//IIFE
(function (){
alert('good day');
})();
alpha();
您可以将 javascript 代码复制并粘贴到浏览器的控制台(开发人员工具)中。
在 Firefox 上,您将收到以下错误:
SyntaxError: function statement requires a name [Learn More]
点击 [了解更多],您将被引导至 relevant documentation。
A function statement (or function declaration) requires a name, this won't work:
function () { return 'Hello world'; } // SyntaxError: function statement requires a name
You can use a function expression (assignment) instead:
var greet = function() { return 'Hello world'; };