Гузариш ба мундариҷа
Мавзӯи 3 аз 16
Назария

Навъҳои додаҳо

Ин барои чӣ лозим аст

Қиматҳо навъ-ҳои гуногун доранд: матн, ададҳо, «ҳа/не». Аз навъ вобаста аст, ки бо қимат чӣ кор кардан мумкин аст. 5 + 5 — ин 10 аст, вале "5" + "5" — ин "55". Додаҳо аз формаҳо, файлҳо ва интернет қариб ҳамеша ҳамчун сатр меоянд, ва онҳоро ба адад табдил дода тавонистан лозим аст — вагарна ҳисобкунак ба ҷойи ҷамъ рақамҳоро мепайвандад.

Навъҳои асосӣ

Навъ Мисолҳо Ин чист
string "Аня", '42', `салом` сатр, матн
number 42, 3.14, -7 адад (бутун ва касрӣ — як навъ)
boolean true, false мантиқии «ҳа / не»
undefined undefined «ҳанӯз қимат нест»
null null «қимат қасдан нест»

Боз bigint ва symbol ҳастанд — онҳо кам лозим мешаванд. Массивҳо ва объектҳоро баъдтар мебинем.

Донистани навъ: typeof

console.log(typeof "салом");
console.log(typeof 42);
console.log(typeof true);
console.log(typeof undefined);

Натиҷа:

string
number
boolean
undefined

Аҷоибии забон: typeof null "object" медиҳад. Ин хатои кӯҳнаест, ки дигар ислоҳ кардан мумкин нест.

undefined ва null

Агар тағйирёбанда созед ва ба он ҳеҷ чиз нагузоред, дар он undefined мешавад:

let answer;
console.log(answer);

Натиҷа:

undefined

null-ро худамон мегузорем, вақте ки гуфтан мехоҳем «дар ин ҷо холӣ аст»: let winner = null; — ҳоло ғолиб нест.

Сатрҳои қолибӣ

