【发布时间】:2013-10-26 22:15:02
【问题描述】:
我有以下 jquery 代码:
$.ajax({
url: 'somefile.php',
type: "POST",
data: "",
dataType: "json",
async: false,
success: function (data) {
var var1 = something;
var var2 = something;
var var3 = something;
var var4 = something;
for (var i = 0; i < data.length; i++) {
$('.somediv').html('');
$('.somediv').append('Somehtml');
}
some_function_declared_later(var1, var2, var3, var4);
}
编译时出现错误:'var1','var2','var3' & 'var4' are used out of scope。但是,我认为没有问题,因为它们已在使用它们的同一函数中声明。
请帮忙!
更新:
这可能与当前函数之外的some_function_declared_later 的声明有关吗???
【问题讨论】:
-
“编译时出现错误” 正在编译?用什么?
-
他们不是。它们在
for范围内定义。 -
@DavidHedlund:这是 JavaScript。
var总是在函数范围(或全局范围,如果在任何函数之外使用)创建变量。 -
这些变量应该在范围内,因为 JS 具有函数级范围而不是块范围,尽管如果
data.length恰好为 0,它们都将具有值undefined。我会建议无论它是否在 JS 中工作,在循环内声明变量都是不好的做法,特别是如果您随后在循环外使用它们。 -
即使没有来自神秘编译器的错误,这段代码也没有任何意义。您在循环中分配和重新分配变量,然后在循环外使用它们。所以它们要么是
undefined(如果data.length是0),要么是循环最后一遍的值。
标签: javascript jquery scope