當我將我的Uint8Array console.log添加到chrome dev控制檯時,我可以擴展它的內容並查看所有元素。當我console.log訪問該數組,比如array [512]時,我看不到我擴展它時看到的內容。javascript Uint8Array訪問不返回預期結果(與在Chrome控制檯中擴展數組內容相比)
console.log(this.memory); // logs [0, 0, 0, ......]
console.log(this.memory[512]); // logs 0
當我擴大從第一日誌中的陣列,我可以看到,索引512的值是34,不爲0
這裏是:
實施例從我的源代碼直接採取從我的控制檯的屏幕截圖:
正下方的是,數字0從當我登錄this.memory [512]記錄。我試着用for循環遍歷數組,以確保雙重確定。註銷全部0!我不知道還有什麼要嘗試。
更新:更怪異。我將該陣列附加到窗口,以便在控制檯中播放它:
window.memory = this.memory
// now in chrome, lets see what happens
window.memory[512];
-> 34
這裏是一個幾乎包含我所有代碼的jsfiddle。奇怪發生在113-116線周圍。這是正在進行chip8模擬器工作:https://jsfiddle.net/ybd6ntks/2/
更新2:如果我從我的源代碼運行window.memory[512];
,我得到0。如果我從鉻控制檯中運行window.memory[512];
,我得到34
這是很奇怪的行爲,當然,你的代碼可以在[fiddle](http://jsfiddle.com)中幫我們調試嗎? – Downgoat
'this.memory'快速變化嗎?在Chrome中,'console.log'是異步的。當你使用'console.log(memory)'的時候,Chrome可能不會顯示元素512的值,直到*顯示console.log(memory [512])的結果之後,因爲後者比訪問和顯示。在Chrome能夠顯示大型陣列的時候,所有的可能性都發生了變化。解決方法雖然比較差,但是要做'console.log(JSON.stringify(memory))'。 –
@Jordan我試過你的建議,我得到了同樣的結果。 – chillpenguin