Internet Derazalar Android
Kengaytirmoq

JS o'zgaruvchilar. O'zgaruvchilar, joylar va JavaScriptdagi o'zgaruvchilarni ko'tarish

O'zgaruvchilar - ko'plab dasturlash tillarining asosiy tarkibiy qismi; Ular boshlang'ich dasturchilar uchun eng muhim tushunchalardan biri. JavaScript-da, o'zgaruvchilarning turli xil xususiyatlari, shuningdek ularni nomlashda kerak bo'lgan bir nechta qoidalar mavjud. JavaScriptning o'zgaruvchini e'lon qilish uchun ishlatiladigan uchta kalit so'zlar mavjud - Var, ni, ularni mahkamlang va ularning har biri kodning o'zgaruvchisi qanday izohlanadi.

Ushbu qo'llanma sizni o'zgaruvchilar bilan tanishtiradi, ularga e'lon va qo'ng'iroq qilishni o'rgatadi va shuningdek, vari o'rtasidagi farqni ham tushuntiradi va turing. Bundan tashqari, siz o'zgaruvchilarni ko'tarish va hudud o'zgaruvchining xatti-harakatlariga qanday ta'sir qilish kerakligini bilib olasiz.

O'zgaruvchilar nima

O'zgaruvchan - bu turli xil qiymatlarni saqlash uchun ishlatiladigan xotira parchasi. Bir necha bor yozilishi mumkin bo'lgan ba'zi ma'lumotlar keyingi foydalanish yoki o'zgartirish uchun o'zgaruvchida saqlanishi mumkin. JavaScript-da o'zgaruvchidagi qiymat har qanday ma'lumot turi, shu jumladan raqam, satr yoki ob'ekt bo'lishi mumkin.

Ayni paytda JavaScript-ga asoslangan ECMASScript 2015 tili (ES6) spetsifikatsiyasi o'zgaruvchini e'lon qilishning bir usuli bor edi - Var kalit so'zdan foydalanish. Shuning uchun, eski kod va qo'llanmalar o'zgaruvchini faqat var tomonidan e'lon qilish uchun ishlatiladi. Keling, Var o'rtasidagi farqlarni ko'rib chiqaylik, -Qayni mahkamlang.

Var kalit so'zingiz o'zgaruvchining o'zi tushunchasini namoyish etish imkonini beradi. Quyidagi misolda biz o'zgaruvchini e'lon qilamiz va unga qiymatni tayinlaymiz.

// Satr qiymatini 8Hostni foydalanuvchi nomi identifikatoriga tayinlang
War Foydalanuvchi nomi \u003d "8hst_blog";

Ushbu ibora bir nechta qismlardan iborat:

  • Var kalit so'zidan foydalanib o'zgaruvchini e'lon qilish;
  • O'zgaruvchan ism (yoki identifikator), foydalanuvchi nomi;
  • Sintaksis tomonidan taqdim etilgan topshiriqning ishlashi \u003d;
  • Belgilangan qiymat, "8Hush_Blog".

Endi siz Kodda foydalanuvchi nomi o'zgaruvchidan foydalanishingiz mumkin. Foydalanuvchi nomi 8Host_blog qiymatini anglatadi.

// o'zgaruvchan qiymatga teng bo'lsa, tekshiring
Agar (foydalanuvchi nomi \u003d\u003d\u003d\u003d\u003d "8Host_Blog") (
Konsol.log (haqiqat);
}
To'g'ri.

Yuqorida aytib o'tilganidek, o'zgaruvchilar har qanday JavaScript ma'lumotlaridagi har qanday turdagi ma'lumotlar bilan ifodalanishi mumkin. Ushbu misolda o'zgaruvchilar satr, raqam, ob'ekt, mantiqiy qiymat va nol qiymat bilan ifodalanadi.

// Turli xil o'zgaruvchilarni tayinlash
Var ism \u003d "Omon";
var Spartanans \u003d 300;
Var Shamollar \u003d ["Sutemizuvchilar", "Qushlar", "Baliq"];
Var She'em \u003d (atirgullar: "qizil", binafsharanglar: "ko'k");
Var muvaffaqiyat \u003d haqiqat;
Var hech narsa \u003d null;

Konsoldan foydalanish.log, siz har qanday o'zgaruvchining qiymatini ko'rishingiz mumkin:

// Spartanlarni konsolga yuboring
Konsol.log (sartaranlar);
300

Parametrlar xotira ma'lumotlarida keyinchalik foydalanishingiz yoki o'zgartirishingiz mumkin bo'lgan joyda saqlanadi. O'zgaruvchilar ham qayta tayinlash va ularga yangi qiymat tayinlashlari mumkin. Quyidagi oddiy misol o'zgaruvchining qanday qilib saqlanishi va parolni yangilash mumkinligini ko'rsatadi.

// parol o'zgaruvchisiga qiymatni belgilang
Var parol \u003d "over2";
// o'zgaruvchini yangi qiymat bilan qayta tiklash
Parol \u003d "ovchi3";
Konsol.log (parol);
"Hunter3"

Haqiqiy dasturda parol ma'lumotlar bazasida ishonchli saqlanishi mumkin. Biroq, bu oddiy misol o'zgaruvchining qiymatini yangilashingiz mumkin bo'lgan vaziyatni ko'rsatadi. Parol o'zgaruvchisining qiymati over2 edi, ammo unga yangi qiymati, ovchi3 tayinlandi va endi JavaScript yangi qiymatdan foydalaniladi.

Nomlama o'zgaruvchilar

JavaScriptda, o'zgaruvchi nomlar identifikatorlar deb nomlanadi. Qo'lda bir nechta qoidalarni nomlash uchun aniqlanmalar topilishi mumkin. Bu erda ular qisqacha:

  • O'zgaruvchan ismlar faqat harflar, raqamlar (0-9), dollar belgisi ($) va pastki qismdan (_) dan iborat bo'lishi mumkin.
  • O'zgaruvchan nomlar tarkibida kosmik kema bo'lishi mumkin emas.
  • O'zgaruvchining ismi raqamdan boshlamasligi kerak.
  • Bir nechta zaxiralangan kalit so'zlar mavjud, ular o'zgaruvchan ismlar sifatida ishlatilmaydi.
  • O'zgaruvchilar nomlari registrga sezgir.

