私の簡単なテストプログラムは、数値を正しく加算したり減算したりします。しかし、グローバル変数counter
をローカル変数に変換したいと思います。私は論理的にこれを行う方法を見ることができず、プログラムを実行し続けます。 counter
は、addNumber
またはsubtractNumber
クロージャからのみアクセスできるように配置する方法はありますか?本当にありがとう!変数をグローバル変数からローカル変数に移動する方法
'use strict';
\t
var counter;
counter = 0;
\t
document.getElementsByClassName('box')[0].addEventListener('click', addNumber);
document.getElementsByClassName('box')[1].addEventListener('click', subtractNumber);
document.getElementsByClassName('box_answer')[0].textContent = 'The answer is ' +counter;
function calculateNumber(x) {
counter += x;
displayNumber();
}
\t
function displayNumber() {
document.getElementsByClassName('box_answer')[0].textContent = 'The answer is ' +counter;
}
\t
function addNumber() {
calculateNumber(1); \t \t
}
\t
function subtractNumber() {
calculateNumber(-1); \t
}
body {
margin: 0;
padding: 0;
font-size: 2rem;
font-family: sans-serif;
}
\t
.box {
margin-bottom: 20px;
padding: 10px;
color: white;
background-color: blue;
}
.box_answer {
padding: 10px;
background-color: orange;
}
<div class="box">addNumber</div>
<div class="box">subtractNumber</div>
<div class="box_answer"></div>
あなたは 'addNumber'と' substractNumber'がグローバルままにしますか?またはあなたもそれらを隠したいですか? –
'addNumber'と' subtractNumber'は、 'addEventListener'によって呼び出されているので、グローバルに残ることができます。ありがとう! – DR01D
イベントリスナーだけで呼び出された場合は、そのイベントリスナーも非表示にできます(IIFEの場合)。あるいは、彼らはどこか他の人から呼び出されています(彼らはグローバルでなければなりません)? –