4

閉包理解

閉包的兩種應用情況:

  1. 函數作為返回值
function fn(){
         var max = 10;
         return function bar(x){
              if(x > max){
                   document.write(x);
              }
         };
} 
var f1 = fn();
f1(15);

bar函數作為返回值,賦值給f1變量
  1. 函數作為參數被傳遞
var max = 10;
fn = function(x){
              if(x > max){
                   document.write(x)
              }
       };
(function(f){
         var max = 100;
         f(15);
})(fn);

fn函數作為一個參數被傳遞進入另一個函數,賦值給f參數.執(zhí)行f(15)時,max變量的取值是10,而不是100

瀏覽器的預處理

document.write(a);//默認值undefined;
var a = 10;

等價于

var a;
document.write(a);
a = 10;
document.write(f1);//function f1(){}
function f1(){}//函數聲明

document.write(f2);//undefined
var f2 = function(){};//函數表達式

小例子

function a(){
        var n = 1;
        nAdd = function(){
            n += 1;
        }
        function b(){
        alert(n);
    }
        return b;
    }
    //var result = a();
    //result();
    //nAdd();
    //result();
    a()();

......

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容