JavaScript, shuningdek, Var-dan foydalanib xabar qilingan funktsiyalar va o'zgaruvchilarning nomlari va o'zgaruvchan tuya uchun tuya tuya (tuyacha) mavjud. Shu bilan birga, birinchi so'z kichik harfda yozilgan va har bir keyingi so'z bosh harf bilan boshlanadi (so'zlar ular orasidagi bo'shliqlarsiz yozilgan). Konstitutsiya bo'lmagan eng ko'p o'zgaruvchilar ba'zi bir istisnolar uchun ushbu shartnomaga amal qiladi. Ajoyib ismlar (transt kalit so'zi bilan e'lon qilingan) odatda katta harfda yozilgan.

Aftidan, qoidalar juda ko'p, ammo faqat birinchi qarashda bo'ladi. Ko'pincha JavaScript bilan ishlash, siz tezda ularni eslaysiz.

Var o'rtasidagi farq,-konst

O'zgaruvchilarni e'lon qilish uchun JavaScript qo'shimcha ravishda murakkablik darajasini oshiradigan uchta xil kalit so'zlarni ishlatadi. Ushbu kalit so'zlar ko'rinishi o'zgaruvchan, ko'tarish va qayta tayinlash ehtimoli bilan tavsiflanadi.

Ehtimol, dasturingizda uchta kalit so'zlardan qaysi birini ishlatishingiz mumkinligini qiziqtirgandirsiz. Iloji boricha tez-tez konstseptiv va tsikllarda va qayta tayinlash odat tusiga kiradi. Qoida tariqasida, var eskirgan kodda ishlatiladi.

JavaScript doirasi

JavaScriptning amaldagi kontekstni o'zgartiradigan mavjud kod kontekstini anglatadi. Maydon mahalliy va globaldir:

  • Global o'zgaruvchilar - bu blokdan tashqarida e'lon qilinganlar.
  • Mahalliy o'zgaruvchilar - bu blok ichida e'lon qilinganlar.

Quyidagi misolda biz global o'zgaruvchini yaratamiz.


Var Create \u003d "bo'ri";

Bilasizmi, o'zgaruvchilar qayta tayinlanishi mumkin. Mahalliy ko'rinishda siz tashqi domenning o'zgaruvchilari kabi yangi o'zgaruvchini yaratishingiz va manbaning qiymatini bekor qilmasdan yaratishingiz mumkin.

Quyidagi misol global tur o'zgaruvchisini yaratadi. Funktsiya ichida bir xil nom bilan mahalliy o'zgaruvchi mavjud. Ularni konsolga yuborib, o'zgaruvchining qiymati harakatlanish maydoniga qarab farq qiladi va boshlang'ich qiymati o'zgarmaydi.

// global o'zgaruvchini ishga tushiring
Var turlari \u003d "inson";
Funktsiya o'zgarishi () (
// mahalliy, funktsiyali o'zgaruvchini ishga tushiring
Var turlari \u003d "bo'ri";
Konsol.log (turlar);
}
// global va mahalliy o'zgaruvchini qayd eting
Konsol.log (turlar);
O'zgartirilishi ();
Konsol.log (turlar);
Inson.
Bo'ri.
Inson.

Ushbu misolda mahalliy o'zgaruvchilar funktsiya sathida imkoniyatga ega. Var kalit so'zidan e'lon qilingan o'zgaruvchilar har doim ushbu hudud bilan bog'liq (ya'ni ular alohida hududga ega bo'lgan vazifalarni tan olishadi). Shunday qilib, mahalliy o'zgaruvchi global mintaqada mavjud emas.

Biroq, yangi kalit va blokni bloklash darajasidagi maydonga murojaat qiling. Bu shuni anglatadiki, yangi mahalliy mintaqa har qanday blokdan, shu jumladan funktsional bloklar, shuningdek, operatorlar, shuningdek, tsikllar.

Funktsiya va blok darajasidagi o'zgaruvchilar o'rtasidagi farqni tushunish uchun, agar blokdan foydalanish uchun blokirovkada yangi o'zgaruvchini yarating.

var Full3 \u003d To'g'ri;
// global o'zgaruvchini ishga tushiring
NOTESS \u003d "inson";
if (to'liq oy) bo'lsa (
// bloklangan o'zgaruvchini ishga tushiring
NOTESS \u003d "bo'ri";

}


Bu to'lin oy emas. Lyupin hozirda inson.

Ushbu misolda tur o'zgaruvchisi bitta global qiymat (inson) va bitta mahalliy qiymat (bo'ri). Ammo, agar siz boshqalardan foydalansangiz, yana bir natija bo'ladi.

