В этом уроке мы с вами поговорим о глобальных и локальных переменных. А именно, об области видимости переменных.
И это все зависит от того, где вы создаете переменную. Когда вы создаете переменную в javascript, то она становится глобальной переменной, так как попадает в глобальную область видимости.
var name = 'Alex'
Это глобальная переменная
Если же мы создадим переменную внутри функции, то она станет локальной переменной функции. Эьл значит, что она будет доступна только внутри функции, а снаружи ее не будет видно.
var name = 'Alex'
function getName () {
var otherName = 'John'
}
Давайте попробуем вывести переменную name.
var name = 'Alex'
function getName () {
var otherName = 'John'
}
document.write(name)
Как мы видим, эта переменная вывелась, так как она доступна нам в глобальной области видимости.
Если же мы попробуем вывести переменную otherName, то оно ее не выведет, так как эта переменная доступна только внутри функции
var name = 'Alex'
function getName () {
var otherName = 'John'
}
document.write(otherName)
Давайте перенесем document.write внутрь функции getName и вызовем эту функцию ниже
var name = 'Alex'
function getName () {
var otherName = 'John'
document.write(otherName)
}
getName()
Тепрь у нас в браузер вывелась переменная otherName. Это происходит потому, что document.write теперь имеет доступ к всем локальным переменным внутри функции.
Теперь давайте разберем нюансы. В javascript можно создать переменную не используя слово var
someText = 'text'
И javascript прочитает эту инструкцию абсолютно спокойно. Единственный нюанс в том, что эта переменная будет всегда обьявлена как глобальная. В если случаи когда это очень сильно усложняет понимание кода
Если мы напишем document.write в конце кода и попробуем вывести опять otherName, то у нас ничего не выведет, так как такой переменной нет в глобальной области видимости.
var name = 'Alex'
function getName () {
var otherName = 'John'
}
getName()
document.write(otherName)
Если же мы уберем var и создадим переменную без него, то переменная станет глобальная и document.write выведет ее нам
var name = 'Alex'
function getName () {
otherName = 'John'
}
getName()
document.write(otherName)
Никогда в жизни так не пишите. Это абсолютно не однозначно и сразу же усложняет понимание кода. Всегда создавайте все переменные только с var. В этом случае, переменная становится глобальной, хотя возможно мы хотели сделать ее локальной. И в любом другом месте мы можем ее переопределить, даже не подозревая об этом.
И еще один нюанс. Все глобальные переменные существуют, пока у нас загружена страница. Если мы ее перезагрузим, то все сотрется. Локальные же переменные исчезнут, как только функция которую мы вызвали закончит выполнятся. В нашем случае, переменная otherName исчезнет, как только функция getName закончит выполнение.
Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.