Прежде чем я погрузится в вопрос, я хочу пояснить, что мой вариант использования включает в себя исправление транс-компилятора для создания надлежащего эквивалента, отсюда и несколько неудобный вопрос.Затенение JavaScript с инициализацией
Я хочу затенять внешнюю переменную, но инициализирую ее так же, как и снаружи. Вот пример:
var a = 2;
(function(){
var a = a;
a += 3;
// I want `a` to be 5
})();
// I want `a` to be 2
Я понимаю, что с приведенным выше примером внутренней a
будет NaN
(undefined + 3
), но я могу инициализировать переменный делает затенение к тому же самому, что она какая-то образом теням? Передача его в качестве аргумента не является вариантом, так как эта функция будет написана пользователем, единственное, что будет последовательным, - это наличие внутренней области. Я думал об изменении имени внутренней переменной a
, но компилятор в настоящее время не построен таким образом, чтобы легко отслеживать его, и это создавало бы дополнительные головные боли.
ли "вне переменной" всегда в глобальном масштабе? Все гораздо проще, если это так. – RobG
Нет, он находится в области справа от текущего, обычно –
Хорошо, поэтому ответ Дэнни - это выход. Хотя то, что вы делаете, может быть путаным для тех, кто поддерживает код. – RobG