// o'zgaruvchini boshlash uchun juda foydalaning
Var turlari \u003d "inson";
if (to'liq oy) bo'lsa (
// blokdagi yangi o'zgaruvchini yaratish uchun urinish
Var turlari \u003d "bo'ri";
Konsol.log (bu to'lin oy. Lyupin hozir $ (turlari). ');
}
Konsol.log ('bu to'lin oy emas. Hozirda lupin $ (turlar).');
Bu to'lin oy. Lyupin hozirda bo'ri.
Bu to'lin oy emas. Lyupin hozirda bo'ri.

Natijada, global o'zgaruvchilar va blok darajasidagi o'zgaruvchi bitta qiymat, bo'ri. Buning sababi, yangi mahalliy o'zgaruvchini yaratish o'rniga bir xil hududda bir xil o'zgaruvchini qayta tayinlaydi. Var, agar u boshqa narsaning bir qismi bo'lsa, yangi hududni tushunmaydi. Odatda o'zgaruvchilarni blokirovka qilish tavsiya etiladi, chunki u o'zgaruvchilarning qiymatlarini beixtiyor bekor qilish xavfini kamaytiradi.

O'zgaruvchilarni ko'tarish

Ko'pgina misollar bilan, variantni o'zgartirish uchun va o'zgaruvchining o'zgaruvchanligi qiymat bilan boshlangan. Deklaratsiya va initsiatsiyadan so'ng siz o'zgaruvchini qayta tayinlashingiz yoki qayta tayinlashingiz mumkin.

Agar siz u e'lon qilingan va ishga tushirilishidan oldin o'zgaruvchini ishlatishga harakat qilsangiz, natija aniqlangan natijasi.


Konsol.log (x);
// o'zgaruvchan topshiriq
Var x \u003d 100;
aniqlanmagan.

Ammo, agar siz Var kalit so'zini tushirsangiz, o'zgaruvchi e'lon qilinmaydi, faqat boshlanadi. Bu skriptni amalga oshiradigan va o'rnatishni to'xtatadi.

// e'lon qilishdan oldin o'zgaruvchini ishlatishga urinish
Konsol.log (x);
// o'zgaruvchan tayinlash vari
x \u003d 100;
Hisob-kitoblar: x aniqlanmagan

Buning sababi shundaki, bu o'zgaruvchilar va funktsiyalarni deklaratsiyasi o'z hududining yuqori qismiga o'tishi uchun JavaScript-ning xatti-harakati. Faqat haqiqiy reklama boshlanmoqda, dastlabki misolda, aniqlanmagan holda qaytariladi.

Ushbu tushunchani yaxshiroq namoyish etish uchun biz quyidagi kodni yozdik va JavaScriptni qanday o'qiganligini tushuntirdik:

// biz yozgan kod
Konsol.log (x);
Var x \u003d 100;
// JavaScript uni qanday talqin qildi
Var x;
Konsol.log (x);
x \u003d 100;

JavaScript skriptini bajarishdan oldin X-xotiradagi X-ni o'zgaruvchan sifatida saqlang. O'zgaruvchan o'zgaruvchisi aniqlanganligi sababli, 100 emas, ammo bu skriptni to'xtatmaydi va skriptni to'xtatmaydi. Var kalit so'z aslida varilayotgan joyni o'zgartirmagan bo'lsa-da, u qanday qilib ko'tarilishni namoyish etadi. Ushbu xatti-harakatlar muammolarga olib kelishi mumkin, chunki ushbu kodni yozgan dasturchi natijasi rost ekanligini va aniqlanmagan emasligini kutishi mumkin.

Shuningdek, ko'tarish quyidagi misolda oldindan aytib bo'lmaydigan natijalarga olib kelishi mumkin:


Var x \u003d 100;
Funktsiya ko'tarilishi () () ()
// Shohal kodning natijasiga ta'sir qilmaydigan shart
Agar (yolg'on) (
Var X \u003d 200;
}
Konsol.log (x);
}
Ko'tarish ();
aniqlanmagan.

Ushbu misolda x global o'zgaruvchi x 100. Agar X bayonotiga qarab, u 200 ga o'zgarishi mumkin, ammo bu X qiymatga ta'sir qilmasligi kerak. Buning o'rniga x ko'tarilgan () funktsiyaning boshlanishidan oldin ko'tarilgan va qiymati aniqlanmagan.

Ushbu oldindan aytib bo'lmaydigan xatti-harakatlar dasturda xatolarga olib kelishi mumkin. Blok darajasida va konstrada aniqlanadi, ular quyidagi misolda ko'tarilmaydi.

// global miqyosda x ni boshlang
X \u003d haqiqatga ruxsat bering;
Funktsiya ko'tarilishi () () ()
// funktsiyaning doirasida x ni ishga tushirish
if (3 \u003d\u003d\u003d 4) (
X \u003d noto'g'ri;
}
Konsol.log (x);
}
Ko'tarish ();
To'g'ri.

Var bilan mumkin bo'lgan o'zgaruvchilar deklaratsiyasi xato va konsts bilan xatoga olib keladi.

// var bilan e'lon qilingan o'zgaruvchini haddan tashqari yozishga urinish
Var x \u003d 1;
Var x \u003d 2;
Konsol.log (x);
2
// ruxsat etilgan o'zgaruvchini qayta yozishga urinish
Y \u003d 1;
Y \u003d 2;
Konsol.log (y);

Avayus sintakseprror: "Y" aniqlovchilari allaqachon e'lon qilingan
Shunday qilib, Vardan e'lon qilingan o'zgaruvchilar ko'tarilishga ta'sir qilishi mumkin. Qayta ko'tarilish - bu o'zgaruvchilar xotirada saqlanadigan javascript mexanizmi. Bu kodning noma'lum o'zgaruvchisiga olib kelishi mumkin. So'roq va konstal kalit so'zlar ushbu muammoni hal qiladi va o'zgaruvchini bir necha martadan ko'proq vaqtni e'lon qilish yoki e'lon qilishda xatoga olib keladi.

Doimiy

Ko'p dasturlash tillari Konstitutsiyadan foydalanadi - bu qiymat o'zgarishi mumkin bo'lmagan qiymatlar. Ya'ni, doimiy narsaga yo'naltirilgan qadriyatlar qayta tayinlanishi mumkin emas.

Umumiy kelishuvga ko'ra, konventsiyalar katta harfda yoziladi. Bu ularni boshqa o'zgaruvchilardan ajratib turadi.

Quyidagi misolda tur o'zgaruvchisi Concation kalit so'zidan foydalangan holda doimiy ravishda boshlanadi. O'zgaruvchini qayta tayinlashga urinish xatoga olib keladi.

// Conste-ga qiymatni belgilang
Konst turlari \u003d "inson";
// baholash uchun urinish
Turlari \u003d "bo'ri";
Konsol.log (turlar);
Pirovarde TripRore: doimiy o'zgaruvchiga tayinlash.

Konverent qiymatlarini qayta tayinlash mumkin emasligi sababli, ular bir vaqtning o'zida e'lon qilinishi va boshlanishi kerak, aks holda xatolik yuz beradi.

// oshkor qiling, lekin konstni boshlamang
Constod;
Konsol.log (TODO);
Amulansiz sintaksecrror: doston deklaratsiyasida boshlangan boshlang'ich

Dasturlash paytida o'zgarmaydigan qiymatlar o'zgarmas deb ataladi va o'zgartirilishi mumkin bo'lgan qiymat o'zgaruvchan (bu aniq). Biroq, doimiy qiymatlarni qayta tayinlash mumkin emas, ammo ular o'zgaruvchan, chunki konstdan tashqari e'lon qilingan ob'ektlarning xususiyatlari o'zgartirilishi mumkin.

// ikki xususiyatli avtomobil ob'ektini yarating
Const Cart \u003d (
Rang: "ko'k",
Narx: 15000.
}
// mashinaning mol-mulkini o'zgartirish
Car.pree \u003d 20,000;
Konsol.log (mashina);
(Rang: "Moviy", Narx: 20,000)

