分析(function(window, undefined) {})(window)
阿新 • • 發佈:2018-07-30
{} alert 框架 比較 con odi js框架 div 屬性
有的時候,我們會在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 );
分析(function(window, undefined) {})(window)