Это зависит. Если вы говорите об объявлениях с инициализацией, то: Нет.
Учтите это:
(function () {
var x = 1;
console.log(y); // undefined
var y = 2;
})();
(function () {
var x = 1, y = 2;
console.log(y); // 2
})();
Однако следующее безопасно и должно быть выполнено минифайерами:
(function () {
var x = 1, y;
console.log(y); // undefined
y = 2;
})();
Это, конечно, возможно; компрессор сканирует всю функцию на предмет содержащихся var
операторов до генерации вывода. Это необходимо для сжатия имен переменных.
Обратите внимание, что существует один возможный хитрый вариант, который заключается в расширении списка параметров и, таким образом, сохранении дополнительных байтов путем полного исключения любых операторов var
:
(function (x,y) {
x = 1;
console.log(y); // undefined
y = 2;
})();
Однако это меняет свойство length
(редко используемое) функции и, следовательно, не ожидается от минифайеров.