Я ссылаюсь на несколько файлов JS в одном HTML-файле. Я знаю, что не должно быть перекрытия имен переменных и функций в этих JS-файлах. Однако ограничивается ли только глобальными переменными или всеми переменными (даже локальные переменные внутри функции)?Использование нескольких JS-файлов - перекрытие переменных/функций.
0
A
ответ
1
// These will go into global scope
nonKeywordedVarA = true; // just don't
var nonKeywordedVarC = true;
function leaky() {
nonKeywordedVarB = true;
}
// These will stay where you put them
function nonLeakyA() {
var functionScoped = true;
}
function nonLeakyB() {
var functionScoped = false;
}
if (true) {
let blockScoped = true;
}
if (true) {
let blockScoped = false;
}
leaky();
nonLeakyA();
nonLeakyB();
// Here we log global scope
console.log(typeof nonKeywordedVarA)
console.log(typeof nonKeywordedVarB)
console.log(typeof nonKeywordedVarC)
console.log(typeof functionScoped)
console.log(typeof blockScoped)
Она ограничена только к переменным в том же объеме:
переменные, объявленные без
var
,let
,const
ключевых слов (например, someVar = истина). Они идут просочиться прямо в глобальную область видимости (напримерwindow
объекта)переменные, объявленные вне любой области видимости функции (или блокировать сферу в случае
let
)
Короче, ответ на ваш вопрос не беспокоиться об переменных с тем же именем в разных областей.
+0
В настоящее время моя тестовая среда недоступна из-за обслуживания. Проверите это и ответьте как можно скорее. Большое спасибо за ваш ответ! –
Только переменные _ в том же объеме_. Файлы JS будут делиться только глобальной областью, поэтому вам нужно быть осторожным. – vlaz
В соответствии с ответом tmslnz, если вы завершаете свои скрипты в '(function() {'use strict';/* script * /})();' тогда вы не можете случайно вывести что-либо в глобальную область. Только явно заданные свойства объекта 'window' будут глобальными –
Хорошая точка @WilliamB, но будьте осторожны с' strict', потому что вещи становятся довольно _strict_ и иногда запутываются :) – tmslnz