Почему глобальная переменная типа var недоступна вне $ .each при использовании в методе $ .post? - PullRequest
0 голосов
/ 24 января 2019

Я просматривал фрагмент кода, когда обнаружил, что эта переменная выдает ошибку.

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 как глобальную. Так что я использовал этот метод внутри поста. Но я получил это в своей консоли.

Uncaught 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)

Когда я отлаживал его в консоли, я обнаружил, что в вызове $ .each он имеет значение, но в $ .post он исчез.

Может кто-нибудь сказать мне, как эта глобальная переменная потеряла свое состояние?

1 Ответ

0 голосов
/ 24 января 2019

var делает переменную global для конкретной области.var, определенный внутри функции, может быть доступен внутри функции где угодно, но не будет доступен снаружи, потому что это не является ее областью действия.Определите var в глобальной области видимости вне функции, и все ваши функции будут иметь к ней доступ.

...