在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 請教如下這段代碼的參數(shù)含義

請教如下這段代碼的參數(shù)含義

github上看到的代碼:

(function (window) {

    // declare
    var myApp = function () {
        return;
    };

    // your sdk init function
    myApp.prototype.init = function () {
        // ...
    };

    // define your namespace myApp
    window.myApp = new myApp();

})(window, undefined);

請問第一個括號里的(window)、和末尾的(window, undefined)分別有什么含義?一般有什么作用呢?

回答
編輯回答
單眼皮

(function (window) {})(window, undefined); 您可以把它看成()(),而()()就是我們常見的匿名函數(shù)自執(zhí)行的寫法。
比如:

(function() {  
   console.log('Hello World!');  
})();  

上面的代碼,當頁面加載時,就會自動打印出:Hello World!

為什么會這么寫?
匿名函數(shù)自執(zhí)行(function() {})()主要為了避免變量的全局污染;該寫法大多用于開發(fā)插件。比如jquery插件。。。

而末尾的參數(shù)為實參,在這里接受window對象(瀏覽器環(huán)境),而function后面的圓括號中的window為局部變量,不是全局的window對象,這樣寫可以提高js性能,減少作用域鏈查詢時間。(如果在函數(shù)體內(nèi)多次使用到window對象,那么把window對象當著實參穿進去,是十分必要的;如果函數(shù)內(nèi)部不需要,那么就無需傳遞該參數(shù)。);
undefined的答案我修改下,之前可能有點錯誤,看來綠皮書又要重新看了

clipboard.png

參考鏈接:https://segmentfault.com/q/10...

2017年11月19日 18:41
編輯回答
詆毀你

window 的意思比較好理解,為了把 myApp 綁定到全局對象上。

2018年3月18日 01:33
編輯回答
妖妖

function A(a){ ... }
A(window, undefined)

這樣寫的話,會不會比較好理解呢?

2017年9月11日 02:57
編輯回答
荒城

這是一個自執(zhí)行函數(shù),第一個括號里的window是形參,末尾的兩個是實參。window本身就是javascript中范圍最大的一個對象,傳入這個參數(shù)也是沒有必要的

2018年8月28日 23:28
編輯回答
醉淸風

首先,你先去掉傳入的參數(shù),(function() { ... })(),你發(fā)現(xiàn)這就是一個立即執(zhí)行函數(shù),它的作用是什么,可以避免外界變量的影響,如果要使用,外界的變量怎么辦,(function($) { ... })(jQuery),這種形式想必你不陌生吧。另外,我們經(jīng)常這樣使用(function (window, document, undefined) { ... })(window, document),因為在ES3中undefined是變量可以被定義,而在嚴格模式下會報錯,所以將undefined當成一個局部變量使用。

2018年7月4日 09:51