相关疑难解决方法(0)

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

我将从代码开始:

var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
Run Code Online (Sandbox Code Playgroud)

简单吧?对此,Firebug说:

["hi"]
["bye"]
Run Code Online (Sandbox Code Playgroud)

很棒,但Chrome的JavaScript控制台(7.0.517.41 beta)说:

["bye"]
["bye"]
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者Chrome的JavaScript控制台在评估我的阵列方面特别懒惰?

在此输入图像描述

javascript arrays console logging google-chrome

116
推荐指数
4
解决办法
2万
查看次数

JavaScript控制台在分配变量之前打印指定的变量值?

我对JavaScript或Chrome控制台的行为感到非常困惑.有人可以帮我理解吗?

基本上我有以下JavaScript代码,而不是嵌套在任何函数或其他范围内:

var initial_array = [];

function initialiseArray() { 
   initial_array = [2, 9, 8, 6, 0, 2, 1];
} 

function copyToNewArray() {
    var copied_array = [];

    console.log("COPIED 1", copied_array);

    for (var i = 0; i < initial_array.length; i++) {
        var copy = initial_array[i];
        copied_array.push(copy);
    }

    console.log("COPIED 2", copied_array);
}

initialiseArray();
copyToNewArray();
Run Code Online (Sandbox Code Playgroud)

我希望COPIED 1打印[]- 因为变量尚未分配 - 而是打印[2, 9, 8, 6, 0, 2, 1]- 即分配后的值.

为什么?

顺便说一句,如果用8-11替换第8行initial_array = copied_array,那么RESULTS 1确实打印为[].这与使用有关 …

javascript

10
推荐指数
1
解决办法
5428
查看次数

console.log(array)显示与迭代数组和显示单个元素不同的数组内容

我有以下代码:

console.log("start");
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

[16:34:41.171] start
[16:34:41.171] 0 = 0
[16:34:41.172] 1 = 168
[16:34:41.172] 2 = 171
[16:34:41.172] [0, 168, 171, 139]
[16:34:41.172] end
Run Code Online (Sandbox Code Playgroud)

也就是说,它在迭代数组时不显示139元素,但是console.log在输出整个数组时会打印它.为什么?(< - 问题)

我稍后修改了数组,是不是以某种方式延迟了console.log,直到我更改了数组?注意,改变语句的顺序,consoel.log(array)直接放在开头不会改变结果(仍然是不同的输出).

我使用的是Firefox 20.0

javascript firefox

10
推荐指数
1
解决办法
4万
查看次数

console.log与JSON.stringify不一致

我有理由相信console.log并且JSON.stringify可以产生相同对象的不一致视图,即使它是以直接的方式创建的(参见注释).

情况

在谷歌浏览器开发者工具和Firebug的,我有一个对象obj,其console.log打印出来{ players: {0: ...}, ...},而JSON.stringify报道{ players: {}, ...}.obj.players{}在这两种功能,所以它似乎console.log是罪魁祸首.它可能在某种程度上是异步/非确定性的吗?

补充说明

我担心我无法提供更多的上下文,因为代码很长而且对于客户来说,但我可以尝试,如果有一些东西可以帮助深究这一点.目前,我被迫远离console.log检查.

知道通过手动设置属性仅仅从对象文字形成对象可能是有用的,例如,obj.players = {}; obj.players[0] = ....

我的意思的样本可以在http://jsfiddle.net/9dcJP/上观察到.

javascript firebug google-chrome-devtools

9
推荐指数
1
解决办法
3万
查看次数

声明之前在Google Chrome控制台中记录的Javascript对象属性

我一直在使用Google Chrome version 28.0.1500.95 m控制台测试一些JavaScript,并希望更多地了解它的工作原理:看看下面的代码:

var obj = {
    a: 99,
    f: function() { }
}

console.log(obj.a)
console.log(obj.z)    
console.log(obj)

o.z = 100;
Run Code Online (Sandbox Code Playgroud)

演示

这会输出以下结果:

99 
undefined 
Object {a: 99, f: function}
a: 99
f: function () { }
z: 100
__proto__: Object
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么z直到日志之后才宣布结果?

我假设这是控制台如何工作的东西,而不是JavaScript中的一些奇怪的范围规则,我不知道?

谁能告诉我这里发生了什么事?

javascript google-chrome

9
推荐指数
1
解决办法
2900
查看次数

直接在控制台中编写代码与控制台记录代码有什么区别?

两者有什么区别:

\n
Promise.all([1,2]) //Promise {<fulfilled>: Array(2)}\n
Run Code Online (Sandbox Code Playgroud)\n

\n
let p1 = Promise.all([1,2]);\nconsole.log(p1) //Promise\xc2\xa0{<pending>}\n
Run Code Online (Sandbox Code Playgroud)\n

为什么控制台显示不同的结果?

\n

javascript console

5
推荐指数
1
解决办法
64
查看次数

为什么我在野生动物园和Chrome中使用JSON.stringify来对JSON进行字符串化得到不同的结果?

我只是单纯地使用JSON.stringify({"a": "123"})stringify一个json

在chrome中,"分号将不会被转义,它将回显

JSON.stringify({"a": "123"})
"{"a":"123"}"
Run Code Online (Sandbox Code Playgroud)

但是如果我在野生动物园中使用相同的代码,"分号将被转义,就像这样

JSON.stringify({"a": "123"})
"{\"a\":\"123\"}"
Run Code Online (Sandbox Code Playgroud)

我想知道为什么chrome和safari产生不同结果的原因

javascript json

0
推荐指数
1
解决办法
147
查看次数