JavaScript. O'zgaruvchilar (global, mahalliy, doimiylar). Eval yomon

Dastur keyinchalik foydalanish uchun qiymatni saqlashi kerak bo'lganda, bu qiymat o'zgaruvchiga tayinlanadi. O'zgaruvchi oddiygina qiymatning ramziy nomi bo'lib, qiymatni nomi bo'yicha olish imkoniyatini beradi, ya'ni dastur o'zgaruvchining nomini ko'rsatsa, uning o'rniga qiymat qo'yiladi.

O'zgaruvchi o'z nomini dasturni bajarish jarayonida uning qiymatini o'zgartirish mumkinligi sababli oldi.

Konstantalar

Konstanta oddiygina qiymatning ramziy nomidir. Konstanta qiymatga nom bo'yicha murojaat qilish imkonini beradi, ya'ni dastur konstanta nomini ko'rsatsa, uning o'rniga qiymat almashtiriladi. Konstantalar dasturni bajarish jarayonida o'zgarmasligi kerak bo'lgan ma'lumotlarni saqlash uchun ishlatiladi.

Konstantani ishlatishdan oldin uni e'lon qilish kerak. Konstantalar konstanta nomidan keyin const kalit so'zi yordamida e'lon qilinadi. Dastur kodidagi konstantalarni o'zgaruvchilardan farqlash uchun katta harflar bilan yozilgan doimiylarning nomlarini berishga kelishilgan:

Const MAX = 10;

Konstanta yaratilgandan so'ng, uni o'zgaruvchiga qayta belgilashga yoki mavjud konstantaga qiymat berishga urinish xatolikka olib keladi.

Nima uchun o'zgaruvchilar va doimiylar kerak?

O'zgaruvchilar va doimiylar sizga yordam beradi dastur kodi aniqroq. Keling, kichik bir misolni ko'rib chiqaylik:

Jami narx = 2,42 + 4,33; // Umumiy narx

Bu erda raqamlar hamma narsani anglatishi mumkin. Bu erda aniq nima jamlanganligini tushunish uchun 2,42 qiymati o'zgaruvchan (yoki doimiy) shakar narxiga (konfet narxi) va 4,33 o'zgaruvchan (yoki doimiy) moy narxiga (neft narxi) berilishi mumkin:

JamiPrice = konfetPrice + oilPrice;

Endi, bu qiymatlar nimani anglatishini eslash o'rniga, skript konfet narxini sariyog 'narxiga qo'shishini ko'rishingiz mumkin.

Shuningdek, o'zgaruvchilar va konstantalar skriptni disk raskadrovka qilishda vaqtni tejashga yordam beradi. Hamma joyda bir xil harfni ishlatish o'rniga, uni skript boshida o'zgaruvchiga (yoki doimiy) belgilashingiz mumkin va keyin skript kodining qolgan qismida harf o'rniga o'zgaruvchidan (yoki doimiy) foydalanishingiz mumkin. Agar keyinchalik qiymatni o'zgartirish to'g'risida qaror qabul qilinsa, koddagi o'zgarishlar bir nechta joyda emas, balki faqat bitta joyda - o'zgaruvchiga (yoki doimiy) qiymat berilgan joyda amalga oshirilishi kerak.

Konstantalar doirasi

Xuddi shu qoidalar let kalit so'zi bilan e'lon qilingan o'zgaruvchilar uchun konstantalarga nisbatan qo'llaniladi:

Const MAX = 5; // Global doimiy ( const MAX = 10; // Blok doimiy console.log(MAX); // 10 ) console.log(MAX); // 5 foo(); // 15 console.log(MAX); // 5 funktsiya foo() ( const MAX = 15; // Mahalliy doimiy console.log(MAX); )

Konstantalar va mos yozuvlar turlari

Konstantaga mos yozuvlar turidagi qiymat berilganda, qiymatga havola o'zgarmas bo'ladi va qiymatning o'zi o'zgaruvchan bo'lib qoladi:

