看板 Ajax 關於我們 聯絡資訊
範例是這樣的 (function(){ var test =function(){return 1;} function test() {return 2;} return test(); })(); 經過hoistibg後會長這樣 (function(){ var test; function test() {return 2;} test = function() {return 1;} return test(); })(); 我怎麼想結果都是2,因為最後是return test()不是嗎??為什麼會是1呢 腦筋無法轉過來.. 麻煩了 手機排版請見諒 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.158.10 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1487432887.A.C16.html ※ 編輯: broo (223.140.158.10), 02/18/2017 23:49:10
async: 具名函式和匿名函式的差別google一下就有答案了 02/19 00:15
ssccg: hoist後的前兩行其實應該是 02/19 00:29
ssccg: var test = function test() {return 2;}; 02/19 00:32
ssccg: 其中function後的test只是影響這個function的name 02/19 00:32
ssccg: test() 是對 var test這個變數呼叫 02/19 00:33
broo: 天啊 我完全看不懂...但還是謝謝你們 我研究個 02/19 00:49
ssccg: function declaration等效於var定義 + 在compile phase就執 02/19 20:37
ssccg: 行一個named function expression assignment 02/19 20:38
ssccg: 一個function scope裡不管幾個var、function declaration 02/19 20:40
ssccg: 同名字的變數只有一個 02/19 20:41