Re: [問題] Hoisting 問題
※ 引述《broo (陳爺)》之銘言:
: 標題: [問題] Hoisting 問題
: 時間: Sat Feb 18 23:48:05 2017
: 範例是這樣的
: (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呢
: 腦筋無法轉過來..
: 麻煩了 手機排版請見諒
我覺得hoisting應該不是這樣解釋
https://developer.mozilla.org/zh-TW/docs/Glossary/Hoisting
hoisting teaches that variable and function declarations are physically moved
to the top your coding, but this is not what happens at all. What does happen
is the variable and function declarations are put into memory during the
compile phase, but stays exactly where you typed it in your coding.
簡單講就是javascript會分creation跟execution phases
會先執行creation phases
把宣告的變數跟宣告的function存到記憶體
(此時變數還沒被assign,所以value會是undefined)
然後再執行excution phases
就是逐行的去執行程式碼
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.184.212
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1487446363.A.C17.html
推
02/19 08:52, , 1F
02/19 08:52, 1F
推
02/19 10:04, , 2F
02/19 10:04, 2F
→
02/19 10:04, , 3F
02/19 10:04, 3F
推
02/19 10:58, , 4F
02/19 10:58, 4F
→
02/19 10:58, , 5F
02/19 10:58, 5F
推
02/19 18:48, , 6F
02/19 18:48, 6F
推
02/19 19:00, , 7F
02/19 19:00, 7F
→
02/19 20:07, , 8F
02/19 20:07, 8F
→
02/19 20:07, , 9F
02/19 20:07, 9F
→
02/19 20:07, , 10F
02/19 20:07, 10F
→
02/19 20:54, , 11F
02/19 20:54, 11F
→
02/19 20:55, , 12F
02/19 20:55, 12F
→
02/19 20:58, , 13F
02/19 20:58, 13F
推
04/09 15:17, , 14F
04/09 15:17, 14F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章