JavaScriptにおける同名パラメータ

ここで、外側の関数と内側の関数が 同名のパラメータを持つ場合を考えます:

javascriptfunction test(num) {
  function func(num) {
    console.log(num); // 1を出力
  }
  
  func(num);
};

test(1);

この場合、内側の関数内にはローカル変数 numが存在します。内側の関数でこれを変更しても、 外側の変数numにはまったく影響しません:

javascriptfunction test(num) {
  function func(num) {
    num = 2; // ローカル変数numを変更
  }
  
  func(num);
  console.log(num); // 1を出力 - 何も変わっていない
}

test(1);

つまり、内側の関数は外側の変数numに アクセスして変更することができません:

javascriptfunction test(num) {
  function func(num) {
    // ここでは外側の変数numにアクセスできない
  }
  
  func(num);
}
test(1);
Задание 1

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  func(num);
}

test(1);
Задание 2

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

javascriptfunction test(num) {
  function func(num) {
    num = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);
Задание 3

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  num = 2;
  func(num);
}

test(1);
Задание 4

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  func(num);
  num = 2;
}

test(1);