閉包_定時器_BOM

題目1: 下面的代碼輸出多少连霉?修改代碼讓 fnArr[i]() 輸出 i挟纱。使用 兩種以上的方法

var fnArr = [];
for (var i = 0; i < 10; i ++) {
    fnArr[i] =  function(){
        return i;
    };
}
console.log( fnArr[3]() );  // 10

思路:使變量i在循環(huán)過程中雕凹,創(chuàng)造一個局部作用域保存i的值樟结。
方法1:

var fnArr = [];
for (var i = 0; i < 10; i ++) {
    fnArr[i] =  (function (i) {
        return function () {
            return i;
        };
    })(i);
}
console.log( fnArr[3]() );  // 3

方法2:

var fnArr = [];
for (var i = 0; i < 10; i ++) {
    (function (i) {
        fnArr[i] = function () {
            return i;
        };
    })(i);
}
console.log( fnArr[3]() );  // 3

方法3:

var fnArr = [];
for (let i = 0; i < 10; i ++) {
    fnArr[i] =  function () {
        return i;
    }
}
console.log( fnArr[3]() );  // 3

題目2: 封裝一個汽車對象琼开,可以通過如下方式獲取汽車狀態(tài)

var Car = (function(){
    var speed = 0;
    function setSpeed(s){
        speed = s
    }
    function getSpeed() {
        return speed;
    }
    function accelerate() {
        speed +=10;
    }
    function decelerate() {
        speed = speed >= 10 ? speed - 10 : 0;
    }
    function getStatus() {
        return speed > 0 ? 'running' : 'stop';
    }
    return {
        setSpeed: setSpeed,
        getSpeed: getSpeed,
        accelerate: accelerate,
        decelerate: decelerate,
        getStatus: getStatus
    };
})()
Car.setSpeed(30);
console.log(Car.getSpeed()); //30
Car.accelerate();
console.log(Car.getSpeed()); //40;
Car.decelerate();
Car.decelerate();
console.log(Car.getSpeed()); //20
console.log(Car.getStatus()); // 'running';
Car.decelerate();
Car.decelerate();
console.log(Car.getStatus());  //'stop';
//Car.speed;  //error

題目3:下面這段代碼輸出結(jié)果是? 為什么?

var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);
}, 0);
var a ;
console.log(a);
a = 3;
console.log(a);
//依次輸出 1,3,2易结,因為延遲調(diào)用函數(shù)會在0秒后被放在事件隊列的最后端。

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

var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);
// 遲調(diào)用函數(shù)會在0秒后被放在事件執(zhí)行隊列的最后端柜候,
//在此之前flag一直為true搞动,因此進入while循環(huán)中不能出來。

題目5: 下面這段代碼輸出渣刷?如何輸出delayer: 0, delayer:1...(使用閉包來實現(xiàn))

for(var i=0;i<5;i++){
    setTimeout(function(){
         console.log('delayer:' + i );
    }, 0);
    console.log(i);
}
// 代碼會依次輸出 0 1 2 3 4 ,delayer: 5 輸出5次鹦肿,
// 因為延遲函數(shù)中訪問的i是全局作用域中的i,此時i值為5辅柴。
for(var i=0;i<5;i++){
    setTimeout((function (i) {
        return function(){
            console.log('delayer:' + i );
        };
    })(i), 0);
    console.log(i);
}

題目6: 如何獲取元素的真實寬高

js獲取元素寬高

題目7: URL 如何編碼解碼箩溃?為什么要編碼?

  • URL的編碼/解碼方法
    JavaScript提供四個URL的編碼/解碼方法碌嘀。

  • decodeURI()

  • decodeURIComponent()

  • encodeURI()

  • encodeURIComponent()

  • 區(qū)別:
    encodeURI方法不會對下列字符編碼:

  • ASCII字母

  • 數(shù)字

  • ~!@#$&*()=:/,;?+'

