[問題] js的讀取順序

看板Ajax作者 (晚安)時間6年前 (2018/08/25 00:14), 編輯推噓3(3012)
留言15則, 7人參與, 6年前最新討論串1/1
https://i.imgur.com/cB5p0Ns.jpg
先附圖 各位大大,這個結果跑出來是 3 無限迴圈的11 我知道為什麼跑出3跟11 但請問function bar跟for不是平行區塊的嗎 為什麼for的迴圈會一直跑去讀i=3呢 ----- Sent from JPTT on my iPhone -- 作者 seraphmm (有殺冇賠) 看板 sex 標題 [新聞]生殖器重達60公斤 男子術後因心臟病離世 時間 Fri Mar 28 09:36:27 2014

03/28 10:51,
不像我 30MM又大又長壽 我可是會活到22世紀的男人
03/28 10:51

03/28 11:41,
樓上30mm是新標準嗎
03/28 11:41

03/28 11:58,
30nm會成仙嗎
03/28 11:58
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.203.23.35 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1535127256.A.AB1.html

08/25 01:11, 6年前 , 1F
你有了解javascript的scope嗎
08/25 01:11, 1F

08/25 01:12, 6年前 , 2F
用var宣告出來的變數會在foo裡都可見(var的特性),所以當
08/25 01:12, 2F

08/25 01:13, 6年前 , 3F
所以呼叫bar時自然會去找到foo裡的,要符合預期的話應該改
08/25 01:13, 3F

08/25 01:13, 6年前 , 4F
成let
08/25 01:13, 4F

08/25 10:48, 6年前 , 5F
不是阿,foo裡面多放一個變數宣告就好了啊,let、var都可
08/25 10:48, 5F

08/25 18:06, 6年前 , 6F
宣告變數可以解決
08/25 18:06, 6F

08/25 18:06, 6年前 , 7F
這個問題,但為什麼I=3能夠修改for循環的i呢
08/25 18:06, 7F

08/25 18:34, 6年前 , 8F
你要不要用debug模式一步步跑?看看scope和變數的變化?
08/25 18:34, 8F

08/25 20:13, 6年前 , 9F
bar 裡的 i 前面沒有 let 或 var, 預設會優先繼承上層
08/25 20:13, 9F

08/25 20:13, 6年前 , 10F
的,因此 bar 的 i 跟 foo 的 i 也就是 for 的 i 指的
08/25 20:13, 10F

08/25 20:13, 6年前 , 11F
是同一個
08/25 20:13, 11F

08/28 12:51, 6年前 , 12F
因為for中的var i是function scope的
08/28 12:51, 12F

08/30 00:50, 6年前 , 13F
寫這種code的該打....
08/30 00:50, 13F

01/21 09:23, 6年前 , 14F
這樣寫你的i一直都是3你知道嗎,(3+1)*2+3只會噴出
01/21 09:23, 14F

01/21 09:23, 6年前 , 15F
一堆11
01/21 09:23, 15F
文章代碼(AID): #1RW2xOgn (Ajax)
文章代碼(AID): #1RW2xOgn (Ajax)