使用javascript将函数返回值赋给某个​​变量

Ra.*_*Ra. 32 jquery

我有一个js函数,在做了一些业务逻辑之后,javascript函数应该将一些结果返回给另一个变量.下面的示例代码

var response="";
function doSomething() {  
    $.ajax({
        url:'action.php',
        type: "POST",
        data: dataString,
        success: function (txtBack) { 
            if(txtBack==1) {
                status=1;
            }
    });
    return status;     
}
Run Code Online (Sandbox Code Playgroud)

在这里我想使用喜欢

response=doSomething();
Run Code Online (Sandbox Code Playgroud)

我想指定一个返回值"status""var response".但结果是'undefined'.

Šim*_*das 56

要不就...

var response = (function() {
    var a;
    // calculate a
    return a;
})();  
Run Code Online (Sandbox Code Playgroud)

在这种情况下,响应变量接收函数的返回值.该函数立即执行.

如果要使用需要计算的值填充变量,则可以使用此构造.请注意,所有计算都在匿名函数内部进行,因此您不会污染全局命名空间.

  • 请注意,函数本身在括号内(在单词 `function` 之前有一个左括号)并且末尾有一个额外的 `()`。(乍一看我并不明显) (4认同)
  • 对于好奇的人来说,这被称为 *立即调用的函数表达 * (IIFE)。它太棒了。 (3认同)

Mat*_*att 17

AJAX请求是异步的.您的doSomething函数正在被执行,正在进行AJAX请求,但它是异步发生的; 所以执行doSomething的剩余部分,并在status返回时未定义值.

实际上,您的代码的工作方式如下:

function doSomething(someargums) {
     return status;
}

var response = doSomething();
Run Code Online (Sandbox Code Playgroud)

然后一段时间后,您的AJAX请求正在完成; 但现在已经太晚了

您需要更改代码,并在AJAX请求的"成功"回调中填充"响应"变量.在AJAX调用完成之前,您将不得不延迟使用响应.

你以前可能有过的地方

var response = doSomething();

alert(response);
Run Code Online (Sandbox Code Playgroud)

你应该做:

function doSomething() {  
    $.ajax({
           url:'action.php',
           type: "POST",
           data: dataString,
           success: function (txtBack) { 
            alert(txtBack);
           })
    }); 
};
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 8

您只需从函数返回一个值:

var response = 0;

function doSomething() {
    // some code
    return 10;
}
response = doSomething();
Run Code Online (Sandbox Code Playgroud)