Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery函数中为外部变量赋值_Javascript_Jquery_Scope - Fatal编程技术网

Javascript 在jQuery函数中为外部变量赋值

Javascript 在jQuery函数中为外部变量赋值,javascript,jquery,scope,Javascript,Jquery,Scope,这是我的密码: var resultSet; db.transaction(function (tx){ tx.executeSql('SELECT * FROM table WHERE name = ?', [name], function (tx, results) { resultSet = results; }); }); console.log(resultSet); 记录的内容未定义 我希望得到的是分配给resultSet的SQLResultSe

这是我的密码:

var resultSet;

db.transaction(function (tx){
    tx.executeSql('SELECT * FROM table WHERE name = ?', [name], function (tx, results) {
        resultSet = results;
    });
});

console.log(resultSet);
记录的内容未定义

我希望得到的是分配给resultSet的SQLResultSet对象结果

我肯定我误解了JavaScript中的作用域。但这似乎是可行的,我找不到类似的问题

谢谢你的时间

transaction或executeSql都是非同步函数,这意味着任何涉及其结果的内容都必须包含在回调函数中。

在查询有机会返回之前,您正在使用resultSet调用console.log

将要登录的调用移动到查询回调中:

db.transaction(function(tx) {
    tx.executeSql('SELECT * FROM table WHERE name = ?', [name], function(tx, results) {
        console.log(results);
    });
});

你的括号不平衡;tx.executeSql'SELECT*FROM table WHERE name=?',[name],function tx,results{可能应该是tx.executeSql'SELECT*FROM table WHERE name=?',[name],function tx,results{@Nelson-抱歉…不是…我只是编辑了查询以保持简单。您可以假设它已定义。@stealthyninja-参数是平衡的-这是一个烦人的回调函数…结束参数紧跟着结束}是-我正在调用console.log以查看它是否被设置。我的目的不是记录它,而是将结果分配给resultset。您可以将结果分配给resultset,但是您不能在回调之外使用resultset,因为它还不会被分配。一般来说,异步函数不能那么容易地修改外部状态。Frédéric Hamidi-I th我现在明白了。这看起来非常有限,但有意义…@user,只有语法是有限的这就是为什么C设计人员最近在语言中添加了async和Wait关键字,异步行为实际上非常强大。也许未来版本的Coffescript,或者Javascript本身,将支持syn像这样的策略糖。感谢Frédéric的帮助。我必须发挥创意:谢谢。这和Frédéric Hamidi对这个问题的另一个答案的评论让我明白了我的错误。我显然还没有完全理解JS的异步本质。