我正试图解决一个范围问题。举两个例子:
一个)
var sels = ['.a', '.b', '.c'];
while ( (var sel = fieldsets.shift()) !== undefined ) {
(function(sel) {
$(sel).click(function() {
console.log(sel);
});
})(sel);
}
在此示例中,当单击引用的元素之一时,输出将为.a
、.b
或.c
。
b)
var sels = ['.a', '.b', '.c'];
while ( (var sel = fieldsets.shift()) !== undefined ) {
$(sel).click(function() {
console.log(sel);
});
}
在此示例中,单击将产生undefined
。
我显然误解了这两个示例中的作用域是如何应用的,因为在我看来,.click
在任何一种情况下调用何时都sel
不再存在。
这两种情况之间应用范围的方式有什么区别?