2013-03-08 4 views
2

В JavaScript есть одно, что я не могу понять.Инициализация переменных Javascript

Когда мы объявляем переменную, как это:

var var_Name 

это называется локальной переменной.

Когда мы объявляем переменную, как это:

var_Name 

она называется глобальных переменных.

Когда именно браузер сбрасывает свои значения? Как только страница обновится?

Что я имею в виду, когда страницы загружаются, я объявляю переменную, и к тому моменту я увеличиваю ее значение. Когда значение вернется к первоначальной инициализации? Когда я обновляю страницу? или если это Локальные переменные, он обновляется сразу после остановки использования, а если это Глобальная переменная обновляется только при обновлении страницы?

Спасибо!

+0

Я считаю, что загрузка страницы не влияет variabls – Jacob

+1

@Jacob: это неправильно. См. Ответы ниже – Dancrumb

+1

global просто означает, что он доступен для всех файлов и функций, локальный ограничивается там, где он объявлен. переменные просто удерживают данные, которые вы им даете, они не действуют как сеансы или постоянные данные, поэтому они будут удалены после перезагрузки, пока не будут предоставлены некоторые данные для нового экземпляра – ashley

ответ

3

Глобальная декларация:

var_Name = 1; 
// is equal to 
var var_Name = 1; 
// and is also equal to 
window.var_Name = 1; 

Переменная живет до тех пор, пока объект окна делает. Таким образом, он будет доступен, пока вы не оставите/не перезагрузите текущую страницу.

Локальные переменные внутри функция живет до тех пор, пока функция работает:

function y(){ 
var x = 1; 
console.log(typeof x !== 'undefined'); 
} 
y(); 
console.log(typeof x === 'undefined'); 
+0

Спасибо! Этот пример был идеален, так как я программирую на C#, Java, VB.NET, поэтому я понял, что вы пытались сказать. Спасибо! – kfirba

3

Доступ к глобальной переменной можно получить из любой функции в любом файле, загруженном страницей. И когда страница перезагружает переменную, она будет отключена до тех пор, пока не будет снова запущен какой-либо код и назначит ему значение.

2

двигатель Javascript не поддерживает никаких значений переменных над загрузкой страницы. Таким образом, любые глобальные переменные, которые были объявлены и определены в течение жизни страницы, будут потеряны при перезагрузке этой страницы.

Переменные, объявленные с var, ограничены областью, в которой они определены. Для браузера есть только область действия и глобальная область. В результате локальная переменная, объявленная в функции, перестанет существовать после возвращения этой функции, если она не будет захвачена закрытием (большая тема, которая стоит искать в Интернете).

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

Стоит отметить, что выполнение следующие за пределы функции:

var foo = 1; 

будет еще создать глобальную переменный, так как вы в глобальной области видимости, если вы не в области видимости функции.

+0

Спасибо за резкое объяснение! – kfirba

0

Глобальная переменная видна на всем документе.Локальная переменная видна только в блоке, который вы определяете. Переменные не будут отображаться в других документах.

Когда вы обновляете страницу, все переменные вновь устанавливаются, что означает, что вы не получите значения переменной, пока не сохраните ее (например, в cookie или через ajax).