Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Pafos
96 / 96 / 17
Регистрация: 18.10.2009
Сообщений: 453
#1

javascript переменные - JavaScript

13.12.2010, 01:05. Просмотров 1420. Ответов 15
Метки нет (Все метки)

Начал изучать javascript
Вопрос:
Какая разница между этим:
Javascript
1
2
    var test = 100;
    document.write(test);
...и этим:
Javascript
1
2
    test = 100;
    document.write(test);
Выводит одно и тоже(что там-что там)...
Зачем тогда var?
Как правильно писать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 01:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос javascript переменные (JavaScript):

Переменные из Flash в Javascript
Проблема такова - надо яваскриптом получать переменные из Flash мулта...

Глобальные переменные в Javascript
Помогите, плиз, я дизайнер, в JS очень слаб:cry: Есть скрипт, который по...

Глобальные переменные в JavaScript
Мне нужна такая глобальная переменная js, чтобы можно было сохранять значение...

Как в javascript занести переменные из php
Подскажите как правильно прописать переменные в javascript, нужно, чтоб там,...

Как из JavaScript передать переменные в PHP?
как из java script передать переменные в php???

Вставка элементов меню (содержащих javascript) через javascript
Пишу курсовой проект по JavaScript в ходе которого потребовалось создать...

15
Mysterious Light
Эксперт по математике/физике
3927 / 1906 / 379
Регистрация: 19.07.2009
Сообщений: 2,915
Записей в блоге: 21
13.12.2010, 01:36 #2
Выводит-то одно и тоже, однако если ты будешь использовать активно функции, стоит знать: в первом случае переменная создана в контексте (если так можно выразиться) функции, в то время как второе определение полностью эквивалентно window.test (т.е. могут возникнуть побочные эффекты функции в виде изменения внешних глобальных переменных). Пиши так как правильнее для задачи. Но лучше всякий раз переменные функции "прятать" в функцию.
1
Pafos
96 / 96 / 17
Регистрация: 18.10.2009
Сообщений: 453
13.12.2010, 01:48  [ТС] #3
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Выводит-то одно и тоже, однако если ты будешь использовать активно функции, стоит знать: в первом случае переменная создана в контексте (если так можно выразиться) функции, в то время как второе определение полностью эквивалентно window.test (т.е. могут возникнуть побочные эффекты функции в виде изменения внешних глобальных переменных). Пиши так как правильнее для задачи. Но лучше всякий раз переменные функции "прятать" в функцию.
Всё понятно, спасибо!
0
Crudelis
Шаровик затейник
679 / 428 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
13.12.2010, 02:19 #4
тип var говорит от том что переменная объявлена глобально, т.е. может быть использована как в теле функции так и за пределами её, может быть использована так и во всех функциях, одним словом глобально.
0
Pafos
96 / 96 / 17
Регистрация: 18.10.2009
Сообщений: 453
13.12.2010, 12:59  [ТС] #5
Цитата Сообщение от Crudelis Посмотреть сообщение
тип var говорит от том что переменная объявлена глобально, т.е. может быть использована как в теле функции так и за пределами её, может быть использована так и во всех функциях, одним словом глобально.
Вроде поняд, вот решил попробовать и возник еще вопрос:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
 
<head>
    <script type="text/javascript">
        function test() {
            return a - b;
        }
    </script>
</head>
 
<body>
    <script type="text/javascript">
        a = 5;
        b = 2;
        document.write(test());
    </script>
</body>
 
</html>
Выводит: 3. Переменны a и b не объявлены глобально, а функция видет переменные и всё считает...
Или я что-то неправильно понял??
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
13.12.2010, 13:17 #6
Если я правильно помню, объявления переменных равноценны в head и в body. Так что они объявлены.

Кстати, насчет var еще. Если использовать переменную без var, то scripting engine сканирует все имеющиеся скрипты на предмет того, не функции ли это. Времени может занимать достаточно много.
1
Vovan-VE
13148 / 6532 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
13.12.2010, 15:33 #7
Цитата Сообщение от Skipy Посмотреть сообщение
Если использовать переменную без var, то scripting engine сканирует все имеющиеся скрипты на предмет того, не функции ли это.
Да все скрипты выполняются в едином глобальном контексте в порядке упоминания в коде страницы. Только "компилируются" каждый по отдельности.
0
Mysterious Light
Эксперт по математике/физике
3927 / 1906 / 379
Регистрация: 19.07.2009
Сообщений: 2,915
Записей в блоге: 21
13.12.2010, 15:48 #8
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Да все скрипты выполняются в едином глобальном контексте в порядке упоминания в коде страницы. Только "компилируются" каждый по отдельности.
Разве скрипты компилируются? Я думал, они интерпретируются без предварительной компиляции, хотя это, должно быть, зависит от конкретной программы, исполняющей скрипт.
0
Crudelis
Шаровик затейник
679 / 428 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
13.12.2010, 15:57 #9
Mysterious Light, скрипт компилируется на сервере, к клиенту уже приходит интерпритированный код
0
Артем Д.
45 / 45 / 10
Регистрация: 08.12.2010
Сообщений: 104
13.12.2010, 16:01 #10
Хотя это и не требуется, но декларация переменных перед их использованием является хорошей практикой. Вы можете это сделать с помощью слова var. Вы должны использовать var, когда объявляете переменные, которые являются локальными для функции. Локальные переменные – это те, которые находятся внутри функции. Во всех других случаях использование var для декларации переменных перед их применением является лишь рекомендуемой практикой.
Если переменную объявить вне функции, она становится глобальной, если в самой функции, будет локальной.
1
Vovan-VE
13148 / 6532 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
13.12.2010, 16:26 #11
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Разве скрипты компилируются? Я думал, они интерпретируются без предварительной компиляции
Скрипт на JavaScript'е сначала транслируется в байт-код, а только потом этот байт-код выполняется. Если в коде ошибка синтаксиса, то ни о каком выполнении речи быть не может.
HTML5
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
var foo = 42;
</script>
<script type="text/javascript">
var foo = 'test'; * -} ошибка синтаксиса
</script>
<script type="text/javascript">
alert([typeof foo, foo]);
</script>
Цитата Сообщение от Crudelis Посмотреть сообщение
скрипт компилируется на сервере, к клиенту уже приходит интерпритированный код
Речь о JavaScript'е.
0
Pafos
96 / 96 / 17
Регистрация: 18.10.2009
Сообщений: 453
13.12.2010, 16:30  [ТС] #12
Цитата Сообщение от Skipy Посмотреть сообщение
Если я правильно помню, объявления переменных равноценны в head и в body. Так что они объявлены.
Переместил функцию в <body></body> - результат тот же!

