这是一些引用表单的代码
$form.submit(function(e) {
e.preventDefault();
var fields = ['id', 'name', 'subject', 'theory', 'practical']; //?
var record = {};
for (var index in fields) {
var field = fields[index];
if (field == 'id' || field == 'theory' || field == 'practical')
record[field] = parseInt( $('input#'+field).val() );
else
record[field] = $('input#'+field).val();
}
/ * 现在在这个位置,如果我初始化一个$ .ajax方法,并在其中我再次创建一个for循环
for (var field in record) {
if (field == 'id')
continue;
这里的字段是否与上面的字段相同?
* / }
答案 0 :(得分:0)
此处的字段是否与上面的字段相同?
是的,var
是。它不适用于ES2015中的let
,但它与var
一致,因为函数中任何位置的var
都有函数范围,而声明已提升到他们所处的职能之首。
如果我们添加该循环,我们得到:
$form.submit(function(e) {
e.preventDefault();
var fields = ['id', 'name', 'subject', 'theory', 'practical']; //?
var record = {};
for (var index in fields) {
var field = fields[index];
if (field == 'id' || field == 'theory' || field == 'practical')
record[field] = parseInt($('input#' + field).val());
else
record[field] = $('input#' + field).val();
}
for (var field in record) {
if (field == 'id')
continue;
}
});
的处理方式与此完全相同:
$form.submit(function(e) {
// All of the variables are declared before step-by-step code runs
var fields;
var record;
var index;
var field;
e.preventDefault();
fields = ['id', 'name', 'subject', 'theory', 'practical']; //?
record = {};
for (index in fields) {
field = fields[index];
if (field == 'id' || field == 'theory' || field == 'practical')
record[field] = parseInt($('input#' + field).val());
else
record[field] = $('input#' + field).val();
}
for (field in record) {
if (field == 'id')
continue;
}
});
如果您使用let
,那么不就是真的。对于let
,变量是块范围的,只是部分悬挂。