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

鍍金池/ 問答/HTML/ 這兩種函數(shù)的定義方式,有什么區(qū)別?哪種會好一些?

這兩種函數(shù)的定義方式,有什么區(qū)別?哪種會好一些?

//實例一
var test1 = function(param){
    //do something
};
//實例一
var test2 = function(){
    function test2(param){
        //do something
    }
    return test2;
}();
回答
編輯回答
護她命

2相對于1多了一個內(nèi)部作用域
純粹返回一個函數(shù) 1好
返回之前還要做復(fù)雜的操作 也不想污染全局作用域 2好

var test2 = function(){
    var a = 10;
    
    function test3(n){
      return n+1;
    }
    
    function test2(b){
        return a+test3(b);
    }
    return test2;
}();
2017年9月11日 12:16
編輯回答
有點壞

舉個例子把

a(1)   // 可以執(zhí)行
function a (i){ ... }
a(2)   // 可以執(zhí)行

b(1)  //報錯
var b = function (i){ ... }
b(2)  // 可以執(zhí)行 

//我跑偏了...

 你這倆函數(shù)其實就是一個是全局作用域, 一個是多套了層作用域的關(guān)系,避免了污染作用域的問題

2017年6月29日 08:21
編輯回答
近義詞

如果要問哪個好,那只能說第一個。因為示例2是完全沒有意義的一個例子,你可能想對比的是

//實例二
function(){
    function test2(param){
        //do something
    }
    test2()
}();

這樣可以避免污染作用域內(nèi)同名的函數(shù)。
而如果你是對比我說的代碼,那僅取決于你需不需要要避免,如果需要則使用示例2(比如自己寫的插件給別人用避免污染),如果不需要(都是你自己可控的代碼)則使用示例1.

2018年6月26日 23:37
編輯回答
傻叼

說簡單一點就是 test2 多了一個只有它能訪問的作用域;

2017年7月15日 12:37