gpt4 book ai didi

Javascript 作用域变量(全局/局部)

转载 作者:行者123 更新时间:2023-11-30 12:20:15 25 4
gpt4 key购买 nike

我想将局部变量用作全局变量,有人告诉我这样做的方法是在函数外部创建变量,如下所示:

        var foo = null;

function bar() {
foo = 3;
}

console.log(foo);

但是 foo 记录 null,而不是 3。这是我能想到的最简单的示例,但主要是我希望能够在整个脚本中使用我在函数中创建的变量中的数据。

我做错了什么?


Ajax 请求中的相同问题:

var status = null;

.ajax({
url: myUrl,
success: function (data) {
status = data.status; //returns a string
console.log(status); // it works, I get the string
},
dataType: 'jsonp'
});

console.log(status); // still null

最佳答案

你需要像这样先调用函数。

    var foo = null;

function bar() {
foo = 3;
}

bar();
console.log(foo);

这里最好的办法是调用一个在 ajax 运行后记录数据的函数。在这个例子中,我创建了一个名为 logit() 的函数,它在 ajax 请求状态下被调用。

var status = null;

$.ajax({
url: myUrl,
success: function (data) {
status = data.status; //returns a string
console.log(status); // it works, I get the string
logit();
},
dataType: 'jsonp'
});

function logit(){
console.log("logit(): " + status);
}

你得到 null 的原因是因为这是你的代码运行的顺序:

  1. 状态设置为空
  2. 将 ajax 保存到内存中,以便在请求完成时运行,这实际上还没有运行
  3. 记录 status 仍然是 null 因为成功回调还没有运行
  4. ajax 请求最终完成并运行成功回调
  5. status 设置为 data.status

关于Javascript 作用域变量(全局/局部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31358490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com