Js o'zgaruvchilar deklaratsiyasi. JavaScript-da o'zgaruvchilar, doiralar va o'zgaruvchilarni ko'tarish

Uy / Mobil qurilmalar

O'zgaruvchilar ko'plab dasturlash tillarining asosiy komponenti hisoblanadi; ular yangi dasturchilar uchun eng muhim tushunchalardan biridir. JavaScript-da o'zgaruvchilarning juda ko'p turli xil xususiyatlari, shuningdek, ularni nomlashda bir nechta qoidalar mavjud. JavaScript-da o'zgaruvchini e'lon qilish uchun uchta kalit so'z mavjud - var, let va const - va ularning har biri o'zgaruvchining kodda qanday talqin qilinishiga ta'sir qiladi.

Ushbu qo'llanma sizni o'zgaruvchilar bilan tanishtiradi, ularni qanday e'lon qilish va nomlashni o'rgatadi, shuningdek, var, let va const o'rtasidagi farqni tushuntiradi. Bundan tashqari, siz o'zgaruvchan yuk ko'tarish nima ekanligini va o'zgaruvchining harakatiga qanday ta'sir qilishini bilib olasiz.

O'zgaruvchilar nima

O'zgaruvchi - bu turli qiymatlarni saqlash uchun ishlatiladigan xotiraning nomlangan qismi. Bir necha marta murojaat qilish mumkin bo'lgan ma'lumot keyinchalik foydalanish yoki o'zgartirish uchun o'zgaruvchida saqlanishi mumkin. JavaScript-da o'zgaruvchi ichidagi qiymat har qanday ma'lumot turi bo'lishi mumkin, jumladan raqam, satr yoki ob'ekt.

JavaScript asoslangan ECMAScript 2015 (ES6) til spetsifikatsiyasidan oldin hozirgi paytda, o'zgaruvchini e'lon qilishning faqat bitta usuli bor edi - var kalit so'zidan foydalanish. Shuning uchun ko'pgina eski kodlar va qo'llanmalar o'zgaruvchilarni e'lon qilish uchun faqat var dan foydalanadi. Keling, var, let va const o'rtasidagi farqlarni ko'rib chiqaylik.

var kalit so'zi o'zgaruvchining o'zi tushunchasini ko'rsatishga imkon beradi. Quyidagi misolda biz o'zgaruvchini e'lon qilamiz va unga qiymat beramiz.

// Foydalanuvchi nomi identifikatoriga 8host qator qiymatini belgilang
var username = "8host_blog";

Bu ifoda bir necha qismlardan iborat:

  • var kalit so'zi yordamida o'zgaruvchini e'lon qilish;
  • O'zgaruvchining nomi (yoki identifikatori), foydalanuvchi nomi;
  • Sintaksis bilan ifodalangan tayinlash operatori =;
  • Belgilangan qiymat "8host_blog".

Endi siz kodingizda foydalanuvchi nomi o'zgaruvchisidan foydalanishingiz mumkin. JavaScript foydalanuvchi nomi 8host_blog qiymatini bildirishini eslab qoladi.

// O'zgaruvchi qiymatga teng yoki yo'qligini tekshiring
agar (foydalanuvchi nomi === "8host_blog") (
console.log(to'g'ri);
}
rost

Yuqorida aytib o'tilganidek, o'zgaruvchilar har qanday JavaScript ma'lumotlar turi bilan ifodalanishi mumkin. Ushbu misolda o'zgaruvchilar qator, raqam, ob'ekt, mantiqiy va null sifatida ifodalangan.

// Har xil o'zgaruvchilarni tayinlash
var name = "Morty";
var Spartans = 300;
var kingdoms = [ "sutemizuvchilar", "qushlar", "baliqlar" ];
var she'r = (atirgullar: "qizil", binafshalar: "ko'k" );
var muvaffaqiyat = rost;
var hech narsa = null;

console.log dan foydalanib istalgan o'zgaruvchining qiymatini ko'rishingiz mumkin:

// Spartans o'zgaruvchisini konsolga yuboring
console.log(spartans);
300

O'zgaruvchilar keyinchalik foydalanish yoki o'zgartirish mumkin bo'lgan ma'lumotlarni xotirada saqlaydi. O'zgaruvchilar ham qayta tayinlanishi va yangi qiymat berilishi mumkin. Quyidagi oddiy misol parolni o'zgaruvchida qanday saqlash va keyin yangilash mumkinligini ko'rsatadi.

// Parol o'zgaruvchisiga qiymat bering
var password = "hunter2";
// O'zgaruvchi qiymatini yangi qiymat bilan qayta tayinlash
parol = "ovchi3";
console.log (parol);
"ovchi3"

IN haqiqiy dastur Parol katta ehtimol bilan ma'lumotlar bazasida xavfsiz tarzda saqlanadi. Biroq, bu oddiy misol o'zgaruvchining qiymatini yangilashni xohlashingiz mumkin bo'lgan vaziyatni ko'rsatadi. Parol o'zgaruvchisining qiymati hunter2 edi, lekin unga yangi qiymat berildi, hunter3 va JavaScript endi yangi qiymatdan foydalanadi.

O'zgaruvchilarni nomlash

JavaScript-da o'zgaruvchilar nomlari identifikatorlar deb ataladi. Identifikatorlarni nomlashning bir nechta qoidalarini qo'llanmada topish mumkin. Mana ular qisqacha:

  • O'zgaruvchilar nomlari faqat harflar, raqamlar (0-9), dollar belgisi ($) va pastki chiziqdan (_) iborat bo'lishi mumkin.
  • Oʻzgaruvchilar nomlarida boʻsh joy belgilari boʻlishi mumkin emas.
  • O'zgaruvchining nomi raqam bilan boshlanmasligi kerak.
  • O'zgaruvchilar nomi sifatida ishlatib bo'lmaydigan bir nechta zaxiralangan kalit so'zlar mavjud.
  • O'zgaruvchilar nomlari katta-kichik harflarga sezgir.