Const obj = (a: 5); obj.a = 10; console.log(obj.a); // 10

Ushbu maqolada siz qanday aniqlashni o'rganasiz JavaScript-dagi konstantalar yordamida kalit so'z const.

ES6 beradi yangi yo'l kalit so'z yordamida konstantalarni e'lon qilish const. Kalit so'z const faqat o'qish uchun mo'ljallangan qiymatga havola yaratadi.

Const VARIABLE_NAME = qiymat;

Kelishuv bo'yicha, JavaScript doimiy identifikatorlari katta harflardan iborat.

Kalit so'z const kalitga o'xshaydi ruxsat so'zi bunda u blokli o'zgaruvchilarni yaratadi, ammo e'lon qilingan qiymatlar const, o'zgartirib bo'lmaydi.

Kalit so'z bilan e'lon qilingan o'zgaruvchilar ruxsat bering bor o'zgaruvchan. Bu quyidagi misolda ko'rsatilganidek, istalgan vaqtda ularning qiymatlarini o'zgartirishingiz mumkin degan ma'noni anglatadi.

v = 10 bo'lsin;
v = 20;
v = v + 5;
console.log(v); // 35

Biroq, kalit so'z bilan yaratilgan o'zgaruvchilar const, o'zgarmasdir. Boshqacha qilib aytganda, siz ularni boshqa qiymatlarga qayta tayinlay olmaysiz. Doimiy o'zgaruvchini qayta tayinlashga urinish turdagi xatolikka olib keladi TypeError .

Soliq stavkasi = 0,1;
SOLIQ = 0,2; //TypeError

Bundan tashqari, kalit so'z yordamida e'lon qilingan o'zgaruvchi const, qiymat bilan darhol ishga tushirilishi kerak. Quyidagi misol chaqiradi Sintaksis xatosi(sintaksis xatosi) doimiy o'zgaruvchini e'lon qilishda initsializator yo'qligi sababli.

Const RED; // Sintaksis xatosi

Yuqorida aytib o'tilganidek, kalit so'z bilan e'lon qilingan o'zgaruvchilar kabi ruxsat bering, kalit so'z bilan e'lon qilingan o'zgaruvchilar const, blok doirasiga ega.

Hammasi shu va keyingi maqolada biz kalit so'zdan foydalanish haqida gaplashamiz const ob'ekt harflari bilan JavaScript.

Oxirgi yangilanish: 04/05/2018

O'zgaruvchilar dasturda ma'lumotlarni saqlash uchun ishlatiladi. O'zgaruvchilar ish paytida uning qiymatini o'zgartirishi mumkin bo'lgan vaqtinchalik ma'lumotlarni yoki ma'lumotlarni saqlash uchun mo'ljallangan. Var va let kalit so'zlari o'zgaruvchilarni yaratish uchun ishlatiladi. Masalan, myIncome o'zgaruvchisini e'lon qilaylik:

Var myIncome; // boshqa variant myIncome2;

Har bir o'zgaruvchining nomi bor. Ism tasodifiy alfanumerik belgilar qatori, pastki chiziq (_) yoki dollar belgisi ($) bo'lib, nomlar raqamli belgilar bilan boshlanmasligi kerak. Ya'ni, nomda harflar, raqamlar va pastki chiziqdan foydalanishimiz mumkin. Biroq, boshqa barcha belgilar taqiqlangan.

Masalan, to'g'ri nomlar o'zgaruvchilar:

$komissiya someVariable product_Store daromad2 myIncome_from_deposit

Quyidagi nomlar noto‘g‘ri va ulardan foydalanish mumkin emas:

222lol @someVariable mening% foiz

Shuningdek, siz zaxiralangan kalit so'zlarga mos keladigan o'zgaruvchilar nomlarini bera olmaysiz. JavaScript-da kalit so'zlar ko'p emas, shuning uchun bu qoida kuzatib borish qiyin emas. Misol uchun, quyidagi nom noto'g'ri bo'ladi, chunki for JavaScript-da kalit so'zdir:

