国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

XUI / 3467人閱讀

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

引言

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

閉包組:

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

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、以下代碼的功能是要實現為5個input按鈕循環綁定click點擊事件,綁定完成后點擊1、2、3、4、5五個按鈕分別會alert輸出0、1、2、3、4五個字符。(騰訊)

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

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

 for(let i=0;i

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

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

那么我應該讓回調函數定義的時候里面的代碼能立即執行,接收到參數0,1,2,3,4

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

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

for(var i=0;i
this組:

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109645.html

相關文章

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

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

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

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

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

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

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

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

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

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

    kviccn 評論0 收藏0

發表評論

0條評論

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