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

Why global var type variable is not accessible outside $.each when using in $.post method?

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

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 为特定范围生成变量 global。在函数内部定义的 var 可以在函数内部的任何地方访问,但不能在外部访问,因为它不在其作用域内。在函数外的全局范围内定义 var,您的所有函数都可以访问它。