Var uchun;

JavaScript-da zaxiralangan so'zlar ro'yxati:

abstrakt, mantiqiy, tanaffus, bayt, holat, tutmoq, char, sinf, const, davom etish, tuzatuvchi, sukut bo‘yicha, o‘chirish, bajarish, double, else, enum, eksport, uzaytirish, noto‘g‘ri, yakuniy, nihoyat, float, uchun, funktsiya, goto, if, implements, import, in, instanceof, int, inteface, long, native, new, null, package, private, protected, public, return, short, statik, super, switch, synchronized, this, throw, throws, vaqtinchalik, rost, try, typeof, var, volatile, void, while, with

O'zgaruvchilarni nomlashda, JavaScript ekanligini yodda tuting harflar katta-kichikligiga sezgir til, ya'ni quyidagi kodda ikki xil o'zgaruvchi e'lon qilinadi:

Var myIncome; var MyIncome;

Bir vaqtning o'zida vergul bilan ajratilgan bir nechta o'zgaruvchilarni belgilashingiz mumkin:

Var myIncome, foiz, summa; a, b, c;

Teng belgisidan foydalanish (shuningdek, deb ataladi tayinlash operatori) o'zgaruvchiga istalgan qiymatni belgilashingiz mumkin:

Var daromad = 300; narx = 76;

O'zgaruvchiga boshlang'ich qiymat berish jarayoni ishga tushirish deb ataladi.

Endi daromad o'zgaruvchisi 300 raqamini, narx o'zgaruvchisi esa 76 raqamini saqlaydi.

O'zgaruvchilarning ajoyib tomoni shundaki, biz ularning qiymatini o'zgartirishimiz mumkin:

Var daromad = 300; daromad = 400; console.log(daromad); narx = 76; narxi = 54; console.log(narx);

Konstantalar

const kalit so'zidan foydalanib, siz o'zgaruvchi kabi qiymatni saqlaydigan konstantani belgilashingiz mumkin, lekin bu qiymatni o'zgartirib bo'lmaydi.

Const darajasi = 10;

Agar biz uning qiymatini o'zgartirishga harakat qilsak, xatoga duch kelamiz:

Const darajasi = 10; stavka = 23; // xato, tezlik doimiy, shuning uchun biz uning qiymatini o'zgartira olmaymiz

Shuni ham ta'kidlash joizki, biz doimiyning qiymatini o'zgartira olmaganimiz uchun uni initsializatsiya qilish kerak, ya'ni uni aniqlaganimizda, biz uni boshlang'ich qiymat bilan ta'minlashimiz kerak. Agar buni qilmasak, yana xatoga duch kelamiz:

const darajasi; // xato, tezlik ishga tushirilmagan

Funktsiya - bu harakatni bajaradigan yoki qiymatni qaytaruvchi kod blokidir. Funktsiyalar qayta ishlatilishi mumkin bo'lgan maxsus koddir; Shu sababli, funktsiyalar tufayli dasturlar modulli va samaraliroq bo'ladi.

Ushbu qo'llanma JavaScript-da funktsiyani aniqlash va chaqirish va funksiya parametrlaridan foydalanishning bir necha usullarini taklif qiladi.

Funktsiya ta'rifi

Funktsiyalar funktsiya kalit so'zi yordamida aniqlanadi yoki e'lon qilinadi. JavaScript-dagi funksiya sintaksisi quyidagicha ko'rinadi:

funktsiya nomiOfFunction() (
// Bajariladigan kod
}

Funktsiya deklaratsiyasi funktsiya kalit so'zidan boshlanadi, undan keyin funktsiya nomi keladi. Funksiya nomlari o‘zgaruvchilar nomlari bilan bir xil qoidalarga amal qiladi: ularda harflar, raqamlar, pastki chiziq va dollar belgilari bo‘lishi mumkin va ko‘pincha tuya harfida yoziladi. Nomdan keyin ixtiyoriy parametrlar uchun ishlatilishi mumkin bo'lgan qavslar to'plami keladi. Funktsiya kodi jingalak qavslar ichida joylashgan, masalan, for yoki if iborasi.

