Недавно я познакомился с этим http://www.w3schools.com/js/js_scope.asp, где узнал о "Автоматических глобальных переменных". Вот как вы его используете:
// code here can use carName
function myFunction() {
carName = "Volvo";
// code here can use carName
}
Однако, насколько он высок? Я беспокоюсь о том, что другие файлы могут получить к нему доступ, если это глобальное. Если я использую AngularJS, могут ли другие контроллеры использовать его? Могут ли другие файлы использовать его?
В JavaScript создание переменной без var
аналогично установке на глобальном объекте в качестве свойства (и в браузере global
- это window
:
nameWithoutVar = 1;
// the above is the same as
window.nameWithoutVar = 1;
Это означает, что любой другой скрипт, загруженный в браузере для страницы, может получить доступ к nameWithoutVar
, так же как они могут получить доступ к location
, document
и т.д.
По этой причине глобальные переменные считаются крайне плохой идеей, потому что все использует одно и то же пространство имен. Если вы должны использовать глобальную переменную † обязательно задокументируйте ее и попробуйте пропустить ее, чтобы она не вступала в конфликт с какой-либо другой переменной.
†Если вы не уверены, вам, вероятно, этого не нужно.