JavaScriptにおけるグローバル変数と関数のパラメータ
数値をパラメータとして受け取る関数があるとします:
function func(localNum) {
console.log(localNum);
}
関数の外側に変数 num があるとします:
function func(localNum) {
console.log(localNum);
}
let num = 1; // 外部のグローバル変数
変数 num をパラメータとして関数を呼び出してみましょう:
function func(localNum) {
console.log(localNum);
}
let num = 1;
func(num); // パラメータを指定して関数を呼び出す、1が出力される
関数内では、変数 localNum (関数のパラメータ) と
変数 num (外部変数として) の両方が利用可能になります:
function func(localNum) {
console.log(num); // 1を出力
console.log(localNum); // 1を出力
}
let num = 1;
func(num);
変数 localNum 自体は関数のローカル変数であり、外部からはアクセスできません:
function func(localNum) {
}
let num = 1;
func(num); // パラメータを指定して関数を呼び出す
console.log(localNum); // エラーが発生する
localNum 変数はローカルなので、
その内部での変更は外部に影響を与えません:
function func(localNum) {
localNum = 2; // 外部には何も変更しない
}
let num = 1;
func(num);
一方、内部で変数 num (グローバル) を変更すると、
その変更は外部にも反映されます:
function func(localNum) {
num = 2;
}
let num = 1;
func(num);
console.log(num); // 2を出力
しかし、関数内部で let を使用して変数 num を宣言すると、
そのようにして外部変数に影響を与えないローカル変数 num が作成されます:
function func(localNum) {
let num = 2; // letで宣言する
}
let num = 1;
func(num);
console.log(num); // 1を出力 - 何も変わっていない
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
console.log(localNum);
}
func(1);
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
console.log(localNum);
}
let num = 1;
func(num);
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
console.log(localNum);
}
let num = 1;
func(num);
num = 2;
コードを実行せずに、コンソールに何が出力されるか判断してください:
let num = 1;
function func(localNum) {
console.log(localNum);
}
num = 2;
func(num);
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
localNum = 2;
}
let num = 1;
func(num);
console.log(num);
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
num = 2;
}
let num = 1;
func(num);
console.log(num);
コードを実行せずに、コンソールに何が出力されるか判断してください:
function func(localNum) {
let num = 2;
}
let num = 1;
func(num);
console.log(num);