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

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

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

2相對(duì)于1多了一個(gè)內(nèi)部作用域
純粹返回一個(gè)函數(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
編輯回答
有點(diǎn)壞

舉個(gè)例子把

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

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

//我跑偏了...

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

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

如果要問哪個(gè)好,那只能說第一個(gè)。因?yàn)槭纠?是完全沒有意義的一個(gè)例子,你可能想對(duì)比的是

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

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

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

說簡單一點(diǎn)就是 test2 多了一個(gè)只有它能訪問的作用域;

2017年7月15日 12:37