Как мне настроить «var count», чтобы он был инициализирован в первый раз, а затем увеличен? - PullRequest
0 голосов
/ 12 ноября 2011

Я пытался this :

var count;

function testCount ()
{
  if (count)
  {
    alert("count is: " + count);
    count++;
  }    
  else
  {    
    alert("count is: " + count);
    var count = 0;
  }
};

testCount();

, но он всегда дает "undefined", и значение count не обновляется, когда я снова запускаю его в jsfiddle.

Ответы [ 4 ]

2 голосов
/ 12 ноября 2011

Просто инициализируйте его при объявлении:

var count = 0;

И не объявляйте секунду count в вашем else.Это совершенно отдельная переменная.

Проблема в вашем коде состоит в том, что count в блоке else отличается от того, который вы объявили в глобальной области видимости.Это происходит потому, что вы определяете новую переменную с тем же именем, используя var count = 0; в предложении else, которое не будет ссылаться на переменную count, объявленную вне функции.

Если вы удалитеvar с вашим else, все будет работать так, как вы ожидаете:

var count;

function testCount ()
{
  if (count)
  {
    alert("count is: " + count);
    count++;
  }    
  else
  {    
    alert("count is: " + count);
    count = 0;
  }
};

testCount();

Однако, если вы снова позвоните testCount, if оценивается в false, как 0 это значение "falsey" в Javascript.

1 голос
/ 12 ноября 2011

Это проблема переменной области видимости.

Когда вы вне функции, вы определяете переменную, эта переменная является глобальной.Другими словами, когда вы делаете:

var count;

Вы объявляете счетчик, и вы можете использовать его везде.

Теперь в функции, когда вы объявляете счетчик, как показано ниже:

function testCount ()
{
    ...
    alert("count is: " + count);
    var count = 0;
    ...
};

вы объявляете новую переменную, область которой находится в функции, и инициализируете ее с 0. Однако вы хотите изменить значение глобальной переменной.Итак, просто сделайте это:

function testCount ()
{
    ...
    alert("count is: " + count);
    count = 0;
    ...
};

Обратите внимание, что я удалил ключевое слово var .

Теперь, чтобы упростить всю программу, я предлагаю вам:

var count = 0;

function testCount ()
{
    alert("count is: " + count);
    count++;
};
  • инициализация выполняется с объявлением
  • , поэтому вам не нужнобеспокоиться об инициализации внутри testCount
  • ваш код светлее
1 голос
/ 12 ноября 2011

Похоже, никто не показал простую реализацию testCount().Просто инициализируйте его после объявления, а затем просто используйте в своей функции:

var count = 0;

function testCount ()
{
    alert("count is: " + count);
    count++;
}

testCount();
1 голос
/ 12 ноября 2011

Предполагая, что вы не можете просто

var count = 0;

Вы можете обнаружить отсутствие заданного значения с помощью;

if (typeof count === 'undefined')
   count = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...