JavaScriptにおける名前とパラメータの衝突
関数のパラメータは、その内部でローカル変数となります。 関数のパラメータを、外部のグローバル変数と同じ名前で定義してみましょう:
function func(num) {
console.log(num);
}
let num = 1;
func(num);
この場合、関数の外側には変数 num が、
関数の内側にも変数 num があることになります。
しかし、これらは異なる変数です:関数内で変数を変更すると、
その関数のローカル変数が変更されます。
外部の変数は関数内からはアクセスできず、いかなる方法でも
変更することはできません。確認してみましょう:
function func(num) {
num = 2; // ローカル変数を変更
}
let num = 1;
func(num);
console.log(num); // 1 が表示される - 何も変わっていない
コードを実行せずに、コンソールに何が表示されるか 判断してください:
function func(num) {
num = 2;
}
let num = 1;
func(num);
console.log(num);
コードを実行せずに、コンソールに何が表示されるか 判断してください:
function func() {
num = 2;
}
let num = 1;
func();
console.log(num);
コードを実行せずに、コンソールに何が表示されるか 判断してください:
function func() {
let num = 2;
}
let num = 1;
func();
console.log(num);