Parametri zunanje in notranje funkcije v JavaScript

Naj naredimo tako, da tako zunanja funkcija kot notranja sprejemata parametre:

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

Posredujmo parameter zunanje funkcije v klic notranje funkcije:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // izpiše 1
  }
  
  func(num); //!! podajamo parameter
}

test(1); // podajamo parameter število

Izkazalo se je, da bo v notranji funkciji dostopna spremenljivka num kot zunanja spremenljivka iz nadrejene funkcije in spremenljivka localNum, ki je lokalna spremenljivka notranje funkcije.

Obe ti spremenljivki bosta imeli enaki vrednosti:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // izpiše 1
    console.log(localNum); // izpiše 1
  }
  
  func(num);
}

test(1);

Razlika med njima bo v naslednjem: če v notranji funkciji spremenimo spremenljivko num - se bo spremenila tudi v zunanji funkciji:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // spreminjamo spremenljivko num
  }
  
  func(num);   // podajamo parameter
  console.log(num);  // izpiše 2
}

test(1); // podajamo parameter število

Spremenljivka localNum pa bo lokalna. Njenih sprememb ne bo povzročilo nobenih sprememb v zunanji funkciji. Pa tudi sama spremenljivka localNum ne bo vidna zunaj notranje funkcije:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // spreminjamo spremenljivko num
  }
  
  func(num); // podajamo parameter
}

test(1); // podajamo parameter število
Задание 1

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

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

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

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

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

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

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

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

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

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

Določite, brez zaganjanja kode, kaj se bo izpisalo v konzolo:

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

test(1);