我正在使用node.js对几个嵌入式dbs进行测试和基准测试。有了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
之前的记录,而在第二种情况下,只添加了1个条目。
答案 0 :(得分: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
将在您的两个代码示例中获得相同的数据。
我认为问题出现在你在这里没有提供的代码中。