Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что я сделал не так?

Егор Верховец Ученик (188), на голосовании 1 год назад
я написал код на javascript
 var counter = 0; 
function function1() {
var counter = parseInt(counter) + 1;
alert(parseInt(counter));
}
и когда я выполняю функцию, оно выводит NaN(не число)
Голосование за лучший ответ
f f Знаток (296) 1 год назад
програмисты...
Егор ВерховецУченик (188) 1 год назад
да, я слишком тупой для такого
f f Знаток (296) Егор Верховец, я имею ввиду что я просто афигел програмисты
Noname Просветленный (23564) 1 год назад
Язык! Ты неправильно выбрал язык!
Егор ВерховецУченик (188) 1 год назад
а что тут не так?
Алексей Белянин Гуру (2972) 1 год назад
 var counter = 0;  
function function1() {
counter++;
alert(counter);
}
Павел Просветленный (25631) 1 год назад
Проблема здесь:
 var counter = parseInt(counter) + 1;  
Если ты внутри функции объявляешь переменную которая уже ранее объявлена в глобальной области, то функция теряет доступ к переменной в глобальной области. Поэтому "counter" который передается в parseInt не имеет значения (равен undefined).
Во вторых, нет смысла использовать parseInt, так как counter и так является числом. parseInt для строк.
Егор ВерховецУченик (188) 1 год назад
parseInt ничего не менял, как оно не было числом, так и не стало числом, а так уже нашли проблему(в этой же строке надо было
 counter++; 
использовать)
Павел Просветленный (25631) Егор Верховец, я знаю как надо было. Нет необходимости мне это объяснять. Я тебе описал проблему твоего кода. Читай внимательнее.
Яков Гото Искусственный Интеллект (321008) 1 год назад
Замени бесполезный parseInt на простой + перед числом. Плюс заканчивай использовать var, которые давно устарели, и вместе с этим объявлять одинаковые переменные в глобальной и локальной областях.
 let counter = 0;  

function function1() {
counter = +counter + 1;
counter += 1; // В целом можно сократить
alert(+counter);
}
Получишь то же самое.
Похожие вопросы