Siz sezganingizdek, nom parametrining qiymati kodda belgilanmagan, bu funksiya chaqirilganda amalga oshiriladi; Funktsiyani chaqirishda foydalanuvchi nomi argument sifatida uzatiladi. Argument funksiyaga uzatiladigan haqiqiy qiymatdir (bu holda foydalanuvchi nomi, masalan, 8host).

// Argument sifatida "8host" bilan salomlashish funksiyasini chaqiring
salom("8xost");

8host qiymati funktsiyaga name parametri orqali uzatiladi. Endi nom parametri ushbu funktsiyada ushbu qiymatni ifodalaydi. greetUser.js fayli kodi quyidagicha ko'rinadi:

// Shaxsiy salomlashish funksiyasini ishga tushiring
salomlash funksiyasi (ism) (
console.log(`Salom, $(ism)!`);
}
// Argument sifatida "8host" bilan salomlashish funksiyasini chaqiring
salom("8xost");

Ushbu dasturni ishga tushirganingizda, siz quyidagi natijalarni olasiz:

Endi siz funktsiyadan qanday foydalanishni bilasiz.

Parametrlarga qo'shimcha ravishda o'zgaruvchilar funksiyalar ichida e'lon qilinishi mumkin. Ushbu o'zgaruvchilar mahalliy deb ataladi va faqat ularning funktsional blokida mavjud. O'zgaruvchilar doirasi o'zgaruvchilarning mavjudligini aniqlaydi; Funksiya ichida aniqlangan o‘zgaruvchilarga funksiya tashqarisidan kirish imkoni yo‘q, lekin ular tegishli bo‘lgan funksiya dasturda qanchalik ko‘p ishlatilsa, shuncha foydalanish mumkin.

Qaytariladigan qiymatlar

Funktsiyada bir nechta parametrlardan foydalanishingiz mumkin. Siz funktsiyaga bir nechta qiymatlarni o'tkazishingiz va qiymatni qaytarishingiz mumkin. Misol uchun, sum.js faylini yarating va unda ikkita qiymat, x va y yig'indisini topadigan funksiyani e'lon qiling.

// Qo'shish funktsiyasini ishga tushiring
funktsiya qo'shish (x, y) (
qaytish x + y;
}

qo'shish (9, 7);

Bu kod x va y parametrlari bilan funksiyani belgilaydi. Keyin funktsiya 9 va 7 qiymatlarini oladi. Dasturni ishga tushiring:

Dastur natijada olingan 9 va 7 qiymatlarini qo'shadi va natijani 16 ni qaytaradi.

Qaytish kalit so'zidan foydalanilganda, funktsiya bajarilishini to'xtatadi va ifoda qiymatini qaytaradi. Bunday holda, brauzer qiymatni konsolda ko'rsatadi, ammo bu konsolga chiqish uchun console.log() dan foydalanish bilan bir xil emas. Chaqirilganda, funktsiya chaqirilgan joydan qiymat chiqaradi. Ushbu qiymatdan foydalanish yoki o'zgaruvchiga joylashtirish mumkin.

Funktsiya ifodalari

Oldingi bo'limda siz ikkita raqam qo'shadigan va natijada olingan qiymatni qaytaradigan funktsiyani e'lon qildingiz. Funktsiyani o'zgaruvchiga belgilash orqali ham funktsiya ifodasini yaratishingiz mumkin.

Olingan qiymatni summa o'zgaruvchisiga qo'llash uchun oldingi funksiyadan foydalaning.

// Yig'indi konstantasiga qo'shish funksiyasini belgilang
const sum = funktsiya qo'shilishi (x, y) (
qaytish x + y;
}
// Yig'indini topish uchun funksiyani chaqiring
summa(20, 5);
25