Цитата Сообщение от Артем Д. Посмотреть сообщение
Хотя это и не требуется, но декларация переменных перед их использованием является хорошей практикой. Вы можете это сделать с помощью слова var. Вы должны использовать var, когда объявляете переменные, которые являются локальными для функции. Локальные переменные – это те, которые находятся внутри функции. Во всех других случаях использование var для декларации переменных перед их применением является лишь рекомендуемой практикой.
Если переменную объявить вне функции, она становится глобальной, если в самой функции, будет локальной.
То есть var прописывать не обязательно?
Кстати на счет:
Цитата Сообщение от Артем Д. Посмотреть сообщение
Вы должны использовать var, когда объявляете переменные, которые являются локальными для функции.
Javascript
1
2
3
4
5
6
7
8
9
10
11
  <script type="text/javascript">
 
      function test() {
          a = 5;
          b = 2;
          return a - b;
      }
 
      document.write(test()); // 3
 
  </script>
var не прописал - и работает...
0
Артем Д.
45 / 45 / 10
Регистрация: 08.12.2010
Сообщений: 104
13.12.2010, 16:33 #13
Цитата Сообщение от Pafos Посмотреть сообщение
Переместил функцию в <body></body> - результат тот же!


То есть var прописывать не обязательно?
Кстати на счет:

Javascript
1
2
3
4
5
6
7
8
9
10
11
  <script type="text/javascript">
 
      function test() {
          a = 5;
          b = 2;
          return a - b;
      }
 
      document.write(test()); // 3
 
  </script>
var не прописал - и работает...
Да, работать будет, не обязательно указывать VAR, но правильнее будет указывая VAR. =)
Если Вы не хотите, чтобы они попали в глобальную (или уровнем выше) область видимости, то нужно указывать VAR.
1
Vovan-VE
13148 / 6532 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
13.12.2010, 16:38 #14
Pafos, Например
Javascript
1
2
3
4
5
6
7
8
9
10
function test() {
    a = 7 - 5;
    alert('7-5 = ' + a);
}
 
var a = 10;
b = 7;
test();
c = a - b;
alert('10 - 7 = ' + c); // опа! О_о Откуда -5?
Вот что бывает с теми, кто не читает документации.
2
Артем Д.
45 / 45 / 10
Регистрация: 08.12.2010
Сообщений: 104
13.12.2010, 16:44 #15
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Pafos, Например
Javascript
1
2
3
4
5
6
7
8
9
10
function test() {
    a = 7 - 5;
    alert('7-5 = ' + a);
}
 
var a = 10;
b = 7;
test();
c = a - b;
alert('10 - 7 = ' + c); // опа! О_о Откуда -5?
Вот что бывает с теми, кто не читает документации.
Вот, вот... Совершенно верно. =)
0
Pafos
96 / 96 / 17
Регистрация: 18.10.2009
Сообщений: 453
13.12.2010, 16:53  [ТС] #16
Vovan-VE, отличный пример! Теперь окончательно всё понятно!

----------

Цитата Сообщение от Vovan-VE Посмотреть сообщение
Вот что бывает с теми, кто не читает документации.
Я как только вопрос задавал, упомянул:
Начал изучать javascript
Так, что не сердись!

----------

Всем большое спасибо, кто помог разобраться!
2
13.12.2010, 16:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 16:53
Привет! Вот еще темы с решениями:

Выполнение Javascript файла в котором присутствуют javascript теги
text1.js &lt;link...

Как перезагрузить javascript, javascript-ом?
как с помощью javascript перезагрузить javascript ? Смысл в том что один из...

Javascript (codeacademy - "'WHILE' LOOPS IN JAVASCRIPT(Dragon Slayer!)")
Пожалуйста, помогите прочитать этот код!!! var slaying = true; // A bit of...

Как с JavaScript переместить в переменные результат SQL-запроса?
Срочно нужна помощь! Как с JavaScript переместить в переменные результат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru