0

我正在使用 node.js 测试和基准测试几个嵌入式数据库。使用 TingoDB,任何人都知道为什么会这样

var test = { hello:'world' };
for (var j = 0; j < size; j++) {
    collection.insert(test, { w: 1 }, function () {})
}

但这不是:

for (var j = 0; j < size; j++) {
    var test = { hello:'world' };
    collection.insert(test, { w: 1 }, function () {})
}

也就是说,在第一种情况下,数据库被记录填满,直到size,而在第二种情况下,只添加了一个条目。

4

1 回答 1

1

您提供的两个代码示例之间没有区别。

此外,test在这两种情况下都是全局变量。for不会创建它的范围,并且由于提升了您的第二个代码示例,如下所示:

var test;
for (var j = 0; j < size; j++) {
    test = { hello: 'world' };
    collection.insert(test, { w: 1 }, function () {});
}

如您所见,它几乎就像第一个一样。唯一的区别是它每次都会创建一个新{ hello: 'world' }对象并将其分配给变量。test所以collection.insert将在您的两个代码示例中获得相同的数据。

我相信问题出在您未在此处提供的代码中。

于 2016-09-23T20:19:45.883 回答