Параметрҳои функсияи беруна ва дохилӣ дар JavaScript

Биёед тавре созем, ки ҳам функсияи беруна ва ҳам дохилӣ параметр қабул кунанд:

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

Параметрро аз функсияи беруна ба даъвати функсияи дохилӣ мегузаронем:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // 1-ро мебарорад
  }
  
  func(num); //!! параметрро мегузаронем
}

test(1); // параметрро ба адад мегузаронем

Малим мешавад, ки дар функсияи дохилӣ тағйирёбандаи num ҳамчун тағйирёбандаи беруна аз функсияи волидайн ва тағйирёбандаи localNum, ки тағйирёбандаи маҳаллии функсияи дохилӣ мебошад, дастрас хоҳад буд.

Ҳарду ин тағйирёбандаҳо қимати якхела доранд:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // 1-ро мебарорад
    console.log(localNum); // 1-ро мебарорад
  }
  
  func(num);
}

test(1);

Фарқи байни онҳо дар он хоҳад буд: агар дар функсияи дохилӣ тағйирёбандаи num тағйир дода шавад - он дар функсияи беруна ҳам тағйир хоҳад ёфт:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // тағйирёбандаи num-ро тағйир медиҳем
  }
  
  func(num);   // параметрро мегузаронем
  console.log(num);  // 2-ро мебарорад
}

test(1); // параметрро ба адад мегузаронем

Ва тағйирёбандаи localNum маҳаллӣ хоҳад буд. Тағйироти он ба ягон тағйирот дар функсияи беруна намеояд. Ва худи тағйирёбандаи localNum аз беруни функсияи дохилӣ намоён нахоҳад буд:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // тағйирёбандаи num-ро тағйир медиҳем
  }
  
  func(num); // параметрро мегузаронем
}

test(1); // параметрро ба адад мегузаронем
Задание 1

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

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

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

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

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

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

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

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

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

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

Муайян кунед, ки кодро наоғоз карда, чӣ ба консол бароварда мешавад:

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

test(1);