Javascript.RU

var

Объявить переменную (или несколько) в текущей области видимости

Синтаксис

var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];

Аргументы

varnameN
Имя для переменной
valueN
Начальное значение переменной, любое выражение

Описание, примеры

Область видимости переменной - текущая функция. Если переменная объявлена вне функции, то ее область видимости - глобальный объект window.

Здесь javascript похож на традиционные языки программирования

var a = 5
function go() {
  var a = 6
}

go()  // значение внешней переменной a не меняется

В отличие от большинства языков, javascript блок не задает область видимости.

var i = 5
{
  var i
  i = 6
}
alert(i) // значение i поменялось

Переменная внешней функции видна во внутренней, благодаря наличию замыканий.

var num_hits = 0, cust_no = 0
var t

См. также


Автор: Мараторий, дата: 28 января, 2010 - 15:35
#permalink

А почему следующая конструкция выдает синтаксическую ошибку?

if(var a=1) alert("ура");

Почему нельзя делать объявление переменной внутри if?


Автор: Гость (не зарегистрирован), дата: 10 февраля, 2010 - 00:40
#permalink

If предполагает сравнение чего-то с чем-то, а в данном примере "=" использыется как оператор сравнения, а как оператор присваивания.


Автор: Мараторий, дата: 10 февраля, 2010 - 01:37
#permalink

По вашей логике тоже самое без var не должно работать. А это не так.


Автор: Гость (не зарегистрирован), дата: 26 сентября, 2010 - 19:27
#permalink

Операцию присвоения можно использовать как логическое выражение, вот только возвращать она всегда будет true (за некоторыми исключениями)


Автор: Sundro (не зарегистрирован), дата: 19 мая, 2011 - 11:12
#permalink

Подписываюсь под каждым словом вышестоящим словом


Автор: B@rmaley.e><e, дата: 10 февраля, 2010 - 15:25
#permalink

Скорее всего в ECMA просто недоглядели. Или хотели сделать var в for объявлением переменной только внутри цикла.

В цикле for ключевое слово var является частью инструкции, а в синтаксисе условия оно не предусмотрено. Ну и использовать инструкции там, где просят выражение недопустимо.


Автор: Гость (не зарегистрирован), дата: 3 марта, 2010 - 11:04
#permalink

Может быть причина в том, что опреатор присваивания вроде неявно вызывает функцию GetValue(...). В случае такого присваивания var a = 1 она, по-моему, должна возвращать 1. А если так {a = 1}, то эта функция возвращает булев результат. Бред, конечно, но может так оно и работает )))


Автор: B@rmaley.e><e, дата: 3 марта, 2010 - 15:20
#permalink

Или так:
Внутри for var используется при инициализации значений. Там результат вычисления возвращать не нужно, а в if'е нужно оценить результат выражения.


Автор: FreeStyler, дата: 7 ноября, 2015 - 06:29
#permalink

Ну язык значит такой, что тут поделаешь? -__-


Автор: Girevik (не зарегистрирован), дата: 4 октября, 2010 - 09:35
#permalink

Обязательно ли указывать "var" при описании переменных?


Автор: B@rmaley.e><e, дата: 4 октября, 2010 - 22:42
#permalink

Если Вы не хотите, чтобы они попали в глобальную (или уровнем выше) область видимости, то обязательно.


Автор: $SMax$, дата: 24 декабря, 2015 - 08:36
#permalink

Если объявление (глобальной) без присвоения значения, то обязательно.
Если переменная локальная - обязательно.


Автор: Гость (не зарегистрирован), дата: 10 июня, 2014 - 10:38
#permalink

Почему в данном примере в консоль выведется сообщение undefined?

var a = 1;
function f1() {
      console.log(a);
      var a = 5;
}
f1();

Автор: Гость (не зарегистрирован), дата: 29 августа, 2014 - 12:12
#permalink

убери инициализацию переменной a в теле функции (var перед a).
правильно так:

var a = 1;
function f1() {
      console.log(a);
      a = 5;
}
f1();

Автор: grinch_ho (не зарегистрирован), дата: 14 августа, 2014 - 10:52
#permalink

