Javascript 代码块在返回被调用函数的结果之前完成?我错过了什么?
Javascript code block finishes BEFORE it gets back the result of a called function? What am I missing?
正如标题所说,我在 .JS 文件中有一段 Javascript 代码。在这里,我在一个单独的 ASCX 文件中调用一个函数来更改 x 变量。
$('#button').bind('click', function (event) {
Function();
if(x == true){do something}
if(x == false){do something else}
});
在 ASCX 文件中我有变量和函数:
var x;
function Function(){
if(y > 100)
x = true
if(y < 100)
x = false
}
我希望,如果单击按钮,函数将执行(它会执行),变量会根据条件发生变化(这也会发生)。但是,代码使用代码 运行 之前的 x 值。
因此,如果在单击按钮之前 x 为真,并且将单击该按钮,即使 y 的条件实际上应该将 x 计算为假,结果也会始终计算为真。
我不确定为什么会这样。不幸的是,合并文件以使函数和调用都位于同一位置不是一种选择。任何投入将不胜感激。
此致,罗布
您可以 return 来自 Function
。
您可以使用 returned 值进一步检查。
您不需要在调用上下文中分配和检查更新。
一个 JS 文件:
$('#button').bind('click', function(event) {
x = Function();
if(x == true) { //do something }
if(x == false) {
//do something else
}
});
第二个 JS 文件:
function Function() {
if (y > 100)
return true
if (y < 100)
return false
}
$('#button').bind('click', function (event) {
x= Function();
if(x == true){/*do something*/}
if(x == false){/*do something else*/}
});
var x;
var y = 10;
function Function(){
if(y > 100)
x = true
if(y < 100)
x = false
}
正如标题所说,我在 .JS 文件中有一段 Javascript 代码。在这里,我在一个单独的 ASCX 文件中调用一个函数来更改 x 变量。
$('#button').bind('click', function (event) {
Function();
if(x == true){do something}
if(x == false){do something else}
});
在 ASCX 文件中我有变量和函数:
var x;
function Function(){
if(y > 100)
x = true
if(y < 100)
x = false
}
我希望,如果单击按钮,函数将执行(它会执行),变量会根据条件发生变化(这也会发生)。但是,代码使用代码 运行 之前的 x 值。
因此,如果在单击按钮之前 x 为真,并且将单击该按钮,即使 y 的条件实际上应该将 x 计算为假,结果也会始终计算为真。
我不确定为什么会这样。不幸的是,合并文件以使函数和调用都位于同一位置不是一种选择。任何投入将不胜感激。
此致,罗布
您可以 return 来自 Function
。
您可以使用 returned 值进一步检查。
您不需要在调用上下文中分配和检查更新。
一个 JS 文件:
$('#button').bind('click', function(event) {
x = Function();
if(x == true) { //do something }
if(x == false) {
//do something else
}
});
第二个 JS 文件:
function Function() {
if (y > 100)
return true
if (y < 100)
return false
}
$('#button').bind('click', function (event) {
x= Function();
if(x == true){/*do something*/}
if(x == false){/*do something else*/}
});
var x;
var y = 10;
function Function(){
if(y > 100)
x = true
if(y < 100)
x = false
}