Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Что происходит с переменной? (https://javascript.ru/forum/misc/38567-chto-proiskhodit-s-peremennojj.html)

kokacolla 06.06.2013 20:39

Что происходит с переменной?
 
Привет.
Есть такой код:
<script language="javascript">
    var anchor = "keks";
</script>
<script language="javascript">  
    var anchor = "kek2s";
</script>
<script language="javascript">
    alert(anchor);
</script>

Что в этом случае происходит с переменной anchor?
Для неё каждый раз создаётся новая область памяти?

vadim5june 06.06.2013 20:59

Цитата:

Сообщение от kokacolla
Что в этом случае происходит с переменной anchor?

По моему это ошибка 2 раза нельзя объявлять переменную

dmitriymar 06.06.2013 21:03

Цитата:

Сообщение от vadim5june
По моему это ошибка 2 раза нельзя объявлять переменную

можно .
Цитата:

Сообщение от kokacolla
Для неё каждый раз создаётся новая область памяти?

вопрос к создателям движков

kokacolla 06.06.2013 21:06

Дак, что в этом случае проиходит с переменной?
JS код работает. Выдаётся - "keks2".
Как если бы я объявлял переменную без var:
anchor = "kek2s";

Есть какие либо нюансы?

dmitriymar 06.06.2013 21:15

Цитата:

Сообщение от kokacolla
Дак, что в этом случае проиходит с переменной?
JS код работает. Выдаётся - "keks2".
Как если бы я объявлял переменную без var:

теги скрипт не создают отдельные глобальные объекты и области видимости

http://habrahabr.ru/post/127482/ про "всплытие переменных"

var a =10;
b = 20;

alert(window.a);
alert(window.b);

window.a = 30;
alert(a);
alert(window.a === a);
alert(window.b === b);


разница есть при объявлении переменной через var в глобальной области видимости, и без него(свойством глобального объекта ) и по этой теме материалы гуглятся легко

Цитата:

Сообщение от kokacolla
Как если бы я объявлял переменную без var:
anchor = "kek2s";

вы её не объявляете, а изменяете значение ранее объявленной переменной

а вот что происходит с областями памяти, как оптимизируются, переназначаются ли и т.д знают только разработчики движков

ksa 07.06.2013 09:15

Цитата:

Сообщение от kokacolla
Что в этом случае происходит с переменной anchor?
Для неё каждый раз создаётся новая область памяти?

Вот почитай...

http://javascript.ru/tutorial/founda...last-vidimosti

Пример для иллюстрации

<script type="text/javascript">
test=1;
alert(test)
</script>
<script type="text/javascript">
var test;
alert(test)
</script>
<script type="text/javascript">
var test;
var test;
var test;
var test;
var test;
var test;
var test;
var test;
alert(test)
</script>


Часовой пояс GMT +3, время: 00:47.