跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于闭包的一个面试题, 这是为什么啊
未分類
15 5 月 2020

关于闭包的一个面试题, 这是为什么啊

关于闭包的一个面试题, 这是为什么啊

資深大佬 : lukeshawn 11

function fun(n,o){ console.log(o); return { fun: function(m){ return fun(m,n); } }; }

var a = fun(0); // undefined , 这个我理解 a.fun(1); // 0, 这是为什么啊

为什么 a.fun(1)是 0 啊

大佬有話說 (7)

  • 資深大佬 : yesterdaysun

    因为最开始穿进去的 0, 作为 n, 在 a.fun 的调用中, 又被传到外面的 fun 作为 o 了

  • 資深大佬 : shintendo

    a = fun(0) // a == {fun: function(m) {return fun(m,0)}}
    这样看能理解吗?

  • 主 資深大佬 : lukeshawn

    @yesterdaysun 听不懂

  • 主 資深大佬 : lukeshawn

    @shintendo 不理解,有更小白的解释么

  • 資深大佬 : rming

    https://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

    https://pic.downk.cc/item/5eb37ee8c2a9a83be5e7d2e8.jpg

  • 資深大佬 : shintendo

    @lukeshawn ??不理解在哪里
    1. fun(n)的返回值是{ fun: function(m){ return fun(m,n); } }
    2. 所以 fun(10086)的返回值是{ fun: function(m){ return fun(m,10086); } }
    3. 同理 fun(0)的返回值是{ fun: function(m){ return fun(m,0); } }
    4. a = fun(0),所以 a = { fun: function(m){ return fun(m,0); } }
    哪步不理解??

  • 資深大佬 : MisakaTang

    console.log(o) 打印函数的第二个参数
    var a = fun(0); 使得函数的第二个参数变成了 0
    a.fun() 不管传什么都是打印 0
    简单理解就是 var a = fun(0) 把 fun(n,o)的第二个参数持久化了 后面调用 a.fun(n) 等价于调用 fun(n,0)
    这样解释?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具