Konstantalar sizga loyiha ustida ishlaydigan boshqa dasturchilarga va o'zingiz ushbu o'zgaruvchining qayta tayinlanishi kerak emasligini sizga etkazishga imkon beradi. Qayta tekshirilishi mumkin bo'lgan o'zgaruvchini e'lon qilish, ruxsat bering.

Xulosa

Ushbu qo'llanmada siz qanday o'zgaruvchini bilib oldingiz, nomlama o'zgaruvchilar qoidalari bilan tanishdi va ularning qadriyatlarini qayta tayinlashni o'rgandi. Siz shuningdek, ko'rinishi va o'zgaruvchan joylari, var kalit so'zining cheklanishi, shuningdek, ushbu muammolarni bartaraf etish borasida bilib oldingiz.

Dasturchi global film o'zgaruvchisini va boshqa o'zgaruvchini yaratmoqchi, ular ham xuddi shunday deb ataladi, ammo faqat showebbadfilm () funktsiyasida ishlaydi. ShowGowowowDFilm () funktsiyasidan ogohlantirishni qanday xabarni o'chiradi? Agar siz ushbu funktsiyani qayta-qayta qo'ng'iroq qilsangiz, qanday xabar ko'rsatiladi, ammo shoubadfilm () funktsiyasini chaqirgandan so'ng?

Yaxshi yoki yomon filmmi?

Qaror:

Iltimos, freewbadfilm () funktsiyasi Film o'zgaruvchisi var-kalit so'ziga ega emasligini unutmang. Shuning uchun, JavaScript bir xil mahalliy o'zgaruvchini yaratishdan ko'ra, global o'zgaruvchining qiymatini bekor qilmoqchisiz deb taxmin qiladi. Shuning uchun showGowowowowFilm () funktsiyasini qayta chaqirish chiqadi: "11 sentyabr - yaxshi film!"

  • Ma'lumotlar turini tekshirish

    Iditiv ma'lumotlar turlaridan qaysi biri quyidagi o'zgaruvchilarni o'z ichiga oladi? Skriptni ishlamayotgan deb javob berishga harakat qiling.

    Ma'lumotlar turini tekshirish

    Qaror:

    Shuni yodda tutingki, birinchi o'zgaruvchining ismi filmida e'lon qilinadi va ogohlantirish film o'zgaruvchisi tomonidan belgilanadi. Bular ikki xil o'zgaruvchidir, chunki JavaScript Cascript - bu ishga bog'liq bo'lgan til. 07_GENT NOMI raqamdan boshlanadi va bu sintaktik xatoni keltirib chiqaradi va natijada skript ishlamaydi.

Ushbu bobda asosiy grammatika, o'zgaruvchilar deklaratsiyasi, ma'lumotlar turlari va bir-birlik.

Asos

JavaScript Javadan sintaksisning eng ko'p qismini bog'laydi, ammo bunday tillarning AVK, Perl va Python kabi ta'sirni boshdan kechirdi.

JavaScript. ro'yxatdan o'tish uchun sezgir va belgi kodlashidan foydalanadi Unicode.. Masalan, früh ("erta" so'zi o'zgaruvchan ismi sifatida ishlatilishi mumkin.

Var Früh \u003d "Foobar";

Ammo, frux o'zgaruvchisi Frul bilan bir xil emas, chunki JavaScript registratga sezgir.

Izohlar

Sintaksis izohlar C ++ va boshqa ko'plab tillarda ham xuddi shunday:

// bir satrni egallab olgan sharh. / * Bir nechta chiziqlarni egallagan sharh. * / / * Siz investitsiya qilolmaysiz / * sharh * / Syntaxerror * /

reklama

JavaScript-da uchta reklama turlari mavjud:

Var. O'zgaruvchan deb e'lon qiladi, boshlang'ich o'zgaruvchan qiymat majburiy emas. Ruxsat bering. Blok doirasida mahalliy o'zgaruvchini e'lon qiladi, o'zgaruvchining qiymatini aniqlash majburiy emas. Konst Faqat doimiy, o'qish uchun nomlangan deb e'lon qilinadi.

O'zgaruvchilar

Siz o'zingizning buyurtmangizdagi qiymatlar uchun ramziy nomlar sifatida foydalanishingiz mumkin. O'zgaruvchilar nomlari identifikatorlar deb nomlanadi va ba'zi qoidalarga mos kelishi kerak.

JavaScript identifikatori harfdan boshlanishi kerak, pastki pastki chiziq (_) yoki dollar belgisi ($); Keyingi belgilar ham raqamlar bo'lishi mumkin (0-9). JavaScript reestriga sezgir bo'lganligi sababli, harflar "A" "A" (yuqori ro'yxatga olish) va "A" dan "A" gacha bo'lgan "A" dan "A" gacha bo'lgan belgilar kiradi.

Siz ISO 8859-1 yoki Unicode harflarini identifikatorlarda, masalan, Å. Siz shuningdek identifikatorlarning belgilaridan foydalanishingiz mumkin.

To'g'ri nomlarning ba'zi namunalari: raqam_hits, temp99, _Name.

E'lon qilmoq

Siz o'zgaruvchini uchta usulda e'lon qilishingiz mumkin:

  • Var kalit so'zidan foydalanish. Masalan, Var X \u003d 42. Ushbu sintaksis mahalliy va global o'zgaruvchilarni e'lon qilish uchun ishlatilishi mumkin.
  • Faqat o'zgaruvchan qiymatni tayinlang. Masalan, x \u003d 42. Belgilar bu usul globaldir. Bunday reklama qat'iy ogohlantirishni keltirib chiqaradi (qat'iy rejim). Ushbu usuldan foydalanish tavsiya etilmaydi.
  • Kalit so'zdan foydalanish. Masalan, y \u003d 13 ni yuboring. Ushbu sintaksis blokning doirasida mahalliy o'zgaruvchini e'lon qilish uchun ishlatilishi mumkin.

Qiymatlarni belgilash

Var orqali e'lon qilingan o'zgaruvchan yoki boshlang'ich qiymatni belgilamasdan ruxsat berilmagan.

Agar siz e'lon qilishdan oldin keraksiz o'zgaruvchi yoki o'zgaruvchan kirishga harakat qilganingizda, tegishli emaslik shartnomasi bekor qilinadi:

A a a; Konsol.log ("A - bu" + a); // o'zgaruvchan qiymatni aniqlash qiymati aniqlanmagan konsol.log ("b qiymati" + b); // Play qabul qilinuvchisi bo'yicha hisob-kitoblar: b Crole.log ("C qiymati" + c); // o'zgaruvchan qiymatni aniqlanmagan vari bilan c; Konsol.log ("x qiymati" + x); // Play qabul qilinuvchisi bo'yicha hisob-kitoblar: x x ni aniqlamaydi;

O'zgaruvchan qiymat mavjudligini aniqlash uchun siz aniqlanmagan foydalanishingiz mumkin. Keyingi misolda, kirish o'zgaruvchisi qiymatga berilmaydi va agar bayonot haqiqat deb hisoblanadi:

Var Kirish; if (kirish \u003d\u003d\u003dfilanmagan) (dothis) ( ); ) Boshqa (dotot) ( ) ; }

Noma'lum qiymat mantiqiy kontekstda ishlatilganda noto'g'ri ish tutadi. Masalan, quyidagi kod mix funktsiyasini bajaradi, chunki Myarray elementi aniqlanmagan:

Var Myarray \u003d; if (! Myrray [0]) (mixlash ( ) ; }

Ma'lum bir qiymat NAN raqamli kontekstda ishlatilganda o'zgartiriladi:

A a a; a + 2; // nan.

Agar qator yuqori bosqichli skriptda qatorda yaratilgan bo'lsa, unda har safar u so'zma-so'z bo'lgan ifodani hisoblab chiqilganda, JavaScript har safar qatorni joylashtiradi. Bundan tashqari, funktsiyada ishlatiladigan tom ma'noda har safar funktsiya deb nomlangan har safar yaratilgan.

Oziq massivda qo'shimcha vergul

Raqamdagi barcha elementlarni spetsifikatsiya qilish shart emas. Agar ketma-ket ikkita vergul qo'ysangiz, o'tkazib yuborilgan elementlar aniqlanmaydi. Masalan:

Var Fish \u003d ["Arslon", "farishta"]; // ["sher", aniqlanmagan, "farishta"]

Ushbu massivlar qiymat va bitta bo'sh (baliq-sher), baliq - aniqlanmagan va baliq "farishta" bo'lgan.

Agar siz vergulni elementlar ro'yxatining oxirida qo'ysangiz, u e'tiborga olinmaydi. Keyingi misolda, massivning uzunligi 3 ga teng. Miyam emas. Ro'yxatdagi boshqa barcha vergul Yangi element haqida gapiradi.

Sharh: Qo'shimcha vergul brauzerlarning eski versiyalarida xatolarga olib kelishi mumkin, shuning uchun ulardan foydalanishdan saqlanish yaxshiroqdir.

Var My ro'yxat \u003d ["Uy", "Maktab",]; // ["uy", aniqlanmagan, "maktab"]

Keyingi misolda, massiv uzunligi to'rt, mylist va mylist elementlari aniqlanmagan:

Var My ro'yxat \u003d [, "Uy", "Maktab"]; //

Keyingi misolda, massiv uzunligi to'rt, mylist va mylist elementlari aniqlanmagan. Faqat oxirgi vergulga e'tibor berilmaydi.

Var mylist \u003d ["Uy" ,, "Maktab",]]; // ["uy", aniqlanmagan, "maktab", aniqlanmagan]

