第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

總結(jié)一些函數(shù)閉包的練習(xí)題

標(biāo)簽:
JavaScript

今天闲着也没什么事情就又看了几个闭包函数的练习题,什么是闭包呢,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
例1:

function f() {
    var num = 1;
    function g() {
        console.log(num);
    }
    num++;
    g();   //2
}

这是一个简单的闭包函数,输出为2
例2:

(function() {
    var m = 0;
    function getM() {
        return m;
    }
    function seta(val) {
        m = val;
    }
    window.g = getM; 
    window.f = seta;
})();
f(100);
console.info(g());    //100

首先在匿名函数内部定义了一个局部m变量,然后调用全部函数f(100)把m的值赋为100,然后调用g()函数,返回100.
例3:

function a() {
    var i = 0;
    function b() {
        alert(++i);
    }
    return b;
}
var c = a();
c(); //1
c(); //2 

上面在函数a内部定义了一个局部变量i的值是1,声明一个变量c并把a函数的返回值赋给c,a函数的返回值是b函数,所以c算是b函数的引用吧;第一次调用c函数,执行alert(++i);先自加后弹框,也就是1;在第二次调用弹出的是2,这是为什么呢,这是因为函数在使用完毕后i变量还在栈内存中并没有销毁,所以在第二次调用自加前I的值是1,和第一次调用的顺序一样,先自加后弹框,弹出2
注意:
因为闭包函数使用完毕后变量i还在内存中没有销毁,再次调用自加弹出的是2,所以闭包函数在使用后如果不再使用一定要记得销毁变量,否则会拉低页面的性能,在ie中会造成内存泄漏
例4:

function f() {
    var count = 0;
    return function() {
        conut++;
        console.info(count);
    }
}
var t1 = f();
t1(); //1
t1(); //2
t1(); //3 

这个例子和例3大致上一样,只不过这个函数的内部函数是以返回值的形式,而上个函数的内部函数是直接定义函数然后再返回内部函数
例5:

var add = function(x) {
    var sum = 1;
    var tmp = function(x) {
        sum = sum + x;
        return tmp;
    }
    tmp.toString = function() {
        return sum;
    }
    return tmp;
    }
alert(add(1)(2)(3))    // 6

这个调用的比较复杂一点,不过也是很好理解的,add(1)(2)(3),第一次调用传入了参数1,没有使用,此时sum的值是1;然后返回tmp函数,第二次调用tmp函数传入 2,sum的值是1+2=3;第三次重复调用tmp函数传入3,sum的值是3+3=6;隐式自动调用tmp的toString()弹出6,add()()()这种调用形式返回值和第一个括号内传的参数无关,第一个括号内传的参数并没有使用,只和第二三个括号传的参数有关

點(diǎn)擊查看更多內(nèi)容
9人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消