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);