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 - 16:35
#permalink

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

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

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


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

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


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

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


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

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


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

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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

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

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

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

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

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


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

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


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

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


Автор: Гость (не зарегистрирован), дата: 15 апреля, 2015 - 14: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 - 12:30
#permalink

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

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

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


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

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

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

var y = 2;

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


Автор: Гость (не зарегистрирован), дата: 24 мая, 2015 - 18: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 - 12:32
#permalink

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


Автор: Гость (не зарегистрирован), дата: 17 июля, 2015 - 20: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 - 14:14
#permalink

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

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

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

counter=counter+1;

или

counter+=1;

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


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
16 + 3 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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