გარე და შიდა ფუნქციების პარამეტრები 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);