一個JS閉包問題
阿新 • • 發佈:2022-05-16
程式碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>閉包問題</title> </head> <body> <script> function fn1() { var a = 2; function fn2() { a++ console.log(a) } return fn2 } var f1 = fn1() f1() //3 f1() //4 var f2 = fn1() f2() //3 f2() //4 </script> </body> </html>
輸出結果
3
4
3
4
尚矽谷_JS高階_常見的閉包
問題就是為什麼不應該都是輸出3,a為什麼沒有在每次函式呼叫前被重新賦值?
我暫時這樣理解:
因為return fn2給了f,f沒消失,閉包就不會,所以再var一個f,那就會出現兩個閉包了。
我還是懵的狀態