JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理]
(function( window, undefined ) {})(window);
这个,为什么要将window和undefined作为参数传给它?
(function( $, undefined ) {})(jQuery); 同理
因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined。
还有,不要用window.undefined传递给形参,有可能window.undefined被其他人修改了,最好就是甚么都不传,形参的undefined就是真正的undefined了。
var undefined = 8;
(function( window ) {
alert(window.undefined); // 8
alert(undefined); // 8
})(window);
与
var undefined = 8;
(function( window, undefined ) {
alert(window.undefined); // 8
alert(undefined); // 此处undefined参数为局部的名称为undefined变量,值为undefined
})(window);
区分上述两种方式:第一种每个语句都要去找一次window。第二种将window作为参数传递过去,是的不要每个语句都去找window,应该是提高了效率。
所以后者,就算外面的人把 undefined 定义了,里面的 undefined 依然不受影响。大概是为了最大程度防止外界的变量定义对所做封装的内部造成影响吧。
//方式一
(function(undefined ) {
window.property1 = ……;
window.property2 = ……;
……
})();
//方式二
(function( window, undefined ) {
... // code goes here
})(window);
//方式三
(function(undefined ) {
var tmp = window;
tmp.property1 = ……;
tmp.property2 = ……;
……
})();
方式一的效率明显最低,方式二和方式三应该差不多。将window作为参数传递进去就可以让代码里面的语句可以直接用参数中的window,而不用再去找最外层的对象。假如要在函数中为window再设置
100000个属性,用参数传递过去只需要找一次最外层对象。不用参数传递,用到window的语句都要去找一次最外层对象。
分享到:
相关推荐
对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { var str = ""; ...
javascript 中(function{})这种写法什么意思?.docx
S Function的写法,一个很详细的介绍S函数资料!
ODBC解决Call to undefined function odbc_connect
This is a `window.showModalDialog()` shim using a modal HTML5 `<dialog>` element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the *Enable Experimental JavaScript* flag ...
理解JavascriptFunction与Object
undefined在 JavaScript 中,假设我们想判断一个是否是undefined,那么我们通常会这样写: if(a === undefined){//code} 但是,JavaScript 中的undefined并不可靠,我们试着写这样一个函数: function test(a) {...
1,引入二维码解析的js插件llqrcode.js 2,解析的图片,这里采取的是上传图片解析(可以采用扫一扫输出的图片解析) //获取图片路径 let getObjectURL = function(file){ let url = null ; if (window....
php中连接mysql时出现Fatal error Call to undefined function mysql_connect() 解决方法
php也需要配置环境变量 解决Fatal error Call to undefined function curl_init()
复制 php_sockets.dll 到ext目录 修改php.ini: extension=php_sockets.dll php4ts.dll php5ts.dll php_mime_magic.dll复制到C:\winnt\system32文件夹。 服务器
本文实例分析了javascript关于open.window子页面执行完成后刷新父页面的方法。分享给大家供大家参考。具体分析如下: 主页面: <input id=btnAdd type=button onclick=openWin(); value=添加 /> 在js中有如下...
function fun(x,y){ } //写成这样就可以声明一个函数 以我的理解他就是以对象的形式来传入参数,通过对象的各项属性值(引用类型的值),来作为我的实际参数, 例如我有以下做法: function fun
针对window.showmodaldialog弹出窗体无刷新的详细使用
1. Spectral Leakage and Window Function 2. How to use Multi-Instrument to evaluate a Window Function 3. Window Functions 4. Summary of Parameters of Window Functions
window.showModalDialog的基本用法
深入理解JavaScript系列(49):Function模式(上篇) 深入理解JavaScript系列(50):Function模式(下篇) 深入理解JavaScript系列(结局篇)">深入理解JavaScript系列(1):编写高质量JavaScript代码的基本...
[removed] var timer var winOpen function IfWindowClosed() { if (winOpen.closed == true) { document.fm_Info.txtValue.value=”child closed” window.clearInterval(timer) } } [removed] <input type=b
;(function($){$.extend($.fn… ...3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能。
} typeof 返回的是字符串,有六种可能:”number”、”string”、”boolean”、”object”、”function”、”undefined” 3.4 数据类型 ECMAScript中有 5种简单数据类型(也称为基本数据类型):Undefined、Null、...