JavaScript-da, shuningdek, var yoki let bilan e'lon qilingan funksiyalar va o'zgaruvchilar nomlarida tuya harfini ishlatish uchun konventsiya mavjud. Bunday holda, birinchi so'z yoziladi kichik harf, va har bir keyingi so'z bosh harf bilan boshlanadi (so'zlar ular orasida bo'sh joy qoldirmasdan yoziladi). Doimiy bo'lmagan o'zgaruvchilarning aksariyati bir nechta istisnolardan tashqari, ushbu konventsiyaga amal qiladi. Odatda konstantalar (const kalit so'zi bilan e'lon qilinadi) bo'lgan o'zgaruvchilar nomlari yoziladi bosh harf.

Ko'rinib turibdiki, juda ko'p qoidalar mavjud, ammo bu faqat birinchi qarashda shunday ko'rinadi. JavaScript bilan tez-tez ishlasangiz, ularni tezda eslab qolasiz.

Var, let va const o'rtasidagi farq

JavaScript o'zgaruvchilarni e'lon qilish uchun uchta turli kalit so'zlardan foydalanadi, bu esa qo'shimcha murakkablik darajasini oshiradi. Ushbu kalit so'zlar o'zgaruvchan doirada, yuk ko'tarishda va qayta tayinlashda farqlanadi.

Siz o'z dasturlaringizda uchta kalit so'zdan qaysi birini ishlatishingiz kerakligini qiziqtirgan bo'lishingiz mumkin. Imkon qadar tez-tez const dan foydalanish va looplar va qayta tayinlash uchun ruxsat berish odatiy holdir. Odatda, eski kodda var ishlatiladi.

JavaScript doirasi

JavaScript-dagi qamrov o'zgaruvchilarga kirish mumkinligini aniqlaydigan joriy kod kontekstiga ishora qiladi. Hudud mahalliy yoki global bo'lishi mumkin:

  • Global o'zgaruvchilar blokdan tashqarida e'lon qilinganlardir.
  • Lokal o'zgaruvchilar blok ichida e'lon qilingan o'zgaruvchilardir.

Quyidagi misolda biz global o'zgaruvchini yaratamiz.


var jonzot = "bo'ri";

O'zgaruvchilarni qayta tayinlash mumkinligini bilasiz. Mahalliy miqyosda siz tashqi doiradagi o'zgaruvchilar bilan bir xil nomdagi yangi o'zgaruvchilarni asl qiymatni o'zgartirmasdan yoki bekor qilmasdan yaratishingiz mumkin.

Quyidagi misol global o'zgaruvchan turni yaratadi. Funktsiya ichida bir xil nomga ega mahalliy o'zgaruvchi mavjud. Ularni konsolga yuborganingizda, o'zgaruvchining qiymati ko'lamiga qarab farqlanishini, lekin asl qiymati o'zgarmasligini ko'rasiz.

// Global o'zgaruvchini ishga tushiring
var turlari = "inson";
funktsiya transform() (
// Mahalliy, funktsiyaga tegishli o'zgaruvchini ishga tushiring
var turlari = "bo'ri bo'ri";
console.log (turlar);
}
// Global va mahalliy o'zgaruvchilarni qayd qiling
console.log (turlar);
transform();
console.log (turlar);
inson
bo'ri
inson

Ushbu misolda mahalliy o'zgaruvchining funksiya darajasida ko'lami bor. var kalit so'zi bilan e'lon qilingan o'zgaruvchilar har doim shu doirada bo'ladi (ya'ni, ular funktsiyalarni alohida doiraga ega deb tan oladi). Shunday qilib, mahalliy o'zgaruvchiga global miqyosda kirish mumkin emas.

Biroq, yangi let va const kalit so'zlari blok darajasida ko'lamli. Bu shuni anglatadiki, har qanday blokdan, jumladan, funktsiya bloklaridan, if iboralaridan va yangi lokal maydon yaratiladi looplar uchun va vaqt.

Funktsiya darajasidagi va blok darajasidagi o'zgaruvchilar o'rtasidagi farqni ko'rsatish uchun let-dan foydalanib if blokida yangi o'zgaruvchi yarating.

var fullMoon = true;
// Global o'zgaruvchini ishga tushiring
tur = "inson";
agar (to'lin oy) (
// Blok-ko'lamli o'zgaruvchini ishga tushiring
tur = "bo'ri";

}


Bu to'lin oy emas. Lyupin hozirda inson.

Ushbu misolda o'zgaruvchan tur bitta global qiymatga (inson) va bitta mahalliy qiymatga (bo'ri) ega. Biroq, agar siz var dan foydalansangiz, natija boshqacha bo'ladi.

// O'zgaruvchini ishga tushirish uchun var dan foydalaning
var turlari = "inson";
agar (to'lin oy) (
// Blokda yangi o'zgaruvchi yaratishga urinish
var turlari = "bo'ri bo'ri";
console.log(`Bu toʻlin oy. Lyupin hozirda $(tur).`);
}
console.log(`Bu toʻlin oy emas. Lyupin hozirda $(tur).`);
Bu to'lin oy. Lyupin hozirda bo'ri hisoblanadi.
Bu to'lin oy emas. Lyupin hozirda bo'ri hisoblanadi.

