这段代码:
foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);
Run Code Online (Sandbox Code Playgroud)
在Chrome中生成以下输出:
foo1
[Object, Object, Object, Object, Object] 5
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]
5 (index):23
foo2
[Object, Object, Object, Object] 4
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/2kpnV/
这是为什么?
我目前正在阅读Trevor Burnham的Async Javascript.到目前为止,这是一本很棒的书.
他谈到这个片段和console.log在Safari和Chrome控制台中是"异步"的.不幸的是我不能复制这个.这是代码:
var obj = {};
console.log(obj);
obj.foo = 'bar';
// my outcome: Object{}; 'bar';
// The book outcome: {foo:bar};
Run Code Online (Sandbox Code Playgroud)
如果这是异步,我会预期结果将成为书籍的结果.console.log()被放入事件队列中,直到执行完所有代码,然后运行它并具有bar属性.
虽然它正在同步运行但它似乎出现了.
我运行此代码错了吗?console.log实际上是异步吗?
我理解这段代码.我们制作A的副本并将其称为C.当A被更改时,C保持不变
var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1
Run Code Online (Sandbox Code Playgroud)
但是当A是阵列时,我们会有不同的情况.C不仅会改变,而且会在我们触及A之前发生变化
var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Run Code Online (Sandbox Code Playgroud)
有人可以解释第二个例子中发生的事情吗?
我最近开始做本地反应,并不理解如何调试,以便在控制台中获得我的结果.这是我在控制台中得到的结果.
Organizations is [object Object]
Run Code Online (Sandbox Code Playgroud)
我如何获得组织的所有内容.我在我的控制台代码中这样做了.
console.log('Organizations is '+organizations);
Run Code Online (Sandbox Code Playgroud) 我的代码中有文件数组。当我添加新文件时,它显示的数组长度不正确。但是,如果我用 settimeout 检查长度,它会显示正确的长度。
console.log('row.myDocuments: ', row.myDocuments);
console.log('length: ', row.myDocuments.length);
Run Code Online (Sandbox Code Playgroud)
在这样的控制台中获得结果,
每次添加新文件时,控制台中的长度为(实际长度-1)
javascript ×4
object ×2
angular ×1
arrays ×1
asynchronous ×1
console ×1
react-native ×1
variables ×1