这些双括号在JS中做什么
What do these double parentheses do in JS?
我正在读《secrets of the js ninja
》一书,经常看到这样的代码
(function(){
something here;
})();
为什么我们需要把函数括在括号里,为什么我们要在括号后面再加一对括号?
它是一个自调用函数,在脚本完成加载时调用它自己。您可以在不带参数的情况下调用它,也可以向它添加参数,如window
或document
。
您使用它的方式就像jQuery使用它一样:
(function( window, undefined ) {
// jQuery code
})(window);
做同样事情的(几乎)替代语法:
! function( window, undefined ){
// some code…
}(window);
更多信息,请访问:http://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/
此
(function(){
alert('hello');
})();
虽然它是一个函数,但它是自动调用的,所以你不能/不能手动调用
这些对于类似的for
循环非常有用
这将失败,因为我将等于9后5秒
for(var i = 0; i < 10; i++) {
window.setTimeout(function(){
console.log(i);
}, 5000)
}
所以你可以做这个
for(var i = 0; i < 10; i++) {
(function(a){
window.setTimeout(function(){
console.log(a);
}, 5000)
})(i);
}
也有利于创建像这样的"私人"作用域
(function(){
var test = 'hello';
console.log( test ); // 'hello'
}());
console.log( test ); // 'undefined'
最后一组括号会使函数立即执行。创建和执行函数时,不会将其分配到任何位置。将代码封装在这样的函数中的原因是为了封装代码。举个例子:
var myVar = 'whatever';
function shout() { alert(myVar); }
这里,myVar
和shout
刚刚成为全局变量。您可以打开控制台并键入window.myVar
或window.shout
,就可以访问和更改这些变量。通过将其封装在函数中,这些变量对外部函数保持本地:
(function() {
var myVar = 'whatever';
function shout() { alert(myVar); }
})();
CCD_ 9和CCD_。仅存在于该函数内部。
该模式还用于围绕局部变量创建闭包。请参阅循环中的JavaScript闭包——一个简单的实用示例。
自调用函数,基本上它调用自己strightaway。
通常用于传递像jQuery这样的变量,以确保$
是真正的jQuery对象!
(function($){
// $ now is equal to jQuery
})(jQuery);
它运行您刚刚创建的函数。这样做的原因是它将您编写的所有代码都包含在一个新的范围内。这意味着当您定义vars
和functions
时,它们将保留在您刚刚创建的function()
的范围内。
简而言之,它封装了代码。
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 什么's是连接供应商js文件的最佳方式
- minimy javascript是什么意思?Backbone.js
- 在node.js中编写单元测试的最佳方式是什么
- node.js是否具有'match()'方法如果是,语法是什么
- angular.js我如何设置数据什么是响应值
- googlemarkercluster.js库的备用源路径是什么
- 将JS文件解析为PHP的副作用是什么
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- 什么CSS/JS技巧驱动镜像反转http://com.google愚人节页面
- 什么是淘汰赛中的根管理员.js以及它指向什么
- 将Rails后端添加到JS/HTML/CSS应用程序时,正确的文件位置是什么
- Ember.js什么应该成为组件
- 三.js - 什么是平面缓冲区几何
- three.js-什么'这是将多个纹理/图像放在单个球体上的最佳方式
- backbone.js:什么应该是视图
- D3.js:什么是'g'在.append(“g")D3.js代码
- Node.js什么是对象克隆?
- HTML5/JS什么是一个简单的方法来选择适当的音频源
- JS什么都不做…试图在
- & lt; li>