我的印象是我的变量范围应该是正确的,但是值没有设置。我想知道为什么会这样。
这是我的代码:
function getUserStatus() {
var status;
function querySuccess(tx, results) {
var row = results.rows.item(0);
console.log(row['id']);
status = {
question: row['id']
};
}
function errorCB(err) {
console.log(err);
}
db.transaction(function(tx) {
tx.executeSql('SELECT id FROM calculator ORDER by id ASC LIMIT 1', [], querySuccess, errorCB);
});
console.log(status);
return status;
}
现在,querySuccess()函数中的状态变量设置正确 - 我得到的值为1。
但是,当我检查状态的第二个变量时,在函数范围之外,我得到了未定义。
我是否误解了Javascript变量范围或错误地声明了我的变量?我是Javascript的新手。
答案 0 :(得分:0)
当调用getUserStatus状态时,其中的函数被定义但未被执行,因此您的变量没有值(未定义),这是未设置的var的值。
答案 1 :(得分:0)
在您的代码中,您应该使用
中的参数调用函数querySuccessdb.transaction(function(tx) {
tx.executeSql('SELECT id, women FROM calculator ORDER by id ASC LIMIT 1', [], querySuccess, errorCB);
});
调用该功能时没有参数。
答案 2 :(得分:0)
见这里: Scope in JavaScript / jQuery
您的代码执行异步,因此执行在您的查询成功之前返回一个未定义的值。