calValue: function (data) {
var self = this;
var values = data.values;
for (var i = 0; i < data.length; i++) {
if(data.condition == 0){
(function (values) {
for (i = 0; i < values.length; i++) {
}
})(values)
}
else{
//do sth else
}
}
}
Мое понимание каждого funtion имеет свой собственный контекст и переменная, объявляемая внутри него, будет только эффективной внутри. Как и выше фрагмент кода, я ожидаю, что переменная «i» внутри внутреннего цикла for не будет влиять на внешнюю переменную «i». Однако на самом деле это влияет.переменная область видимости в javascript
Не могли бы вы помочь объяснить? Благодарю.
Это потому, что вы не повторно объявляете 'i' во второй внутренней функции, поэтому он использует' i' из внешней функции, а не собственную внутреннюю копию. –
спасибо Даниэль. Это имеет смысл. – connie