日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

(六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】

發布時間:2023/12/31 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JS基礎知識三(作用域和閉包)

  • 提問
  • 作用域
  • 自由變量
  • 閉包
  • this

提問

  • this的不同應用場景,如何取值
  • 手寫bind函數
  • 實際開發中閉包的應用場景,舉例說明
  • 創建10個a標簽,點擊的時候彈出對應序號

作用域

作用域指變量的合法的使用范圍,包含

  • 全局作用域
  • 函數作用域
  • 塊級作用域(ES6新增)

創建10個a標簽,點擊的時候彈出對應序號

let a for (let i = 0; i < 10; i++) {a = document.createElement('a')a.innerHTML = i + '<br>'a.addEventListener('click', function (e) {e.preventDefault()alert(i)})document.body.appendChild(a) }

自由變量

  • 一個變量在當前作用域沒有定義,但被使用了
  • 向上級作用域,一層一層依次尋找,直至找到為止
  • 如果到全局作用域都沒找到,則報錯xx is not defined

閉包

作用域應用的特殊情況,有兩種表現:

  • 函數作為參數被傳遞
  • 函數作為返回值被返回
// 函數作為返回值function create() {const a = 100return function () {console.log(a)}}// const fn = create() // const a = 200 // fn() // 100// 函數作為參數被傳遞 function print(fn) {const a = 200fn() } const a = 100 function fn() {console.log(a) } print(fn) // 100// 所有的自由變量的查找,是在函數定義的地方,向上級作用域查找 // 不是在執行的地方!!!

自由變量查找規則:所有的自由變量的查找,是在函數定義的地方,向上級作用域查找,不是在執行的地方!!!

手寫bind函數

// 模擬 bind Function.prototype.bind1 = function () {// 將參數拆解為數組const args = Array.prototype.slice.call(arguments)// 獲取 this(數組第一項)const t = args.shift()// fn1.bind(...) 中的 fn1const self = this// 返回一個函數return function () {return self.apply(t, args)} }function fn1(a, b, c) {console.log('this', this)console.log(a, b, c)return 'this is fn1' }const fn2 = fn1.bind1({x: 100}, 10, 20, 30) const res = fn2() console.log(res)

應用場景:實現一個簡單的cache工具

// 閉包隱藏數據,只提供 API function createCache() {const data = {} // 閉包中的數據,被隱藏,不被外界訪問return {set: function (key, val) {data[key] = val},get: function (key) {return data[key]}} }const c = createCache() c.set('a', 100) console.log( c.get('a') )

this

場景:

  • 作為普通函數去調用時值為window
  • 使用call bind apply去調用,傳入什么值為什么
  • 作為對象方法被調用,返回對象本身
  • 在class方法中調用,創建實例的本身
  • 箭頭函數:this永遠取它上級作用域的this,它自己本身不會決定this值



    this在各個場景中取什么值,是在函數執行的時候確認的,不是在定義的時候確認的

總結

以上是生活随笔為你收集整理的(六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丰满少妇在线观看网站 | 国产一区二区三区免费在线观看 | 国产又粗又大又黄 | 国产91视频在线观看 | 免费三片在线观看网站v888 | 亚洲综合激情 | 国产精品自拍偷拍视频 | 性做久久久久久免费观看 | 亚洲最大看欧美片网站 | 超碰com | 黄色片免费的 | 韩国伦理片在线看 | 欧美日韩国产三级 | 亚洲激情在线视频 | 久久大综合 | 欧美视频性 | 国产激情在线观看 | 日本无遮羞调教打屁股网站 | 亚洲码中文 | 亚洲一级一级 | 婷婷激情成人 | ass大乳尤物肉体pics | 黄色片久久久久 | 久久久久区 | 成人在线观看免费视频 | 日韩美女毛片 | 国产男女激情 | 在线精品小视频 | 久久视频在线观看免费 | 疯狂做受xxxx高潮人妖 | 色悠久久综合 | 日日狠狠久久偷偷四色综合免费 | 国产一线在线 | 国产91视频在线 | 日韩精品中文字幕在线观看 | 中文字幕日韩亚洲 | 女同一区二区三区 | 人妻激情偷乱频一区二区三区 | 久久精品国产亚洲av麻豆 | 亚洲剧情av | 2021天天操| 玖玖爱精品| 久久888 | 亚洲最大在线视频 | 亚洲中文无码av在线 | 国产精品成av人在线视午夜片 | 国产精品白浆一区二小说 | 极品少妇在线观看 | 黑人与日本少妇 | 久久精工是国产品牌吗 | 中字幕视频在线永久在线观看免费 | 国产一级全黄 | 一区二区三区不卡在线观看 | 欧美日韩视频在线播放 | 四色成人av永久网址 | 6680新视觉电影免费观看 | 麻豆系列| 久久免费国产 | 波多野结衣av一区二区全免费观看 | 中文在线观看高清视频 | 日本熟妇成熟毛茸茸 | a毛毛片 | 黄色一级生活片 | 一本色道久久综合亚洲精品小说 | 91免费播放 | 中文字幕精品视频在线观看 | 91久久精品一区二区别 | 欧美第一网站 | 狠狠躁日日躁 | 欧美丰满老熟妇xxxxx性 | 捆绑调教sm束缚网站 | 自拍偷拍在线视频 | 黄色免费网站在线 | 国产午夜免费福利 | 日韩一级片 | 男同互操gay射视频在线看 | 欧美特级黄色片 | 色噜噜狠狠狠综合曰曰曰88av | 国产丰满农村老妇女乱 | 美女穴穴| 午夜男人的天堂 | 激情婷婷小说 | 国产美女视频一区二区 | 精品视频久久久久久久 | 黄色三级网 | 人体av| 久草网在线视频 | 国产传媒一区二区三区 | 国产不卡视频在线 | 欧美五月激情 | 99热国产在线观看 | 超碰人人做 | 一边摸上面一边摸下面 | 亚日韩欧美 | 国产美女免费 | 日韩午夜激情电影 | 色哟哟欧美精品 | 伊人22综合 | 在线免费观看一区 |