იგივე სახელის მქონე ცვლადები ფუნქციებში JavaScript-ში
დაე, ფუნქციის გარეთაც და შიგნითაც იყოს ცვლადი
num. ამ შემთხვევაში, ნებისმიერი ცვლილება
ლოკალურ ცვლადთან num არ ახდენს გავლენას
გლობალურ ცვლადზე num:
let num = 1; // გლობალური ცვლადი
function func() {
let num = 2; // ლოკალური ცვლადი
console.log(num);
}
func(); // ვიძახებთ ფუნქციას, გამოიტანს 2-ს
console.log(num); // გამოიტანს 1-ს - გლობალური ცვლადი არ შეცვლილა
მაგრამ, თუ დაგვავიწყდება ლოკალური ცვლადის
num გამოცხადება let-ის მეშვეობით,
მაშინ ფუნქციის შიგნით არ შეიქმნება ლოკალური ცვლადი num,
არამედ უბრალოდ შეიცვლება გლობალური ცვლადი:
let num = 1;
function func() {
num = 2; // დაგვავიწყდა let-ის დაწერა - ვცვლით გარე ცვლადს
console.log(num);
}
func(); // ვიძახებთ ფუნქციას, გამოიტანს 2-ს
console.log(num); // გამოიტანს 2-ს - ცვლადი შეიცვალა
აქ ორი სიტუაცია შეიძლება იყოს: ან ჩვენ ნამდვილად
გვინდოდა გლობალური ცვლადის შეცვლა (მაშინ
ყველაფერი კარგადაა), ან დაგვავიწყდა let და შემთხვევით
შევცვალეთ გლობალური ცვლადი.
მეორე შემთხვევა არის ძნელად აღმოსაჩენი შეცდომა,
რომელიც იწვევს სკრიპტის არაპროგნოზირებად ქცევას.
ამიტომ ყოველთვის, ახალი ცვლადის შემოღებისას გამოაცხადეთ
იგი let-ის მეშვეობით.
განსაზღვრეთ, კოდის გაშვების გარეშე, რა გამოიტანს კონსოლში:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
განსაზღვრეთ, კოდის გაშვების გარეშე, რა გამოიტანს კონსოლში:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);