Параметры внешней и внутренней функций в JavaScript
Давайте сделаем так, чтобы и внешняя функция и внутренняя принимали параметры:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
Передадим параметр внешней функции в вызов внутренней функции:
function test(num) {
function func(localNum) {
console.log(localNum); // выведет 1
}
func(num); //!! передаем параметр
}
test(1); // передаем параметром число
Получается, что во внутренней функции будет
доступна переменная num
как внешняя
переменная из родительской функции и переменная
localNum
, являющаяся локальной переменной
внутренней функции.
Обе эти переменные будут иметь одинаковые значения:
function test(num) {
function func(localNum) {
console.log(num); // выведет 1
console.log(localNum); // выведет 1
}
func(num);
}
test(1);
Разница между ними будет в следующем: если
во внутренней функции изменить переменную
num
- она поменяется и во внешней функции:
function test(num) {
function func(localNum) {
num = 2; // меняем переменную num
}
func(num); // передаем параметр
console.log(num); // выведет 2
}
test(1); // передаем параметром число
А переменная localNum
будет локальной.
Ее изменения не будут приводить ни к каким
изменениям во внешней функции. Да и сама
переменная localNum
не будет видна
снаружи внутренней функции:
function test(num) {
function func(localNum) {
localNum = 2; // меняем переменную num
}
func(num); // передаем параметр
}
test(1); // передаем параметром число
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
Определите, не запуская код, что выведется в консоль:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);