Keraksiz vergulning xatti-harakatlarini tushunish JavaScriptni til deb tushunish uchun muhimdir. Biroq, o'z kodini yozayotganda, keyin etishmayotgan elementlarning aniq e'lon qilinishi kodning ravshanligini va uni qo'llab-quvvatlash qulayligini yaxshilaydi.

Mantiqli adabiyotlar

Mantiqiy (Boolean) turi ikkita lital qiymatga ega: haqiqiy va yolg'on.

Boolean ob'ektining haqiqiy va noto'g'ri qadriyatlari bilan haqiqiy va noto'g'ri qiymatlarning ibtidoiy mantišiy qiymatlarini chalkashtirmang. Boolean ob'ekti - bu ibtidoiy mantiqiy turdagi o'ralgan narsa. Qo'shimcha ma'lumot olish, Boolean o'qing.

Tom ma'noda butun son

Butun butun sonlar o'nlik, o'nlik, sakkiz va ikkilik ta'sirida qayd etilishi mumkin.

  • Bir nechta butun sonning tom ma'nosi etakchi nol bo'lmagan raqamlar ketma-ketligidan iborat.
  • Elektron sonlardagi etakchi nol shuni ko'rsatadiki, u oktaali raqam tizimida qayd etilgan. Oktma butun sonlar faqat 0-7 raqamlaridan iborat.
  • 0x (yoki 0x) ning etakchi belgilari, bu raqamning o'n oltilik ekanligini ko'rsatadi. Xekadulimal butun sonlar 0-9 raqamlaridan va A-F va A-F harflaridan iborat bo'lishi mumkin.
  • 0b (yoki 0b) ning etakchi belgilari ikkilik ekanligini ko'rsatadi. Ikkilik raqamlar faqat 0 va 1 raqamlarni o'z ichiga olishi mumkin.

Tom ma'noda bir qator butun sonning bir nechta misollari:

0, 117 va -345 (o'nlik raqamlar tizimi) 015, 0001 va -077 (Og'ir sonli raqamlash tizimi) 0x11111 va -0xf1a7, 0b11, 0b111 va -0b11 (ikkilik raqami)

Ikki raqamli suzuvchi nuqta raqami

