从其范围之外更改变量
Change a variable from outside it's scope
function get_all_channels_by_order(){
var foobar = false
mysql_connection.connect()
mysql_connection.query("SELECT * FROM channels ORDER BY listorder ASC", function(){
foobar = true
})
mysql_connection.end()
console.log(foobar)
}
我需要foobar
返回true
但它返回false
。这当然是由于 JavaScript 范围,但我想知道有什么方法可以克服这个问题吗?还是不可能?
我很抱歉问这样一个常见的问题,但我看过其他几个 Stack Overflow 问题,它们没有帮助,我也尝试了很多其他代码而不是这个但没有成功。
编辑:虽然我的答案是正确的,但显然 OP 的真正问题是他试图在回调返回之前访问一个被回调修改的变量。
请尝试下面的代码。我创建了一个名为"that"的变量,它存储了对您所在范围的引用。然后,每当我想要正确的foobar时,我只需在它前面加上"that"。
var mysql_connection = {};
mysql_connection.connect = function(){
console.log("call to mysql_connection.connect");
}
mysql_connection.query = function(query,cb){
console.log("call to mysql_connection.query with query of",query);
if(cb){
cb();
}
}
mysql_connection.end = function(){
console.log("call to mysql_connection.end");
}
function get_all_channels_by_order(){
var that = this;
that.foobar = false;
console.log("foobar=",that.foobar);
mysql_connection.connect()
mysql_connection.query("SELECT * FROM channels ORDER BY listorder ASC", function(){
that.foobar = true
})
mysql_connection.end()
console.log("foobar=",that.foobar);
}
相关文章:
- IF 语句不改变变量的结果
- 为什么不是'这个CanvasJS脚本动态地改变变量
- 在php中改变变量,但在javascript中相同的变量不变
- 为什么Javascript不使用onChange来改变变量?
- 添加一个DOM/SVG元素与d3 javascript库改变变量引用/范围,为什么
- 通过点击按钮改变变量的值
- 在按下键后改变变量
- JQuery改变变量/成本后点击
- Eventlistener点击不改变变量时按下
- 改变变量中的链接
- 不能让函数改变变量
- Javascript滑块动态改变变量
- 通过html按钮改变变量
- Jquery在点击时改变变量
- 不能改变变量
- 为什么我的精灵在不改变变量的情况下加速
- 在javascript的文字函数中改变变量的值
- jQuery用子元素改变变量
- 改变变量&设置日期反应原生
- Ajax文件检查成功后不改变变量