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

时间:2019-01-24 11:56:03

标签: 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 变量视为全局变量。所以我已经使用了这种内部发布方法。但是我在控制台中找到了。

  

未捕获的ReferenceError:ddlId未定义

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)

当我在控制台中对其进行调试时,我发现在$。每次调用中它都具有价值,但是在$ .post中却消失了。

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

1 个答案:

答案 0 :(得分:3)

var使变量global用于特定范围。在函数内部定义的var可以在函数内部的任何位置访问,但不能在外部访问,因为它不是它的范围。在函数外部的全局范围内定义var,您的所有函数都可以访问它。