分析(function(window, undefined) {})(window)
程序员文章站
2022-07-01 13:05:56
有的时候,我们会在JS框架中看到这行 (function(window, undefined) {})(window) ,它是做什么用的,我们来分析下它 首先这就是一个匿名函数,立即执行它 为这么要这样写,有什么作用 对js进行压缩的时候 均可以替换成其他简写字符,从而减少文件大小,因为他们被视为局 ......
有的时候,我们会在JS框架中看到这行
(function(window, undefined) {})(window) ,它是做什么用的,我们来分析下它
首先这就是一个匿名函数,立即执行它
(function(window, undefined) { // coding })(window)
为这么要这样写,有什么作用
对js进行压缩的时候
均可以替换成其他简写字符,从而减少文件大小,因为他们被视为局部变量使用。
(function(w, u) { // coding })(w)
window: 表示 BOM 浏览器对象模型中的 window 对象
undefined:对于undefined,因为他不是javascript关键字,容易遭到污染。
举个例子:
function foo() { var undefined = 10; alert(undefined); } foo(); // 打印10
再举个例子:
var undefined = 10; function foo() { alert(undefined); } foo(); // undefined
为什么又变成undefined了呢 ^(0_0)^
再来一个
var undefined = 10; function foo() { alert(window.undefined); alert(undefined); } foo(); // undefined
window.undefined和undefined·为什么要变成了undefined了呢?<-_<-
undefined是window的一个属性,是不可写的,所以你在全局作用域改变window这个属性,根本写不进.
var fun = function (){ var undefined = 2; console.log(undefined); //2 } var undefined = 1;
console.log(undefined); //undefined fun();
这样就能看的比较直观的了解undefined了
当然从随着浏览器的不断升级,浏览器API不断改变从 jquery2.0.3 2013-07-03 13:30 这一版之后,可以发现不再使用
(function(window, undefined) {})(window)
经过3个测试beta版
逐渐改成了
(function( global, factory ) {
}(this,function(window){}));
这边(this,function(window){})
但有可能导致一个问题,通过this,window可能没有被定义
所以让typeof 一下window。
(typeof window !== "undefined" ? window : this, function( window, noGlobal );
推荐阅读
-
一道js代码填空题的解 window.alert = function(){};____;alert(1);
-
翻译:window function(已提交到MariaDB官方手册)
-
window.location.reload 刷新使用分析(去对话框)
-
$(document).ready(function(){})与window.load
-
JS 关于(function( window, undefined ) {})(window)写法的理解
-
PHP下ajax跨域的解决方案之window.name实例分析
-
javascript匿名函数自执行 (function(window,document,undefined){})(window,document);
-
分析(function(window, undefined) {})(window)
-
JS学习笔记:JS 的function( window, undefined ) {}(window)写法
-
window系统的Rsync同步实战分析第1/2页