Endi doimiy yig'indi funktsiyadir. Bu ifodani anonim funksiyaga aylantirish orqali qisqartirish mumkin (nom parametri bo‘lmagan funksiyalar shunday deyiladi). Hozirgi vaqtda funktsiya qo'shish deb ataladi, lekin funktsiya ifodalarida nom odatda o'tkazib yuboriladi.

// Yig'indi doimiysiga funktsiyani tayinlash
const sum = funktsiya (x, y) (
qaytish x + y;
}
// Yig'indini topish uchun funksiyani chaqiring
summa(100, 3);
103

Endi funktsiya endi nomga ega emas, u anonim bo'lib qoldi.

Nomlangan funksiya ifodalari disk raskadrovka uchun ishlatilishi mumkin.

Ok funksiyalari

Hozirgacha funksiyalar function kalit so‘zi yordamida aniqlangan. Biroq, funktsiyani aniqlashning yangi va qisqaroq usuli mavjud - ECMAScript 6 o'q funktsiyalari. Ok funksiyalari teng belgisi va undan keyin kattaroq belgisi bilan ifodalanadi: =>.

O'q funktsiyalari har doim anonim bo'lib, funksiya ifodasining bir turi hisoblanadi. Ikki raqamning yig'indisini topish uchun asosiy o'q funksiyasini yaratib ko'ring.

// Ko'paytirish funksiyasini aniqlang
const ko'paytiring = (x, y) => (
qaytish x * y;
}

ko'paytirish (30, 4);
120

Yozish funktsiyasi o'rniga siz oddiygina => belgilaridan foydalanishingiz mumkin.

Agar funktsiya faqat bitta parametrga ega bo'lsa, qavslar olib tashlanishi mumkin. Quyidagi misolda funktsiya x kvadratiga teng, shuning uchun unga argument sifatida faqat bitta raqam kerak bo'ladi.

// Kvadrat funksiyani aniqlang
const kvadrat = x => (
qaytish x * x;
}
// Mahsulotni topish uchun funksiyani chaqiring
kvadrat(8);
64

Eslatma: Agar o'q funksiyasi parametrlarga ega bo'lmasa, bo'sh qavslar qo'shishingiz kerak ().

Faqat qaytish iborasidan iborat bo'lgan o'q funktsiyalari qisqartirilishi mumkin. Agar funktsiya faqat bitta qaytarish chizig'idan iborat bo'lsa, quyidagi misolda bo'lgani kabi, jingalak qavslar va qaytish bayonotini o'tkazib yuborishingiz mumkin.

// Kvadrat funksiyani aniqlang
const kvadrat = x => x * x;
// Mahsulotni topish uchun funksiyani chaqiring
kvadrat(10);
100

Xulosa

Ushbu o'quv qo'llanma sizni funktsiyalarni, funktsiya ifodalarini va o'q funktsiyalarini e'lon qilish, qiymatlarni qaytarish va o'zgaruvchilarga funktsiya qiymatlarini belgilash bilan tanishtiradi.

Funktsiya - bu qiymatni qaytaradigan yoki harakatni bajaradigan kod blokidir.

Teglar:

Muallifdan: Ehtimol, bu ajablanarli bo'ladi, lekin JavaScript uzoq vaqtdan beri doimiylarni qo'llab-quvvatlamagan, ya'ni. butun skriptingizning bajarilishi davomida o'zgarmaydigan ro'yxatga olingan qiymatlar. Hech qanday muqobil mavjud bo'lmaganda, ko'pchilik konstantalar o'zgaruvchilar yordamida e'lon qilindi.

O'zgaruvchi yordamida doimiyni e'lon qilish misoli:

var DAYSINWEEK = 7;

var DAYSINWEEK = 7 ;

