ცვლადების ხილვადობის არეს ნიუანსები if-else კონსტრუქციებში JavaScript-ში
ცვლადების ხილვადობის არეს აქვს გარკვეული
ნიუანსი. მოდით განვიხილოთ ის მაგალითზე.
მოდით გარეთ განვაცხადოთ ჩვენი პირობის ცვლადი
res ერთი მნიშვნელობით, ხოლო შიგნით
პირობის შევცვალოთ ეს მნიშვნელობა სხვაზე:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // გამოიტანს 2-ს
როგორც ხედავთ, ცვლადმა res შეიცვალა
პირობის შიგნით. თუმცა, ყველაფერი შეიცვლება,
თუ პირობის შიგნით ასევე გამოვაცხადებთ ცვლადს
res let-ის მეშვეობით:
let res = 1;
if (true) {
let res = 2; // გამოვაცხადოთ ცვლადი let-ის მეშვეობით
}
console.log(res); // გამოიტანს 1-ს, და არა 2-ს!
აქ მთელი საქმე იმაშია, რომ ცვლადის გამოცხადებამ
let-ის მეშვეობით პირობის შიგნით შექმნა ლოკალური
ცვლადი res.
ანუ პირობის შიგნით არსებობს ერთი ცვლადი
res, ხოლო პირობის გარეთ - მეორე.
ამის დანახვა შესაძლებელია ცვლადის მნიშვნელობის
კონსოლში გამოტანით პირობის შიგნით:
let res = 1;
if (true) {
let res = 2;
console.log(res); // გამოიტანს 2-ს
}
console.log(res); // გამოიტანს 1-ს
ქვემოთ მოცემული კოდის ავტორს სურდა შეესრულებინა
ასაკის შემოწმება 18
წლის მიღწევაზე. თუმცა, კოდი ნებისმიერი ასაკის მნიშვნელობაზე
აბეჭდინებს კონსოლში მნიშვნელობას undefined.
გამასწორეთ კოდის ავტორის შეცდომა. აი პრობლემური კოდი:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
ქვემოთ მოცემული კოდის ავტორს სურდა შეესრულებინა
ასაკის შემოწმება 18
წლის მიღწევაზე. კოდის შემოწმების შემდეგ აღმოჩნდა, რომ თუ
ასაკი ტოლია ან მეტია 18 წელზე, მაშინ
ცვლადში adult იწერება true,
როგორც ეს უნდა იყოს, თუმცა, თუ ასაკი ნაკლებია
18-ზე, მაშინ ცვლადს adult აქვს
მნიშვნელობა undefined. გამასწორეთ კოდის ავტორის შეცდომა.
აი პრობლემური კოდი:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
ქვემოთ მოცემული კოდის ავტორს სურდა შეესრულებინა
ასაკის შემოწმება. თუმცა, კოდი ნებისმიერ
ასაკის მნიშვნელობაზე აბეჭდინებს კონსოლში მნიშვნელობას
undefined. გამასწორეთ კოდის ავტორის შეცდომა.
აი პრობლემური კოდი:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18-დან 23-მდე';
} else {
let res = '23-ზე მეტი';
}
} else {
let res = '18-ზე ნაკლები';
}
console.log(res);
ქვემოთ მოცემული კოდის ავტორს სურდა შეესრულებინა
ასაკის შემოწმება. თუმცა, კოდი ასაკის მნიშვნელობაზე,
რომელიც მეტია 18 წელზე, აბეჭდინებს
კონსოლში მნიშვნელობას undefined. გამასწორეთ
კოდის ავტორის შეცდომა.
აი პრობლემური კოდი:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18-დან 23-მდე';
} else {
res = '23-ზე მეტი';
}
} else {
res = '18-ზე ნაკლები';
}
console.log(res);