JavaScriptにおける関数内の同名変数
関数の外部と内部の両方に変数
numが存在する場合、ローカル変数
numへの変更はグローバル変数
numに全く影響を与えません:
let num = 1; // グローバル変数
function func() {
let num = 2; // ローカル変数
console.log(num);
}
func(); // 関数を呼び出し、2を出力
console.log(num); // 1を出力 - グローバル変数は変更されていない
しかし、ローカル変数
numをletで宣言するのを忘れた場合、
関数内部ではローカル変数numは作成されず、
単にグローバル変数が変更されます:
let num = 1;
function func() {
num = 2; // letを書くのを忘れた - 外部変数を変更中
console.log(num);
}
func(); // 関数を呼び出し、2を出力
console.log(num); // 2を出力 - 変数が変更された
ここでは2つの状況が考えられます: 本当にグローバル変数を
変更したかった場合(それなら問題ありません)、または
letを忘れて誤ってグローバル変数を
変更してしまった場合です。
2番目のケースはスクリプトの予期せぬ動作を引き起こす、
発見しにくいエラーです。
したがって、新しい変数を作成する際は常に
letで宣言してください。
コードを実行せずに、コンソールに何が出力されるか 決定してください:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
コードを実行せずに、コンソールに何が出力されるか 決定してください:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);