Natijada, global o'zgaruvchi ham, blok darajasidagi o'zgaruvchi ham bir xil qiymatni, bo'rini hosil qiladi. Buning sababi, yangi mahalliy o'zgaruvchini yaratish o'rniga, var bir xil o'zgaruvchini bir xil doirada qayta tayinlaydi. var, if boshqa, yangi doiraning bir qismi bo'lishi kerakligini tushunmaydi. Odatda o'zgaruvchilarni blok darajasida e'lon qilish tavsiya etiladi, chunki bu o'zgaruvchilar qiymatlarini beixtiyor bekor qilish xavfini kamaytiradi.

O'zgaruvchilarni ko'tarish

Hozirgacha ko'pgina misollar o'zgaruvchini e'lon qilish va o'zgaruvchini qiymat bilan ishga tushirish uchun var kalit so'zidan foydalangan. E'lon qilingan va ishga tushirilgandan so'ng, qiymatga kirish yoki qayta tayinlash mumkin.

Agar siz o'zgaruvchini e'lon qilinmasdan va ishga tushirilgunga qadar ishlatmoqchi bo'lsangiz, natija aniqlanmagan bo'ladi.


console.log(x);
// O'zgaruvchan tayinlash
var x = 100;
aniqlanmagan

Biroq, agar siz var kalit so'zini o'tkazib yuborsangiz, o'zgaruvchi e'lon qilinmaydi, faqat ishga tushiriladi. Bu ReferenceError-ni qaytaradi va skriptning bajarilishini to'xtatadi.

// O'zgaruvchini e'lon qilishdan oldin uni ishlatishga harakat qiling
console.log(x);
// o'zgaruvchini varsiz belgilash
x = 100;
ReferenceError: x aniqlanmagan

Bu o'zgaruvchilar va funksiya deklaratsiyasi ko'chiriladigan JavaScript-ni ko'tarish bilan bog'liq yuqori qismi ularning hududlari. Boshlash emas, balki faqat haqiqiy deklaratsiya ko'tarilganligi sababli, birinchi misol aniqlanmagan holda qaytariladi.

Ushbu kontseptsiyani yaxshiroq namoyish qilish uchun biz quyidagi kodni yozdik va JavaScript uni qanday o'qishini tushuntirdik:

// Biz yozgan kod
console.log(x);
var x = 100;
// JavaScript uni qanday izohlagan
var x;
console.log(x);
x = 100;

Skriptni bajarishdan oldin JavaScript x ni o'zgaruvchi sifatida xotirada saqlaydi. O'zgaruvchi aniqlanishidan oldin chaqirilganligi sababli, natija 100 emas, balki aniqlanmagan holda qaytariladi. Biroq, bu ReferenceErrorni ko'tarmaydi yoki skriptni to'xtatmaydi. Var kalit so'zi aslida var manzilini o'zgartirmagan bo'lsa-da, u ko'tarish qanday ishlashini ko'rsatadi. Ushbu xatti-harakat muammolarga olib kelishi mumkin, chunki ushbu kodni yozgan dasturchi, ehtimol, x ning chiqishi aniqlanmagan emas, balki haqiqat bo'lishini kutadi.

Ko'tarish, shuningdek, quyidagi misolda bo'lgani kabi, oldindan aytib bo'lmaydigan natijalarga olib kelishi mumkin:


var x = 100;
funktsiya ko'taruvchi () (
// Kod natijasiga ta'sir qilmasligi kerak bo'lgan shart
agar (noto'g'ri) (
var x = 200;
}
console.log(x);
}
ko'taruvchi ();
aniqlanmagan

Bu misolda x global o'zgaruvchisi 100 ga teng. If operatoriga qarab, x 200 ga o'zgarishi mumkin, lekin shart noto'g'ri bo'lgani uchun u x qiymatiga ta'sir qilmasligi kerak. Buning o'rniga x, ko'taruvchi () boshlanishidan oldin ko'tarildi va qiymat aniqlanmagan.

Bu oldindan aytib bo'lmaydigan xatti-harakatlar dasturda xatolarga olib kelishi mumkin. Let va const blok darajasida aniqlanganligi sababli, ular quyidagi misoldagi kabi ko'tarilmaydi.

// Global miqyosda x ni ishga tushiring
x = rost bo'lsin;
funktsiya ko'taruvchi () (
// Funktsiya doirasida x ni ishga tushiring
agar (3 === 4) (
x = noto'g'ri bo'lsin;
}
console.log(x);
}
ko'taruvchi ();
rost

Var bilan mumkin bo'lgan takroriy o'zgaruvchilar deklaratsiyasi let va const bilan xatolikka olib keladi.

// var bilan e'lon qilingan o'zgaruvchining ustiga yozishga urinish
var x = 1;
var x = 2;
console.log(x);
2
// let bilan e'lon qilingan o'zgaruvchining ustiga yozishga urinish
y = 1 bo'lsin;
y = 2 bo'lsin;
console.log(y);

Tugallanmagan sintaksis xatosi: "y" identifikatori allaqachon e'lon qilingan
Shunday qilib, var bilan e'lon qilingan o'zgaruvchilar yuk ko'tarish orqali ta'sir qilishi mumkin. Yuk ko'tarish JavaScript-dagi mexanizm bo'lib, unda o'zgaruvchan deklaratsiyalar xotirada saqlanadi. Bu kodda aniqlanmagan o'zgaruvchilarga olib kelishi mumkin. Agar siz o'zgaruvchini e'lon qilishdan oldin yoki o'zgaruvchini bir necha marta e'lon qilishdan oldin foydalanmoqchi bo'lsangiz, let va const kalit so'zlari bu muammoni xatoga yo'l qo'yish orqali hal qiladi.

