function foo(x) { var tmp = 3; function bar(y) { alert(x + y + (++tmp)); } bar(10); } foo(2);foo(2);無論執行幾次foo,alert都是16function foo(x) { var tmp = 3; return function (y) { alert(x + y + (++tmp)); } } var bar = foo(2); // bar 現在是一個閉包 bar(10);bar(10);每次調用bar都會在原基礎加1,閉包不應該是保存著對變量的引用,為什么第一種每次執行結果不變
以下兩種閉包有什么不同
慕萊塢森
2018-12-25 21:19:37