[JavaScript] 函数作用域问题
生活随笔
收集整理的這篇文章主要介紹了
[JavaScript] 函数作用域问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
理解以下代碼:
function foo() {let n = 1return function bar() {let m = 1function show() {console.log('m:', ++m)console.log('n:', ++n)}show()}
}
let a = foo()
console.log(a)
a()
a()
首先看看這個a是個什么?
是返回回來的一個函數——a是一個函數
那么n和m哪個被保留了呢?
n被保留了,而m沒有,每次調用a都會重新定義一個m出來。
更進一步
function foo() {let n = 1this.sum = function () {console.log(++n)}
}let a = new foo()
console.log(a)
a.sum()
這時n是否被保留了呢?
a.sum()
a.sum()
a.sum()
每次new的時候才開辟一塊新的內存來存放這個東西,如下:
let a = new foo()
console.log(a)
a.sum()
a = new foo()
a.sum()
a.sum()
總結
以上是生活随笔為你收集整理的[JavaScript] 函数作用域问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [JavaScript] Map类型在J
- 下一篇: [JS][C++]两题斐波那契数列:上台