Konstantalar

Ko'pgina dasturlash tillari o'zgartirib bo'lmaydigan qiymatlar bo'lgan doimiylardan foydalanadi. Ya'ni, doimiyga tayinlangan qiymatlarni qayta belgilash mumkin emas.

Umumiy qoidaga ko'ra, const identifikatorlari katta harf bilan yoziladi. Bu ularni boshqa o'zgaruvchilardan ajratib turadi.

Quyidagi misolda SPECIES o‘zgaruvchisi const kalit so‘zi yordamida konstanta sifatida ishga tushirilgan. O'zgaruvchini qayta tayinlashga urinish xatolikka olib keladi.

// const ga qiymat bering
const SPECIES = "inson";
// Qiymatni qayta belgilashga urinish
SPECIES = "bo'ri bo'ri";
console.log(SPECIES);
Tugallanmagan TypeError: doimiy o'zgaruvchiga tayinlash.

Const qiymatlarini qayta belgilash mumkin emasligi sababli, ular bir vaqtning o'zida e'lon qilinishi va ishga tushirilishi kerak, aks holda xatolik yuz beradi.

// E'lon qiling, lekin const ni ishga tushirmang
const TODO;
console.log(TODO);
Tugallanmagan sintaksis xatosi: const deklaratsiyasida ishga tushirgich yetishmayapti

Dasturlash orqali o'zgartirib bo'lmaydigan qiymatlar o'zgarmas deb ataladi va o'zgartirilishi mumkin bo'lgan qiymatlar o'zgaruvchan (aniq). Konstanta qiymatlarini qayta belgilash mumkin emas, lekin ular o'zgaruvchan, chunki const bilan e'lon qilingan ob'ektlarning xususiyatlarini o'zgartirish mumkin.

// Ikki xususiyatga ega CAR ob'ektini yarating
doimiy CAR = (
rang: "ko'k",
Narxi: 15000
}
// CAR xususiyatini o'zgartirish
CAR.narxi = 20000;
console.log(CAR);
(rang: "ko'k", narxi: 20000 )

Konstantalar sizga loyiha ustida ishlayotgan boshqa dasturchilarga va o'zingizga berilgan o'zgaruvchini qayta tayinlash mumkin emasligi haqida xabar berish imkonini beradi. Qayta tayinlanishi mumkin bo'lgan o'zgaruvchini e'lon qilish uchun siz let dan foydalanishingiz kerak.

Xulosa

Ushbu qo'llanmada siz o'zgaruvchi nima ekanligini bilib oldingiz, o'zgaruvchilarni nomlash qoidalari bilan tanishdingiz va ularning qiymatlarini qayta belgilashni o'rgandingiz. Shuningdek, siz o'zgaruvchan qamrov va yuk ko'tarish, var kalit so'zining cheklovlari va let va const bu muammolarni qanday bartaraf etish haqida bilib oldingiz.

var iborasi o'zgaruvchini e'lon qiladi, ixtiyoriy ravishda uni qiymatga ishga tushiradi.

Ushbu interaktiv misol uchun manba GitHub omborida saqlanadi. Agar siz interaktiv misollar loyihasiga o'z hissangizni qo'shmoqchi bo'lsangiz, iltimos, https://github.com/mdn/interactive-examples klonlang va bizga tortish so'rovini yuboring.

Sintaksis var varname1 [= qiymat1] [, varname2 [= qiymat2]... [ , varnameN [= qiymatN]]]; varnameN o'zgaruvchi nomi. Bu har qanday yuridik identifikator bo'lishi mumkin. valueN O'zgaruvchining boshlang'ich qiymati. Bu har qanday qonuniy ifoda bo'lishi mumkin. Standart qiymat

aniqlanmagan

. Tavsif var deklaratsiyalari, ular qaerda sodir bo'lishidan qat'i nazar, har qanday kod bajarilishidan oldin qayta ishlanadi. Bu yuk ko'tarish deb ataladi va quyida batafsilroq muhokama qilinadi. var bilan e'lon qilingan o'zgaruvchining qamrovi uning joriyidir

E'lon qilinmagan o'zgaruvchiga qiymat belgilash, topshiriq bajarilganda uni global o'zgaruvchi sifatida yaratadi (u global ob'ektning mulkiga aylanadi). E'lon qilingan va e'lon qilinmagan o'zgaruvchilar o'rtasidagi farqlar:

1. E'lon qilingan o'zgaruvchilar ular e'lon qilingan ijro kontekstida cheklangan. E'lon qilinmagan o'zgaruvchilar har doim globaldir.

