function f1() { var n = 999; f2 = function () { n += 1; console.log(n); } } f1(); f2();如上代碼中,定義了一個函數f1,內部又定義了一個匿名函數(也就是閉包),并且賦值給f2,按理來說,f2前面不是要加var標示來聲明一個變量嗎?但是我加上var后,卻報錯了,提示錯誤:f2 is not defined。為什么呢?另外,為什么上面代碼在全局環境中能夠訪問在f1內部定義的f2?一共兩個疑惑,先謝了。
關于JS閉包的一個疑惑
MYYA
2019-02-15 18:16:55