Не определяется тип переменной (Автоматические глобальные переменные)

0

Недавно я познакомился с этим http://www.w3schools.com/js/js_scope.asp, где узнал о "Автоматических глобальных переменных". Вот как вы его используете:

// code here can use carName

function myFunction() {
    carName = "Volvo";

        // code here can use carName
}

Однако, насколько он высок? Я беспокоюсь о том, что другие файлы могут получить к нему доступ, если это глобальное. Если я использую AngularJS, могут ли другие контроллеры использовать его? Могут ли другие файлы использовать его?

  • 0
    Что вы имеете в виду другие файлы ??? К вашему сведению: w3schools - не лучший справочник.
  • 0
    другие модули. (которые имеют свои контроллеры)
Показать ещё 2 комментария
Теги:

1 ответ

0

В JavaScript создание переменной без var аналогично установке на глобальном объекте в качестве свойства (и в браузере global - это window:

nameWithoutVar = 1;
// the above is the same as
window.nameWithoutVar = 1;

Это означает, что любой другой скрипт, загруженный в браузере для страницы, может получить доступ к nameWithoutVar, так же как они могут получить доступ к location, document и т.д.

По этой причине глобальные переменные считаются крайне плохой идеей, потому что все использует одно и то же пространство имен. Если вы должны использовать глобальную переменную обязательно задокументируйте ее и попробуйте пропустить ее, чтобы она не вступала в конфликт с какой-либо другой переменной.

Если вы не уверены, вам, вероятно, этого не нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню