成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS核心知識點梳理——上下文、作用域、閉包、this(下)

XUI / 3478人閱讀

摘要:引言前面兩篇文章介紹了上下文作用域閉包。這里我精心挑選了一些特別經(jīng)典的面試題不定期更新,跪求收藏。閉包組這類題目還是挺簡單的,我總結(jié)了幾個要注意的地方有沒有閉包如果有閉包,看創(chuàng)建了幾個閉包。不要在腦子里想,每步的結(jié)果用紙和筆演算下

引言

前面兩篇文章介紹了上下文、作用域、閉包、this。這里我精心挑選了一些特別經(jīng)典的面試題(不定期更新,跪求收藏)。相信通過這些題目能讓你完全通關(guān)JS三座大三中的之一。

閉包組:

這類題目還是挺簡單的,我總結(jié)了幾個要注意的地方
1.有沒有閉包
2.如果有閉包,看創(chuàng)建了幾個閉包。換句話說,是在一個閉包內(nèi)直接操作還是操作完一個閉包,再創(chuàng)建一個新的閉包繼續(xù)操作
3.注意數(shù)據(jù)的歸屬,即數(shù)據(jù)存放在哪個上下文環(huán)境

1、
var n=0;
    function a(){
        var n=10;
        function b(){
            n++;
            console.log(n);
        }
        b();
        return b;
    }
    var c=a();
    c();
    console.log(n);
//11 12 0
2、
var a=9; 
function fn(){ 
    a=0;       //如果這里是var a = 0 ,答案是多少
    return function(b){ 
        return b+a++; 
    }    
}
var f=fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);

// 5 5 6 2
// 如果是var a = 5 5 6 9
3、
var ary=[1,2,3,4];
function fn(ary){
    ary[0]=0;    
    ary=[0];    
    ary[0]=100;    
    return ary; 
}
var res=fn(ary);    
console.log(ary);    
console.log(res);
// [0,2,3,4] [100]
4、
function fn(i) {
    return function (n) {
        console.log(n + (i++));
    }
}
var f = fn(10);
f(20);
fn(20)(40);
fn(30)(50);
f(30);

//30 60 80 41
5、
var i = 10;
function fn() {
    return function (n) {
        console.log(n + (++i));
    }
}
var f = fn();
f(20);
fn()(20);
fn()(30);
f(30);
//31 32 43 44
6、以下代碼的功能是要實現(xiàn)為5個input按鈕循環(huán)綁定click點擊事件,綁定完成后點擊1、2、3、4、5五個按鈕分別會alert輸出0、1、2、3、4五個字符。(騰訊)

請問如下代碼是否能實現(xiàn)?
如果不能實現(xiàn)那么現(xiàn)在的效果是什么樣的?
應該做怎樣的修改才能達到我們想要的效果,并說明原理?

1.不能實現(xiàn)
2.因為js沒有塊作用域,所以公用的外層作用域的i,當點擊觸發(fā)函數(shù)的時候 ,應當注意外層的i是5了,所以全部打印5沒毛病
3.
解決思路1:沒有塊作用域我就用es6的let形成塊作用域

 for(let i=0;i

解決思路2:每次綁定的時候i其實都是正確的,我能不能用另外一個變量將每次的i存起來呢?

//這樣行嗎?
for(var i=0;i

那么我應該讓回調(diào)函數(shù)定義的時候里面的代碼能立即執(zhí)行,接收到參數(shù)0,1,2,3,4

for(var i=0;i
for(var i=0;i

還能怎么優(yōu)化?既然i能傳進去,我為啥還要而外用個變量保存呢?

for(var i=0;i
this組:

這類題目嚴格按上篇文章的分析思路,不復雜,就是麻煩一點。不要在腦子里想,每步的結(jié)果用紙和筆演算下

1、
var num = 10;
var obj = {num: 20};
obj.fn = (function (num) {
    this.num = num * 3;
    num++;
    return function (n) {
        this.num += n;
        num++;
        console.log(num);
    }
})(obj.num);
var fn = obj.fn;
fn(5);
obj.fn(10);
console.log(num, obj.num);
//22 23 65 30

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109645.html

相關(guān)文章

  • JS核心識點梳理——作用、閉包this(中)

    摘要:引言滿滿的干貨,面試必系列,參考大量資料,并集合自己的理解以及相關(guān)的面試題,對核心知識點中的作用域閉包上下文進行了梳理。本篇重點介紹閉包和。所以,有另一種說法認為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實體。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 滿滿的干貨,面試必bei系列,參考大量資料,并集...

    rottengeek 評論0 收藏0
  • JS核心識點梳理——、作用閉包、this(上)

    摘要:引言滿滿的干貨,面試必系列,參考大量資料,并集合自己的理解以及相關(guān)的面試題,對核心知識點中的作用域閉包上下文進行了梳理。如果在小區(qū)這個作用域找到了張老師,我就會在張老師的輔導下學鋼琴我張老師房間鋼琴構(gòu)成了學琴的上下文環(huán)境。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 滿滿的干貨,面試必bei系列,參考大...

    Andrman 評論0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件開發(fā)前端掘金作者原文地址譯者插件是為應用添加全局功能的一種強大而且簡單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實現(xiàn)文件分片斷點續(xù)傳。 Vue.js 插件開發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應用添加全局功能的一種強大而且簡單的方式。插....

    izhuhaodev 評論0 收藏0
  • 好程序員Web前端培訓入門之JS基礎(chǔ)知識梳理匯總

    摘要:好程序員前端培訓入門之基礎(chǔ)知識梳理匯總,前端工程師是當前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯。作用域鏈的前端,始終是當前執(zhí)行代碼所在環(huán)境的變量對象。   好程序員Web前端培訓入門之JS基礎(chǔ)知識梳理匯總,Web前端工程師是當前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯。不論是專業(yè)還是非專業(yè),有基礎(chǔ)亦或是無基礎(chǔ),都想通過學習Web前端實現(xiàn)高薪就業(yè)。不過,學習要一...

    int64 評論0 收藏0
  • 好程序員Web前端培訓入門之JS基礎(chǔ)知識梳理匯總

    摘要:好程序員前端培訓入門之基礎(chǔ)知識梳理匯總,前端工程師是當前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯。作用域鏈的前端,始終是當前執(zhí)行代碼所在環(huán)境的變量對象。   好程序員Web前端培訓入門之JS基礎(chǔ)知識梳理匯總,Web前端工程師是當前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯。不論是專業(yè)還是非專業(yè),有基礎(chǔ)亦或是無基礎(chǔ),都想通過學習Web前端實現(xiàn)高薪就業(yè)。不過,學習要一...

    kviccn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<