Suzuvchi nuqta raqamlari quyidagi qismlardan iborat bo'lishi mumkin:

  • Belgilangan o'nlik butun son ("+ +" yoki "- raqamga qarama-qarshi",
  • O'nlik nuqtasi ("."),
  • Fraksion qism (boshqa o'nlik),
  • Eksponent.

Eksponitor "e" yoki "e" belgisidan iborat bo'lib, ular belgi bo'lishi mumkin bo'lgan butun son. Suzuvchi nuqta raqami kamida bitta raqamdan iborat va o'nlik kasr yoki "e" (yoki "E" belgisidan iborat bo'lishi kerak.

Ko'proq siqilgan shaklda sintaksis quyidagicha ko'rinadi:

[(+ | -)] [. Raqamlar] [(e | e) [(+ | -)] raqamlar]

3.14 -3.1E + 12 -.3333333333333333333 .1E-23

Tom ma'noda ob'ekt

Oddiy ob'ekt - bu jingalak qavslarda (()) bo'lgan mol-mulk nomlari va tegishli qiymatlardan iborat nol yoki undan ortiq juftliklar ro'yxati. Siz iboraning tom ma'noda ifoda boshida ishlatmaslik kerak, chunki Bu xatoga yoki siz kutmagan xatti-harakatga olib keladi, chunki belgi "(" blokning boshlanishi deb tarjima qilinadi.

Keyingi misolda, avtomobil ob'ekti "Saturn" satriga ega bo'lgan "Saturn" satriga ega bo'lgan, getyplar xususiyatiga ega ("Honda") deb nomlanadi.

Var sotuv \u003d "Toyota"; Funktsional karirplar. ( ism) (agar (agar (ismi \u003d\u003d Honda ») (daromad nomi;) "Kechirasiz, biz sotmaymiz" + Ism + "." ; )))-Avtoulov \u003d (mycar: "satrurn", gettar: karnitlar ( "Honda"), maxsus: savdo-sotiq; Konsol. Jurnal. ( mashina. Mening mashinam); // Saturn konsoli. Jurnal. ( mashina. getcar); // Honda konsol. Jurnal. ( mashina. Maxsus); // Toyota.

Bundan tashqari, siz raqamlarning xususiyatlari yoki bitta ob'ektni boshqasiga sarmoya kiritishingiz mumkin. Masalan:

Var Care \u003d (ko'pmachiliklar: (a: "Saab", "B": "Jip"), 7: "Mazda"); Konsol. Jurnal. ( mashina. Ko'pchilik. b); // jeep konsoli. Jurnal. ( mashina [7]); // Mazda.

Ob'ekt xususiyatlarining nomi har qanday satr, shu jumladan bo'sh satr bo'lishi mumkin. Agar mulk nomi to'g'ri JavaScript identifikatori bo'lmasa, u tirnoqlarga ilova qilinishi kerak. Bunday nomlarga murojaat qilish uchun, kvadrat qavslardan foydalaning ().

Var noussaropropertynames \u003d ("" "Bo'sh satr", "!": "Bang!") Konsol. Jurnal. ( notanishalpropertyamens. ""); // sintacecrror: kutilmagan satrkonsol. Jurnal. ( nousannostropoperms ["]); // "Bo'sh satr" konsol. Jurnal. ( notanishalpropertyamens. ! ); // Syntaxerror: Kutilmagan token!konsol. Jurnal. ( nousannostropopertames ["!" ])); // "portlash!"

"Es kuni" Nazoratlarga ob'ektlarni ob'ektiv ravishda foo sozlamalari, usul ta'rifini yaratish, super qiyinchiliklarni keltirib chiqaradigan va mulk nomlarini ifoda etishni keltirib chiqaradi. Birgalikda ular shunga o'xshash ob'ektning tom ma'nosi va sinflar deklaratsiyasini tuzadilar, shuningdek ob'ekt dizayni bir xil xususiyatlarga foyda keltiradi.

Var Obj \u003d (// __poto__ __potoobj, // Throtoobj, // Super Super.totring ();), // dinamik Mulk nomlarini hisoblash ["Pref_" + (() \u003d\u003e 42) ()]: 42);

Quyidagi misolga e'tibor bering:

Var Foo \u003d (a: alfa », 2:" ikkita "); Konsol. Jurnal. ( foo. a); // alfa konsoli. Jurnal. ( foo [2]); // ikkitasi. // konsol.log (foo.2); // sintacecrecror: Kutilmagan raqam// konsol.log (foo [a]); // to'g'ridan-to'g'ri: a aniqlanmagankonsol. Jurnal. ( foo ["a"]); // alfa konsoli. Jurnal. ( foo ["2"]); // ikkitasi.

RegExp tom ma'noda

RegExp tom ma'noda - silliqlar orasida shablon. Keyingi misol Regex tom ma'noda:

Var re \u003d / ab + c /;

Torli tom ma'noda

Satr literati ikki yoki bitta (») yoki bitta (") tirnoqqa yopishgan nol yoki undan ko'p belgilar. Satr bir xil turdagi tirnoq bilan cheklanishi kerak, i.e. ikkalasi ham bitta yoki ikkala ikki baravar. Masalan:

"Foo" "Bar" "1234" "Yana bir satr" "Yuhanno" mushuklari "

Siz torli ob'ektlarning har qanday usullarini strument: JavaScript avtomatik ravishda satrda vaqtincha ob'ektga aylantirasiz, bu usulni keltirib chiqaradi, so'ngra vaqtinchalik ob'ektni yo'q qiladi. Siz shuningdek satrni quyidagi chiziqlar bilan ishlatishingiz mumkin.

Konsol. Jurnal. ( "Jon" mushuk ". Uzunlik; // satrdagi belgilar soni, shu jumladan bo'sh joy.// Bu holda ip uzunligi 10.

ES2015 Shuningdek, mavjud satrlar shablonlari. Chiziqlarni dizaynni loyihalash uchun chiziqli shablonlar shakar shablonlari. Bu Perl, piton va boshqa sohadagi torlar interflati ta'siriga o'xshaydi. Bundan tashqari, satr tarkibidagi yuqori darajadagi ma'lumotlar tuzilmalarini amalga oshirish va yuqori darajadagi ma'lumotlar tuzilmalarini oldini olish uchun teg qo'shilishi mumkin.

// "JavaScript" yozuvi orqali "JavaScript" qatorida "JavaScript" dagi oddiy satri orqali "JavaScript" da "JavaScript" ning litsenziyasi. - // Varning interpoliationenti \u003d "Bobby ", Vaqt \u003d" Bugun "; "Salom $ (Ismi), siz qanday qilib (vaqt)?" // O'zgartirish va dizaynni sharhlash uchun ishlatiladigan HTTP so'rov prefiks? A \u003d $ (A) & B \u003d $ (b) Tarkib turi: Ilova / JSON X-hisob ma'lumotlari: $ (foo), "Bar": (MyonargeAsteJanghHandler);

Siz torli ob'ekt kerak bo'lguningizcha strelma-adabiyotlardan foydalanishingiz kerak. Satr ob'ekti haqida ko'proq ma'lumot olish uchun satrni o'qing.

Chiziqlardagi maxsus belgilar yordamida

Oddiy belgilarga qo'shimcha ravishda siz satrda maxsus belgilarni o'z ichiga olishingiz mumkin.

"Bitta satr \\ n yana bir chiziq"

Quyidagi jadvalda siz foydalanishingiz mumkin bo'lgan maxsus belgilar keltirilgan.

JavaScript-da maxsus belgilar
Belgi Qiymati
\\ B. Qaytish (Backspace)
\\ F. Tarjima yoki sahifa Tarjima (Forma uchun forma)
\\ N. Qo'rqinchli tarjima (yangi liniya)
\\ R. Orqaga qaytish (transportni qaytarish)
\\ T. Tab (tab)
\\ V. Vertikal tab (vertikal yorliq)
\" Apostrof yoki bitta fitna
\" Ikki karra tirnoq
\\ Katta skelet liniyasi (orqaga burilish)
\Xxx

Lotin-1 kodlashidagi belgi uchta sakkizta raqam bilan ifodalanadi Xxx 0 dan 377. masalan, \\ 251 (© belgisi).

\\ X. Xx

Lotin-1 kodlashidagi belgi ikki o'n beshta miqdorida tasvirlangan Xx 00 dan FF gacha. Masalan, \\ xa9 (belgi ©).

\\ U. Xxxx

To'rtta olti raqamlar tomonidan ifodalangan Unicode-dagi ramz Xxxx. Masalan, \\ U00A9 (© belgisi).

\\ U. (Xxxxx) Utf-32Be-dagi belgi. Masalan, \\ u (2F804) odatdagi kirish \\ Ud87e \\ Udc04 bilan bir xil narsani anglatadi.

Skrining belgilari

Yuqoridagi jadvalda keltirilmagan belgilar uchun oldingi teskari qopqoq e'tiborga olinmaydi. Bunday foydalanish tavsiya etilmaydi (bekor qilingan) va undan qochishingiz kerak.

Agar siz teskari qiyshiq chiziqni qo'ysangiz, satrda tirnoq soling. Bunga himoyaga aylanadi. Masalan:

Var Quote \u003d. "U" Sam Mcggee \\ "ni R.W. tomonidan o'qidi." Xizmat. "; Konsol. Jurnal. ( iqtibos); // u R.W tomonidan "Sam McGee" ni yaratishni o'qidi. Xizmat.

Chiziqning pastki qismini yoqish uchun yana bir teskari eskizni qo'yish kerak. Masalan:

var uy \u003d "c: \\\\ temp"; // c: \\ temp

Siz shuningdek qator tarjimani himoya qilishingiz mumkin. Teskari qanot va satrning tarjimasi tarkib chizig'idan o'chiriladi. Masalan:

Var Str \u003d "Bu satr buzilgan \\ bir nechta \\ liniyalar bo'ylab buzilgan." Konsol. Jurnal. ( ko'chasi); // Bu satr ko'payib boradi.

Garchi JavaScript "HereDoC" sintaksisini qo'llab-quvvatlamagan bo'lsa-da, lekin siz uni bir qatorning oxiriga bir qator tarjima va fikr-mulohazalarini qo'shish orqali taqlid qilishingiz mumkin:

Var She'em \u003d "Atirgullar qizil, \\ n \\ binafsha ranglar ko'k. \\ N \\ i" m Shizofrenik, \\ n \\ va men ham shundayman. "

qo'shimcha ma'lumot

Ushbu bobda reklama va turdagi asosiy sintaksisga qaratilgan. JavaScript dizaynlari haqida ko'proq ma'lumot olish uchun:

Keyingi bobda boshqaruv tuzilmalari va xatosini ko'rib chiqish.

Bunda x, y va z o'zgaruvchan:

Yuqoridagi misoldan, siz kutishingiz mumkin:

  • x tejadi 5
  • y qiymat 6 ni saqlaydi
  • z 11 ning qiymatini saqlaydi

Xuddi algebra kabi

Ushbu misolda narx, narx va jami, o'zgaruvchilar:

Dasturlashda, shuningdek algebrada, biz saqlash qiymatlari uchun o'zgaruvchilar (masalan, narx1) dan foydalanamiz.

Dasturlashda, shuningdek algebrada, biz izohlardagi o'zgaruvchidan foydalanamiz (jami \u003d Narx1 + narx2).

Yuqoridagi misoldan siz jami 11 ga hisoblashingiz mumkin.

ma'lumotlar qiymatlarini saqlash uchun JavaScript o'zgaruvchisi.

JavaScript identifikatorlari

Hamma narsa o'zgaruvchilar JavaScript bo'lishi kerak aniqlangan dan noyob nomlar.

Ushbu noyob ismlar deyiladi identifikatorlar.

Tanlovchilar qisqa nomlar (masalan, x va y) yoki boshqa sinflar (yosh, summa, jami dehinum) bo'lishi mumkin.

O'zgaruvchilar uchun (noyob identifikatorlar) nomlari nomlari uchun umumiy qoidalar:

  • Ismlarda harflar, raqamlar, pastki chiziqlar va dollar belgilari bo'lishi mumkin.
  • Ismlar xat bilan boshlashi kerak
  • Ismlar, shuningdek, $ va _ dan boshlanishi mumkin (lekin biz ushbu qo'llanmada foydalanmaymiz)
  • Ismlar registrga sezgir (y va y har xil o'zgaruvchilar)
  • Zaxiralangan so'zlar (masalan, JavaScript kalit so'zlari) ism sifatida ishlatib bo'lmaydi

JavaScript identifikatorlari reestrga sezgir.

Ariza operatori

JavaScript-da, tenglik belgisi (\u003d) - "Teng" operatori va "teng" emas.

Algebradan farq qiladi. Quyida algebrada mantiqiy emas:

JavaScript-da, ammo bu mantiqiy: u x + 5 uchun x + 5 qiymatini tayinlaydi.

(Bu x + 5 qiymatini hisoblaydi va natijasini x ga joylashtiradi. X qiymati 5 ga oshadi)

"Teng" operatori \u003d\u003d JavaScript-da yozilgan.

JavaScript ma'lumotlar turlari

JavaScript o'zgaruvchilari "Jon Doe" kabi 100 ta matn qiymatlari kabi raqamlar bo'lishi mumkin.

Dasturlashda matn qiymatlari matn satrlari deb ataladi.

JavaScript har xil ma'lumotlar bilan ishlashi mumkin, ammo hozirda shunchaki o'ylang, raqamlar va chiziqlar.

Qatorlar ikki yoki bitta tirnoqlarda yozilgan. Raqamlar tirnoqsiz qayd etiladi.

Agar siz raqamni tirnoq solsangiz, u matnli satr sifatida ko'rib chiqiladi.

Deklaratsiya (Yaratilish) o'zgaradi JavaScript

JavaScript-da o'zgaruvchini yaratish "O'zgarish" o'zgaruvchisiga qo'ng'iroq qilinadi.

Siz JavaScript o'zgaruvchisini bilan e'lon qilasiz var Key:

Ushbu e'londan so'ng o'zgaruvchi muhim emas. (Texnik jihatdan bog'liq aniqlanmagan)

Uchun tayinlamoq O'zgaruvchan qiymat, tenglik belgisi quyidagilardan foydalaning:

cARNAME \u003d "VOLVO";

Shuningdek, siz uni e'lon qilganda o'zgaruvchining qiymatini belgilashingiz mumkin:

var Carname \u003d "Volvo";

Quyidagi misolda biz o'zgaruvchi CARNAME ismini yaratamiz va unga "Volvo" qiymatini tayinlaymiz.

Keyin biz HTML mahsulotidagi qiymatni id i id \u003d "demo" bilan to'ldiramiz:

misol

O'zingizni sinab ko'ring "

Bitta bayonot, ko'plab o'zgaruvchilar

Siz juda ko'p o'zgaruvchini bitta bayonotda e'lon qilishingiz mumkin.

Bayonotni boshlang. var va o'zgaruvchilar orqali ajratish vergul:

Ushbu e'lon bir nechta satrlar bo'lishi mumkin:

Qiymat \u003d aniqlanmagan

Kompyuter dasturlarida o'zgaruvchilar ko'pincha ma'nosiz deb e'lon qilinadi. Qiymat hisoblab chiqilishi yoki foydalanuvchi kiritish sifatida keyinchalik taqdim etiladigan narsa bo'lishi mumkin.

Qiymatsiz e'lon qilingan o'zgaruvchan materiya bo'ladi aniqlanmagan.

Karname o'zgaruvchisi ushbu ilovaning bajarilganidan keyin aniqlanmagan qiymatga ega bo'ladi.

O'zgaruvchilar

E'lon qilmoq

JavaScript-da o'zgaruvchini ishlatishdan oldin, uni e'lon qilish kerak. O'zgaruvchilar kalit so'z yordamida e'lon qilinadi var. quyida bayon qilinganidek:

Var i; Var sum;

Var kalit so'zdan bir marta, siz bir nechta o'zgaruvchini e'lon qilishingiz mumkin:

O'zgaruvchilarning deklaratsiyasi ularning ishga tushirilishi bilan birlashtirilishi mumkin:

Var xabar \u003d "Salom"; Var i \u003d 0, j \u003d 0, k \u003d 0;

Agar Var bayonotidagi boshlang'ich qiymati ko'rsatilmagan bo'lsa, o'zgaruvchining o'zgaruvchisi e'lon qilinadi, ammo u dastur tomonidan o'zgartirilmaguncha noaniq (aniqlanmagan).

Agar siz C # yoki Java kabi dasturlash turlarini qo'llash tajribangiz bo'lsa, unda siz JavaScript tilidagi o'zgaruvchilarning reklama tilidagi reklama e'lon qilinmaydi. JavaScriptdagi o'zgaruvchilar har qanday turdagi qiymatlarni saqlashi mumkin. Masalan, JavaScript bir qator o'zgaruvchini tayinlashiga ruxsat beriladi, so'ngra satrni tayinlash uchun bir xil o'zgaruvchan:

Var i \u003d 10; I \u003d "salom";

Var-ko'rsatmadan foydalanib, siz bir xil o'zgaruvchini bir necha marta e'lon qilishingiz mumkin. Agar qayta e'lon qilinsa, boshlang'ichni o'z ichiga olsa, u oddiy tayinlash bo'yicha ko'rsatma sifatida ishlaydi.

Agar siz boshqarilmagan o'zgaruvchining qiymatini o'qishga harakat qilsangiz, JavaScript xatolar yaratadi. ECMASSPHALDP 5-standartida belgilangan tartibda, xato, keraksiz o'zgaruvchining qiymatini tayinlashda xato ham hayajonlanadi. Biroq, tarixan va qat'iy rejimda bo'lmaganda, agar siz variantni e'lon qilinmagan o'zgaruvchining qiymatini tayinlasangiz, JavaScript ushbu o'zgaruvchini global ob'ekt mulk sifatida yaratadi va bu deyarli to'g'ri ishlaydi e'lon qilingan o'zgaruvchi. Bu shuni anglatadiki, global o'zgaruvchilar e'lon qilinmaydi. Biroq, bu yomon odat deb hisoblanadi va xatolar manbai bo'lishi mumkin, shuning uchun har doim o'zgaruvchini vari bilan e'lon qilishga harakat qiling.

O'zgaruvchining doirasi

O'zgaruvchining doirasi (ko'chasi) ushbu o'zgaruvchining aniqlangan qismidir. Jahon o'zgaruvchisi global miqyosda - bu butun JavaScript dasturi uchun aniqlanadi. Shu bilan birga, funktsiya ichida e'lon qilingan o'zgaruvchilar faqat o'z tanasida aniqlanadi. Ularga mahalliy deyiladi va mahalliy sharoitga ega. Funktsiya parametrlari, shuningdek, faqat ushbu funktsiyadagi tanadagi mahalliy o'zgaruvchilar deb hisoblanadi.

Funktsiya tanasi ichida mahalliy o'zgaruvchilar bir xil nom bilan global o'zgaruvchidan ustunlikka ega. Agar siz global o'zgaruvchining aslida global o'zgaruvchilar ekanligi uchun mahalliy o'zgaruvchan yoki funktsiya parametrini e'lon qilsangiz, global o'zgaruvchilar yashirin bo'ladi:

Var natijasi \u003d "Global"; Funktsiya getResult () () (Var natijasi \u003d "Mahalliy"; qaytarish natijasi;); Konsol.log (getresult ()); // "mahalliy" displey

Jahon ko'rinishi bilan o'zgaruvchilar, variantni berkitib qo'yilishi mumkin, ammo mahalliy o'zgaruvchini e'lon qilganingizda, siz har doim variantni har doim ishlatishingiz kerak.