函數調用會不會生成新的作用域 js
函數調用會不會生成新的作用域 js
繁花不似錦
2019-04-15 08:08:47
TA貢獻5條經驗 獲得超1個贊
前面的回答說了大一堆,我不知道是不是復制粘貼還是答非所問,就是不說會不會生成新的作用域。我的回答是,不會。
function a() {
? let x = 0
? b()
? return y
}
function b() {
? let y = 1
}
猜猜a函數返回什么?
全局環境中,a函數中調用了b函數,并沒有增加新的作用域。這段代碼作用域共有三個,window全局作用域、a函數作用域、b函數作用域。其中全局作用域被a和b共用,作為它們執行環境棧的棧底,棧頂分別是它們當前的作用域(即變量x和y所在的作用域),沒有增加新的作用域,同時a和b的執行環境棧中都沒有彼此。
a()返回結果是:報錯y is not defined
舉報