如何將匿名函數內的值賦給全局變量或其範圍外的變量。例如,下面的例子。 console.log(rows)
返回正確的數據,而console.log(result)
返回未定義匿名函數範圍混淆
var result;
this.query(sql).execute(function(error, rows) {
console.log(rows)
result = rows;
});
console.log(result);
如何將匿名函數內的值賦給全局變量或其範圍外的變量。例如,下面的例子。 console.log(rows)
返回正確的數據,而console.log(result)
返回未定義匿名函數範圍混淆
var result;
this.query(sql).execute(function(error, rows) {
console.log(rows)
result = rows;
});
console.log(result);
Node.js的是事件驅動的,這意味着大部分功能是異步的。 execute
函數不會返回任何值,因爲「返回」值位於聲明爲第一個參數的匿名函數中,只有在查詢已執行並且數據庫已返回值時纔會調用該函數。所以你的result
變量不包含任何值,因爲沒有什麼可返回的。
** 編輯 **
即使你的編輯,分配rows
它被執行之前,你登錄的變量result
行,因爲匿名函數只執行後,當查詢完成時。
.execute
返回什麼?它可能只是處理由.query
返回的項目而不返回數組
更改了示例代碼,我複製了不正確的代碼。同樣的結果。 – HyderA 2011-06-08 02:56:59
它不會改變任何東西。 'result'將不會保留任何值,只是因爲匿名函數*異步*執行,意思是*稍後* – 2011-06-08 02:59:06
啊,是的,這是有道理的! – HyderA 2011-06-08 03:01:26