Javascript代码块在返回被调用函数的结果之前完成?我错过了什么?

时间:2016-07-14 13:00:44

标签: javascript jquery function call ascx

正如标题所说,我在.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为真,并且单击按钮,则结果将始终评估为true,即使y的条件实际上应该将x计算为false。

我不确定为什么会这样。遗憾的是,合并文件以使功能和呼叫位于同一位置是不可取的。任何投入将不胜感激。

亲切的问候,Rob

2 个答案:

答案 0 :(得分:0)

您可以从Function返回。 您可以使用返回值进一步检查。

您无需在调用上下文中分配和检查更新。

一个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
}

答案 1 :(得分:0)

$('#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
}