gpt4 book ai didi

javascript - 如何跨函数使用和重用 JS 变量

转载 作者:行者123 更新时间:2023-11-28 02:07:43 28 4
gpt4 key购买 nike

我遇到这样一种情况,我需要从 jQuery AJAX 调用的结果中初始化/分配变量,然后在脚本中进一步重新使用这些变量:

var shouldRedirect = ???

$.ajax({
url: 'http://example.com',
type: 'GET',
data: 'blah',
asynch: false,
timeout: 1800,
success: function(data) {
shouldRedirect = data.rows[0].redirectFlag
}
});

if(shouldRedirect)
window.location = "...";

我遇到的两个问题:

  • 假设生成的 JSON 将包含一个 redirectFlag bool 值,data.rows[0].redirectFlag 是否是获取变量值的正确方法?和
  • 在启动 AJAX 之前,我应该将 shouldRedirect 初始化为什么(我怎么说“创建一个变量但还没有给它赋值!”)?

提前致谢!

最佳答案

您可以通过简单地执行以下操作来声明未初始化的变量:

var shouldRedirect;

如果您的逻辑需要它,您当然可以将其初始化为 false:

var shouldRedirect = false;

但这可能不是您想要的。您可以通过将变量与 undefined 进行严格比较来检查变量是否已初始化:

if (shouldRedirect === undefined) // do something

但请注意,您必须使用三重相等运算符(也称为严格相等),否则您的结果将与预期不同。另一方面, undefined variable 将产生错误的结果。这意味着当使用简单的 if (shouldRedirect) 检查变量并且变量未定义时,它将产生 false,就好像它被设置为 false 一样。对于 JavaScript 中的其他几个值也是如此,例如空字符串 "" 或值 null。您可以看到完整的虚假值列表 here .如果您想明确检查 true 或 false 并想忽略其他 falsy 或 truthy 值,那么您应该检查三重相等,例如 if (shouldRedirect === true)

此外,data.rows[0].redirectFlag 是否是访问该值的正确方法在很大程度上取决于您从 AJAX 调用接收到的数据结构实际上是什么样子。如果它类似于以下内容,那将是正确的:

{ rows: [ {redirectFlag: true}, {redirectFlag: false} ] }

如果您的 JSON 如下所示

{ redirectFlag: false }

然后您只需使用 data.redirectFlag 即可访问 redirectFlag。

关于javascript - 如何跨函数使用和重用 JS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10412536/

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