Функция, такая как ниже, может иметь локальную функцию, определяющую this.inc
. Изменение значения Есть ли какие-либо объяснения относительно того, что такое inc
на любой другой, например, i
, изменяет результат - так ясно, что этот .inc
не является определяемой пользователем переменной, а что-то еще внутреннее по отношению к this
.inc
, и почему он функционирует так?Что это такое?
function incr() {
var i = 0;
this.inc = function() {
i++;
}
}
Это изменение в результате может наблюдаться в ответ на мой предыдущий вопрос, found here, например, в этой конструкции (благодаря Paul S для расширения его от оператора троичной):
if (total !== 0) {this.inc = (this.inc || 0) + 1;} else {this.inc = -1 +1;}
Итак, чтобы повторить, изменение Итак, что же такое this.inc
на this.i
(или любая другая переменная предположительно) не работает, но this.inc
действительно работает.this.inc
?
Из-за мою усталость и неправильно тестирование this.inc
перед отправкой на этот вопрос, я понял использование переменной inc
как внутренний по отношению к this
, а не miscellaneously определяется программистом, поскольку изменение его изначально не работает меня. В связи с этим этот вопрос запрашивается для удаления.
Вы вроде как правы, но ваша ошибка в том, что троянец не вводит никаких новых функций/областей/закрытий/контекст, поэтому поведение отличается. Вместо того, чтобы расширять RHS и оставлять его равным LHS, переместите LHS в каждую ветвь RHS, затем разверните его, и вы увидите, как он работает 'if (total! == 0) {this.inc = (this.inc || 0) + 1;} else {this.inc = -1 +1;} ' –
@PaulS. Привет, это работает. – user1679669
Хотя это не дубликат как таковой, объясняются ответы на это http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback/20279485#20279485 (и связанные вопросы) – user2864740