[問題] 陣列元素閃線

看板Web_Design作者 (Bruce Chen)時間5年前 (2019/04/30 01:38), 編輯推噓3(3013)
留言16則, 6人參與, 5年前最新討論串1/1
(Javascript 問題) https://github.com/BruceChen034020/20190430BugDemo Card是一個類別,裡面有一個函數叫copy。 Card.copy可以把Card物件的所有屬性複製,產生新物件。 CardList_init函數裡面有一個c陣列,是Card的陣列。 我把c的一些元素加到c的最後面去,但是加到一半c[6]就不見了。 我只是c.push而已,應該不會動到c[6]吧!!!????? 我debug了好久,都不知道為什麼會這樣 求解,謝謝!!! 萬分感激!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.155.245 ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1556559515.A.093.html

04/30 02:07, 5年前 , 1F
若只是單純push
04/30 02:07, 1F

04/30 02:08, 5年前 , 2F
c.push(c[i].copy(c.length+1)) 改 c.push(c[i])
04/30 02:08, 2F

04/30 02:08, 5年前 , 3F
跑完長度變 253 看是不是你要的
04/30 02:08, 3F

04/30 02:46, 5年前 , 4F
你的 c 變數宣告連 var 都沒加
04/30 02:46, 4F

04/30 03:00, 5年前 , 5F
c.push(c[i]); c[c.length-1].id=c.length;
04/30 03:00, 5F

04/30 03:01, 5年前 , 6F
或樓上說的加上 var 避免以為 local 結果改到 global
04/30 03:01, 6F

04/30 03:22, 5年前 , 7F
你沒宣告變數又把複製和初始陣列都直接叫c就污染了
04/30 03:22, 7F

04/30 03:23, 5年前 , 8F
你把card.js裡的c變數換成其他名字就好 不過治標不治本
04/30 03:23, 8F

04/30 23:38, 5年前 , 9F
陣列元素閃線是甚麼意思? 我只看到你在第五次的時候把c
04/30 23:38, 9F

04/30 23:38, 5年前 , 10F
給清空了
04/30 23:38, 10F

05/01 01:46, 5年前 , 11F
我把c前面加上var果然就好了,謝謝你們!
05/01 01:46, 11F

05/01 01:46, 5年前 , 12F
我終於知道 var 的用途了
05/01 01:46, 12F

05/01 01:47, 5年前 , 13F
之前都以為有var跟沒var沒差,就像分號一樣XD
05/01 01:47, 13F

05/01 01:48, 5年前 , 14F
不過分號是真的有加跟沒加沒差嗎?
05/01 01:48, 14F

05/01 13:59, 5年前 , 15F
不是,有時可以省略不是全部都可以
05/01 13:59, 15F

05/01 13:59, 5年前 , 16F
文章代碼(AID): #1SnpQR2J (Web_Design)