我多次看到这种语法,但我找不到正确谷歌的方法,我希望我能在这里得到一些帮助:
<script>
(function(){
//code goes here
})();
</script>
Run Code Online (Sandbox Code Playgroud)
为什么函数关键字包含在括号中?它做了什么,这叫做什么?
在js中,语法为:
function() { //code }
Run Code Online (Sandbox Code Playgroud)
定义匿名函数.您可以将其存储到变量中并调用它:
var a = function() { //code };
a();
Run Code Online (Sandbox Code Playgroud)
或者如果您不想打扰它,可以一步完成.
(function() { //code })();
Run Code Online (Sandbox Code Playgroud)
括号是必要的,因为:
function() { //code }();
Run Code Online (Sandbox Code Playgroud)
是不正确的语法.
在某些情况下,此语法非常有用,可帮助进行内存管理以及更改变量名称.例如,在javascript中你有一个jQuery
对象,但大多数人都称之为$
.但有时$
用作其他变量而不是jQuery对象.要解决此问题,您可以将代码包装在:
(function($) { // code that uses $ })(jQuery);
Run Code Online (Sandbox Code Playgroud)
这样你可以使用美元符号,而不必担心它是否实际指向jQuery对象.
它被称为即时调用的匿名函数.
// defining and calling a named function
function x() { /* do something */ }
x();
// defining an anonymous function (usually to assign it to a variable)
var x = function () { /* do something */ };
x();
// defining and calling an anonymous function in one step
(function () { /* do something */ })();
Run Code Online (Sandbox Code Playgroud)
大多数情况下,最后一个模式用作创建闭包的一部分.
归档时间: |
|
查看次数: |
72 次 |
最近记录: |