首页 > Web开发 > 详细

js立即执行函数

时间:2017-11-17 17:53:01      阅读:240      评论:0      收藏:0      [点我收藏+]

 

一、立即执行函数方式

js立即执行函数可以让你的函数在创建后立即执行,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。

方式1、最前最后加括号

(function(){alert(1);}());

 

方式2、function外面加括号

(function(){alert(1);})();

 

方式3、function前面加运算符,常见的是!与void

!function(){alert(1);}(); void function(){alert(2);}();

 

错误方式1:

function(){ /* code */ }(); // SyntaxError: Unexpected token (

 

因为在解析器解析全局的function或者function内部function关键字的时候,默认是认为function声明,而不是function表达式,如果你不显示告诉编译器,它默认会声明成一个缺少名字的function,并且抛出一个语法错误信息,因为function声明需要一个名字。

错误方式2:

但是如果你在括弧()里传入一个表达式,将不会有异常抛出
// 但是foo函数依然不会执行

function foo(){ /* code */ }( 1 );

 

// 因为它完全等价于下面这个代码,一个function声明后面,又声明了一个毫无关系的表达式:

function foo(){ /* code */ }
( 1 );

 

二、立即执行函数的参数

1)可以给立即执行函数传递参数,例如

(function(who, where) {

 console.log("I am" + who + " come from" + where);

} ("Amy", "China"));

 

注:通常你不应该给立即执行函数传递太多的函数,因为它很快会成为一个负担——为了理解代码是如何工作的,你不得不经常上下滚动源代码。

2)有时我们会看到传入的参数是window, jQuery

为什么要传入jquery

jQuery 被应用在成千上万的 JavaScript 程序中,必须确保 jQuery 创建的变量不能和导入他的程序所使用的变量发生冲突。

为什么要传入window

通过传入 window 变量,使得 window 由全局变量变为局部变量,当在 jQuery 代码块中访问 window 时,不需要将作用域链回退到顶层作用域,这样可以更快的访问 window;这还不是关键所在,更重要的是,将 window 作为参数传入,可以在压缩代码时进行优化

 

 

 

 

js立即执行函数

原文:http://www.cnblogs.com/wangdan0915/p/7852608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!