Funktsiya x() ( y = 1; // Qattiq rejimda ReferenceErrorni chiqaradi. var z = 2; ) x(); console.log(y); // 1 console.log(z); // ReferenceErrorni tashlaydi: z x dan tashqarida aniqlanmagan.

2. E'lon qilingan o'zgaruvchilar har qanday kod bajarilishidan oldin yaratiladi. E'lon qilinmagan o'zgaruvchilar ularga tayinlangan kod bajarilmaguncha mavjud bo'lmaydi.

Console.log(a); // "aniqlanmagan" yoki "" brauzerga qarab console.log("hali davom etmoqda..."); // hali ham davom etmoqda... var a = 1; console.log(a); // 1 console.log("hali davom etmoqda..."); // davom etmoqda ...

3. E'lon qilingan o'zgaruvchilar ularning bajarilishi kontekstining (funktsiya yoki global) sozlanmaydigan xususiyatidir. E'lon qilinmagan o'zgaruvchilar sozlanishi mumkin (masalan, o'chirilishi mumkin).

Var a = 1; b = 2; buni o'chirish.a; // Qattiq rejimda TypeError ni chiqaradi. Aks holda jimgina muvaffaqiyatsizlikka uchraydi. buni o'chirish.b; console.log(a, b); // ReferenceError ni chiqaradi. // "b" xususiyati o'chirildi va endi mavjud emas.

Ushbu uchta farq tufayli, o'zgaruvchilarni e'lon qilmaslik kutilmagan natijalarga olib kelishi mumkin. Shunday qilib, har doim o'zgaruvchilarni, ular funktsiya yoki global miqyosda bo'lishidan qat'i nazar, e'lon qilish tavsiya etiladi.

Va ECMAScript 5 qat'iy rejimida e'lon qilinmagan o'zgaruvchiga tayinlash xatoga yo'l qo'yadi.

bor yuk ko'tarish

O'zgaruvchilar deklaratsiyasi (va umuman deklaratsiyalar) har qanday kod bajarilishidan oldin qayta ishlanganligi sababli, kodning istalgan joyida o'zgaruvchini e'lon qilish uni yuqori qismida e'lon qilish bilan tengdir. Bu, shuningdek, o'zgaruvchi e'lon qilinishidan oldin ishlatilgandek ko'rinishi mumkinligini anglatadi. Bu xatti-harakat "ko'tarish" deb ataladi, chunki o'zgaruvchi deklaratsiyasi funksiya yoki global kodning yuqori qismiga ko'chirilgandek ko'rinadi.

Bla = 2; var bla; // ...bevosita tushuniladi: var bla; bla = 2;

Shu sababli, har doim o'zgaruvchilarni o'z sohasining yuqori qismida (global kodning yuqori qismida va funktsiya kodining yuqori qismida) e'lon qilish tavsiya etiladi, shuning uchun qaysi o'zgaruvchilar funktsiya doirasi (mahalliy) va qaysi doirada hal qilinishi aniq bo'ladi. zanjir.

Function do_something() ( console.log(bar); // aniqlanmagan var bar = 111; console.log(bar); // 111 ) // ...so'zsiz tushuniladi: function do_something() ( var bar; console .log(bar); // undefined bar = 111 console.log(bar);

Misollar Ikki o'zgaruvchini e'lon qilish va ishga tushirish var a = 0, b = 0; Bitta satr qiymatiga ega ikkita o'zgaruvchini belgilash var a = "A"; var b = a; // ...ekvivalent: var a, b = a = "A";

Buyurtmaga e'tibor bering:

Var x = y, y = "A"; console.log(x + y); //aniqlanmaganA

Bu erda x va y har qanday kod bajarilishidan oldin e'lon qilinadi, ammo topshiriqlar keyinroq sodir bo'ladi. "X = y" baholangan vaqtda y mavjud, shuning uchun ReferenceError o'tilmaydi va uning qiymati aniqlanmagan. Shunday qilib, x ga aniqlanmagan qiymat beriladi. Keyin y ga "A) qiymati beriladi" . Consequently, after the first line, x === undefined && y === "A" , hence the result.!}

Bir nechta o'zgaruvchilarni ishga tushirish var x = 0; funktsiya f() ( var x = y = 1; // x ni lokal ravishda e'lon qiladi; y ni global miqyosda e'lon qiladi. ) f(); console.log(x, y); // 0 1 // Qattiq bo'lmagan rejimda: // x - kutilganidek global; // y funksiyadan tashqariga chiqib ketgan, ammo!

Yuqoridagi bilan bir xil, ammo qat'iy rejim bilan:

"qat'iy foydalaning"; var x = 0; funktsiya f() ( var x = y = 1; // Qattiq rejimda ReferenceError ni chiqaradi. ) f(); console.log(x, y);

Yashirin global va tashqi funktsiyalar doirasi

Yashirin global ko'rinadigan o'zgaruvchilar tashqi funktsiyalar doirasidagi o'zgaruvchilarga havola bo'lishi mumkin:

Var x = 0; // x ni fayl doirasida e'lon qiladi, keyin unga 0 qiymatini beradi. console.log(typeof z); // "aniqlanmagan", chunki z hali mavjud emas a() funksiyasi ( var y = 2; // a funktsiyasi doirasida y ni e'lon qiladi, keyin unga 2 qiymatini beradi. console.log(x, y); // 0 2 funktsiya b() ( x = 3; // x bo'lgan mavjud faylga 3 ni tayinlaydi. y = 4; // Mavjud tashqi y ga 4 ni tayinlaydi. z = 5; // Yangi global o'zgaruvchi z yaratadi va unga 5 qiymatini belgilaydi. // (Qat'iy rejimda ReferenceError.) b( // z ni global o'zgaruvchi sifatida yaratadi (x, y, z (); . console.log(x, z); // 3 5 console.log(y turi);

Texnik xususiyatlari Spetsifikatsiya holati sharhi
ECMAScript 1-nashr (ECMA-262) Standart Dastlabki ta'rif. JavaScript 1.0 da joriy qilingan
ECMAScript 5.1 (ECMA-262)
Ushbu spetsifikatsiyadagi "var bayonoti" ta'rifi.
Standart
ECMAScript 2015 (6-nashr, ECMA-262)
Standart
ECMAScript oxirgi loyihasi (ECMA-262)
Ushbu spetsifikatsiyadagi "o'zgaruvchan bayonot" ta'rifi.
Qoralama
Brauzer mosligi

Ushbu sahifadagi muvofiqlik jadvali tuzilgan ma'lumotlardan yaratilgan. Agar siz maʼlumotlarga oʻz hissangizni qoʻshmoqchi boʻlsangiz, iltimos, https://github.com/mdn/browser-compat-data manziliga tashrif buyuring va bizga tortish soʻrovini yuboring.

GitHub-da muvofiqlik ma'lumotlarini yangilang

Ish stoli mobil server Chrome Edge Firefox Internet Explorer Opera Safari Android veb-ko'rinishi Android uchun Chrome Android uchun Firefox Android uchun Opera Android uchun Safari iOS uchun Samsung Internet Node.jsvar
Chrome toʻliq qoʻllab-quvvatlash 1Edge to'liq qo'llab-quvvatlash 12Firefox to'liq qo'llab-quvvatlash 1IE To'liq qo'llab-quvvatlash 3Opera to'liq qo'llab-quvvatlash HaSafari to'liq qo'llab-quvvatlash HaWebView Android to'liq qo'llab-quvvatlash 1Chrome Android toʻliq qoʻllab-quvvatlash 18Firefox Android to'liq qo'llab-quvvatlash 4Opera Android To'liq qo'llab-quvvatlash HaSafari iOS to'liq qo'llab-quvvatlash HaSamsung Internet Android To'liq qo'llab-quvvatlash 1.0nodejs To'liq qo'llab-quvvatlash Ha

Javascriptda ishlaganda biz raqamli, string va mantiqiy qiymatlar, ammo ular dastur zarur ma'lumotlarni o'z ichiga olgan bo'lsa ishlaydi. Shu maqsadda har xil turdagi ma'lumotlarni saqlash va uni istalgan vaqtda kirishimiz va unda joylashgan ma'lumotlarni olishimiz mumkin bo'lgan konteyner turi sifatida ko'rsatish imkonini beruvchi o'zgaruvchilar yaratildi.

O'zgaruvchi yaratish

O'zgaruvchi ikki bosqichda yaratiladi: o'zgaruvchini e'lon qilish va unga nom berish.

Birinchidan, biz o'zgaruvchini e'lon qilishimiz kerak, ya'ni uni e'lon qilishimiz kerak, bu var kalit so'zi yordamida amalga oshiriladi. Keyinchalik biz ko'rsatma yozamiz, bu o'zgaruvchining nomi, uning nomi biz unga qanday kirishimiz, masalan, men dwstv yozaman.


O'zgaruvchilarni nima deb nomlashingiz, albatta, sizga bog'liq, ammo JavaScript ishlashi uchun bir nechta qoidalarga rioya qilish kerak:

  • birinchi qoida, ajratilgan so'zlarni ishlatishdan saqlaning. JavaScript tilidagi ba'zi so'zlar tizimning o'zida ishlatiladi, masalan, biz o'zgaruvchini e'lon qiladigan var so'zi. Bundan tashqari, ba'zi so'zlar, masalan, alert , document , window , veb-sahifaning maxsus xususiyatlari hisoblanadi. Agar siz ularni o'zgaruvchi sifatida ishlatmoqchi bo'lsangiz, siz xato xabarini olasiz. Bu yerda siz zaxiralangan so'zlar ro'yxatini ko'rishingiz mumkin.
  • ikkinchi qoida, o'zgaruvchi nomi harf, $ yoki _ belgisi bilan boshlanishi kerak. Ya'ni, o'zgaruvchi raqam yoki tinish belgisi bilan boshlana olmaydi: 1dwstv va &dwstv nomi ishlamaydi, lekin $dwstv va _dwstv nomlari ishlaydi.
  • uchinchi qoida, oʻzgaruvchi nomi harflar, raqamlar, $ va _ belgilaridan iborat boʻlishi mumkin va nomda boʻshliq yoki boshqa belgilardan foydalana olmaydi. maxsus belgilar: dws&tv va dws tv nomlari noto'g'ri, lekin bu format mumkin, dws_tv va dwstv1 yoki dws_tv_1 .
  • to'rtinchi qoida, oʻzgaruvchilar nomlari katta-kichik harflarga sezgir. JavaScript tarjimoni kichik va katta harflarga boshqacha munosabatda bo'ladi, ya'ni DWSTV o'zgaruvchisi dwstv o'zgaruvchisidan, shuningdek, DwStv va Dwstv o'zgaruvchisidan farq qiladi.
  • beshinchi qoida, kirill alifbosida yozilgan o'zgaruvchilardan boshqa belgilardan foydalanish tavsiya etilmaydi, garchi ular ishlaydi, kafolatlanmaydi va boshqa mamlakatlardagi hamkasblar tomonidan tushunilmaydi;

Bular men amal qilishni tavsiya etuvchi asosiy beshta qoidadir, ularga qo'shimcha ravishda men o'zgaruvchilaringizga aniq va ifodali nomlar berishni ham aytmoqchiman. O'zgaruvchilarni ularda saqlanadigan ma'lumotlar turiga qarab nomlang, bu sizga nima yozilganligini tushunishga yordam beradi va bunday o'zgaruvchilarga qarab, biz nima haqida gapirayotganimiz aniq bo'ladi.

O'zgaruvchilarni nomlashda ularni o'qishni osonlashtirishga harakat qiling. Bir nechta so'zlardan foydalanganda, ularning orasiga pastki chiziq qo'ying yoki birinchi so'zdan keyin har bir so'zni bosh harf bilan boshlang. Masalan, dwsTv yoki dws_tv.

O'zgaruvchilardan foydalanish

Dars boshida biz o'zgaruvchining nimadan iboratligini ko'rib chiqdik, endi uni qanday yaratishni bilganimizdan so'ng, biz o'z ixtiyorimiz bilan unda istalgan turdagi ma'lumotlarni saqlashimiz mumkin.

Ma'lumotlarni o'zgaruvchiga kiritish uchun foydalaning maxsus xarakter, tenglik belgisi (=) belgilash operatori deb ataladi, chunki u o'zgaruvchiga qiymat berish uchun ishlatiladi.


Masalan, dwstv o'zgaruvchisiga raqamli qiymat qo'yaylik, obunachilar soni 8500, var dwstv o'zgaruvchisini e'lon qilamiz;

va ikkinchi qatorda biz unga dwstv = 8500 qiymatini qo'yamiz;

Var dwstv; dwstv = 7200;

Shunday qilib, birinchi qator bilan biz o'zgaruvchini yaratdik, ikkinchisi esa unga qiymatni saqladik. Shuningdek, biz o'zgaruvchini yaratishimiz va unda qiymatlarni bitta bayonot yordamida saqlashimiz mumkin, masalan:

Var dwstv = 7200;

O'zgaruvchida biz oldingi darslarda ko'rib chiqilgan har qanday turdagi ma'lumotlarni saqlashimiz mumkin, ular raqamli, qatorli va mantiqiy qiymatlar bo'lishi mumkin:

Var dwstv = 7200;var darslari = ‘JavaScript’; var youtubeKanal = 'DwsTV'; var subscribers = '7700'; var content = true;

Var darslari = 'JavaScript', youtubeKanal = 'DwsTV', obunachilar = '7700', kontent = rost;

Qiymatlarni o'zgaruvchilarda saqlaganimizdan so'ng, biz ushbu ma'lumotlarga kirishimiz mumkin. Buning uchun faqat o'zgaruvchining nomidan foydalaning.

Misol uchun, agar biz ogohlantirish dialogini ochmoqchi bo'lsak va kanal o'zgaruvchisida saqlangan qiymatni ko'rsatmoqchi bo'lsak, biz shunchaki ogohlantirish funktsiyasiga o'zgaruvchining nomini yozishimiz mumkin.

Ogohlantirish (kanal);

E'tibor bering, biz o'zgaruvchilar atrofida qo'shtirnoq qo'ymaymiz - ular faqat satrlar uchun, shuning uchun biz alert('kanal') yozmaymiz, chunki bu bizga o'zgaruvchida saqlangan qiymatdan ko'ra kanal so'zlarini beradi.

Endi siz nima uchun satrlar qo'shtirnoq ichiga olinishi kerakligini tushundingiz deb o'ylayman: JavaScript tarjimoni qo'shtirnoqsiz so'zlarni maxsus ob'ektlar (masalan, alert() buyrug'i) yoki o'zgaruvchilar nomlari sifatida ko'radi.

Bundan tashqari, biz var kalit so'zi bilan o'zgaruvchini e'lon qilgan va uni o'zgartirmoqchi bo'lgan paytimiz bor. o'zgaruvchan qiymat, uni var so'zini yozib qayta e'lon qilish shart emas, o'zgaruvchining nomini chaqirish va unga yangi qiymat berish kifoya.

Obunachilar = '10000';

Ushbu dars oxirida shuni aytmoqchimanki, biron bir tilni o'rganish bilan siz dasturlashni o'rganmaysiz. Shubhasiz, siz yangi narsalarni o'rganasiz, lekin ehtimol sizning miyangiz bu ma'lumotni eslay olmaydi, chunki siz u bilan ishlamaysiz. Tilni mashq qilmasdan o'rganish mumkin emas, shuning uchun siz ushbu darsdan kichik topshiriq olasiz, shunda taqdim etilgan ma'lumotlar sizning fikringizga mos keladi va siz u bilan ishlashingiz mumkin.

Amaliy vazifa:

Uchta o'zgaruvchi yarating, biriga raqamli qiymat, ikkinchisiga qator qiymati va uchinchisiga mantiqiy qiymat bering. Barcha o'zgaruvchilarni bitta var kalit so'zi bilan e'lon qiling va ularni sahifada ko'rsating. Keyin bilan o'zgaruvchini qayta aniqlang raqamli qiymat, va alert() funksiyasi yordamida olingan natijani ko'rsating.


Keyingi videoning boshida biz ko'rib chiqamiz bu vazifa, natijalaringizni sharhlarda baham ko'ring, agar kimdir biron bir savol bo'lsa yozing. Agar sizga dars yoqqan bo'lsa va loyihani qo'llab-quvvatlamoqchi bo'lsangiz, uni ijtimoiy tarmoqlarda baham ko'ring.

Keyingi darsda biz ma'lumotlar turlari va o'zgaruvchilar bilan qanday ishlashni batafsil ko'rib chiqamiz, matematik amallar va ularni bajarish tartibi bilan tanishamiz, shuningdek, qator va son qiymatlarni birlashtirish usullarini tahlil qilamiz.

Dars Denis Gorelov tomonidan tayyorlangan.

Dasturchi global o'zgaruvchan filmni va bir xil nomga ega bo'lgan, lekin faqat showBadFilm() funksiyasida ishlaydigan boshqa o'zgaruvchini yaratmoqchi. ShowGoodFilm() funksiyasidan ogohlantirish qanday xabarni chiqaradi? Bu funksiya yana chaqirilsa, showBadFilm() funksiyasi chaqirilgandan keyin qanday xabar ko'rsatiladi?

Yaxshi yoki yomon filmmi?

var film = "Qizil viburnum";

function showGoodFilm() ( alert(film + " - yaxshi film!"); ) function showBadFilm() ( film = "11 sentyabr"; alert(film + " - yomon film!"); ) showGoodFilm(); // ogohlantirish nimani ko'rsatadi?

  • showBadFilm(); // ogohlantirish nimani ko'rsatadi?

    showGoodFilm(); // ogohlantirish nimani ko'rsatadi?

    Yechim:

    var film = "Qizil viburnum";

    E'tibor bering, showBadFilm() funksiyasida film o'zgaruvchisidan oldin var kalit so'zi mavjud emas. Shuning uchun, JavaScript siz bir xil nomdagi mahalliy o'zgaruvchini yaratish o'rniga, global o'zgaruvchining qiymatini bekor qilishni xohlaysiz deb taxmin qiladi. Shuning uchun, showGoodFilm() funksiyasini qayta chaqirish chop etiladi: "11-sentabr - yaxshi film!"

Ma'lumotlar turini tekshirish

Quyidagi o'zgaruvchilar qaysi primitiv ma'lumotlar turi hisoblanadi? Skriptni ishga tushirmasdan javob berishga harakat qiling.

  • Ma'lumotlar turini tekshirish var film = "Qizil Viburnum";
  • var 07_agent = "Agent";
  • var num = 10;
var num1 = "10";

var u = rost;

var x;

ogohlantirish (film turi); //???

ogohlantirish (07_agent turi); //???

ogohlantirish (raqam turi); //???

ogohlantirish (1-raqam turi); //???

ogohlantirish (u turi); //???

ogohlantirish (x turi); //???

Identifikatorlar qisqa nomlar (masalan, x va y) yoki ko'proq tavsiflovchi nomlar (yosh, yig'indi, jamiVolume) bo'lishi mumkin.

Umumiy qoidalar o'zgaruvchilar uchun nomlarni yaratish (noyob identifikatorlar) quyidagilardir:

  • Ismlar harflar, raqamlar, pastki chiziq va dollar belgilaridan iborat bo'lishi mumkin.
  • Ismlar harf bilan boshlanishi kerak
  • Ismlar ham $ va _ bilan boshlanishi mumkin (lekin biz bu qoʻllanmada foydalanmaymiz)
  • Ismlar katta-kichik harflarga sezgir (y va y har xil o'zgaruvchilar)
  • Zaxiralangan so'zlar (masalan, JavaScript kalit so'zlari) nom sifatida ishlatilmaydi

JavaScript identifikatorlari katta-kichik harflarga sezgir.

Tayinlash operatori

JavaScript-da tenglik belgisi (=) "teng" operatori emas, balki "tayinlash" operatoridir.

Bu algebradan farq qiladi. Quyidagilar algebrada mantiqiy emas:

Biroq, JavaScript-da bu mantiqiy: u x ga x + 5 qiymatini belgilaydi.

(X + 5 qiymatini hisoblab chiqadi va natijani x ga qo'yadi. X qiymati 5 ga oshiriladi)

JavaScript-da "teng" operatori == shaklida yozilgan.

JavaScript ma'lumotlar turlari

JavaScript o'zgaruvchilari 100 va kabi raqamlarni o'z ichiga olishi mumkin matn qiymatlari"Jon Doe" kabi.

Dasturlashda matn qiymatlari matn satrlari deb ataladi.

JavaScript bilan ishlashi mumkin har xil turlari ma'lumotlar, lekin hozircha, faqat raqamlar va satrlarni o'ylash.

Satrlar qo'sh yoki yoziladi yagona tirnoq. Raqamlar tirnoqsiz yoziladi.

Agar raqam atrofida tirnoq qo'ysangiz, u matn qatori sifatida ko'rib chiqiladi.

JavaScript o'zgaruvchilarini e'lon qilish (yaratish).

JavaScript-da o'zgaruvchi yaratish o'zgaruvchini "e'lon qilish" deb ataladi.

Siz e'lon qilasiz JavaScript o'zgaruvchisi var kalit so'zi bilan:

Bir marta e'lon qilingan o'zgaruvchi hech qanday qiymatga ega bo'lmaydi. (Texnik jihatdan ma'no aniqlanmagan)

O'zgaruvchiga qiymat berish uchun teng belgisidan foydalaning:

avtomobil nomi = "Volvo";

Oʻzgaruvchini eʼlon qilishda unga qiymat ham belgilashingiz mumkin:

var carName = "Volvo";

Quyidagi misolda biz carName deb nomlangan o'zgaruvchini yaratamiz va unga "Volvo" qiymatini beramiz.

Keyin biz HTML elementi ichidagi qiymatni id="demo" bilan "chiqaramiz":

misol


var carName = "Volvo";
document.getElementById("demo").innerHTML = carName;

O'zingiz sinab ko'ring "Bir bayonot, ko'p o'zgaruvchilar"

Bitta bayonotda ko'plab o'zgaruvchilarni e'lon qilishingiz mumkin.

Bayonotni var bilan boshlang va vergul yordamida o'zgaruvchilarni ajrating:

Deklaratsiya bir necha qatorni o'z ichiga olishi mumkin:

Qiymat = aniqlanmagan

IN kompyuter dasturlari, o'zgaruvchilar ko'pincha qiymatsiz e'lon qilinadi. Qiymat hisoblanishi kerak bo'lgan narsa yoki keyinchalik foydalanuvchi kiritishi sifatida taqdim etiladigan narsa bo'lishi mumkin.

Qiymatsiz e'lon qilingan o'zgaruvchi aniqlanmagan qiymatga ega bo'ladi.

CarName o'zgaruvchisi ushbu bayonot bajarilgandan so'ng aniqlanmagan qiymatga ega bo'ladi.

© 2024 ermake.ru -- Kompyuterni ta'mirlash haqida - Axborot portali