当我发现这个变量抛出错误时,我正在检查一段代码。
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/