[問題] 陣列元素閃線

作者: Bruce003 (Bruce Chen)   2019-04-30 01:38:32
(Javascript 問題)
https://github.com/BruceChen034020/20190430BugDemo
Card是一個類別,裡面有一個函數叫copy。
Card.copy可以把Card物件的所有屬性複製,產生新物件。
CardList_init函數裡面有一個c陣列,是Card的陣列。
我把c的一些元素加到c的最後面去,但是加到一半c[6]就不見了。
我只是c.push而已,應該不會動到c[6]吧!!!?????
我debug了好久,都不知道為什麼會這樣
求解,謝謝!!! 萬分感激!!!
作者: Bruce003 (Bruce Chen)   2019-05-01 01:46:00
我把c前面加上var果然就好了,謝謝你們!我終於知道 var 的用途了之前都以為有var跟沒var沒差,就像分號一樣XD不過分號是真的有加跟沒加沒差嗎?
作者: kattte (誠實面對自己吧!)   2019-04-30 23:38:00
陣列元素閃線是甚麼意思? 我只看到你在第五次的時候把c給清空了
作者: konkonchou (卡卡貓)   2019-04-30 02:07:00
若只是單純pushc.push(c[i].copy(c.length+1)) 改 c.push(c[i])跑完長度變 253 看是不是你要的
作者: art1 (人,原來不是人)   2019-04-30 02:46:00
你的 c 變數宣告連 var 都沒加
作者: konkonchou (卡卡貓)   2019-04-30 03:00:00
c.push(c[i]); c[c.length-1].id=c.length;或樓上說的加上 var 避免以為 local 結果改到 global
作者: pkro12345 (席龍)   2019-04-30 03:22:00
你沒宣告變數又把複製和初始陣列都直接叫c就污染了你把card.js裡的c變數換成其他名字就好 不過治標不治本
作者: eight0 (欸XD)   2019-05-01 13:59:00
不是,有時可以省略不是全部都可以例 https://repl.it/@eight041/JS-semi-test

Links booklink

Contact Us: admin [ a t ] ucptt.com