JavaScriptにおける関数内の同名変数

関数の外部と内部の両方に変数 numが存在する場合、ローカル変数 numへの変更はグローバル変数 numに全く影響を与えません:

javascriptlet num = 1; // グローバル変数

function func() {
  let num = 2; // ローカル変数
  console.log(num);
}
func(); // 関数を呼び出し、2を出力

console.log(num); // 1を出力 - グローバル変数は変更されていない

しかし、ローカル変数 numをletで宣言するのを忘れた場合、 関数内部ではローカル変数numは作成されず、 単にグローバル変数が変更されます:

javascriptlet num = 1;

function func() {
  num = 2; // letを書くのを忘れた - 外部変数を変更中
  console.log(num);
}
func(); // 関数を呼び出し、2を出力

console.log(num); // 2を出力 - 変数が変更された

ここでは2つの状況が考えられます: 本当にグローバル変数を 変更したかった場合(それなら問題ありません)、または letを忘れて誤ってグローバル変数を 変更してしまった場合です。

2番目のケースはスクリプトの予期せぬ動作を引き起こす、 発見しにくいエラーです。 したがって、新しい変数を作成する際は常に letで宣言してください。

Задание 1

コードを実行せずに、コンソールに何が出力されるか 決定してください:

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

コードを実行せずに、コンソールに何が出力されるか 決定してください:

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);