Я читал некоторые сообщения здесь, используя ключевое слово var
при определении новой переменной. В сообщениях упоминалось, как использование var
внутри функции создает переменную с локальной областью, тогда как не используя ключевое слово var
, создается переменная с глобальной областью. Большинство сообщений рекомендуют всегда использовать var
. У меня есть несколько вопросов:Использование ключевого слова var при определении переменной в Javascript
Я учусь JS, и я пытаюсь написать скрипт, который подсчитывает, сколько раз кнопка была нажата (см ниже код). Если в
else
часть функцииtotalClicks
я используюvar numclicks = 1;
, то код ниже не работает. Если я опускаю ключевое словоvar
, он работает. Это потому, что для работы кодаnumclicks
должна быть глобальной переменной или есть какая-то другая причина? Является ли это исключением из правила, чтоvar
всегда должен использоваться, или есть другой способ запрограммировать это.При первом нажатии кнопки выход
NaN
. Мне непонятно, почему это не 1? Следуя логике кода, кажется, что переменная установлена в 1 до ее записи в документ. Я знаю, что эта проблема будет решена, если я добавлюnumclick = 0;
перед оператором функции. Но мне непонятно, почему это решает проблему.
Большое спасибо за помощь.
КОД
<html>
<head>
<title>Count number of clicks</title>
</head>
<body>
<form>
<input type="button" value="click here" onclick="totalClicks();">
</form>
Total clicks: <span id="numclicks"></span>
<script type="text/javascript">
function totalClicks(){
if (window.numclicks) {
numclicks++;
}
else {
numclicks = 1;
}
document.getElementById("numclicks").innerHTML = numclicks;
}
</script>
</body>
</html
Слава дает полный ответ на руду, но для вашей информации Javascript имеет довольно сумасшедшую концепцию подъема. Как только вы это понимаете, это действительно просто, пока вы не делаете что-то похожее на битзарр. Вот очень короткая и простая статья: http: // elegantcode.com/2010/12/24/basic-javascript-part-5-hoisting/ –
@George Mauer Мне нравится веб-дизайн этого сайта :) – ajax333221
@ George - Спасибо за ссылку. Я проверил статью, но все еще неясно. Автор говорит: «Но область функций означает, что все переменные и параметры, объявленные внутри функции, видимы всюду внутри этой функции, даже до того, как была объявлена переменная». Если они видны повсюду, почему первый вывод 'undefined''. Что означает «видимый везде»? – Curious2learn