Bu xavfli va amaliy emas, chunki u istalgan vaqtda skriptingizdagi DAYSINWEEK o'zgaruvchisining qiymatini o'zgartirishga imkon beradi. Ishlab chiquvchilar JavaScript-dagi oddiy o‘zgaruvchilardan go‘yoki doimiy bo‘lgan o‘zgaruvchilarni farqlashning turli usullarini o‘ylab topishdi, o‘zgaruvchilarni FAQAT BOSH HARFLARDA (eng yaxshi amaliyot) nomlashdan tortib, keyinroq muhokama qiladigan yechimlargacha. Yaxshiyamki, ichida so'nggi versiya ECMAScript (standart bo'lgan spetsifikatsiya) ushbu konstantani kiritdi:

JavaScript. Tez boshlash

doimiy DAYSINWEEK = 7;

doimiy DAYSINWEEK = 7;

Endi DAYSINWEEK-ga o'zgaruvchi sifatida kirish mumkin, ammo siz uning qiymatini hech qachon o'zgartira olmaysiz:

console.log(DAYSINWEEK); > 7 KUN HAFTA = 8; > xato

konsol. log(DAYSINWEEK);

DAYSINWEEK = 8;

> xato

Konstanta e'lon qilingandan so'ng (konstantalar const kalit so'zi bilan ishga tushirilishi kerak, undan keyin o'zgaruvchilarni nomlash qoidalariga rioya qilgan holda doimiy nom qo'yilishi kerak), uning nomi zahirada qoladi: siz endi DAYSINWEEK o'zgaruvchisini nomlay olmaysiz va shu nomdagi doimiyga ega bo'la olmaysiz. , yoki aksincha.

Const kalit so'zi zamonaviy brauzerlarda yaxshi qo'llab-quvvatlanadi: IE11 va Spartan, Firefox 31+, Opera 12+, Safari 5.1.7+, iOS 7 va undan yuqori versiyalari, Chrome 36+ bilan birga. Biroq, bir nechta muhim ogohlantirishlar mavjud:

Chrome doimiy qiymatni qayta yozishga urinayotganda xatolikni ko'rsatishni qo'llab-quvvatlamaydi. Konstantaning qiymati hech qanday holatda o'zgartirilmaydi, lekin tajribasiz ishlab chiquvchi xato chiqmagani uchun yangi qiymat qo'llanilgan deb o'ylashi mumkin.

JavaScript. Tez boshlash

Veb-ilovani yaratishning amaliy misoli bilan JavaScript asoslarini bilib oling.

Doimiylar Webkit-da yangi qamrov yaratmaydi. Bular. doimiylar joriy doiradan tashqarida ko'rinishi mumkin.

Firefox 35 va undan past versiyalari konst qiymatini tezda o'zgartirishga imkon beradi. Bu o'rnatilgan Firefox versiyalari 36+.

Shuni ham ta'kidlash kerakki, Webkit bilan bog'liq muammolar faqat qat'iy rejim ishlatilmasa paydo bo'ladi (bu haqda keyingi maqolada muhokama qilinadi).

Hozir real loyihalarda const kalit so'zidan foydalanish mumkinmi?

Kodingizda const kalit so'zidan foydalanish yoki ishlatmaslik bir necha omillarga bog'liq bo'ladi: eng muhimi, saytingizga tashrif buyuruvchilar qaysi brauzer versiyalaridan foydalanayotgani, chunki const kalit so'zidan foydalanish IE10 kabi brauzerlarda xato hisoblanadi. . Agar siz const kalit so'zini ishlab chiqishda ishlatmoqchi bo'lsangiz, lekin uni haqiqiy loyihalarda ishlatishga tayyor bo'lmasangiz, unda sizda bir nechta variant mavjud:

Variant 1: transpilerdan foydalaning (“transpiler”)

Transpilerlar, nomidan ko'rinib turibdiki, kompilyatsiya vaqtida kodingizni boshqa tilga o'zgartiradi: bu holda, ES6 spetsifikatsiyasi versiyasidan (const kalit so'zini taqdim etgan) ES5 ga. Bu sizga ko'proq kod yozish imkonini beradi yangi versiya til, lekin haqiqiy loyiha brauzerlarning kengroq diapazoniga mos keladigan versiyadan foydalanadi. Eddi Usmoniy bastalagan

Ulanish