当前位置:首页 > 日记 > 正文

javascript自执行函数

javascript自执行函数
function (window, $, undefined) { play=function(){  $("#demo").val("This is a demo."); } window.wbLogin = play;})(window, jQuery);

像上边这样的代码为什么要把window, jQuery对象传进去?

为什么要传入 jQuery?

通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个 JS 框架必须支持的功能,jQuery 被应用在成千上万的 JavaScript 程序中,必须确保 jQuery 创建的变量不能和导入他的程序所使用的变量发生冲突。

为什么要传入 window?

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

(function(a,b){})(window); // window 被优化为 a

为什么要传入 undefined?

在自调用匿名函数的作用域内,确保 undefined 是真的未定义。因为 undefined 能够被重写,赋予新的值。

一句话,使全局变量以参数形式变成自执行函数内部的局部变量。

至于为什么这么做,提高程序效率。为什么能提高效率,得从javascript的机制说起,所谓的scope chain作用域链,在当前作用域中如果没有该属性(局部变量)则向上一层作用域中寻找,一直到最上层,也就是window。也就是说全局变量和下级作用域都是window的一个属性,向下依此类推。

另外jQuery传入后将参数写成$可以保证在此函数内$为jquery而不是其他类似使用$符号的库。

undefined同理,由于没有传入第三个参数,自然就是undefined。由于javascript中undefined是一个变量,可以被改变,所以这样可以保证undefined判断时的准确性。有时判断时使用typeof xxx === 'undefined'也是因为这个原因。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

相关文章

react高阶组件经典应用之权限控制

react高阶组件经典应用之权限控制

权限控制,组件,高阶,详解,经典,前言所谓高级组件,即:接受一个组件作为参数,并且其返回值也为一个react组件而大家应该都知道,权限控制算是软件项目中的常用功能了。在网站中,权限控制一般分为两个维度:页面级别和页面元素级别。我们来说说页面元…

excel表格怎么进行排名excel表格进

excel表格怎么进行排名excel表格进

步骤,方法,基础操作,表格,高级,  Excel表格中排名次也是一种使用非常广泛的应用,排序大家都会,如果按分数排序那么名字也会颠倒,我们要保证行列不变的情况下,新增一列排名对需要排序的列进行排名。比如姓名不动得分也不动,我们在名次那列进行…

关于Vue.nextTick | 的正确使用方

关于Vue.nextTick | 的正确使用方

使用方法,正确,电脑软件,Vue,nextTick,本文主要给大家介绍了关于Vue.nextTick()的正确使用,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。什么是Vue.nextTick()官方文档解释如下:在下次 DOM 更新循环结束之后执行延迟回调。…

ES6新特性四:变量的解构赋值实例

ES6新特性四:变量的解构赋值实例

赋值,新特性,变量,实例,电脑软件,本文实例讲述了ES6新特性之变量的解构赋值。分享给大家供大家参考,具体如下:1. 数组的解构赋值//① 可以从数组中提取值,按照对应位置,对变量赋值var [a, b] = [1, 2]; //a = 1;b = 2//② 下面是一些使用嵌套数…

win8系统的word2013自动生成目录教

win8系统的word2013自动生成目录教

系统,教程,自动生成,目录,电脑软件,  win8现在使用的越来越普片,随着而来的很多问题也需要我们去解决,因此只有不断学习,不断进步了。那么下面就由小编给大家分享下win8系统下的word2013自动生成目录的技巧,希望能帮助到您。自动生成目录的步…

js实现不提示直接关闭网页窗口

js实现不提示直接关闭网页窗口

提示,网页,窗口,电脑软件,js,项目需要,用户在关闭当前页面时,可以点击页面中的按钮直接关闭网页窗口,但是不需要提示用户是否关闭窗口。在网上找了下,使用添加一句如下代码即可:window.open(‘','_self');function closePageForm(){ window.…

WPS演示如何使用荧光笔标记功能

WPS演示如何使用荧光笔标记功能

演示,标记,功能,如何使用,电脑软件,  在演讲过程中为了便于说明重点都会进行标记注释,熟练使用WPS演示中的荧光笔可以帮助演讲者更好的完成演讲过程。以下是小编为您带来的关于WPS演示使用荧光笔标记功能,希望对您有所帮助。WPS演示使用荧…

excel2013如何使用选择性粘贴功能

excel2013如何使用选择性粘贴功能

方法,选择性,功能,如何使用,电脑软件,  Excel2013提供了使用方便且功能强大的选择性粘贴功能,除了普通的粘贴外,还提供多种不同用途的粘贴方式。下面小编教你怎么在excel2013中使用选择性粘贴功能的方法,欢迎大家来到学习。excel2013中使用…

JavaScript 数据类型详解

JavaScript 数据类型详解

数据类型,详解,电脑软件,JavaScript,一,数据类型以下内容基于ES5(ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型。)JavaScript是一种弱类型动态语言,定义变量时无需指定类型,看似简单,但背后有繁琐…

怎么更改Excel2007插入图形的线条

怎么更改Excel2007插入图形的线条

图形,线条,颜色,电脑软件,  作为一个Excel菜鸟,就应该多学点Excel表格的操作方法。比如怎么修改插入图形的线条颜色,其实这个操作不是很难。以下是小编为您带来的关于更改Excel2007插入图形的线条颜色,希望对您有所帮助。更改Excel2007插入…

为输入框加入数字js校验代码分享

为输入框加入数字js校验代码分享

校验,数字,输入框,代码分享,电脑软件,js限制只能数字输入,并且在把输入的“非法字符”清除掉之后将焦点停留在输入非法字符的位置,参考如下:html部分:<input value="" type="text" onkeyup="javascript:RepNumber(this)">JavaScript部分:…

怎么在WPS表格中绘制xy散点图WPS表

怎么在WPS表格中绘制xy散点图WPS表

绘制,步骤,方法,表格,电脑软件,  排列在工作表的列或行中的数据可以绘制到XY散点图中。散点图显示若干数据系列中各数值之间的关系,或者将两组数绘制为xy坐标的一个系列。下面小编就教你怎么在WPS表格中绘制xy散点图。WPS表格中绘制xy散点…