为什么这个回调不能访问外部范围的正确值?

ibr*_*ker 4 javascript mysql node.js

使用node-mysql我有以下代码:

for (var i = 0; i < 10; i++) {
    connection.query('select 1', function(err, rows) {
        console.log('#' + i);
    });
}
Run Code Online (Sandbox Code Playgroud)

我期望结果为#0,#1,...,#9,但实际结果是#10打印10次.很明显它是i在回调执行时打印值而不是回调创建.如何实现我想要的结果?

Dav*_*nte 5

用let声明我:

var i =>让我

for (let i = 0; i < 10; i++) {
Run Code Online (Sandbox Code Playgroud)

  • 这实际上没有帮助; 你仍然只有一个变量. (2认同)