Почему var o = {x:7} //=>undefined ?
var x = 7 //=>undefined?
Chrome на эти инструкции возвращает undefined. Проблемы в этом нет, но просто жутко интересно, откуда оно берется.


Автор: Гость (не зарегистрирован), дата: 21 января, 2015 - 07:36
#permalink

Я думаю надо сменить на сайте фон. Он грузовой какой то. У него даже запах есть стухшего энтузиазма.


Автор: Илья Кантор, дата: 21 января, 2015 - 14:36
#permalink

Есть новый сайт с новым дизайном. Постараюсь ускорить его разработку, он в принципе почти в бете уже, только доступ по "инвайтам".


Автор: Гость (не зарегистрирован), дата: 15 апреля, 2015 - 13:25
#permalink

Добрый день подскажите пожалуйста почему вот так выводится значение переменной y

var y = 10;
 var z = 3;

function fu(z) {
    document.write(y+ "<br/>");
fu(z);

А если в функцию вставить if, то не выдает undefined, до тех пор пока мы не объявим переменную в самой функции. Почему он не берет значение переменной y из глобальной видимости?

var y = 10;
 var z = 3;


function fu(z) {
    document.write(y+ "<br/>");
    if (z>2) {
            document.write(y+ "<br/>"); 
       }
    else {
        var y = 2;
        document.write(y+ "<br/>");}
    }


fu(z);

Автор: ksa, дата: 18 ноября, 2015 - 11:30
#permalink

В первом примере не закрыта скобка у функции fu.
Вот так

var y = 10;
var z = 3;
function fu(z) {
    document.write(y+ "<br/>");
};
fu(z);

Выводит 10, как и положено...


Автор: ksa, дата: 18 ноября, 2015 - 11:29
#permalink

На второй вопрос
> Почему он не берет значение переменной y из глобальной видимости?

Отвечаю - потому, что в теле функции присутствует

var y = 2;

Т.е. свое объявление переменной y.


Автор: Гость (не зарегистрирован), дата: 24 мая, 2015 - 17:07
#permalink

Помогите пожалуйста, в java вообще не соображаю, как переменную из php поставить в замен '1 день' и 100? P.S. в коментах моя жалкая попытка.
var data = google.visualization.arrayToDataTable([
['дни', 'Сумарное время'],
['1 день', 100],
['2 день', 20],
['9 день', 20]
// [ ' var a = ' <?php echo $row['day'];?>; '',
// var b = ' <?php echo $row['total_time'];?>; ']
] );


Автор: ksa, дата: 18 ноября, 2015 - 11:32
#permalink

Это учебник по JavaScript... Про PHP ответят в другом месте.


Автор: Гость (не зарегистрирован), дата: 17 июля, 2015 - 19:55
#permalink

Заранее извиняюсь за нубские вопросы.
1) Почему в данном случае инкремент выдаёт NaN?
2) Получается, что нужно обязательно проводить инициализацию переменной, а не просто её объявление? ( var counter = 0; || var counter = new Number(); )?

var counter;
// typeof(counter) == "undefined";
counter++;
// typeof(counter) == "number";
alert(counter); // NaN

Автор: ksa, дата: 18 ноября, 2015 - 13:14
#permalink

Этот вопрос более уместен тут
http://javascript.ru/arithmetic

Но там же и написано
-------------------------
++ (Инкремент)
Увеличивает переменную, к которой применен, на единицу.
-------------------------

Делаем вывод - это сокращенная форма от

counter=counter+1;

или

counter+=1;

И с неопределенной переменной эти операции будут давать
counter is not defined


Автор: Гость (не зарегистрирован), дата: 14 июля, 2017 - 11:15
#permalink

что-то измениться если переменные объявлять без var?
т.е. есть разница между var a = "abc" и a = "abc" ?


Автор: Antoxa Goaller, дата: 11 июня, 2018 - 11:23
#permalink

Бывает js не работает при загрузке web-странички через Notepad++, но при этом точно такой же код хорошо отображается в этом конструкторе:
https://codepen.io

С чем это связано?


Автор: Гость (не зарегистрирован), дата: 1 декабря, 2018 - 13:02
#permalink

Как в js нажимая на кнопку тебя перебрасывало на рандомную гиперссылку?


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum