我有以下代码:
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
我意识到有很多类似的问题,但我找不到任何可以解决我的问题(读:我没有真正理解答案,所以我可以将它应用到我的案例中)
我有以下功能:
void printVariable(map<string, bool*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我有,map<string, bool*> mapping我可以做以下事情:printVariable(mapping.begin());
这工作,现在我也有一个,map<string, int*>并希望能够做同样的事情,所以我想我改变了printVariable函数:
template <typename T>
void printVariable(map<string, T*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
Run Code Online (Sandbox Code Playgroud)
但是这会产生编译错误(gcc):
error: variable or field 'printVariable' declared void
error: expected ')' before 'it'
Run Code Online (Sandbox Code Playgroud)
我想我可以通过重载函数来解决这个问题.但我想知道为什么以上不起作用.
Edit2:删除文本声称正确的解决方案是错误的