Пусть у нас есть функция, принимающая параметром число:
function func(localNum) {
alert(localNum);
}
Пусть снаружи функции есть переменная num
:
function func(localNum) {
alert(localNum);
}
let num = 1; // внешняя глобальная переменная
Давайте вызовем нашу функцию, передав ей
параметром переменную num
:
function func(localNum) {
alert(localNum);
}
let num = 1;
func(num); // вызываем функцию с параметром, выведет 1
Получится, что внутри функции будет доступна
как переменная localNum
(параметр
функции), так и переменная num
(как
внешняя переменная):
function func(localNum) {
alert(num); // выведет 1
alert(localNum); // выведет 1
}
let num = 1;
func(num);
Сама переменная localNum
будет локальной
переменной функции и не будет доступна извне:
function func(localNum) {
}
let num = 1;
func(num); // вызываем функцию с параметром
alert(localNum); //!! выдаст ошибку
Так как переменная localNum
- локальная,
то никакие изменения с ней ничего не поменяют
снаружи:
function func(localNum) {
localNum = 2; // ничего не меняет снаружи
}
let num = 1;
func(num);
Если же поменять внутри переменную num
(глобальную), то изменения появятся и снаружи:
function func(localNum) {
num = 2;
}
let num = 1;
func(num);
alert(num); // выведет 2
Однако, если внутри функции объявить переменную
переменную num
через let
, то
мы создадим таким образом локальную переменную
num
, никак не влияющую на внешнюю
переменную:
function func(localNum) {
let num = 2; // объявим через let
}
let num = 1;
func(num);
alert(num); // выведет 1 - ничего не поменялось
Определите, не запуская код, что выведется на экран:
function func(localNum) {
alert(localNum);
}
func(1);
Определите, не запуская код, что выведется на экран:
function func(localNum) {
alert(localNum);
}
let num = 1;
func(num);
Определите, не запуская код, что выведется на экран:
function func(localNum) {
alert(localNum);
}
let num = 1;
func(num);
num = 2;
Определите, не запуская код, что выведется на экран:
let num = 1;
function func(localNum) {
alert(localNum);
}
num = 2;
func(num);
Определите, не запуская код, что выведется на экран:
function func(localNum) {
localNum = 2;
}
let num = 1;
func(num);
alert(num);
Определите, не запуская код, что выведется на экран:
function func(localNum) {
num = 2;
}
let num = 1;
func(num);
alert(num);
Определите, не запуская код, что выведется на экран:
function func(localNum) {
let num = 2;
}
let num = 1;
func(num);
alert(num);
Одноименные параметры
Как мы уже выяснили, параметры функции являются локальными переменными внутри нее.
Давайте назовем параметр функции таким же именем, как и внешнюю глобальную переменную:
function func(num) {
alert(num);
}
let num = 1;
func(num);
В данном случае у нас получится так, что
снаружи функции будет переменная num
и внутри функции будет переменная num
.
Но это будут разные переменные! Изменение
переменной num
внутри функции будет
приводить к изменению локальной переменной
функции:
function func(num) {
num = 2; // меняем локальную переменную
}
let num = 1;
func(num);
alert(num); // выведет 1 - ничего не поменялось
А внешняя переменная num
внутри функции
будет недоступна и не сможет быть изменена
никаким способом.
Определите, не запуская код, что выведется на экран:
function func(num) {
num = 2;
}
let num = 1;
func(num);
alert(num);
Определите, не запуская код, что выведется на экран:
function func() {
num = 2;
}
let num = 1;
func();
alert(num);
Определите, не запуская код, что выведется на экран:
function func() {
let num = 2;
}
let num = 1;
func();
alert(num);