Да, как уже говорили другие, вы можете использовать var
в глобальной области видимости (вне всех функций) для объявления глобальной переменной:
<script>
var yourGlobalVariable;
function foo() {
// ...
}
</script>
В качестве альтернативы, вы можете назначить свойство вwindow
:
<script>
function foo() {
window.yourGlobalVariable = ...;
}
</script>
... потому что в браузерах все глобальные переменные глобальные переменные, объявленные с var
, являются свойствами объекта window
.(В последней спецификации ECMAScript 2015 новые операторы let
, const
и class
в глобальной области видимости создают глобальные переменные, которые не являются свойствами глобального объекта; новая концепция в ES2015.)
(Существует также ужас неявных глобалов , но не делайте этого нарочно и сделайте все возможное, чтобы избежать этого случайно, возможно, используя ES5 "use strict"
.)
Все это говорит: я бы избежал глобальных переменных, если вы можете (и вы почти наверняка можете).Как я уже упоминал, в конечном итоге они обладают свойствами window
, а window
уже достаточно многолюдно , что со всеми элементами с id
(а многие с простоname
) в него (и независимо от этой будущей спецификации IE создает дамп практически всего с name
там).
Вместо этого, оберните ваш код в функцию определения объема и используйте переменные, локальные для этогоФункция определения объема и закрытие других функций внутри нее:
<script>
(function() { // Begin scoping function
var yourGlobalVariable; // Global to your code, invisible outside the scoping function
function foo() {
// ...
}
})(); // End scoping function
</script>