<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      JS閉包藏了3個坑,React源碼里天天踩

      0
      分享至


      2019年Stack Overflow調研顯示,閉包是開發者面試被問頻率第2高的JS概念——但78%的人說不清它到底"閉"在哪。

      這不是你的問題。MDN文檔用2000字解釋,不如一個書包來得直觀。

      書包里的書:閉包的本質

      一個學生放學回家,書包里還裝著課本。學校(外層函數)已經關門了,但書(變量)還在。

      這就是閉包:內層函數記住外層變量,哪怕外層已經執行完畢。

      看這段代碼:

      function outerFunction() {
      let message = "Hello Students";
      function innerFunction() {
      console.log(message);
      }
      return innerFunction;
      }

      let myFunction = outerFunction();
      myFunction(); // 輸出 "Hello Students"

      outerFunction()早就跑完了,message按理說該被垃圾回收。但innerFunction把它"走私"了出來——像書包帶出了課本。

      餅干罐陷阱:狀態為什么沒重置


      閉包最反直覺的地方:變量不是副本,是引用。

      function cookieJar() {
      let cookies = 5;
      function takeCookie() {
      cookies--;
      console.log("Cookies left:", cookies);
      }
      return takeCookie;
      }

      let eatCookie = cookieJar();

      eatCookie(); // 4
      eatCookie(); // 3
      eatCookie(); // 2

      三次調用共享同一個cookies變量。如果你以為每次eatCookie()會重新初始化成5,恭喜你踩中了閉包面試題的標準陷阱。

      React的useState底層就是靠這個機制記住狀態——只不過包得更深,深到很多人用了三年都沒意識到自己在用閉包。

      React源碼里的閉包:為什么hooks不能寫在if里

      React團隊規定:hooks必須按相同順序調用。這條規則的背后,是閉包數組在支撐。

      每次組件渲染,React維護一個閉包隊列。useState(0)第一次執行,把state和setter封進閉包,按索引0存好。第二次渲染,還是索引0,找到之前的閉包,取出最新值。

      如果你在if語句里寫useState,條件變化時索引錯位,React會從錯誤的閉包里取值——這就是著名的"hooks規則"源頭。


      Dan Abramov在博客寫過:「我們本可以用更復雜的方案避免這個限制,但閉包數組是最小可行實現。」

      換句話說,React為了性能,把閉包的坑暴露給了開發者。

      Node.js的模塊系統:每個文件都是一個閉包

      Node的require機制把每個JS文件包進一個立即執行函數:

      (function(exports, require, module, __filename, __dirname) {
      // 你的代碼
      })();

      這就是為什么模塊里的變量不會污染全局——它們活在閉包里。exports能傳出去,是因為作為參數被閉包記住了。

      CommonJS規范制定時,Ryan Dahl專門選了這個設計。不是炫技,是為了在ES模塊出現前,用函數作用域模擬命名空間。

      現在你用的import/export,底層還是閉包邏輯,只是語法糖包得更厚。

      閉包不是JS獨有的。Python有嵌套函數,Rust有move閉包,連C++11都加了lambda捕獲列表。但只有JS把閉包做成了呼吸般的存在——你每次寫回調,都在無意識使用。

      下次面試被問到"什么是閉包",別背定義。問面試官:您想聽書包版本,還是React源碼版本?

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      克洛普:我們很快就會意識到沒有薩拉赫的利物浦會變得不一樣

      克洛普:我們很快就會意識到沒有薩拉赫的利物浦會變得不一樣

      懂球帝
      2026-03-28 00:26:11
      張雪峰付幸多張合影被扒,每次團建她都偷瞄張雪峰,眼神滿是崇拜

      張雪峰付幸多張合影被扒,每次團建她都偷瞄張雪峰,眼神滿是崇拜

      古希臘掌管松餅的神
      2026-03-26 16:52:30
      國家出手,京圈富少鋃鐺入獄,意外牽連商界大佬,童謠也未能幸免

      國家出手,京圈富少鋃鐺入獄,意外牽連商界大佬,童謠也未能幸免

      素衣讀史
      2026-03-25 15:49:54
      天生就好色的3個星座,有你嗎?

      天生就好色的3個星座,有你嗎?

      同道大叔
      2026-03-16 22:01:59
      19歲男子KTV上班,三名女孩來喝酒,男子下體過度使用成永久創傷

      19歲男子KTV上班,三名女孩來喝酒,男子下體過度使用成永久創傷

      丫頭舫
      2025-09-22 20:39:00
      6.58萬,零跑這TM是來搗亂的吧!

      6.58萬,零跑這TM是來搗亂的吧!

      手機評測室
      2026-03-27 11:52:34
      再年輕也沒用!山東27歲美女李曉云去世,死因曝光,丈夫發文感謝

      再年輕也沒用!山東27歲美女李曉云去世,死因曝光,丈夫發文感謝

      青梅侃史啊
      2026-03-27 17:01:27
      最壞情況發生,美軍艦載機在沿海被擊中,白宮意識到大國出手了!

      最壞情況發生,美軍艦載機在沿海被擊中,白宮意識到大國出手了!

      尋跡追心
      2026-03-28 03:28:57
      以軍證實空襲伊朗兩座核設施

      以軍證實空襲伊朗兩座核設施

      財聯社
      2026-03-28 01:50:09
      上海交大解剖405名心梗死者,驚訝發現患心梗的人,有幾個共性

      上海交大解剖405名心梗死者,驚訝發現患心梗的人,有幾個共性

      新時代的兩性情感
      2026-03-25 16:37:36
      荷甲維特斯時期前隊友,張玉寧賽后與庫拉索門將魯姆合影

      荷甲維特斯時期前隊友,張玉寧賽后與庫拉索門將魯姆合影

      懂球帝
      2026-03-27 17:51:13
      鐵了心對付中國?暴跌58%,俄羅斯大幅加稅,中國汽車出口驟降

      鐵了心對付中國?暴跌58%,俄羅斯大幅加稅,中國汽車出口驟降

      卷史
      2026-02-02 12:01:46
      5分鐘開通國家免費電視!不用機頂盒、不連網,永久免費

      5分鐘開通國家免費電視!不用機頂盒、不連網,永久免費

      叮當當科技
      2026-03-20 03:29:51
      19歲生日前1天首登時尚大刊封面 全紅嬋再造紀錄 已闊別賽場141天

      19歲生日前1天首登時尚大刊封面 全紅嬋再造紀錄 已闊別賽場141天

      風過鄉
      2026-03-27 19:49:20
      越扒越有!張雪峰去世早有預兆,他的3個不良愛好,或成催命符

      越扒越有!張雪峰去世早有預兆,他的3個不良愛好,或成催命符

      潮鹿逐夢
      2026-03-26 11:24:44
      “兩家父母心都挺大的!”兒子帶女同學回家過夜,網友都看不下去

      “兩家父母心都挺大的!”兒子帶女同學回家過夜,網友都看不下去

      妍妍教育日記
      2026-03-24 19:57:28
      東契奇傷情告急!MVP爭奪亮起紅燈,65場生死線成最后考驗

      東契奇傷情告急!MVP爭奪亮起紅燈,65場生死線成最后考驗

      仰臥撐FTUer
      2026-03-27 12:24:23
      全線跳水,超9萬人爆倉!

      全線跳水,超9萬人爆倉!

      每日經濟新聞
      2026-03-26 20:29:17
      一定要大量讀書:建議讀完這5本書,再去處理復雜的人際關系

      一定要大量讀書:建議讀完這5本書,再去處理復雜的人際關系

      欣辰讀書
      2026-03-25 23:00:41
      你見過哪些悶聲發大財的人?網友:干這個買三套房子,兩個門面

      你見過哪些悶聲發大財的人?網友:干這個買三套房子,兩個門面

      夜深愛雜談
      2026-02-01 18:57:04
      2026-03-28 06:55:00
      硬核玩家2哈
      硬核玩家2哈
      沉淀中,勿擾
      303文章數 2關注度
      往期回顧 全部

      科技要聞

      楊植麟張鵬夏立雪羅福莉,聊龍蝦、聊漲價

      頭條要聞

      男醫生給孕妻做彩超 丈夫崩潰撞墻:不過了 明天就離婚

      頭條要聞

      男醫生給孕妻做彩超 丈夫崩潰撞墻:不過了 明天就離婚

      體育要聞

      邵佳一:足球就像一場馬拉松

      娛樂要聞

      范瑋琪加盟,官宣《浪姐7》遭全網抵制

      財經要聞

      我在小吃培訓機構學習“科技與狠活”

      汽車要聞

      與眾08,金標大眾不能輸的一戰

      態度原創

      旅游
      本地
      時尚
      健康
      家居

      旅游要聞

      日照嵐山“打飛的”賞春成新時尚

      本地新聞

      在濰坊待了三天,沒遇到一個“濰坊人”

      推廣中獎名單-更新至2026年3月11日推廣

      干細胞抗衰4大誤區,90%的人都中招

      家居要聞

      曲線華爾茲 現代簡約

      無障礙瀏覽 進入關懷版