encodeURIComponent方法不會對下列字符編碼

  • ASCII字母
  • 數(shù)字
  • ~!*()'

所以encodeURIComponent比encodeURI編碼的范圍更大涣旨。如果你需要編碼整個URL,然后需要使用這個URL筏餐,那么用encodeURI; 當你需要編碼URL中的參數(shù)的時候开泽,那么encodeURIComponent是最好方法。URI的編碼格式采用的是ASCII碼魁瞪,而不是Unicode穆律,這也就是說你不能在URI中包含任何非ASCII字符惠呼,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支持的字符集不同的情況下峦耘,中文可能會造成問題剔蹋。(兩個方法把空格編碼為"%20")

題目8: 補全如下函數(shù),判斷用戶的瀏覽器類型

function isAndroid(){
    return /Android/.test(window.navigator.userAgent);
}
function isIphone(){
    return /iphone/i.test(window.navigator.userAgent);
}
function isIpad(){
    return /ipad/i.test(window.navigator.userAgent);
}
function isIOS(){
    return /(iphone)|(ipad)/i.test(window.navigator.userAgent);
}

1
1
1
1
1
1
1
1
1
1
1
1
1
1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辅髓,一起剝皮案震驚了整個濱河市泣崩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洛口,老刑警劉巖矫付,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異第焰,居然都是意外死亡买优,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門挺举,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杀赢,“玉大人,你說我怎么就攤上這事湘纵≈蓿” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵梧喷,是天一觀的道長砌左。 經(jīng)常有香客問我,道長伤柄,這世上最難降的妖魔是什么绊困? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任文搂,我火速辦了婚禮适刀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘煤蹭。我一直安慰自己笔喉,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布硝皂。 她就那樣靜靜地躺著常挚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稽物。 梳的紋絲不亂的頭發(fā)上奄毡,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音贝或,去河邊找鬼吼过。 笑死锐秦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盗忱。 我是一名探鬼主播酱床,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趟佃!你這毒婦竟也來了扇谣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闲昭,失蹤者是張志新(化名)和其女友劉穎罐寨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體序矩,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡衩茸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮泞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楞慈。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啃擦,靈堂內(nèi)的尸體忽然破棺而出囊蓝,到底是詐尸還是另有隱情,我是刑警寧澤令蛉,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布聚霜,位于F島的核電站,受9級特大地震影響珠叔,放射性物質(zhì)發(fā)生泄漏蝎宇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一祷安、第九天 我趴在偏房一處隱蔽的房頂上張望姥芥。 院中可真熱鬧,春花似錦汇鞭、人聲如沸凉唐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽台囱。三九已至,卻和暖如春读整,著一層夾襖步出監(jiān)牢的瞬間簿训,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留强品,地道東北人豺总。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像择懂,于是被迫代替她去往敵國和親喻喳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 題目1: 下面的代碼輸出多少困曙?修改代碼讓 fnArr[i]() 輸出 i表伦。使用 兩種以上的方法 var fnArr...
    saintkl閱讀 353評論 0 0
  • 題目1: 下面的代碼輸出多少?修改代碼讓 fnArri 輸出 i慷丽。使用 兩種以上的方法 方法一: 方法二: 方法三...
    南山碼農(nóng)閱讀 278評論 0 1
  • 題目1: 下面的代碼輸出多少蹦哼?修改代碼讓 fnArr[i]() 輸出 i。使用 兩種以上的方法 題目2: 封裝一個...
    Taaaaaaaurus閱讀 342評論 0 0
  • 題目1: 下面的代碼輸出多少要糊?修改代碼讓 fnArri 輸出 i纲熏。使用 兩種以上的方法 輸出10 修改為1var ...
    我是一只_魚閱讀 206評論 0 1
  • 1: 下面的代碼輸出多少?修改代碼讓 fnArr[i]() 輸出 i锄俄。使用 兩種以上的方法 方法1:聲明個函數(shù)局劲,創(chuàng)...
    曉風殘月1994閱讀 379評論 0 0