任務(wù)20 閉包潜圃、定時(shí)器-代碼題

1.下面的代碼輸出多少箱吕?修改代碼讓 fnArr[i] () 輸出 i芥驳。使用兩種以上的方法

  //方法1,創(chuàng)建立即執(zhí)行函數(shù)
var fnArr=[];
for(var i=0;i<10;i++){
    fnArr[i]=(function(n){
        return function(){
            return n
        }

    })(i)
}
console.log( fnArr[3]() )//輸出3茬高,因?yàn)槊恳粋€(gè)都有獨(dú)立空間
//方法2兆旬,立即執(zhí)行函數(shù)賦值給變量,
var fnArr=[];
for(var i=0;i<10;i++){
    fnArr[i]=(function(){
        var n=i;
        return function(){
            return n
        }
    })();
};
console.log(fnArr[3]())//輸出3

2.使用閉包封裝一個(gè)汽車(chē)對(duì)象怎栽,可以通過(guò)如下方式獲取汽車(chē)狀態(tài)

var Car = (function (){
var speed=0;
function setSpeed(n){
    return speed=n
}
function getSpeed(){
    return speed
}
function accelerate(){
    speed+=10
}
function decelerate(){
    speed-=10
}
function getStatus(){
    if (speed>0) {
        return "running";
    }else{
        return "stop"
    }
}
return{
    setSpeed:setSpeed,
    getSpeed:getSpeed,
    accelerate:accelerate,
    decelerate:decelerate,
    getStatus:getStatus
  }
})();

Car.setSpeed(30);
Car.getSpeed(); //30
Car.accelerate();
Car.getSpeed(); //40;
Car.decelerate();
Car.decelerate();
Car.getSpeed(); //20
Car.getStatus(); // 'running';
Car.decelerate(); 
Car.decelerate();
Car.getStatus();  //'stop';
//Car.speed;  //error

3.寫(xiě)一個(gè)函數(shù)使用setTimeout模擬setInterval的功能

var m=0;
    function setIntv(){
    setTimeout(function(){
        console.log(m++);
        setIntv();
    },1000)
}
setIntv();

4.寫(xiě)一個(gè)函數(shù)丽猬,計(jì)算setTimeout平均[備注:新加]最小時(shí)間粒度

function getMini(){
    var i=0;
    var start=Date.now();
    var time=setTimeout(function(){
        i++;
    
    if (i===1000) {
        var end=Date.now();
        clearTimeout(time);
        console.log((end-start)/i);
    }
    time=setTimeout(arguments.callee,1)
  },0)
}
  getMini();//4.083ms

5.下面這段代碼輸出結(jié)果是? 為什么?

    var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);//2
    }, 0);
    var a ;
    console.log(a);//1
    a = 3;
    console.log(a);//3
      //輸出的結(jié)果為1,3,2。這是因?yàn)閟etTimeout的延遲執(zhí)行的結(jié)果熏瞄,即使setTimeout 0也會(huì)把當(dāng)前的函數(shù)放在最后執(zhí)行脚祟,因此最后輸出2.

6.下面這段代碼輸出結(jié)果是? 為什么?

var flag = true;
setTimeout(function(){
flag = false;
},0)
while(flag){}
console.log(flag);

沒(méi)有任何輸出,由于setTimeout 0 的延遲執(zhí)行巴刻,即把它放在最后執(zhí)行,那么不會(huì)產(chǎn)生任何影響蛉签,因?yàn)橄葓?zhí)行的while循環(huán)里的flag一直為true,一直執(zhí)行空語(yǔ)句胡陪,產(chǎn)生死循環(huán),無(wú)法跳出或結(jié)束循環(huán)碍舍,因此沒(méi)有輸出
7.下面這段代碼輸出柠座?如何輸出delayer: 0, delayer:1…(使用閉包來(lái)實(shí)現(xiàn))

for(var i=0;i<5;i++){
    setTimeout(function(){
     console.log('delayer:' + i );
    }, 0);
  console.log(i);
}
  //實(shí)現(xiàn)方法
  for(var i=0;i<5;i++){
(function(n){
      setTimeout(function(){
                 console.log('delayer:' + n );
            }, 0);
    })(i);
     console.log(i);
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市片橡,隨后出現(xiàn)的幾起案子妈经,更是在濱河造成了極大的恐慌,老刑警劉巖捧书,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吹泡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡经瓷,警方通過(guò)查閱死者的電腦和手機(jī)爆哑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舆吮,“玉大人揭朝,你說(shuō)我怎么就攤上這事队贱。” “怎么了潭袱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵柱嫌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我屯换,道長(zhǎng)编丘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任趟径,我火速辦了婚禮瘪吏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜗巧。我一直安慰自己掌眠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布幕屹。 她就那樣靜靜地躺著蓝丙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望拖。 梳的紋絲不亂的頭發(fā)上渺尘,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音说敏,去河邊找鬼鸥跟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盔沫,可吹牛的內(nèi)容都是我干的医咨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼架诞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拟淮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谴忧,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤很泊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沾谓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體委造,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年均驶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了争涌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辣恋,死狀恐怖亮垫,靈堂內(nèi)的尸體忽然破棺而出模软,到底是詐尸還是另有隱情,我是刑警寧澤饮潦,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布燃异,位于F島的核電站,受9級(jí)特大地震影響继蜡,放射性物質(zhì)發(fā)生泄漏回俐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一稀并、第九天 我趴在偏房一處隱蔽的房頂上張望仅颇。 院中可真熱鬧,春花似錦碘举、人聲如沸忘瓦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耕皮。三九已至,卻和暖如春蝙场,著一層夾襖步出監(jiān)牢的瞬間凌停,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工售滤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罚拟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓完箩,卻偏偏與公主長(zhǎng)得像赐俗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗜憔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 問(wèn)題 一吉捶、什么是閉包? 有什么作用? 閉包閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)皆尔。在javascript中呐舔,只有函...
    婷樓沐熙閱讀 589評(píng)論 0 0
  • 問(wèn)題 一珊拼、什么是閉包? 有什么作用? 1.什么是閉包①JavaScript高級(jí)程序設(shè)計(jì)第三版定義閉包是指有權(quán)訪問(wèn)另...
    鴻鵠飛天閱讀 470評(píng)論 0 0
  • 什么是閉包? 有什么作用閉包:函數(shù)對(duì)象可以通過(guò)作用域鏈相互關(guān)聯(lián)仅胞,函數(shù)體內(nèi)部的變量可以保存在函數(shù)的作用域內(nèi)。 上述代...
    coolheadedY閱讀 731評(píng)論 0 0
  • 1.什么是閉包? 有什么作用 定義:閉包就是嵌套在函數(shù)里面的內(nèi)部函數(shù),并且該內(nèi)部函數(shù)可以訪問(wèn)外部函數(shù)中聲明的所有局...
    饑人谷區(qū)子銘閱讀 948評(píng)論 0 2
  • 問(wèn)答 什么是閉包? 有什么作用答:“官方”的解釋是:閉包是一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一...
    饑人谷_桶飯閱讀 222評(píng)論 0 0