javascript - 为什么在 $.post 方法中使用时全局 var 类型变量在 $.each 之外不可访问?

标签 javascript jquery ajax var

当我发现这个变量抛出错误时,我正在检查一段代码。

function call(data) {
  $.each(data, function(index, value) {
    var ddlId = 'ddlCat' + data[index].docId;
    var html = '<tr id="supp_doc_row_' + data[index].docId + '" class="cls-delete-dynamic_edit">';
    var html2 = '';
    var countDocOfsameCategory = parseInt(data[index].countt) - 1;
  })

  $.post('/someController/SomeAction/', {
    requestType: 'GETDOC'
  }, function(data1) {
    $("#" + ddlId).empty();
    $("#" + ddlId).append($('<option value= "Select"> Select Type</option>'));
  })
}

现在的问题是我将这个 ddlId 变量视为全局变量。所以我在内部使用了这个post方法。但我在我的控制台中得到了这个。

Uncaught ReferenceError: ddlId is not defined

at Object.success (<anonymous>:1110:38)
at u (jquery-3.3.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.3.1.min.js:2)
at k (jquery-3.3.1.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)

当我在控制台中调试它时,我发现在 $.each 调用中它有值,但在 $.post 中它已经消失了。

谁能告诉我这个全局变量是如何丢失其状态的?

最佳答案

var 使变量成为特定范围的全局。在函数内部定义的 var 可以在函数内部的任何地方访问,但不能在外部访问,因为它不在其作用域内。在函数外部的全局范围内定义 var,您的所有函数都可以访问它。

关于javascript - 为什么在 $.post 方法中使用时全局 var 类型变量在 $.each 之外不可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346109/

相关文章:

javascript - jQuery 获取不是获取元素的 html

javascript - 使用Python从网页的Ajax调用返回数据

javascript - WooCommerce:在结帐时将输入的账单地址字段大写 + 更新订单元?

javascript - 如何发送简单的ajax请求?

javascript - Select2 - 从后端获取数据并将选项添加到选择框

javascript - 我在 codeigniter 中的 AJAX 登录表单始终选择 else 语句,即使满足条件也是如此。这些怎么解决呢?

python - 如何在 Django 中使用 AJAX 正确从 html 调用函数/url?

Javascript高亮/取消高亮字

javascript - 将 PHP 中的 JSON 数据拆分为 JavaScript 中的三个数组

javascript - 如何在未定义的 getElementsByClass 上运行 addEventListener?