Навъҳои додаҳо
Ин барои чӣ лозим аст
Қиматҳо навъ-ҳои гуногун доранд: матн, ададҳо, «ҳа/не». Аз навъ вобаста аст, ки бо қимат чӣ кор кардан
мумкин аст. 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 аввал адад ва баъд сатр гузоштан мумкин аст.
Чунин забонро бо навъбандии динамикӣ меноманд.
Хатоҳои маъмул
- Пайвастшавӣ ба ҷойи ҷамъ.
"10" + 5→"105". Ислоҳ:Number("10") + 5. Numberаз сатр бо ҳарфҳо.Number("12px")→NaN.parseInt("12px")лозим аст.- Муқоиса бо
NaN.x === NaNҳамешаfalseаст.Number.isNaN(x)-ро истифода баред. - Нохунакҳои оддӣ ба ҷойи баръакс.
"Салом, ${name}"матнро ҳамон тавр, бо доллар ва қавсҳо мебарорад. Гузоштан танҳо дар`…`кор мекунад. - Сатри
"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 |
боқӣ — ҳақиқӣ |