相关疑难解决方法(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万
查看次数

console.log()异步还是同步?

我目前正在阅读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实际上是异步吗?

javascript asynchronous

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

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)

有人可以解释第二个例子中发生的事情吗?

javascript variables google-chrome

43
推荐指数
4
解决办法
3万
查看次数

element.children的console.log显示0长度,但稍后扩展时有三个条目

在我的javascript中,我有两个元素.

我记录了两个元素,它显示了......

要素1.

在此输入图像描述

要素2.

在此输入图像描述

有问题.

当我console.logelement小号.children他们显然还有些HtmlCollection小号

您将在一分钟内理解以下内容:但奇怪的是,一个HtmlCollection为空(并且长度为0),但有3个元素(并且长度为3).

如果您console.log为元素的孩子阅读下面的s,您将理解我在说什么...

元素1儿童和长度:

在此输入图像描述

元素2儿童和长度:(搞砸了)

在此输入图像描述

有谁知道这里发生了什么?

我如何解决这个问题,我需要通过HtmlCollection循环,但它不会让我因为长度是0 ...?

提前致谢!所有帮助赞赏.

html javascript htmlcollection

11
推荐指数
1
解决办法
5449
查看次数

对象引用在JavaScript中如何工作?

我是JavaScript的新手,我认为对象是通过引用传递的。

我期望的输出是:

{ one: 1 } { one: 1 }
{ two: 2 } { two: 2 }
Run Code Online (Sandbox Code Playgroud)

获得的输出:

{ one: 1 } { one: 1 }
{ two: 2 } { one: 1 }
Run Code Online (Sandbox Code Playgroud)

什么时候b引用地址a,为什么b{ one: 1 }

{ one: 1 } { one: 1 }
{ two: 2 } { two: 2 }
Run Code Online (Sandbox Code Playgroud)

javascript

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

如何解释vue.js中console.log()的这种奇怪行为?

当我使用第一个代码示例时,由于某种原因console.log()给了我已处理的HighData变量。好像console.log()在脚本的末尾。

console.log( "data", this.data['diagram'] );
var HighData = this.data['diagram'];

minSerieHeight = getMin( HighData[3] );
HighData[0] = mkSerie( HighData[0] );
HighData[1] = mkSerie( HighData[1] );
HighData[2] = mkSerie( HighData[2] );
HighData[3] = mkSerie( HighData[3] );
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,当我使用它array.map()(与上面的代码做完全相同的事情)时,它this.data['diagram']按预期正确地返回了变量。

console.log( "data", this.data['diagram'] );
var HighData = this.data['diagram'];

minSerieHeight = getMin( HighData[ HighData.length - 1 ] );
HighData = HighData.map( e => {
    return mkSerie( e );
});
Run Code Online (Sandbox Code Playgroud)

代码在mounted()函数的Vue组件中。该getMin()mkSerie()也都在mounted()功能。

javascript console.log vue.js google-developer-tools

2
推荐指数
1
解决办法
83
查看次数

为什么这个对象在函数运行之前发生变化?

我有一个对象,其中一个数组(类对象)作为其值之一。我有一个函数,部分地在该数组内(对象内)的对象之一上运行类方法。

当我运行代码时,在函数之前和之后打印数组,更改在函数运行之前和之后都存在。

为什么会发生这种情况?吊装?

作为测试,我在对象中创建了另一个键:值对,使得该值是一个整数,并将我的函数更改为将该整数增加 1。在这里,它工作正常 - 在函数之前打印我的对象整数为1,然后整数为2。

我也尝试不使用对象上的类方法来进行调整,但仍然失败。

class Book{
constructor (color, title, pagecount){
    this.color = color;
    this.title = title;
    this.pagecount = pagecount;
}

changePages() {
    this.pagecount += 50;
}
}

let book1 = new Book("Red", "Book1", 100);
let book2 = new Book("Blue", "Book2", 200);
let book3 = new Book("Green", "Book3", 300);

var myBookArr = [book1, book2, book3]

var myObj = {arr: myBookArr, integerTest: 0}


function thisDoesStuff(){
    //other operations not related to myObj
    myObj.arr[0].changePages();
}
Run Code Online (Sandbox Code Playgroud)

当我在两个 console.logs 中运行以下命令时,它显示 arr[0] (即 …

javascript

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

js循环和对象数组的问题

我有一个关于 js 循环及其实际工作原理的问题。我正在循环访问如下所示的对象数组:

const array = [{value: 0}, {value: 0}, {value: 0}, {value: 0}];
Run Code Online (Sandbox Code Playgroud)

循环只是更新每个元素的值:

array.forEach(el => {
        el.value = 1;
        console.log(array)
})
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么输出看起来像这样:

[{value: 1}, {value: 1}, {value: 1}, {value: 1}]
[{value: 1}, {value: 1}, {value: 1}, {value: 1}]
[{value: 1}, {value: 1}, {value: 1}, {value: 1}]
[{value: 1}, {value: 1}, {value: 1}, {value: 1}]
Run Code Online (Sandbox Code Playgroud)

而不是这样的:

[{value: 1}, {value: 0}, {value: 0}, {value: 0}]
[{value: 1}, {value: 1}, {value: 0}, {value: 0}]
[{value: 1}, {value: 1}, {value: 1}, {value: …
Run Code Online (Sandbox Code Playgroud)

javascript arrays foreach loops object

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