javascript - 无法更改函数内的全局变量(JavaScript)

标签 javascript variables scopes

<分区>

我有一个名为result 的全局变量和一个函数,目的是改变result 的值。这是我试过的代码:

checkdate();

function checkdate() {
    //defining startdate,enddate,hotel_id

    $.ajax({
    method: 'GET',
    url: '/checkdate',
    data: {startdate : startdate, enddate : enddate, checkroom : 1, hotel_id : hotel_id},
    success: function(response){
        storeResponse(response);
    }
    });
}

var result = [];
function storeResponse(response) {
    window.result = response;
}
alert(result);

警报不返回任何内容,但是如果我将警报放在函数内部,它会返回响应。这似乎很容易,但我想不通。

该函数在所有这些代码之前被调用。

最佳答案

这里有两件事你需要知道:

  1. var resultwindow.result 不同,因此请使用 window.result = "Test"; 而不是 var 声明。
  2. 您需要在 alert 代码之前调用 storeResponse(),以便它设置新值,然后在 alert 中获取该值。

window.result = "Test"; //in global scope
function storeResponse(response) {
    window.result = response;
    console.log(window);
}
storeResponse("Hello");
alert(result);

关于javascript - 无法更改函数内的全局变量(JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52183153/

相关文章:

javascript - 在 jquery ajax 中访问变量

javascript - window.load文件读取不运行

javascript - 使用 jQuery 在 URL 末尾添加变量

javascript - 序列化多个外键

php空白$_GET[]检测

azure - 无法将 key 添加到 Azure key-Vault 支持的 Databricks 范围

mysql - map 表的 Rails 范围

ruby-on-rails - Rails Searchkick 与 Controller 中的范围

javascript - 了解Backbone设置方法和模型

php - Facebook 照片 API