【问题标题】:When I return true in Javascript, it returns as undefined当我在 Javascript 中返回 true 时,它​​返回为未定义
【发布时间】:2014-08-26 19:44:52
【问题描述】:

如下所示,我从另一个调用一个 javascript 函数,但每次调用 isPassword 时,它都返回为“未定义”,而不是预期的 True 或 False。我在返回值之前打印它们,它们是正确的,但返回 true;还是不行。有什么想法吗?

function isPassword(pass){

var datatosend = {};
datatosend['api'] = 'checkpassword';
datatosend['version'] = 'v1';
datatosend['pass'] = pass;

jsonAPI(datatosend,function()
{
    if (typeof(responseVar['success'])=='boolean')
    {
        var ans = responseVar['success'];
        if (ans)
        {
            //Returns true to changePassword();
            return true;
        }
        else if (!ans)
        {
            //Returns false to changePassword();
            return false;
        }
    }
});
}

function changePassword(){

    //THE BELOW isPassword CALL IS UNDEFINED
    if(isPassword(oldPass)){
        successStatus.text("Current password not entered correctly");
        successStatus.css('color', 'red');
        clearTextAfter('changePasswordStatus', 5000);
        return false
    }
}

如果问题不那么简单,我可以根据要求提供更多代码。

【问题讨论】:

  • 您正在使用responseVar,但它没有在您显示的代码中的任何地方定义。你用了一个叫jsonAPI的东西,这是一个异步方法吗?
  • 您正在从 changePassword 调用 isPassword - 如果它返回 false - 它只会返回 undefined (因为您的返回在 if 语句的范围内)。在 changePassword 中的 if 语句之后放置一个 return True,或者 return False - 任何适合的。
  • oldPass 定义在哪里?

标签: javascript boolean return


【解决方案1】:

不太清楚jsonAPI 是什么,但如果是Ajax 调用,那是异步的,所以函数本身在该函数调用之后结束(并且没有返回值),而匿名函数作为参数传递给@987654322 @ 稍后会执行。此时,您将需要对响应执行任何您需要的操作,而不是在 isPassword 返回时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2011-05-22
    • 2021-07-02
    相关资源
    最近更新 更多