Сатр дар нохунакҳои баръакс ` қолибӣ номида мешавад. Ба дохили он қиматро бо ${...} гузоштан мумкин аст:

const name = "Аня";
const age = 15;
console.log(`Номи ман ${name}, ман ${age}-сола`);
console.log(`Пас аз як сол ${age + 1} мешавад`);

Натиҷа:

Номи ман Аня, ман 15-сола
Пас аз як сол 16 мешавад

Дар дохили ${} ҳар ифодаро навиштан мумкин аст. Ин нисбат ба пайваст кардани қисмҳо бо + қулайтар аст.

Табдили навъҳо

Ба адад:

console.log(Number("42"));      // 42
console.log(Number("3.5"));     // 3.5
console.log(Number(""));        // 0
console.log(Number("12px"));    // NaN
console.log(parseInt("12px"));  // 12
console.log(parseFloat("1.5kg")); // 1.5

NaN (Not a Number, «адад нест») — қимати махсуси ададӣ: натиҷаи табдили ноком. Онро бо функсияи Number.isNaN(x) месанҷанд. Муқоисаи оддӣ кор намекунад: NaN === NaN — ин false аст!

Number талаб мекунад, ки тамоми сатр адад бошад. parseInt ва parseFloat рақамҳоро аз аввали сатр мехонанд ва дар аломати аввалини зиёдатӣ меистанд.

Ба сатр: String(42) → "42", ё `${42}`.

Ба мантиқӣ: Boolean(x). Қиматҳое, ки ба false табдил меёбанд, «дурӯғин» номида мешаванд: 0, "" (сатри холӣ), null, undefined, NaN, false. Ҳама чизи дигар — true, ҳатто сатри "0" ва сатри "false".

Табдили худкор

JavaScript баъзан навъҳоро худаш иваз мекунад — ва ин манбаи ногаҳониҳост:

console.log("5" + 2);   // 52  — плюс бо сатр мепайвандад
console.log("5" - 2);   // 3   — минус сатрро ба адад табдил медиҳад
console.log("5" * "2"); // 10
console.log(true + 1);  // 2   — true 1 мешавад

Натиҷа:

52
3
10
2

Қоида: агар дар ягон тарафи + сатр бошад — пайвастшавӣ мешавад. Бинобар ин додаҳои формаро беҳтар аст ошкоро бо Number(...) ба адад табдил диҳед.

Дар дохил чӣ гуна кор мекунад

Ҳар қимат дар хотира ҳамроҳи нишонаи навъи худ нигоҳ дошта мешавад. Вақте ки a + b менависед, муҳаррик аввал ба навъҳо менигарад: ду адад — ҷамъ мекунад, сатр ҳаст — қисми дигарро ба сатр табдил медиҳад ва мепайвандад. Навъҳо ба тағйирёбанда вобаста нестанд: ба як let аввал адад ва баъд сатр гузоштан мумкин аст. Чунин забонро бо навъбандии динамикӣ меноманд.

Хатоҳои маъмул

  1. Пайвастшавӣ ба ҷойи ҷамъ. "10" + 5 → "105". Ислоҳ: Number("10") + 5.
  2. Number аз сатр бо ҳарфҳо. Number("12px") → NaN. parseInt("12px") лозим аст.
  3. Муқоиса бо NaN. x === NaN ҳамеша false аст. Number.isNaN(x)-ро истифода баред.
  4. Нохунакҳои оддӣ ба ҷойи баръакс. "Салом, ${name}" матнро ҳамон тавр, бо доллар ва қавсҳо мебарорад. Гузоштан танҳо дар `…` кор мекунад.
  5. Сатри "false" ҳақиқӣ ҳисоб мешавад. Boolean("false") → true, зеро сатр холӣ нест.

Ёддошт

Чӣ Чӣ тавр Натиҷа
Донистани навъ typeof x "string", "number"…
Сатр → адад Number("42") 42
Адад аз аввали сатр parseInt("12px") 12
Касрӣ аз аввали сатр parseFloat("1.5kg") 1.5
Санҷиши NaN Number.isNaN(x) true / false
Адад → сатр String(42) "42"
Гузоштан `Ҳамагӣ: ${sum}` "Ҳамагӣ: 12"
Қиматҳои дурӯғин 0 "" null undefined NaN false боқӣ — ҳақиқӣ

Сатрҳо ба ададҳо

Осон+10 XP

Дар тағйирёбандаҳои a ва b сатрҳои "5" ва "7" ҳастанд. Доимии sum-ро созед, ки дар он адади 12 — суммаи ин қиматҳо бошад.

Барои ҳал кардани масъалаҳо коннекторро пайваст кун

Коди масъалаҳо дар компютери худат иҷро мешавад — ин аз браузер тезтар ва боэътимодтар аст. Барои ин барномаи ройгони коннектори CodeWithMe лозим аст. Онро як бор пайваст кардан кифоя аст.

Коннекторро дар ин компютер ҷустуҷӯ мекунем…

  1. 1
    Коннекторро барои системаи худ (Windows, macOS ё Linux) зеркашӣ кун.Зеркашии коннекторДар саҳифаи зеркашӣ файлеро интихоб кун, ки дар номаш системаи ту ҳаст, масалан windows-amd64.
  2. 2Онро иҷро кун ва ҷузвдонеро интихоб кун, ки ҳалҳоят дар он ҷо меистанд. Python ва Node.js-ро ӯ худаш ҳангоми зарурат ба он ҷо мегузорад.
  3. 3
    Дар поён рамзи 6-рақамаро ворид кун — он дар равзанаи коннектор навишта шудааст («Рамз барои сайти CodeWithMe»). Агар браузер дар бораи дастрасӣ ба шабакаи маҳаллӣ пурсад — иҷозат деҳ.

Коннектор кушода аст (рамзи манбаъ дар GitHub), танҳо дар компютери ту кор мекунад ва кодро танҳо пас аз ворид кардани рамзи пайвастшавӣ иҷро мекунад.