开发者社区> 问答> 正文

Chrome的JavaScript控制台是否懒于评估数组?

我将从代码开始:

var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s); 简单吧?对此,Firebug说:

["hi"] ["bye"] 很棒,但是Chrome的JavaScript控制台(7.0.517.41 Beta)说:

["bye"] ["bye"] 我做错了什么吗?还是Chrome的JavaScript控制台在评估数组方面异常懒惰? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 23:08:45 490 0
1 条回答
写回答
取消 提交回答
  • 根据Eric的解释,这是由于console.log()排队,它打印了数组(或对象)的更高值。

    可以有5个解决方案:

    1. arr.toString() // not well for [1,[2,3]] as it shows 1,2,3
    2. arr.join() // same as above
    3. arr.slice(0) // a new array is created, but if arr is [1, 2, arr2, 3] // and arr2 changes, then later value might be shown
    4. arr.concat() // a new array is created, but same issue as slice(0)
    5. JSON.stringify(arr) // works well as it takes a snapshot of the whole array // or object, and the format shows the exact structure
    2020-02-07 23:09:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载