Дарси 2 · JavaScript
Тағйирёбандаҳо, навъҳои маълумот, табдили навъҳо
Ҳар барнома чизеро дар хотир нигоҳ медорад: нархи мол, номи корбар, шумораи ашё дар сабад. Барои ин тағйирёбандаҳо лозиманд, ҳар қимат бошад навъ дорад — ва аз он вобаста аст, ки JavaScript бо он чӣ тавр муносибат мекунад. Имрӯз шумо нигоҳ доштани маълумот, донистани навъи он ва дар дом наафтодан ба ғалатҳои классикӣ, монанди "5" + 3-ро меомӯзед. Дар охири дарс — аввалин кор бо ЗС: промптро чӣ тавр тартиб додан ва ЗС-ро дар хато чӣ тавр доштан.
Тағйирёбандаҳоро тавассути let ва const эълон кунед ва шарҳ диҳед, ки чаро var-ро истифода намебарем
Ба тағйирёбандаҳо номҳои дуруст диҳед
Навъҳои string, number, boolean, null, undefined-ро фарқ кунед ва онҳоро тавассути typeof муайян намоед
Сатрҳоро бо литералҳои қолабӣ ҷамъ кунед ва бо арифметика ҳисоб намоед
Қиматҳоро аз як навъ ба навъи дигар ошкоро табдил диҳед — ва табдили ниҳонро пешбинӣ кунед
Промптро аз рӯи формулаи «контекст → вазифа → маҳдудиятҳо → формат» нависед ва ҷавоби ЗС-ро санҷед
Бо ин саҳифа чӣ тавр кор кардан лозим аст
Тамоми код дар заминаи торик бо тугмаи ▶ Иҷро кардан — зинда аст. Онро тағйир додан ва натиҷаро дарҳол дар консоли поёни он дидан мумкин аст. Вайрон кардед — ↺ Аз нав -ро пахш кунед. Ин дарс дар бораи пешбинӣ аст: пеш аз иҷрои код аз худ бипурсед «чӣ бароварда мешавад?», ҷавобро нависед — ва танҳо баъд тугмаро пахш кунед. Ишораҳои вазифаҳо пинҳон шудаанд: аввал худатон кӯшиш кунед. Аз дарси 1 ба шумо танҳо console.log, теги script ва DevTools лозим аст — ҳама чизи дигарро дар ин ҷо шарҳ медиҳем.
01 Тағйирёбандаҳо: let, const ва чаро не var
Тағйирёбанда — ин ҷои номдор дар хотира аст, ки барнома қиматро дар он мегузорад, то баъд онро бо ном берун орад. Ба ҷои он ки рақами 25-ро дар даҳ ҷо нависед, онро як бор сабт мекунед ва минбаъд аз ном истифода мебаред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let price = 25 ;
console.log (price); // → 25
price = 30 ; // қимати нав
console.log (price); // → 30
console.log (price * 2 ); // → 60
Ташбеҳ аз зиндагӣ
Хонаи амонат дар истгоҳи автобуси Душанбе. Ҳар ҳуҷайра рақам дорад — ин номи тағйирёбанда аст. Дар дохил ашё мехобад — ин қимат аст. Шумо метавонед ҳуҷайраро кушоед ва ашёи дигареро гузоред (let), ё онро чунон қулф кунед, ки мундариҷаро тағйир додан мумкин набошад (const).
Тағйирёбандаро чӣ тавр эълон кардан
let price = 25 ;
«Ҳуҷайраро бо номи price эҷод кун ва 25-ро дар он гузор»
letТағйирёбандае, ки қимати он тағйир дода мешавад : тавозун, ҳисобкунак, номи корбар.
constТағйирёбандае, ки онро аз нав таъин кардан мумкин нест : нархи асъор, номи академия, нишонии сайт. Ин варианти пешфарз аст.
varРоҳи кӯҳна аз давраи то соли 2015. Кор мекунад, вале ғайричашмдошт рафтор мекунад. Дар коди нав истифода намебарем.
Қоидаи курс
Аз const оғоз кунед. Агар баъдтар маълум шавад, ки қимат бояд тағйир ёбад, — ба let иваз кунед. Ин тавр аз рӯи код фавран намоён аст, ки чӣ метавонад тағйир ёбад ва чӣ не.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const academy = "MakeFirstStep" ; // тағйир намеёбад
let students = 12 ; // тағйир меёбад
students = 13 ; // донишҷӯи нав омад
console.log (academy, students); // → MakeFirstStep 13
Агар const-ро тағйир диҳем, чӣ мешавад
JavaScript барномаро қатъ мекунад ва хато нишон медиҳад. Ин вайроншавӣ не, ҳимоя аст: худатон гуфтед, ки қимат набояд тағйир ёбад.
Ин код хато медиҳад · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const rate = 10.95 ;
console.log ("Курс:" , rate);
rate = 11 ; // ✖ TypeError: Assignment to constant variable.
console.log ("Новый курс:" , rate);
Диққат диҳед: сатри бо "Новый курс" иҷро нашуд. Пас аз хато барнома қатъ мешавад. Хондани матни хато — яке аз малакаҳои асосии барномасоз аст: TypeError — «навъи хато», пас аз ду нуқта — тавсифи фаҳмо.
Эълон кардан ва таъин кардан — чизҳои гуногунанд
Эълон — калимаи let ё const ва ном. Як бор анҷом дода мешавад.
Таъинот — аломати =. Бисёр маротиба анҷом додан мумкин аст (барои let).
Барои const қиматро фавран ҳангоми эълон додан лозим аст: const x; — хато.
Барои let бе қимат эълон кардан мумкин аст: let result; — дар дохил undefined («муайян нашудааст») мешавад. Дар бораи он дар бахши навъҳо сӯҳбат мекунем.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let result; // эълон кардем, қимат ҳоло нест
console.log (result); // → undefined
result = 100 ; // таъин кардем
console.log (result); // → 100
Чаро не var
var се хусусияти нохуш дорад. Шумо онро дар китобҳои дарсии кӯҳна ва дар ҷавобҳои ЗС вомехӯред, бинобар ин фаҳмидани мушкил муҳим аст.
1. Аз қавсҳои фигурӣ «мерезад». Код дар { } — блок аст. Тағйирёбандаи let дар дохили блок мемонад, var бошад ба берун мебарояд:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
{
var oldWay = "var видно снаружи" ;
let newWay = "let живёт только внутри" ;
console.log (newWay); // → let танҳо дар дохил зинда аст
}
console.log (oldWay); // → var аз берун намоён аст
Ин код хато медиҳад · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
{
let newWay = "let живёт только внутри" ;
}
console.log (newWay); // ✖ ReferenceError: newWay is not defined
2. Ҳамон номро ду бор эълон кардан имкон медиҳад — ва шумо метавонед тағйирёбандаи дигарро тасодуфан ба ҷои он нависед, ҳатто пай набарда:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
var city = "Душанбе" ;
var city = "Худжанд" ; // JavaScript хомӯш аст, ҳарчанд ном аллакай банд аст
console.log (city); // → Худжанд
Ин код хато медиҳад · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let city = "Душанбе" ;
let city = "Худжанд" ; // ✖ SyntaxError: Identifier 'city' has already been declared
console.log (city);
3. «Боло мебарояд»: var-ро то сатри эълон истифода бурдан мумкин аст — ба ҷои хатои фаҳмо undefined мегиред. Бо let ва const JavaScript софдилона мегӯяд, ки шумо шитоб кардед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (a); // → undefined (аҷиб, вале бе хато)
var a = 5 ;
console.log (a); // → 5
Ин код хато медиҳад · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (b); // ✖ ReferenceError: Cannot access 'b' before initialization
let b = 5 ;
Хулоса
Хатое, ки JavaScript фавран нишон медиҳад — ин хуб аст: ёфтани он осон аст. var хатоҳоро пинҳон мекунад, let ва const онҳоро нишон медиҳанд. Бинобар ин: танҳо const ва let .
Тағйирёбандаҳоро чӣ тавр ном гузоштан
Қоида Мисол Ҳарфҳо, рақамҳо, _ ва $; наметавон аз рақам оғоз кард price1 — мумкин аст, 1price — хатоБе фосила ва дефис totalPrice, вале на total price ва на total-priceРегистр муҳим аст price ва Price — ду тағйирёбандаи гуногунКалимаҳои захирашударо истифода бурдан мумкин нест let, const, class, return…Услуби camelCase : калимаи аввал бо ҳарфи хурд, баъд ҳар кадом бо калон studentName, isLoggedIn, priceWithDiscount«Танзимот»-и тағйирнаёбандаро бо ҳарфҳои КАЛОН тавассути хати зерин менависанд const USD_RATE = 10.95;Ном шарҳ медиҳад, ки дар дохил чӣ ҳаст. Лотинӣ, бо забони англисӣ age, на a ва на vozrast
Бад
JavaScript
let x = 25 ;
let a1 = "Мадина" ;
let data = 3 ;
let sum_of_the_all = 100 ;
Хуб
JavaScript
let samsaPrice = 25 ;
let studentName = "Мадина" ;
let seatsCount = 3 ;
let totalSum = 100 ;
Хатои маъмул
Хатои имлоӣ дар ном. JavaScript тахмин намекунад, ки шумо чиро дар назар доштед: studentName ва studentname — номҳои гуногунанд ва дуюмӣ is not defined мешавад. Матни хаторо бодиққат бихонед — дар он ҳамеша номи мушкилдор зикр шудааст.
Бештар хонед: learn.javascript.ru — Тағйирёбандаҳо · MDN — Грамматика ва навъҳо
Амалия: мустаҳкам мекунем
Ду вазифаи аввал — танҳо тағйирёбандаҳо ва баровардан ба консол.
ВАЗИФАИ 1.1 Обу ҳаво дар Душанбе осон
const city-ро бо қимати "Душанбе" ва let temperature-ро бо қимати 24 эълон кунед. Баъд «шом шуд» — дар temperature қимати нави 17-ро сабт кунед. Бо як фармони console.log шаҳр ва ҳароратро бароред (бо вергул — онҳо бо фосила бароварда мешаванд).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// city ва temperature-ро эълон кунед
// temperature-ро ба 17 тағйир диҳед
// ҳар ду қиматро бароред
Натиҷаи интизоршаванда Душанбе 17
Ишора 1 Сатр дар нохунакҳо навишта мешавад, рақам — бе нохунак. Танҳо он чиро тағйир медиҳем, ки тавассути let эълон шудааст.
Ишора 2 Қимати нав бе калимаи let таъин мешавад: temperature = 17; — вагарна хатои «аллакай эълон шудааст» мегиред.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 1.2 Хатоҳоро ёбед: пур кардани тавозун миёна
Код бо хато меафтад. Онро дар консол бихонед, сабабро ёбед ва як калимаро чунон ислоҳ кунед, ки тавозун пур шавад ва Баланс: 150 бароварда шавад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const balance = 100 ;
balance = balance + 50 ; // бо 50 сомонӣ пур кардем
console.log ("Баланс:" , balance);
Натиҷаи интизоршаванда Баланс: 150
Ишора 1 Хато TypeError: Assignment to constant variable ном дорад. Кадом калима дар сатри аввал тағйир додани қиматро манъ мекунад?
Ишора 2 const-ро ба let иваз кунед — тағйирёбандае, ки тағйир меёбад, бояд тавассути let эълон шавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
02 Навъҳои маълумот ва typeof
Қиматҳо навъҳои гуногун доранд. Рақами 25 ва матни "25" ба ҳам монанд менамоянд, вале барои JavaScript инҳо чизҳои комилан гуногунанд: рақамҳоро зарб кардан мумкин аст, матнро бошад — часпондан ва нишон додан. Навъ муайян мекунад, ки бо қимат чӣ кор кардан мумкин аст.
Ташбеҳ аз зиндагӣ
Дар бозор қатори гӯшт, қатори мева ва қатори зарфҳо ҳаст. Нонро дар тарозуи чой баркашидан ва дар пиёла рехтан мумкин нест. Ҳар мол «қатор»-и худро дорад — навъи худро, ва аз он вобаста аст, ки бо он чӣ мекунанд.
Панҷ навъи асосӣ
Навъ Ин чист Мисолҳо stringМатн — ҳамеша дар нохунакҳо "Салом", 'MakeFirstStep', "25"numberРақам — бутун ё касрӣ, як навъ 25, 3.14, -7booleanМантиқии «ҳа/не»: танҳо ду қимат true, falsenull«Холӣ» — набудани қимат, ки қасдан сабт шудааст nullundefined«Муайян нашудааст» — қимат ҳанӯз таъин нашудааст undefined
Донистани навъи қимат ба оператори typeof кумак мекунад. Он сатр -ро бо номи навъ бозпас мегардонад:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (typeof "Салом" ); // → string
console.log (typeof 25 ); // → number
console.log (typeof 3.14 ); // → number (касрӣ низ number аст)
console.log (typeof true ); // → boolean
console.log (typeof undefined ); // → undefined
typeof бо тағйирёбандаҳо низ кор мекунад — он ба қимати дохил менигарад:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const dish = "курутоб" ;
const price = 35 ;
const isSpicy = false ;
console.log (dish, typeof dish); // → курутоб string
console.log (price, typeof price); // → 35 number
console.log (isSpicy, typeof isSpicy); // → false boolean
Нохунакҳо навъро иваз мекунанд
25 — рақам, "25" бошад — сатр аз ду аломат. Агар рақам дар нохунакҳо омада бошад, бо он мисли рақам ҳисоб кардан ҳоло мумкин нест (дар ин бора — дар бахшҳои 5 ва 6).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (typeof 25 ); // → number
console.log (typeof "25" ); // → string
console.log (typeof true ); // → boolean
console.log (typeof "true" ); // → string — ин танҳо матн аз чор ҳарф аст
null ва undefined: фарқ дар чист
Ташбеҳ аз зиндагӣ
Шумо ба хонаи амонат омадед. undefined — ҳуҷайра ҳаст, вале дар он ҳанӯз чизе нагузоштаанд («муайян нашудааст»). null — дар ҳуҷайра қайде ҳаст «ин ҷо қасдан холӣ» («қимат таъин шудааст: ҳеҷ чиз»).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let phone; // эълон кардем, вале таъин накардем
console.log (phone); // → undefined
let nickname = null ; // худамон қарор додем: ном нест
console.log (nickname); // → null
Одатан undefined «худаш» пайдо мешавад (JavaScript мегӯяд: «ин ҷо холӣ аст, чунки шумо чизе нагузоштед»), null-ро бошад барномасоз бошуурона менависад: «ҳоло қимат нест».
Ғаройиби typeof null
typeof null "object"-ро бозпас мегардонад, ҳарчанд null навъи алоҳида аст. Ин хатои маъруфест, ки соли 1995 дар JavaScript пайдо шуд ва абадӣ монд: ислоҳ кардан миллионҳо сайти кӯҳнаро вайрон мекард. Ҳамчун далел дар хотир доред ва ҳайрон нашавед — ЗС дар ҷавобҳо аксар вақт маҳз ҳамин ҷойро омехта мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (typeof null ); // → object (!)
console.log (typeof undefined ); // → undefined
console.log (null === undefined );// → false — «қатъиян баробар»: ин қиматҳои гуногунанд (муфассалтар дар бахши 6)
Навъи тағйирёбанда собит нест
Дар JavaScript тағйирёбанда метавонад қимати ҳар навъро нигоҳ дорад ва онро тағйир диҳад. Инро типизатсияи динамикӣ меноманд. Қулай аст, вале диққатро талаб мекунад: тағйирёбандае, ки дар он рақам буд, ногаҳон сатр мебарояд — ва ҳисоб кардан дигар намешавад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let value = 100 ;
console.log (typeof value); // → number
value = "сто" ;
console.log (typeof value); // → string
value = true ;
console.log (typeof value); // → boolean
Боз ду навъ — танҳо шиносоӣ
bigint — рақамҳои бутуни хеле калон, дар охир бо ҳарфи n навишта мешаванд: 12345678901234567890n. number-и оддӣ танҳо то 9 007 199 254 740 991 дақиқ аст. Ба шумо ин кам лозим мешавад.
symbol — «шиносгар»-и беназир, бо фармони Symbol("id") сохта мешавад. Дар ин курс лозим намешавад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (typeof 123n); // → bigint
console.log (typeof Symbol ("id" )); // → symbol
Боз навъи «таркибӣ» — object ҳаст — барои рӯйхатҳо ва объектҳо. Онро дар дарсҳои 6 ва 7 шарҳ медиҳем, ҳоло бошад дар рӯйхати мо танҳо панҷ навъи асосии примитивӣ ҳаст.
Бештар хонед: learn.javascript.ru — Навъҳои маълумот · MDN — typeof
Амалия: мустаҳкам мекунем
Навъҳои қиматҳоро мефаҳмем ва пешбиниҳои худро месанҷем.
ВАЗИФАИ 2.1 Шиноснома барои мол осон
Дар зер панҷ тағйирёбанда ҳаст. typeof-и ҳар кадоми онҳоро бароред — ба ҳар сатр як қимат, бо ҳамон тартибе, ки эълон шудаанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const price = 25 ;
const dish = "самбуса" ;
const isHot = true ;
let discount;
const comment = null ;
// typeof-и ҳар тағйирёбандаро бароред
Натиҷаи интизоршаванда number
string
boolean
undefined
object
Ишора 1 Панҷ фармони алоҳида: console.log(typeof price); ва ғайра.
Ишора 2 Сатри охирин ба хато монанд аст — вале ин ҳамон ғаройиби typeof null аст. Ҳамин тавр бояд бошад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 2.2 Навъҳоро пешбинӣ кунед миёна
Дар массиви prediction навъи ҳар кадоме аз нӯҳ қиматро нависед — бо сатр, масалан "number". Код худаш пешбиниро бо натиҷаҳои воқеии typeof муқоиса мекунад: «Верно!» (Дуруст!)-ро мебинед — шумо навъҳоро медонед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: навъи ҳар қимат бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" , "" , "" , "" ];
const actual = [
typeof 42 ,
typeof "42" ,
typeof 4.2 ,
typeof NaN,
typeof null ,
typeof undefined ,
typeof (5 > 3 ),
typeof 10n,
typeof Symbol ("id" ),
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 NaN маънои «рақам не»-ро дорад, вале аз рӯи навъ ҳамоно number аст — забон ҳамин тавр сохта шудааст. Муфассалтар дар бахши 4.
Ишора 2 Муқоисаи 5 > 3 true медиҳад — қимати мантиқӣ. Навъи он чист?
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
03 Сатрҳо ва литералҳои қолабӣ
Сатр — ин матн аст. Онро дар нохунакҳо менависанд ва нохунакҳо се навъ доранд:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = "двойные кавычки" ;
const b = 'одинарные кавычки' ;
const c = `обратные кавычки — шаблонная строка` ;
console.log (a);
console.log (b);
console.log (c);
Дукарата ва яккарата — як чиз, як услубро интихоб кунед ва ба он вафодор бошед. Агар дар дохили матн худи ҳамон нохунакҳо лозим бошанд, онҳоро бо хати моили баръакс «экран мекунанд»:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("Он сказал: \"Салом!\"" ); // → Он сказал: "Салом!"
console.log ('Сумма: 5 сомони\nИтого: 10' ); // \n — гузариш ба сатри нав
Часпонидани сатрҳо тавассути +
Аломати + байни сатрҳо онҳоро мечаспонад. Инро конкатенатсия меноманд:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const name = "Мадина" ;
console.log ("Салом, " + name + "!" ); // → Салом, Мадина!
Кор мекунад, вале бо якчанд қимат зуд ба омехтаи нохунакҳо ва плюсҳо табдил меёбад — ва фосиларо фаромӯш кардан осон аст.
Литералҳои қолабӣ
Сатр дар нохунакҳои баръакс `…` имкон медиҳад, ки қиматҳо бевосита ба матн тавассути ${ } дароварда шаванд. Дар дохили қавсҳо ҳар ифодаро навиштан мумкин аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const name = "Мадина" ;
const age = 19 ;
const price = 25 ;
console.log (`Салом, ${name}!` ); // → Салом, Мадина!
console.log (`${name}, вам ${age} лет` ); // → Мадина, вам 19 лет
console.log (`Три самбусы стоят ${price * 3} сомони` );// → Три самбусы стоят 75 сомони
console.log (`Через год вам будет ${age + 1}` ); // → Через год вам будет 20
Ташбеҳ аз зиндагӣ
Сатри қолабӣ — мисли бланки мактуби табрикӣ бо ҷойҳои холӣ: «Азиз(а) ______, туро бо ______ табрик мегӯем!». Бланк як аст, ҷойҳои холиро шумо барои ҳар қабулкунанда пур мекунед. Дар JavaScript ҷойҳои холӣ — ин ${ } аст.
Боз як қулайӣ: сатри қолабӣ метавонад якчанд сатр -ро ишғол кунад — гузаришҳо ҳамон тавр боқӣ мемонанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const student = "Фарход" ;
const grade = 5 ;
console.log (`Ведомость
Студент: ${student}
Оценка: ${grade}` );
Сатр — ин ҳамчунин маҷмӯи фармонҳо низ ҳаст
Ҳар сатр хосиятҳо ва фармонҳо дорад, ки онҳоро тавассути нуқта менависанд. Ҳоло якчанд аз онҳо ба мо кифоя аст — онҳо дар дохил чӣ тавр сохта шудаанд, дар дарсҳо дар бораи функсияҳо ва объектҳо мефаҳмем.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const city = " Душанбе " ;
console.log (city.length); // → 11 — шумораи аломатҳо (бо фосилаҳо!)
console.log (city.trim ()); // → Душанбе — фосилаҳои канориро гирифтем
console.log (city.trim ().toUpperCase ()); // → ДУШАНБЕ
console.log (city.trim ().toLowerCase ()); // → душанбе
console.log ("Салом" [0 ]); // → С — аломати аввал (ҳисоб аз сифр сар мешавад)
console.log ("Салом" [4 ]); // → м — аломати панҷум
.length — дарозии сатр (бе қавс: ин хосият аст);
.toUpperCase() / .toLowerCase() — калон / хурд;
.trim() — фосилаҳоро аз аввал ва охир мегирад;
[0], [1] … — аломат аз рӯи рақам; ададшуморӣ аз сифр оғоз мешавад.
Хатои маъмул
Нохунакҳои баръакс фаромӯш кардан: "Привет, ${name}" дар нохунакҳои оддӣ матнро айнан мебарорад — якҷоя бо ${name}. Ҷойгузорӣ танҳо дар `…` кор мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const name = "Далер" ;
console.log ("Привет, ${name}" ); // → Привет, ${name} (кор накард!)
console.log (`Привет, ${name}` ); // → Привет, Далер
Бештар хонед: learn.javascript.ru — Сатрҳо · MDN — Литералҳои қолабӣ
Амалия: мустаҳкам мекунем
Сатрҳоро аз тағйирёбандаҳо ҷамъ мекунем — танҳо бо литералҳои қолабӣ, бе +.
ВАЗИФАИ 3.1 Корти зиёратии донишҷӯ осон
Бо истифода аз тағйирёбандаҳо ва сатри қолабӣ корти зиёратиро бароред. Маълумотро дар тағйирёбандаҳо тағйир додан мумкин нест: агар номро дар сатри аввал иваз кунед, корти зиёратӣ бояд тағйир ёбад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const name = "Мадина" ;
const age = 19 ;
const city = "Душанбе" ;
// бароред: Меня зовут Мадина, мне 19 лет, живу в Душанбе
Натиҷаи интизоршаванда Меня зовут Мадина, мне 19 лет, живу в Душанбе
Ишора 1 Сатрро бо нохунаки баръакс ` (клавиша дар тарафи чапи яккак) кушоед ва бо ҳамон бибандед.
Ишора 2 Ҳар қимат бо ${ }-и худ дароварда мешавад: `Меня зовут ${name}, мне ${age} лет, ...`
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 3.2 Чеки чойхона миёна
Бо як фармони console.log чеки се сатрӣ бароред. Маблағи умумӣ бояд дар худи сатр ҳисоб шавад — бо ифода дар дохили ${ }.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const orderNumber = 15 ;
const dish = "Самбуса" ;
const count = 3 ;
const price = 5 ;
// чеки аз се сатр — дар як console.log
Натиҷаи интизоршаванда Чек №15
Самбуса x 3
Итого: 15 сомони
Ишора 1 Сатри қолабӣ дар нохунакҳои баръакс метавонад якчанд сатрро ишғол кунад — ҳар гузариш дар код дар баромад низ гузариш мешавад.
Ишора 2 Сатри сеюм: Итого: ${count * price} сомони. Аввал: Чек №${orderNumber}.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
04 Рақамҳо ва операторҳо
Дар JavaScript ҳамаи рақамҳо як навъи number мебошанд: ҳам бутун (25), ҳам касрӣ (3.14, қисми касрӣ бо нуқта). Барои ҳисобҳо операторҳо — аломатҳои амалҳо мавҷуданд.
Оператор Чӣ мекунад Мисол Натиҷа +ҷамъ 7 + 310-тарҳ 7 - 34*зарб 7 * 321/тақсим 7 / 23.5%бақияи тақсим 17 % 52**ба дараҷа бардоштан 2 ** 101024
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (7 + 3 ); // → 10
console.log (7 / 2 ); // → 3.5 — тақсим мудаввар намекунад
console.log (17 % 5 ); // → 2
console.log (2 ** 10 ); // → 1024
console.log (2 + 3 * 4 ); // → 14 — зарб пештар аз ҷамъ иҷро мешавад
console.log ((2 + 3 ) * 4 ); // → 20 — қавсҳо тартибро тағйир медиҳанд
Ташбеҳ аз зиндагӣ
Оператори % — «бақия» — онро дар мисоли манту осонтар фаҳмидан мумкин аст. 17 мантуро ба 5 дона дар як табақ ҷобаҷо кардем: 3 табақи пурра шуд (ин Math.floor(17 / 5) аст), 2 манту монд — ин ҳамон 17 % 5 аст. Бақия барои он лозим аст, ки бифаҳмем, оё рақам ҷуфт аст (n % 2 ба 0 баробар аст), ё барои «давр задани» ҳисоб — масалан, рӯзҳои ҳафта.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const manti = 17 ;
const plates = 5 ;
console.log (`Полных тарелок: ${Math.floor(manti / plates)}` ); // → 3
console.log (`Осталось манты: ${manti % plates}` ); // → 2
console.log (10 % 2 ); // → 0 — ҷуфт
console.log (7 % 2 ); // → 1 — тоқ
Мудаввар кардан: Math.round, floor, ceil
Тақсим аксар вақт каср медиҳад. Барои мудаввар кардан се фармон ҳаст, ки бо Math. оғоз мешаванд:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (Math.round (2.5 )); // → 3 — то наздиктарин бутун
console.log (Math.round (2.4 )); // → 2
console.log (Math.floor (2.9 )); // → 2 — ҳамеша ба поён
console.log (Math.ceil (2.1 )); // → 3 — ҳамеша ба боло
Навишти кӯтоҳ: +=, ++ ва ҳамсафон
Қимати тағйирёбандаро доимо тағйир додан лозим аст: ба тавозун илова кардан, ҳисобкунакро зиёд кардан. Барои ин шаклҳои кӯтоҳ ҳаст:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let balance = 100 ;
balance = balance + 20 ; // навишти дароз
balance += 20 ; // ҳамон чиз, кӯтоҳ
console.log (balance); // → 140
balance -= 40 ; // balance = balance - 40
balance *= 2 ; // balance = balance * 2
console.log (balance); // → 200
let visitors = 0 ;
visitors++; // ба 1 зиёд кардан
visitors++;
console.log (visitors); // → 2
visitors--; // ба 1 кам кардан
console.log (visitors); // → 1
Аломатҳои ++ ва ---ро пеш аз тағйирёбанда ва пас аз он навиштан мумкин аст. Агар шумо рақамро танҳо дар сатри алоҳида зиёд кунед, фарқ нест. Аммо агар қимат дар ҳамон сатр истифода шавад — фарқ ҳаст:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let a = 5 ;
console.log (a++); // → 5 — аввал қимати кӯҳна дода шуд, баъд зиёд шуд
console.log (a); // → 6
let b = 5 ;
console.log (++b); // → 6 — аввал зиёд шуд, баъд дода шуд
console.log (b); // → 6
Маслиҳат
То даме ки меомӯзед, ++ ва ---ро танҳо дар сатри алоҳида истифода баред — visitors++;. Ин тавр тахмин кардан лозим намешавад, ки кадом қимат ҳосил мешавад.
Муқоисаҳо boolean медиҳанд
Аломатҳои >, <, >=, <=, === (баробар) ва !== (баробар не) қиматҳоро муқоиса мекунанд ва true ё false бозпас мегардонанд. Шартҳои if, ки бар ин асос сохта мешаванд, дар дарси 3 меомӯзем.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (5 > 3 ); // → true
console.log (5 < 3 ); // → false
console.log (10 >= 10 ); // → true
console.log (7 === 7 ); // → true
console.log (7 !== 7 ); // → false
Infinity ва NaN
Дар риёзиёт ба сифр тақсим кардан мумкин нест. JavaScript намеафтад, балки қимати махсусро бозпас мегардонад:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (1 / 0 ); // → Infinity — «беинтиҳо»
console.log (-1 / 0 ); // → -Infinity
console.log (0 / 0 ); // → NaN — «рақам не» (Not a Number)
NaN вақте пайдо мешавад, ки арифметика барнаомад: масалан, матнро ба рақам зарб кардем. Се хосияти NaN-ро дар хотир доред:
аз рӯи навъ ҳамоно number аст: typeof NaN → "number";
он «сироятӣ» аст: ҳар амал бо NaN низ NaN медиҳад;
NaN ҳатто ба худаш баробар нест. Санҷидан бояд бо фармони Number.isNaN(x) бошад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("abc" * 2 ); // → NaN
console.log (NaN + 5 ); // → NaN — сироят кард
console.log (NaN === NaN); // → false (!)
console.log (Number.isNaN (NaN)); // → true
console.log (Number.isNaN ("abc" )); // → false — ин сатр аст, на NaN
Рақамҳои касрӣ ва пул
Компютер касрҳоро дар шакли дуӣ нигоҳ медорад ва баъзе касрҳои даҳӣ дақиқ навишта намешаванд. Ин хатои JavaScript нест — қариб ҳамаи забонҳо ҳамин тавр кор мекунанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (0.1 + 0.2 ); // → 0.30000000000000004
console.log (0.1 + 0.2 === 0.3 ); // → false
Бо пул чӣ кор кардан лозим аст: бо хурдтарин воҳидҳо — бо дирам (1 сомонӣ = 100 дирам), яъне бо рақамҳои бутун ҳисоб кунед ва танҳо ҳангоми намоиш ба 100 тақсим намоед. Баровардани зебо бо ду рақами пас аз нуқта бошад .toFixed(2) медиҳад — вале дар хотир доред: он сатр бозпас мегардонад, на рақам.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const total = 0.1 + 0.2 ;
console.log (total.toFixed (2 )); // → 0.30
console.log (typeof total.toFixed (2 )); // → string — ин аллакай матн аст!
console.log ((10 + 20 ) / 100 ); // → 0.3 — бо дирам ҳисоб кардем (10 ва 20), баъд тақсим кардем
Бештар хонед: learn.javascript.ru — Операторҳои асосӣ · learn.javascript.ru — Рақамҳо
Амалия: мустаҳкам мекунем
Дар консол ҳисоб мекунем — мисли ҳисобкунак, фақат бо тағйирёбандаҳо.
ВАЗИФАИ 4.1 Манту дар табақҳо осон
Дар ошхона 17 манту пухтанд ва онҳоро ба 5 дона дар як табақ ҷобаҷо мекунанд. Бароред, ки чанд табақи пурра ҳосил мешавад ва чанд манту мемонад. Math.floor ва %-ро истифода баред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const manti = 17 ;
const perPlate = 5 ;
// ду сатр бароред
Натиҷаи интизоршаванда Полных тарелок: 3
Осталось: 2
Ишора 1 Чанд маротиби пурра 5 дар 17 «ҷой мешавад» — ин Math.floor(manti / perPlate) аст.
Ишора 2 Бақия — manti % perPlate. Барои баровардан console.log("Осталось:", manti % perPlate) қулай аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 4.2 Ҷойҳои холӣ дар аудитория миёна
Дар аудитория 20 ҷойи холӣ ҳаст. Аввал 3 донишҷӯ омад, баъд боз як нафар, баъд ду нафар рафтанд. seats-ро танҳо бо операторҳои кӯтоҳ (-=, --, +=) тағйир диҳед, на бо seats = ....
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let seats = 20 ;
// 1) се нафар омаданд — seats -= 3
// 2) боз як нафар омад — seats--
// 3) ду нафар рафтанд — seats += 2
console.log ("Свободных мест:" , seats);
Натиҷаи интизоршаванда Свободных мест: 18
Ишора 1 Одам омад — ҷойҳои холӣ камтар шуд, рафт — бештар.
Ишора 2 Се сатр: seats -= 3; баъд seats--; баъд seats += 2;. Дар ақл санҷед: 20 → 17 → 16 → 18.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
05 Табдили ошкори навъҳо
Табдили навъҳо — ин табдил додани қимат аз як навъ ба навъи дигар аст. Он ошкоро (худатон мехоҳед: «аз ин рақам кун») ва ниҳонӣ (JavaScript инро худаш, напурсида мекунад — дар бахши оянда шарҳ медиҳем) мешавад. Аввал онро бошуурона анҷом доданро меомӯзем.
Ташбеҳ аз зиндагӣ
Нуқтаи мубодилаи асъор. Шумо бо доллар меоед, вале сомонӣ лозим аст: маблағ «аслан» ҳамон, вале шакл дигар. Барои ҳар ҷуфти асъор кассаи худ ҳаст: String() — «матн кун», Number() — «рақам кун», Boolean() — «ҳа/не кун». Аммо мубодила баъзан номуваффақ мешавад: «абракадабра»-ро ба рақам иваз намекунед — NaN мегиред.
Ба сатр: String()
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (String (123 )); // → "123"
console.log (String (true )); // → "true"
console.log (String (null )); // → "null"
console.log (String (undefined )); // → "undefined"
console.log (typeof String (123 )); // → string
Ба рақам: Number()
Муҳимтарин табдил. Дар кори воқеӣ рақамҳо аксар вақт ҳамчун матн меоянд: аз майдони воридкунӣ, аз ҷавоби сервер. Фосилаҳои канориро Number() мегирад, вале матни зиёдатиро дар дохил не.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (Number ("42" )); // → 42
console.log (Number ("3.14" )); // → 3.14
console.log (Number (" 7 " )); // → 7 — фосилаҳои канорӣ партофта мешаванд
console.log (Number ("12px" )); // → NaN — дар дохил аломатҳои зиёдатӣ ҳаст
console.log (Number ("abc" )); // → NaN
console.log (Number ("" )); // → 0 — сатри холӣ сифр медиҳад (!)
console.log (Number (true )); // → 1
console.log (Number (false )); // → 0
console.log (Number (null )); // → 0
console.log (Number (undefined )); // → NaN
Қимат Number(...)"42", "3.14", " 7 "рақами мувофиқ "" (сатри холӣ)0"12px", "abc"NaNtrue / false1 / 0null0undefinedNaN
Рақамро аз матн «берун овардан»: parseInt ва parseFloat
Number() сахтгир аст: ҳар аломати зиёдатӣ — NaN. Аммо parseInt() ва parseFloat() сатрро аз чап ба рост мехонанд, то даме ки рақамро мебинанд, ва дар аввалин аломати зиёдатӣ меистанд. parseInt бутунро бозпас мегардонад, parseFloat — касрӣ.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (parseInt ("42px" )); // → 42
console.log (parseInt ("3.99" )); // → 3 — қисми касрӣ партофта шуд (мудаввар нашуд!)
console.log (parseFloat ("3.99kg" )); // → 3.99
console.log (parseFloat ("2.5 кг" )); // → 2.5
console.log (parseInt ("px42" )); // → NaN — оғоз на аз рақам
console.log (parseInt ("abc" )); // → NaN
Сатр NumberparseIntparseFloat"42"42 42 42 "3.99"3.99 3 3.99 "12px"NaN 12 12 "px12"NaN NaN NaN ""0 NaN NaN
Маслиҳати касбиҳо: parseInt(text, 10) — аргументи дуюми 10 ошкоро мегӯяд «дар низоми даҳӣ». Дар браузерҳои муосир бе он низ кор мекунад, вале бо он код боэътимодтар ва фаҳмотар аст.
Ба қимати мантиқӣ: Boolean()
Ҳар қиматро ба true ё false табдил додан мумкин аст. Қоида содда: қиматҳои «холӣ» false медиҳанд, боқӣ ҳама — true . «Холӣ»-ҳо (онҳоро falsy меноманд) дар ҳамагӣ шашто асосӣ мебошанд:
false — худаш;
0 (ва -0);
"" — сатри холӣ;
null;
undefined;
NaN.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (Boolean (0 )); // → false
console.log (Boolean ("" )); // → false
console.log (Boolean (null )); // → false
console.log (Boolean (undefined )); // → false
console.log (Boolean (NaN)); // → false
console.log (Boolean (1 )); // → true
console.log (Boolean (-5 )); // → true — ҳар рақам, ба ҷуз сифр
console.log (Boolean ("Салом" )); // → true
console.log (Boolean (" " )); // → true — фосила аллакай аломат аст!
console.log (Boolean ("0" )); // → true — сатри "0" холӣ нест
console.log (Boolean ("false" )); // → true — ва ин низ танҳо матн аст
Домҳои Boolean
"0" ва "false" — сатрҳои ғайриҳолӣ, бинобар ин true. Сатри холии "" ва рақами 0 бошад — false. Ин ҷоест, ки ҳам навомӯзон ва ҳам ЗС хато мекунанд.
Сатрҳо дар лоиҳаҳои воқеӣ аз куҷо меоянд
Қиматҳо аз майдонҳои воридкунӣ дар саҳифа ва аз равзанаи prompt() ҳамеша сатр меоянд, ҳатто агар корбар рақам ворид карда бошад. Бинобар ин Number()-ро хеле зуд-зуд навиштан лозим меояд. Дар консоли таълимии мо prompt() дастнорас аст, вале дар браузер ин чунин менамояд:
Барои саҳифаи оддӣ, на барои консоли дарс
const answer = prompt ("Сколько вам лет?" ); // корбар 19 ворид кард
console.log (typeof answer); // → string — ҳамеша сатр!
const age = Number (answer);
console.log (age + 1 ); // → 20
Бештар хонед: learn.javascript.ru — Табдили навъҳо · MDN — parseInt · MDN — Falsy
Амалия: мустаҳкам мекунем
Маълумоти «матнӣ»-ро ба рақам табдил медиҳем ва бо онҳо ҳисоб мекунем.
ВАЗИФАИ 5.1 Фармоиш аз шакл осон
Маълумот аз шакли фармоиш ҳамчун сатр омад. Нарх ва миқдорро ба рақам табдил диҳед ва маблағи умумиро бароред. Барои санҷиш боз typeof-и маблағро низ бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const priceText = "45" ;
const countText = "3" ;
// натиҷаро ҳисоб кунед ва онро бо навъаш бароред
Натиҷаи интизоршаванда Итого: 135
number
Ишора 1 Ҳар сатрро дар Number(...) печонед: Number(priceText).
Ишора 2 Метавон дар як сатр навишт: const total = Number(priceText) * Number(countText);, баъд ду console.log.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 5.2 Меваҳо аз рӯи вазн миёна
Фурӯшанда вазнро ҳамчун "2.5 кг" навишт. Рақамро аз сатр берун оред (фикр кунед, оё Number дар ин ҷо мувофиқ аст ё не — санҷед ва бовар кунед) ва нархро ҳангоми 18 сомонӣ барои як килограмм ҳисоб кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const weight = "2.5 кг" ;
const pricePerKg = 18 ;
// бароред: Цена: 45 сомони
Натиҷаи интизоршаванда Цена: 45 сомони
Ишора 1 console.log(Number(weight))-ро кӯшиш кунед — NaN мегиред: дар дохил «кг» ҳаст. Кадом фармон рақамро то аввалин аломати зиёдатӣ мехонад?
Ишора 2 Вазн касрӣ аст, бинобар ин parseFloat(weight) лозим аст, на parseInt — вагарна ба ҷои 2.5 рақами 2 мешавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
06 Табдили ниҳонӣ: домҳои асосӣ
Агар дар ифода қиматҳои навъҳои гуногун вомехӯранд, JavaScript худаш онҳоро ба шакли умумӣ меорад — ва огоҳ намекунад. Баъзан ин қулай аст, вале бештар манбаи хатоҳои аҷиб мешавад. Вазифаи шумо — фаҳмидани қоидаҳо ва пешбинӣ карда тавонистани натиҷа.
Қоидаи 1: «+» бо матн — ин часпонидан аст
Агар ақаллан як тарафи + сатр бошад, JavaScript дуюмро ба сатр табдил медиҳад ва мечаспонад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("5" + 3 ); // → 53 — на 8!
console.log (3 + "5" ); // → 35
console.log ("Итого: " + 100 );// → Итого: 100
console.log ("5" + true ); // → 5true
console.log ("5" + null ); // → 5null
Ташбеҳ аз зиндагӣ
Аломати + ҳамчун ширеш кор мекунад. Дар паҳлӯи ҳам ду рақам — ҷамъ мекунад. Дар паҳлӯи ҳадди аққал як матн — мечаспонад: «5» ва «3» ба «53» табдил меёбанд, мисли рақамҳо дар барчаспҳо. Аломатҳои дигар (-, *, /) часпонда наметавонанд — онҳо танҳо ҳисоб мекунанд.
Қоидаи 2: аломатҳои арифметикии дигар ба рақам табдил медиҳанд
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("5" - 3 ); // → 2
console.log ("5" * "2" ); // → 10
console.log ("10" / "2" ); // → 5
console.log ("abc" * 2 ); // → NaN — ба рақам табдил додан нашуд
Қоидаи 3: boolean, null ва undefined дар ҳисобҳо
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (true + 1 ); // → 2 — true ба 1 табдил меёбад
console.log (false + 1 ); // → 1 — false ба 0 табдил меёбад
console.log (null + 1 ); // → 1 — null ба 0 табдил меёбад
console.log (undefined + 1 ); // → NaN — undefined ба NaN табдил меёбад
Тартиб аз чап ба рост
Ифода қадам ба қадам аз чап ба рост ҳисоб карда мешавад. То даме ки дар чап рақамҳо ҳастанд — онҳо ҷамъ карда мешаванд, вале баробари он ки дар занҷир сатр пайдо шуд — минбаъд часпонидан меравад:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (1 + 2 + "3" ); // → 33 — аввал 1 + 2 = 3, баъд "3" + "3"
console.log ("1" + 2 + 3 ); // → 123 — аввал "1" + 2 = "12", баъд "12" + 3
console.log (1 + 2 + 3 ); // → 6
Плюси якоя: навишти кӯтоҳи Number()
Плюс пеш аз қимат бе қисми чап онро ба рақам табдил медиҳад — ҳамон тавр, ки Number(). Инро дар коди дигарон дидан мумкин аст, вале дар коди худ беҳтар аст ошкоро нависед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (+"7" ); // → 7
console.log (+"" ); // → 0
console.log (+"abc" ); // → NaN
console.log (typeof +"7" ); // → number
console.log ("b" + "a" + +"a" + "a" ); // → baNaNa — шӯхии маъруф дар бораи NaN
Муқоисаҳо: == ва ===
Барои санҷидани баробарӣ ду роҳ ҳаст. ==-и дукарата «ғайриқатъӣ» аст — навъҳоро ба ҳам меорад ва барои ҳамин аҷиб рафтор мекунад. ===-и сеқарата «қатъӣ» аст — бе табдил муқоиса мекунад: қиматҳо танҳо вақте баробаранд, ки ҳам қимат ва ҳам навъ мувофиқат кунанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (5 == "5" ); // → true — сатрро ба рақам овард
console.log (5 === "5" ); // → false — навъҳои гуногун
console.log (0 == "" ); // → true (!)
console.log (0 == false ); // → true (!)
console.log ("0" == false ); // → true (!)
console.log (null == undefined ); // → true
console.log (null === undefined ); // → false
console.log (null == 0 ); // → false — чунин номувофиқатӣ
Қоидаи курс
Ҳамеша === ва !== нависед. ==-и ғайриқатъиро истифода намебарем — он арзиши дар хотир доштани ҳамаи аҷоибиҳояшро надорад.
Муқоисаи сатрҳо — аз рӯи ҳарфҳо
Ду сатр аломат ба аломат муқоиса мешаванд, мисли калимаҳо дар луғат, на мисли рақамҳо. Бинобар ин «10» «хурдтар» аз «9» мебарояд: рақами аввали 1 аз 9 хурдтар аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("10" > "9" ); // → false (!) — сатрҳо аз рӯи аломатҳо муқоиса мешаванд
console.log ("10" > 9 ); // → true — яке аз қиматҳо рақам аст, пас мисли рақамҳо муқоиса мекунад
console.log (Number ("10" ) > Number ("9" )); // → true — роҳи боэътимод
Чӣ тавр худро муҳофизат кардан
Ба «бошад, ки»-и табдили ниҳонӣ умед набастан. Маълумотро аз берун гирифтед (майдони шакл, prompt, ҷавоби сервер) — фавран онро тавассути Number() ба навъи лозимӣ табдил диҳед ва минбаъд бо рақамҳо кор кунед. Ошкоро беҳтар аз ниҳонӣ: он дар код намоён аст ва пешбинишаванда аст.
Варақаи ёрирасон оид ба домҳо
Ифода Натиҷа Чаро "5" + 3"53"сатр дар паҳлӯи + — часпонидан "5" - 32- сатрро ба рақам табдил медиҳадtrue + 12true → 1null + 11null → 0undefined + 1NaNundefined → NaN1 + 2 + "3""33"аз чап ба рост "10" > "9"falseсатрҳо — аз рӯи аломатҳо 5 === "5"falseмуқоисаи қатъӣ навъро ба назар мегирад
Бештар хонед: learn.javascript.ru — Муқоисаҳо · learn.javascript.ru — Табдили навъҳо
Амалия: мустаҳкам мекунем
Пешбинӣ мекунем ва ислоҳ менамоем — малакаи асосии ин бахш.
ВАЗИФАИ 6.1 Натиҷаро пешбинӣ кунед осон
Бе иҷрои код, дар prediction натиҷаи ҳар кадоме аз шаш ифодаро нависед (бо матн, масалан "53"). Баъд иҷро кунед: «Верно!» (Дуруст!) маънои онро дорад, ки шумо ҳамаи қоидаҳои табдилро дар хотир доред. Агар не — ифодае, ки дар он хато кардед, ёбед ва қоидаро номбар кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: натиҷаи ҳар ифода бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" ];
const actual = [
"5" + 3 ,
"5" - 3 ,
"5" * "2" ,
true + 1 ,
null + 1 ,
undefined + 1 ,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Сатри аввал — часпонидан (дар паҳлӯи + сатр ҳаст). Дуюм ва сеюм — арифметика: сатрҳо ба рақам табдил меёбанд.
Ишора 2 Дар ҳисобҳо true — ин 1, null — ин 0, undefined бошад ба NaN табдил меёбад ва натиҷа низ NaN аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 6.2 Хатоҳоро ёбед: сабад часпид миёна
Нарх ва миқдор аз шакл ҳамчун сатр омад ва ба ҷои маблағ часпонидан ҳосил шуд. Кодро чунон ислоҳ кунед, ки Итого: 100 бароварда шавад. Сатрҳои price ва count-ро тағйир додан мумкин нест.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const price = "25" ;
const count = "4" ;
const total = price + count;
console.log ("Итого:" , total);
Натиҷаи интизоршаванда Итого: 100
Ишора 1 Ҳоло Итого: 254 бароварда мешавад — ин часпонидани ду сатр аст. Рақамҳо лозиманд ва бояд зарб кард, на ҷамъ.
Ишора 2 const total = Number(price) * Number(count);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
07 Блоки ЗС: анатомияи промпт ва «ЗС-ро дар хато доштан»
Ёрдамчии ЗС маҳз ба он саволе ҷавоб медиҳад, ки шумо додед. Саволи норавшан — ҷавоби норавшан, ки ба ғайр аз ин метавонад хато дошта бошад. Бинобар ин дар ин курс мо ду малака дорем: дуруст пурсидан (промпт) ва ҷавобро санҷидан (иҷро кардан ва муқоиса намудан).
Қоидаҳои кор бо ЗС дар курси мо
1. Аввал 15 дақиқа худатон кӯшиш мекунед — ва танҳо баъд ба назди ЗС мераванд. 2. Коде, ки сатр ба сатр шарҳ дода наметавонед, ба кор намегузоред. 3. Ҳамеша шарҳ талаб кунед, на танҳо код. 4. Номҳои тағйирёбандаҳо, ҳолатҳои канорӣ ва мантиқро бо даст — дар консол месанҷед. 5. Дар кори назоратӣ (дарсҳои 6 ва 18) ЗС пурра хомӯш аст.
Анатомияи промпт: чор қисми ҳатмӣ
Промпти хуб — матни дароз не, балки сохтор аст. Тартибро дар хотир доред: контекст → вазифа → маҳдудиятҳо → формати ҷавоб . Банди панҷум — санҷиш — мо вақте илова мекунем, ки ҷавобе лозим аст, ки ба он кӯркӯрона бовар кардан мумкин нест (яъне қариб ҳамеша).
Қисм Чӣ навиштан лозим аст Мисол барои ин дарс 1. Контекст Шумо кистед, чиро аллакай медонед, рӯи чӣ кор мекунед «Ман навомӯзам, дарси дуюми JavaScript. console.log, let ва const-ро медонам» 2. Вазифа Як амали мушаххас «Шарҳ деҳ, ки чаро "5" + 3 "53" медиҳад, "5" - 3 бошад 2 медиҳад» 3. Маҳдудиятҳо Чӣ мумкин нест ва чӣ ҳатмист «Бе if, давраҳо ва функсияҳо. Истилоҳи навро бо як ҷумла шарҳ деҳ» 4. Формати ҷавоб Натиҷаро чӣ тавр ороиш додан «Қоида дар як ҷумла, баъд 4 мисоли код бо натиҷа дар шарҳ» 5. Санҷиш Чиро иловатан пурсидан лозим аст «2 ҳолатро номбар кун, ки дар онҳо ман метавонам хато кунам, вале ҷавобро нанавис — ман дар консол месанҷам»
Ташбеҳ аз зиндагӣ
Фармоиши таксӣ. «Маро бибар» — ронанда намефаҳмад, ба куҷо рафтан лозим. «Аз Сино ба фурудгоҳ, борҳои калон, бе роҳи пулакӣ, дар назди толори парвоз бист» — ин контекст, вазифа, маҳдудият ва формат дар як ҷумла аст. Ҳар қадар фармоиш дақиқтар бошад, ҳамон қадар имкони ба ҷои нодуруст расидан камтар аст. ЗС ҳамон ронанда аст: ӯ фикрҳоро намехонад.
шарҳ деҳ чаро дар js 5 + 3 баъзан 53 мешавадНусха бардоштан
Контекст: ман навомӯзам, дарси дуюми JavaScript. Танҳо console.log, let, const ва навъҳои string/number/boolean-ро медонам.
Вазифа: шарҳ деҳ, ки чаро "5" + 3 "53" медиҳад, "5" - 3 бошад 2 медиҳад.
Маҳдудиятҳо: бе if, давраҳо ва функсияҳо. Агар истилоҳи нав истифода барӣ — онро бо як ҷумла шарҳ деҳ.
Формати ҷавоб: аввал қоида дар як ҷумла, баъд 4 мисоли кӯтоҳи код, дар шарҳи ҳар кадом — натиҷа.
Санҷиш: дар охир 2 ифодае деҳ, ки ман дар онҳо метавонам хато кунам. Ҷавобҳоро нанавис — ман худам дар консол месанҷам.Нусха бардоштан
Промпти қавӣ аз чӣ беҳтар аст: ЗС тахмин намекунад, ки сатҳи шумо чӣ гуна аст, сохторҳои ношиносро истифода намебарад, дар шакли қулай ҷавоб медиҳад ва худаш ба шумо маводи худсанҷиро медиҳад.
Қолаби промпти худамонро месозем
Ҳар дафъа сохторро аз сифр навиштан тӯлонӣ аст. Қолаби худатонро созед — нусхае, ки шумо нусха бардошта, пур мекунед. Ин аввалин артефакти курси шумост: он ба конспект оид ба промптҳо меравад, баъд — ба варақаи ёрирасони шахсӣ, ки дар дарси 21 супорида мешавад.
Нусхаи зеринро ба конспекти худ (файл ё қайдҳо) нусха бардоред.
Майдонҳои «доимӣ»-ро як бор пур кунед : дар «Контекст» сатҳ ва стеки худро нависед («JavaScript-и тоза, бе китобхонаҳо, навомӯз»). Ин дар ҳар промпт яксон хоҳад буд.
Сатри «дӯстдошта»-и худро дар «Санҷиш» ихтироъ кунед : масалан, «нишон деҳ, ки консол чиро мебарорад» ё «2 ҳолати канориро номбар кун». Онро низ абадан мегузоред.
Қолабро санҷед дар вазифаи аз дарс: майдонҳоро пур кунед ва ба ЗС фиристед. Агар ҷавоб шуморо қонеъ накард — муайян кунед, ки дар кадом як аз чор қисм тафсилот намерасид, ва қолабро ислоҳ намоед.
Контекст: [ман кистам, чиро аллакай карда метавонам, рӯи чӣ кор мекунам — масалан: «навомӯз, JavaScript-и тозаро меомӯзам, let/const ва навъҳоро медонам»]
Вазифа: [як амали мушаххас — шарҳ деҳ / санҷ / 5 вазифа деҳ]
Маҳдудиятҳо: [чиро истифода бурдан мумкин нест, чӣ ҳатмист; «истилоҳҳои навро бо як ҷумла шарҳ деҳ»]
Формати ҷавоб: [чӣ тавр ороиш додан: аввал қоида, баъд мисолҳо; чанд мисол; бе ҷадвал]
Санҷиш: [боз чӣ: «2 ҷойро номбар кун, ки ман дар онҳо метавонам хато кунам», «нишон деҳ, ки консол чиро мебарорад»]Нусха бардоштан
Промптҳои хуби корӣ оид ба ин мавзӯъ
Аз варақаи ёрирасони курс: «Ин код: [код]. Сатр ба сатр шарҳ деҳ, ки чӣ рӯй медиҳад ва чаро натиҷа чунин аст. Кодро аз нав нанавис — танҳо шарҳ деҳ.» Ва дуюм: «Ба [мавзӯъ] 5 вазифаи сатҳи навомӯз деҳ, аз осон ба душвор, бе ҳал.» Шарҳро бо он чи консол воқеан мебарорад , муқоиса кунед, вазифаҳоро — бо мувофиқат ба мавзӯъ ва набудани ҷавобҳои тайёр.
Ҷавоби ЗС-ро чӣ тавр хондан: месанҷем, бовар намекунем
ЗС бо боварӣ менависад — ҳатто вақте ки хато мекунад. Дар мавзӯи навъҳо ин махсусан намоён аст: табдили ниҳонӣ ва аҷоибиҳое монанди typeof null-ро он аксар вақт нодуруст нақл мекунад. Бинобар ин шумо алгоритми содда доред:
Пешбинӣ кунед. Шарҳи ЗС-ро хондед — нависед, ки кадом натиҷа бояд ҳосил шавад.
Иҷро кунед. Мисолро ба консол нусха бардоред ва бубинед, ки дар асл чӣ бароварда мешавад.
Муқоиса кунед. Мувофиқат кард — олӣ. Мувофиқат накард — ё ЗС хато кард, ё шумо. Фаҳмед, ки маҳз кӣ: омӯзиш ҳамин аст.
Аз нав бипурсед. Баромади воқеиро ба ЗС нишон диҳед: «дар консол X шуд, ту бошӣ Y гуфтӣ — тафовутро шарҳ деҳ».
Консол — довари асосӣ
Саволи баҳсноки «кӣ дуруст аст: ман, ЗС ё китоби дарсӣ»-ро ақида ҳал намекунад, балки иҷрои код. Агар консол ва ЗС ихтилоф дошта бошанд — консол дуруст аст.
Амалия: ЗС-ро дар хато мегирем
Дар зер — «ҷавобҳои ЗС» бо тасдиқҳои нодуруст. Аввал пешбинӣ кунед, ки код дар асл чӣ мебарорад, баъд иҷро кунед — ва ислоҳ намоед.
ВАЗИФАИ 7.1 ЗС дар бораи ҷамъи сатр ва рақам миёна
Ҷавоби ЗС «Ифодаи "10" + 5 ба 15 баробар аст: JavaScript мебинад, ки як қимат ба рақам монанд аст ва худаш сатрро ба рақам табдил медиҳад, бинобар ин ҷамъ иҷро мешавад.»
Хаторо ёбед: сатри аввал дар асл чӣ мебарорад? Баъд сатри дуюмро илова кунед, ки воқеан 15-ро барорад. Нохунакҳои "10"-ро нест кардан мумкин нест — табдилро ошкоро анҷом додан лозим аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("10" + 5 );
// сатрро илова кунед, ки 15-ро барорад
Натиҷаи интизоршаванда 105
15
Ишора 1 Аломати + дар паҳлӯи сатр мечаспонад. ЗС ҷамъро бо часпонидан омехт кард — ин қоидаи 1 аз бахши 6 аст.
Ишора 2 Сатрро ошкоро ба рақам табдил диҳед: console.log(Number("10") + 5);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 7.2 ЗС дар бораи typeof миёна
Ҷавоби ЗС «typeof null "null"-ро бозпас мегардонад, typeof NaN — "NaN"-ро, typeof undefined бошад — "undefined"-ро. Ҳар қимат сатрро бо номи худ бозпас мегардонад.»
Дар коди зер «натиҷаҳо»-и аз ҷавоби ЗС ҳамчун сатрҳои оддӣ истодаанд. Ҳар сатр-«ҷавоб»-ро ба ифодаи воқеӣ бо typeof иваз кунед ва бубинед, ки кадом як аз се тасдиқ дуруст аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("null" ); // бояд typeof null бошад
console.log ("NaN" ); // бояд typeof NaN бошад
console.log ("undefined" ); // бояд typeof undefined бошад
Натиҷаи интизоршаванда object
number
undefined
Ишора 1 Дар қавсҳои console.log( ) бояд калима дар нохунакҳо не, балки ифода истад: typeof null бе нохунак.
Ишора 2 Танҳо тасдиқи сеюм дуруст баромад. Бо typeof null — ғаройиби таърихӣ, NaN бошад аз рӯи навъ — рақам аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 7.3 ЗС дар бораи Boolean душвор
Ҷавоби ЗС «Ҳамаи қиматҳои зоҳиран «холӣ» ба false табдил меёбанд: 1) Boolean("0") — false, 2) Boolean("") — false, 3) Boolean(" ") — false (фосила низ холӣ аст), 4) Boolean(0) — false.»
Чор сатрро иҷро кунед ва бифаҳмед, ки кадом тасдиқҳои ЗС нодурустанд. Баъд сатри охиринро илова кунед: Ошибки ИИ: ва рақамҳои тасдиқҳои нодуруст (бо вергул дар console.log, бо тартиби афзуншавӣ).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (Boolean ("0" ));
console.log (Boolean ("" ));
console.log (Boolean (" " ));
console.log (Boolean (0 ));
// илова кунед: Ошибки ИИ: ...
Натиҷаи интизоршаванда true
false
true
false
Ошибки ИИ: 1 3
Ишора 1 Баромади консолро бо тасдиқҳои ЗС муқоиса кунед: дар ҳама ҷое, ки ЗС false навишт, консол бошад true нишон дод — ин хато аст.
Ишора 2 Бандҳои 1 ва 3 хато шуданд: "0" ва " " — сатрҳои ғайриҳолӣ. Сатр дар ниҳоят: console.log("Ошибки ИИ:", 1, 3);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
Бештар хонед: learn.javascript.ru — Табдили навъҳо · MDN — Falsy
08 Амалия дар дарс: 15 вазифаи хурд оид ба навъҳо
Ин қисми асосии машғулият аст. Понздаҳ вазифаи кӯтоҳ — аз содда ба душвор. Дар ҳар кадом як ритми ягона амал мекунад:
Бихонед шарт ва кодро.
Пешбинӣ кунед натиҷаро — дар дафтар нависед.
Иҷро кунед ва муқоиса намоед. Ихтилоф — сабаби ба ёд овардани қоидаи дарс аст.
Шарҳ диҳед ба ҳамнишин, ки чаро маҳз ҳамин тавр шуд — бо овоз ва бо суханони худатон.
Агар монд шудед
Аввал бахши лозимаи дарсро аз нав бихонед, баъд ишораро кушоед. Баъд — аз ҳамнишин бипурсед. Ба ЗС пас аз 15 дақиқаи кӯшиши мустақилона муроҷиат кунед ва қолаби промптеро истифода баред, ки ҳамин ҳоло ҷамъ кардед.
Амалия: вазифаҳои хурд
ВАЗИФАИ 8.1 Анкетаи донишҷӯ осон
Се тағйирёбандаро эълон кунед (const ё let-ро интихоб кунед — кадомаш дар ин ҷо лозим аст?): name бо қимати "Фарход", age — рақами 20, isStudent — мантиқии true. Бо як сатр бо литерали қолабӣ бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// тағйирёбандаҳоро эълон кунед ва сатрро бароред
Натиҷаи интизоршаванда Фарход, 20 лет, студент: true
Ишора 1 Дар ин ҷо чизе тағйир намеёбад, бинобар ин const мувофиқ аст. Қимати мантиқӣ бе нохунак навишта мешавад.
Ишора 2 console.log(`${name}, ${age} лет, студент: ${isStudent}`);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.2 Ҳисобкунак осон
Дар prediction натиҷаҳои панҷ ифодаро нависед ва иҷро кунед — код пешбиниро бо қиматҳои воқеӣ муқоиса мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: натиҷаи ҳар ифода бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" ];
const actual = [
10 / 4 ,
10 % 4 ,
2 ** 5 ,
7 - "2" ,
"7" + 2 ,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Тақсим дар JavaScript мудаввар намекунад. Бақияи 10 % 4 — ин он аст, ки пас аз ду чоркаси пурра монд.
Ишора 2 Сатри пеш аз охирин — арифметика (- аз сатр рақам месозад), охирин — часпонидан (+ дар паҳлӯи сатр).
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.3 Сатр ё рақам осон
Рақами билет ҳамчун сатр омад. Онро ба рақам табдил диҳед, дар ticketNum захира кунед ва тавассути typeof боварӣ ҳосил кунед, ки навъ тағйир ёфт.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const ticket = "15" ;
console.log (typeof ticket);
// ticket-ро ба рақам табдил диҳед: const ticketNum = ...
console.log (typeof ticketNum);
Натиҷаи интизоршаванда string
number
Ишора 1 То даме ки ticketNum эълон нашудааст, барнома бо ReferenceError меафтад. Як сатр байни ду console.log лозим аст.
Ишора 2 const ticketNum = Number(ticket);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.4 Беинтиҳоӣ ва «рақам не» осон
Дар prediction натиҷаҳои панҷ ифодаро нависед. Диққати махсус — ба охирин.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: натиҷаи ҳар ифода бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" ];
const actual = [
5 / 0 ,
-5 / 0 ,
0 / 0 ,
"abc" * 3 ,
typeof (0 / 0 ),
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Тақсими рақами ғайрисифр ба сифр беинтиҳоро бо аломат медиҳад; 0 / 0 — номуайянӣ.
Ишора 2 NaN «рақам не» шарҳ дода мешавад, вале навъи number дорад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.5 Ҳарфи калон миёна
Номи шаҳр бо ҳарфҳои хурд навишта шудааст. Ҳарфи аввалро калон кунед ва натиҷаро бароред, дар сатри дуюм — дарозии сатр. Дар хотир доред: аломат аз рӯи рақам — city[0], «ҳама ба ҷуз аломати аввал» бошад — city.slice(1).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const city = "душанбе" ;
// ҳарфи аввал — калон, боқӣ — чунон ки буданд
Натиҷаи интизоршаванда Душанбе
7
Ишора 1 Аломати аввалро гиред, онро тавассути .toUpperCase() калон кунед ва бо бақияи сатр бичаспонед.
Ишора 2 console.log(city[0].toUpperCase() + city.slice(1)); ва console.log(city.length);
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.6 Баҳои миёна миёна
Се баҳо ҳамчун сатр омад. Баҳои миёнаро ҳисоб кунед ва бо як рақам пас аз нуқта бароред. Дар хотир доред: .toFixed(1) як рақамро мегузорад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const g1 = "5" ;
const g2 = "4" ;
const g3 = "5" ;
// бароред: Средний балл: 4.7
Натиҷаи интизоршаванда Средний балл: 4.7
Ишора 1 Агар сатрҳоро тавассути + ҷамъ кунед, часпонидани "545" ҳосил мешавад. Аввал ҳар баҳоро ба рақам табдил диҳед.
Ишора 2 const avg = (Number(g1) + Number(g2) + Number(g3)) / 3; ва баъд avg.toFixed(1) дар дохили сатри қолабӣ.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.7 Шаш Boolean миёна
Пешбинӣ кунед, ки кадоме аз шаш қимат true мешавад ва кадомаш false: шаш калимаро ба prediction нависед ва иҷро кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: true ё false барои ҳар қимат (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" ];
const actual = [
Boolean (0 ),
Boolean ("" ),
Boolean ("0" ),
Boolean (null ),
Boolean ("false" ),
Boolean (NaN),
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Рӯйхати қиматҳои «холӣ»-ро ба ёд оред: false, 0, "", null, undefined, NaN.
Ишора 2 Сатрҳои "0" ва "false" — холӣ нестанд, пас true.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.8 Занҷири операторҳо миёна
Панҷ амалро болои n иҷро кунед, танҳо операторҳои кӯтоҳро истифода бурда: 5 илова кардан, ба 2 зарб кардан, 3 тарҳ кардан, ба 3 тақсим кардан, ба квадрат бардоштан (**=).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let n = 10 ;
// +5, *2, -3, /3, ба квадрат
console.log ("n =" , n);
Натиҷаи интизоршаванда n = 81
Ишора 1 Дар ақл санҷед: 10 → 15 → 30 → 27 → 9 → 81.
Ишора 2 n += 5; n *= 2; n -= 3; n /= 3; n **= 2;
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
Дар prediction панҷ қиматеро нависед, ки код мебарорад. Қимати a-ро пас аз ҳар фармон пайгирӣ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: панҷ қимате, ки ифодаҳо бо тартиб бозпас мегардонанд (бо матн)
const prediction = ["" , "" , "" , "" , "" ];
let a = 3 ;
const actual = [a++, a, ++a, a--, a].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 a++ аввал қимати кӯҳнаро медиҳад, баъд зиёд мекунад. ++a — баръакс.
Ишора 2 Ҳолати a қадам ба қадам: 3 → 4 → 4 → 5 → 5 → 4.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.10 Вақти роҳ душвор
Сафари Душанбе — Хоруғ 275 дақиқа мегирад (шартӣ). Вақтро дар шакли «соат ва дақиқа» бароред. Math.floor ва %-ро истифода баред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const minutes = 275 ;
// бароред: В пути: 4 ч 35 мин
Натиҷаи интизоршаванда В пути: 4 ч 35 мин
Ишора 1 Дар як соат 60 дақиқа аст. Соатҳои пурра — ин қисми бутуни тақсим ба 60 аст.
Ишора 2 Соатҳо: Math.floor(minutes / 60), дақиқаҳо: minutes % 60.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.11 null ва undefined осон
Дар prediction шаш қиматро нависед — чунон ки console.log онҳоро бо фосила чоп мекард.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: шаш қимат бо тартиб (бо матн)
const prediction = ["" , "" , "" , "" , "" , "" ];
let a;
const b = null ;
const actual = [a, b, typeof a, typeof b, a == b, a === b].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 typeof b — ҳамон ғаройиби typeof null аст.
Ишора 2 null == undefined — true (муқоисаи ғайриқатъӣ онҳоро ба ҳам меорад), ===-и қатъӣ бошад навъҳои гуногунро мебинад — false.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.12 Часпонидем ё ҷамъ кардем миёна
Дар prediction натиҷаҳои панҷ ифодаро нависед. Барои ҳар кадом пешакӣ ҳал кунед, ки дар куҷо ҷамъ буд ва дар куҷо часпонидан.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: натиҷаи ҳар ифода бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" ];
const actual = [
1 + "2" + 3 ,
"3" * "4" + 1 ,
10 - "2" + "2" ,
"4" + 4 * 2 ,
10 / "5" + "1" ,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Аз чап ба рост равед, вале дар хотир доред: * ва / пештар аз + ва - иҷро мешаванд.
Ишора 2 Сатри чорум: аввал 4 * 2 = 8, баъд "4" + 8 — часпонидан, "48" мешавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.13 Рақамҳои адад душвор
Адади 2587 дода шудааст. Бе сатрҳо ва давраҳо, танҳо бо арифметика, рақами охирини онро, адад бе рақами охирин ва аломати «оё адад ҷуфт аст» (натиҷаи муқоиса бо ===)-ро бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const n = 2587 ;
// се сатр бароред
Натиҷаи интизоршаванда Последняя цифра: 7
Без неё: 258
Чётное: false
Ишора 1 Рақами охирин — бақияи тақсим ба 10. Боқӣ — қисми бутуни тақсим ба 10.
Ишора 2 n % 10, Math.floor(n / 10), n % 2 === 0.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.14 Дирамҳо бе хато душвор
Ду сомса 0.1 ва 0.2 сомонӣ меарзанд. Ҷамъи соддалавҳона натиҷаи нодақиқ медиҳад — онро бо сатри аввал бароред. Баъд дақиқ ҳисоб кунед: нархҳоро ба дирам гузаронед (ба 100 зарб кунед ва тавассути Math.round мудаввар намоед), ҷамъ кунед, баръакс ба сомонӣ гузаронед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = 0.1 ;
const b = 0.2 ;
console.log ("Наивно:" , a + b);
// тавассути дирам ҳисоб кунед ва бароред: Точно: 0.3
Натиҷаи интизоршаванда Наивно: 0.30000000000000004
Точно: 0.3
Ишора 1 Дирамҳо — рақамҳои бутунанд: Math.round(a * 100) ин 10 аст, Math.round(b * 100) бошад ин 20.
Ишора 2 const total = Math.round(a * 100) + Math.round(b * 100); ва total / 100-ро бароред.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.15 Чек бо андоз душвор
Дар шакли мағоза нарх ва миқдор — сатр аст. Ба маблағ андози 15% (коэффитсиенти 1.15) илова мешавад. Маблағи пардохтро ҳисоб кунед, то бутун мудаввар кунед ва бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const priceText = "200" ;
const countText = "3" ;
const TAX = 1.15 ;
// бароред: К оплате: 690 сомони
Натиҷаи интизоршаванда К оплате: 690 сомони
Ишора 1 Сатрҳоро ба рақам тавассути Number, баъд зарб ба миқдор ва ба TAX.
Ишора 2 const total = Math.round(Number(priceText) * Number(countText) * TAX); — ва бо сатри қолабӣ бароред.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
09 Вазифаи хонагӣ
Кори хонагӣ — 10 вазифа ва конспект оид ба промптҳо. Натиҷа: файли tasks-02.js ва конспект бо промптҳо. Ҳалҳоро дар файли оддӣ нависед — тавассути консоли браузер (код гузоред) ё дар VS Code иҷро кунед.
tasks-02.js-ро чӣ тавр оро додан лозим аст
Барои ҳар вазифа — шарҳ бо рақам ва шарт, баъд код. Дар вазифаҳои пешбинӣ аввал пешбинии худро бо шарҳ нависед, баъд кодеро, ки пешбиниро месанҷад, дар охир бошад шарҳи «мувофиқат кард» ё «мувофиқат накард, зеро…».
10 вазифа
Шиносномаи маълумот. 8 тағйирёбандаи навъҳои гуногунро эълон кунед (string, number, boolean, null, undefined ва боз се то ба интихоби шумо). Барои ҳар кадом қимат ва typeof-ро бароред.
Корти зиёратии ман. Маълумот дар бораи худатон (ном, синну сол, шаҳр, хӯроки дӯстдошта)-ро дар const гузоред. Корти зиёратии бисёрсатриро бо як console.log бо сатри қолабӣ бароред.
Табдилдиҳандаи асъор. Қурби USD_RATE = 10.95-ро дар const гузоред. Маблағ бо доллар ҳамчун сатри "250" омад. Маблағро бо сомонӣ бароред, бо ду рақам пас аз нуқта тавассути toFixed(2) мудаввар карда.
8 ифодаро пешбинӣ кунед. Худатон 8 ифодаи бо табдили ниҳонӣ (+, -, *, true, null, undefined) тартиб диҳед. Пешбиниро нависед, баъд иҷро кунед ва муқоиса намоед.
Соат ва дақиқа. Аз рӯи миқдори сонияҳо (масалан, 10000) вақтро дар шакли «соат : дақиқа : сония» бароред. Math.floor ва %-ро истифода баред.
Ислоҳи се порча. Се порчаи кӯтоҳро бо хатои табдили навъ нависед (часпонидан ба ҷои ҷамъ; NaN аз сабаби undefined; муқоисаи ғайриқатъӣ), дар поён бошад — варианти ислоҳшудаи ҳар кадомро.
Ошкорсози Falsy. Boolean(...)-ро барои 12 қимати гуногун бароред (0, "", " ", "0", null, undefined, NaN, -1 ва ғ.). Дар паҳлӯ бо шарҳ — пешбинии шумо.
Шикори NaN ва Infinity. Се роҳи гуногуни гирифтани NaN ва ду роҳи Infinity-ро ёбед. NaN-ро тавассути Number.isNaN санҷед.
Пул бе хато. Сабад: се мол бо нархҳо бо сомонӣ ва дирам (масалан, 12.40, 7.35, 0.10). Натиҷаро тавассути дирам (бо рақамҳои бутун) ҳисоб кунед ва бо сомонӣ бароред.
Як промпти хуб. Промптро аз рӯи формулаи «контекст → вазифа → маҳдудиятҳо → формат» барои ҳар вазифаи ин дарс тартиб диҳед. Онро дар конспект сабт кунед (поёнтар бинед).
Кор бо ЗС ва конспект оид ба промптҳо
Супориш оид ба «доштани хато»
Ҳар 3 вазифаро аз 10 интихоб кунед. Барои ҳар кадом ба ЗС промптро аз рӯи қолаби худ фиристед: «шарҳ деҳ, ин чӣ тавр ҳал мешавад ва консол чиро мебарорад». Баъд кодро аз ҷавоб иҷро кунед ва бо натиҷаи худ муқоиса намоед. Дар конспект барои ҳар кадоми се вазифа нависед:
кадом промптро фиристодед (бо матн);
мазмуни мухтасари ҷавоби ЗС (2–3 ҷумла);
ЗС дар куҷо хато кард — ё агар хато накарда бошад, маҳз чиро санҷидед, то боварӣ ҳосил кунед;
бо промпти дуюм чиро ислоҳ ё возеҳ кардед.
Агар ЗС ягон бор хато накарда бошад — ин муқаррарӣ аст, вале он гоҳ далелҳо лозиманд: маҳз чиро иҷро ва муқоиса кардед. Ҷавоби «ЗС дуруст буд, зеро ЗС ҳамин тавр гуфт» ҳисоб карда намешавад.
Чӣ супоридан лозим аст
tasks-02.js — ҳалли 10 вазифа бо шарҳҳои пешбинӣ;
prompts-02.md — конспект оид ба промптҳо: қолаби шумо аз дарс + се таҳлили «промпт → ҷавоб → хато/санҷиш»;
ҳар ду файл — ба репозиторий дар GitHub (истиноди онро ба муаллим фиристед).
Чӣ тавр баҳо дода мешавад (0–10)
Баллҳо Барои чӣ 0–5 Вазифаҳои 1–10: барои ҳар кадом 0,5 балл — код иҷро мешавад ва он чиро мебарорад, ки талаб шуда буд 0–1 Саранҷомӣ: номҳо дар camelCase, танҳо const/let, var ва ==-и ғайриқатъӣ нест, шарҳҳо бо пешбинӣ 0–1 Қолаби промпт: ҳар чор қисм ва майдони «Санҷиш» ҳаст 0–3 Се таҳлили ЗС: барои ҳар кадом 1 балл — промпт, ҷавоб, санҷиш бо иҷро ва хулосаи софдилонаи «дар куҷо хато кард / чиро санҷид» ҳаст
Дар хотир доред
Кодеро, ки сатр ба сатр шарҳ дода наметавонед, аз они шумо ҳисоб намешавад. Муаллим метавонад хоҳиш кунад, ки ҳар вазифаро шифоҳӣ шарҳ диҳед.
✓ Варақаи хулосаи дарс
Тағйирёбанда — ҳуҷайраи номдор бо қимат. const — бо пешфарз, let — агар қимат тағйир ёбад, var — истифода намебарем (аз блок мерезад, дар бораи эълони такрорӣ хомӯш аст, «боло мебарояд»).
Номҳо: лотинӣ, camelCase, на аз рақам, регистр муҳим аст; собитҳои танзимот — UPPER_CASE.
Навъҳо: string, number, boolean, null, undefined (+ bigint, symbol). typeof сатр бозпас мегардонад. typeof null → "object" — ғаройиби таърихӣ; typeof NaN → "number".
undefined — «қимат ҳанӯз нест», null — «қимат қасдан нест».
Сатрҳо: литералҳои қолабӣ `Салом, ${name}`; .length, .trim(), .toUpperCase(), s[0]. Ҷойгузорӣ танҳо дар нохунакҳои баръакс кор мекунад.
Операторҳо: + - * / % **; кӯтоҳкуниҳо +=, -=, ++, --; Math.round/floor/ceil барои мудаввар кардан.
NaN — «рақам не», сироятӣ, NaN !== NaN, санҷиш — Number.isNaN(). Infinity — натиҷаи тақсим ба сифр.
Пулро бо дирамҳои бутун ҳисоб мекунем; 0.1 + 0.2 !== 0.3; toFixed() сатр бозпас мегардонад.
Табдили ошкоро: String(), Number() ("" → 0, матни зиёдатӣ → NaN), parseInt/parseFloat рақамро аз аввали сатр мехонанд, Boolean().
Falsy: false, 0, "", null, undefined, NaN. Боқӣ ҳама — true, аз ҷумла "0" ва "false".
Табдили ниҳонӣ: "5" + 3 → "53" (сатр бо + — часпонидан); "5" - 3 → 2; true + 1 → 2; null + 1 → 1; undefined + 1 → NaN; 1 + 2 + "3" → "33".
Муқоиса: ҳамеша === ва !==. Сатрҳо аз рӯи аломатҳо муқоиса мешаванд: "10" > "9" → false.
Промпт: контекст → вазифа → маҳдудиятҳо → формати ҷавоб (+ санҷиш). Ҷавоби ЗС — фарзия аст: пешбинӣ кунед, иҷро кунед, муқоиса кунед, аз нав бипурсед. Консол — довари асосӣ.