關於 js 變數存活空間的意外發現

假設有一個全域變數為 uid

現在有一個 function A, 裡面做了若干運算
而在這些運算裡面也定義了 uid
接著 function A 執行了 ajax call
並且定義了 ajax call 的 callback, function B
這時候 function B 裡面呼叫的 uid 會是全域變數的
還是定義在 function A 裏頭的?

剛剛意外的發現會是在 function A 裏頭的!
所以js 運作的機制應該是像氣泡那樣由底逐層往上找看有沒有定義
一遇到有定義就會 apply

留言

熱門文章