ÐнаÑÐµÐ½Ð½Ñ Ð² JavaScript завжди Ð¼Ð°Ñ Ð¿ÐµÐ²Ð½Ð¸Ð¹ Ñип Ð´Ð°Ð½Ð¸Ñ . ÐапÑиклад, ÑÑдок або ÑиÑло.
У JavaScript Ñ Ð²ÑÑÑм оÑÐ½Ð¾Ð²Ð½Ð¸Ñ ÑипÑв Ð´Ð°Ð½Ð¸Ñ . У ÑÑÐ¾Ð¼Ñ ÑоздÑÐ»Ñ Ð¼Ð¸ ÑозглÑнемо ÑÑ Ð² ÑÑломÑ, а в наÑÑÑÐ¿Ð½Ð¸Ñ â деÑалÑно поговоÑимо пÑо кожен з Ð½Ð¸Ñ .
Ðи можемо пÑизнаÑиÑи змÑннÑй бÑдÑ-Ñкий Ñип Ð´Ð°Ð½Ð¸Ñ . ÐапÑиклад, в один Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð¼Ñнна може бÑÑи ÑÑдком, а в ÑнÑий â ÑиÑлом:
// ÑÑÑ Ð½Ðµ бÑде помилки
let message = "пÑивÑÑ";
message = 123456;
Ðови пÑогÑамÑваннÑ, ÑÐºÑ Ð´Ð°ÑÑÑ Ð·Ð¼Ð¾Ð³Ñ Ñаке ÑобиÑи, називаÑÑÑÑÑ âдинамÑÑно ÑипÑзованимиâ. ÐаÑÑÑÑÑ Ð½Ð° ÑвазÑ, Ñо Ñипи Ð´Ð°Ð½Ð¸Ñ Ð²Ð¸Ð·Ð½Ð°ÑенÑ, але змÑÐ½Ð½Ñ Ð½Ðµ пÑивâÑÐ·Ð°Ð½Ð½Ñ Ð´Ð¾ жодного ÑипÑ.
ЧиÑло (number)
let n = 123;
n = 12.345;
Тип number пÑедÑÑавлÑÑ Ñ ÑÑÐ»Ñ ÑиÑла, Ñ ÑиÑла з ÑÑÑ Ð¾Ð¼Ð¾Ñ ÑоÑкоÑ.
РбагаÑо опеÑаÑÑй, Ñо можна ÑобиÑи з ÑиÑлами, напÑиклад, Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ *, дÑÐ»ÐµÐ½Ð½Ñ /, Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ +, вÑднÑÐ¼Ð°Ð½Ð½Ñ - ÑоÑо.
ÐкÑÑм звиÑайниÑ
ÑиÑел, Ñ Ñак Ð·Ð²Ð°Ð½Ñ âÑпеÑÑалÑÐ½Ñ ÑиÑÐ»Ð¾Ð²Ñ Ð·Ð½Ð°ÑеннÑâ, Ñо Ñакож маÑÑÑ Ð²ÑдноÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑого ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð¸Ñ
: Infinity, -Infinity Ñ NaN.
-
InfinityÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ Ð¼Ð°ÑемаÑиÑÐ½Ñ Ð½ÐµÑкÑнÑеннÑÑÑÑ â. Це ÑпеÑÑалÑне знаÑеннÑ, Ñо Ñ Ð±ÑлÑÑим за бÑдÑ-Ñке ÑиÑло.Ðи можемо оÑÑимаÑи його Ñк ÑезÑлÑÑÐ°Ñ Ð´ÑÐ»ÐµÐ½Ð½Ñ Ð½Ð° нÑлÑ:
alert(1 / 0); // InfinityÐбо безпоÑеÑеднÑо поÑилаÑиÑÑ Ð½Ð° нÑого:
alert(Infinity); // Infinity -
NaN(Not a Number) ÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ Ð¾Ð±ÑиÑленнÑ. Це Ñ ÑезÑлÑÑÐ°Ñ Ð½ÐµÐ¿ÑавилÑÐ½Ð¾Ñ Ð°Ð±Ð¾ невизнаÑÐµÐ½Ð¾Ñ Ð¼Ð°ÑемаÑиÑÐ½Ð¾Ñ Ð¾Ð¿ÐµÑаÑÑÑ, напÑиклад:alert("not a number" / 2); // NaN, Ñаке дÑÐ»ÐµÐ½Ð½Ñ Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¼NaNÑ âпÑиÑепливимâ (âзаÑазливимâ). ÐÑдÑ-Ñка подалÑÑа маÑемаÑиÑна опеÑаÑÑÑ Ð·NaNповеÑÑаÑNaN:alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "not a number" / 2 - 1 ); // NaNÐÑже, ÑкÑо деÑÑ Ñ Ð¼Ð°ÑемаÑиÑÐ½Ð¾Ð¼Ñ Ð²Ð¸ÑÐ°Ð·Ñ Ñ
NaN, вÑн поÑиÑÑÑÑÑÑÑ Ð½Ð° веÑÑ ÑезÑлÑÑÐ°Ñ (Ñ Ð»Ð¸Ñе один винÑÑок: ÑезÑлÑÑаÑом опеÑаÑÑÑNaN ** 0бÑде1).
ÐбÑиÑÐ»ÐµÐ½Ð½Ñ Ñ âбезпеÑнимâ в JavaScript. Ðи можемо ÑобиÑи бÑдÑ-Ñо: дÑлиÑи на нÑлÑ, звеÑÑаÑиÑÑ Ð´Ð¾ неÑиÑлового ÑÑдка Ñк до ÑиÑла ÑоÑо.
ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑÑ Ð½Ñколи не зÑпиниÑÑÑÑ Ð· ÑаÑалÑÐ½Ð¾Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ñ (не âвмÑеâ). У найгÑÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð¼Ð¸ оÑÑимаÑмо в ÑезÑлÑÑаÑÑ NaN.
СпеÑÑалÑÐ½Ñ ÑиÑÐ»Ð¾Ð²Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑоÑмалÑно належаÑÑ Ð´Ð¾ ÑÐ¸Ð¿Ñ ânumberâ. ХоÑа, звÑÑно, вони не Ñ ÑиÑлами Ñ Ð·Ð°Ð³Ð°Ð»ÑнопÑийнÑÑÐ¾Ð¼Ñ ÑозÑмÑннÑ.
ÐокладнÑÑе ÑобоÑÑ Ð· ÑиÑлами ми ÑозглÑнемо Ñ ÑоздÑÐ»Ñ Ð§Ð¸Ñла.
BigInt
У JavaScript, Ñип ânumberâ не може мÑÑÑиÑи ÑиÑла бÑлÑÑÑ Ð·Ð° (253-1) (Ñе 9007199254740991), або менÑÑ Ð·Ð° -(253-1) Ð´Ð»Ñ Ð²ÑдâÑмниÑ
ÑиÑел.
ЯкÑо бÑÑи дÑйÑно ÑоÑним, Ñип ânumberâ може збеÑÑгаÑи бÑлÑÑÑ ÑÑÐ»Ñ ÑиÑла (до 1,7976931348623157 * 10308), але поза межами безпеÑного дÑÐ°Ð¿Ð°Ð·Ð¾Ð½Ñ ÑÑлиÑ
ÑиÑел ±(2 53-1) виникне помилка ÑоÑноÑÑÑ, оÑкÑлÑки не вÑÑ ÑиÑÑи вмÑÑÑÑÑÑÑÑ Ñ ÑÑкÑÐ¾Ð²Ð°Ð½Ð¾Ð¼Ñ 64-бÑÑÐ½Ð¾Ð¼Ñ ÑÑ
овиÑÑ. Ð¢Ð¾Ð¼Ñ Ð¼Ð¾Ð¶Ðµ бÑÑи збеÑежено âпÑиблизнеâ знаÑеннÑ.
ÐапÑиклад, ÑÑ Ð´Ð²Ð° ÑиÑла (пÑÑмо над безпеÑним дÑапазоном) однаковÑ:
console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992
Таким Ñином, ÑÑÑ Ð½ÐµÐ¿Ð°ÑÐ½Ñ ÑÑÐ»Ñ ÑиÑла, бÑлÑÑÑ Ð·Ð° (253-1), Ð²Ð·Ð°Ð³Ð°Ð»Ñ Ð½Ðµ можна збеÑÑгаÑи в ÑÐ¸Ð¿Ñ ânumberâ.
ÐÐ»Ñ Ð±ÑлÑÑоÑÑÑ Ð·Ð°Ð´Ð°Ñ Ð´ÑÐ°Ð¿Ð°Ð·Ð¾Ð½Ñ Â±(253-1) ÑÑлком доÑÑаÑнÑо, але Ñнколи нам поÑÑÑбен веÑÑ Ð´Ñапазон дÑйÑно великиÑ
ÑÑлиÑ
ÑиÑел, напÑ. Ð´Ð»Ñ ÐºÑипÑогÑаÑÑÑ Ð°Ð±Ð¾ мÑÑок ÑаÑÑ Ð· ÑоÑнÑÑÑÑ Ð´Ð¾ мÑкÑоÑекÑнд.
ÐеÑодавно в Ð¼Ð¾Ð²Ñ Ð±Ñв доданий Ñип BigInt Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ ÑÑлиÑ
ÑиÑел довÑлÑÐ½Ð¾Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸.
ÐнаÑÐµÐ½Ð½Ñ Ð· Ñипом BigInt ÑÑвоÑÑÑÑÑÑÑ ÑеÑез Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ n Ñ ÐºÑнеÑÑ ÑÑлого ÑиÑла:
// бÑква "n" Ñ ÐºÑнÑÑ Ð¾Ð·Ð½Ð°ÑаÑ, Ñо Ñе ÑиÑло ÑÐ¸Ð¿Ñ BigInt
const bigInt = 1234567890123456789012345678901234567890n;
ЧеÑез Ñе, Ñо Ñип BigInt ÑÑдко викоÑиÑÑовÑÑÑÑÑÑ, ми не ÑозглÑдаÑимемо його в ÑÑÐ¾Ð¼Ñ ÑоздÑлÑ, пÑоÑе ми винеÑли його в окÑемий ÑоздÑл BigInt. ÐÑоÑиÑайÑе його, ÑкÑо вам поÑÑÑÐ±Ð½Ñ ÑÐ°ÐºÑ Ð²ÐµÐ»Ð¸ÐºÑ ÑиÑла.
ЦÑÑÑ Ð¼Ð¸ÑÑ, пÑдÑÑимка ÑÐ¸Ð¿Ñ BigInt Ñ Ð² оÑÑаннÑÑ
веÑÑÑÑÑ
Firefox/Chrome/Edge/Safari, але не в IE.
Ðа ÑайÑÑ MDN Ñ ÑаблиÑÑ ÑÑмÑÑноÑÑÑ, де показано, ÑÐºÑ Ð²ÐµÑÑÑÑ Ð±ÑаÑзеÑÑв пÑдÑÑимÑÑÑÑ Ñип BigInt.
Ð Ñдок (string)
Ð Ñдок Ñ JavaScript Ð¼Ð°Ñ Ð±ÑÑи оÑоÑений лапками.
let str = "ÐÑивÑÑ";
let str2 = 'ÐдинаÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ Ñакож дозволÑÑÑÑÑÑ';
let phrase = `Ñак можна вÑÑавлÑÑи ${str}`;
У JavaScript Ñ ÑÑи Ñипи лапок.
- ÐодвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸:
"ÐÑивÑÑ". - ÐдинаÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸:
'ÐÑивÑÑ'. - ÐвоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸:
`ÐÑивÑÑ`.
ÐодвÑÐ¹Ð½Ñ Ñа одинаÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ Ñ âзвиÑайнимиâ. ТобÑо Ð½ÐµÐ¼Ð°Ñ Ð½ÑÑÐºÐ¾Ñ ÑÑзниÑÑ, ÑÐºÑ Ñаме викоÑиÑÑовÑваÑи.
ÐвоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ Ñ ÑозÑиÑеннÑм ÑÑнкÑÑоналÑноÑÑÑ. Ðони даÑÑÑ Ð·Ð¼Ð¾Ð³Ñ Ð²Ð±ÑдовÑваÑи змÑÐ½Ð½Ñ Ñа виÑази в ÑÑдок, обÑамлÑÑÑи ÑÑ
в ${â¦}, напÑиклад:
let name = "Ðван";
// вбÑдована змÑнна
alert(`ÐÑивÑÑ, ${name}е!`); // ÐÑивÑÑ, Ðване!
// вбÑдований виÑаз
alert(`ÑезÑлÑÑаÑ: ${1 + 2}`); // ÑезÑлÑÑаÑ: 3
ÐиÑаз вÑеÑÐµÐ´Ð¸Ð½Ñ ${â¦} обÑиÑлÑÑÑÑÑÑ, а ÑезÑлÑÑÐ°Ñ Ð¾Ð±ÑиÑÐ»ÐµÐ½Ð½Ñ ÑÑÐ°Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ ÑÑдка. Ðи можемо вбÑдÑваÑи бÑдÑ-Ñо: змÑÐ½Ð½Ñ name, або аÑиÑмеÑиÑний виÑаз 1 + 2, або ÑоÑÑ Ð½Ð°Ð±Ð°Ð³Ð°Ñо ÑкладнÑÑе.
ÐÑÐ´Ñ Ð»Ð°Ñка, заÑважÑе, Ñо вбÑдовÑÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° ÑобиÑи ÑÑлÑки Ð·Ñ Ð·Ð²Ð¾ÑоÑними лапками. ÐнÑÑ Ñипи лапок не маÑÑÑ ÑÑнкÑÑоналÑноÑÑÑ Ð²Ð±ÑдовÑваннÑ!
alert("ÑезÑлÑÑаÑ: ${1 + 2}"); // ÑезÑлÑÑаÑ: ${1 + 2} (подвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸ не маÑÑÑ Ð½ÑÑкого впливÑ)
ÐÑлÑÑ Ð´ÐµÑалÑно ми бÑдемо виÑвÑÑлÑваÑи ÑÑдки в ÑоздÑÐ»Ñ Ð Ñдки.
У деÑкиÑ
моваÑ
Ñ ÑпеÑÑалÑний Ñип âcharacterâ Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ñдиного ÑимволÑ. ÐапÑиклад, Ñ Ð¼Ð¾Ð²Ð°Ñ
C Ñа Java Ñе char.
У JavaScript Ð½ÐµÐ¼Ð°Ñ Ñакого ÑипÑ. Ð Ñдиний Ñип: string. Ð Ñдок може мÑÑÑиÑи нÑÐ»Ñ ÑимволÑв (бÑÑи пÑÑÑим), один Ñимвол або бÑлÑÑе.
ÐÑлевий або логÑÑний Ñип (boolean)
ÐогÑÑний Ñип може пÑиймаÑи лиÑе два знаÑеннÑ: true (ÑÑÑина) Ñа false (Ñ
иба).
Цей Ñип зазвиÑай викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ð½Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ Ñак/нÑ: true ознаÑÐ°Ñ âÑак, вÑÑноâ, а false ознаÑÐ°Ñ âнÑ, не вÑÑноâ.
ÐапÑиклад:
let nameFieldChecked = true; // Ñак, ÑмâÑ Ð±Ñло пеÑевÑÑене
let ageFieldChecked = false; // нÑ, вÑк не бÑв пеÑевÑÑеним
ÐогÑÑне знаÑÐµÐ½Ð½Ñ Ñакож можна оÑÑимаÑи Ñк ÑезÑлÑÑÐ°Ñ Ð¿Ð¾ÑÑвнÑннÑ:
let isGreater = 4 > 1;
alert(isGreater); // true (ÑезÑлÑÑÐ°Ñ Ð¿Ð¾ÑÑвнÑÐ½Ð½Ñ â "Ñак")
ÐÑлÑÑ Ð³Ð»Ð¸Ð±Ð¾ÐºÐ¾ ми Ð¾Ñ Ð¾Ð¿Ð¸Ð¼Ð¾ бÑÐ»ÐµÐ²Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ñ ÑоздÑÐ»Ñ ÐогÑÑÐ½Ñ Ð¾Ð¿ÐµÑаÑоÑи.
ÐнаÑÐµÐ½Ð½Ñ ânullâ
СпеÑÑалÑне знаÑÐµÐ½Ð½Ñ null не належиÑÑ Ð´Ð¾ жодного з опиÑаниÑ
виÑе ÑипÑв.
Ðоно ÑоÑмÑÑ Ð¾ÐºÑемий влаÑний Ñип, Ñкий мÑÑÑиÑÑ Ð»Ð¸Ñе знаÑÐµÐ½Ð½Ñ null:
let age = null;
Ð JavaScript null не Ñ âпоÑиланнÑм на обâÑкÑ, Ñо не ÑÑнÑÑâ або âпокажÑиком на nullâ, Ñк може бÑÑи в ÑнÑиÑ
моваÑ
пÑогÑамÑваннÑ.
Це лиÑе ÑпеÑÑалÑне знаÑеннÑ, Ñке пÑедÑÑавлÑÑ âнÑÑогоâ, âпоÑожнÑâ або âневÑдоме знаÑеннÑâ.
У Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾Ð¼Ñ Ð²Ð¸Ñе ÐºÐ¾Ð´Ñ Ð·Ð°Ð·Ð½Ð°Ñено, Ñо знаÑÐµÐ½Ð½Ñ Ð·Ð¼ÑÐ½Ð½Ð¾Ñ age невÑдоме.
ÐнаÑÐµÐ½Ð½Ñ âundefinedâ
СпеÑÑалÑне знаÑÐµÐ½Ð½Ñ undefined Ñакож ÑÑоÑÑÑ Ð¾ÐºÑемо. Ðоно пÑедÑÑавлÑÑ Ð²Ð»Ð°Ñний Ñип, подÑбний до ânullâ.
undefined ознаÑаÑ, Ñо âзнаÑÐµÐ½Ð½Ñ Ð½Ðµ пÑиÑвоÑноâ.
ЯкÑо змÑнна оголоÑена, але Ñй не пÑиÑвоÑне ÑкеÑÑ Ð·Ð½Ð°ÑеннÑ, ÑÐ¾Ð´Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑÐ°ÐºÐ¾Ñ Ð·Ð¼ÑÐ½Ð½Ð¾Ñ Ð±Ñде undefined:
let age;
alert(age); // покаже "undefined"
ТеÑ
нÑÑно, Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ñвно пÑизнаÑиÑи undefined змÑннÑй:
let age = 100;
// змÑнÑÑмо знаÑÐµÐ½Ð½Ñ Ð½Ð° undefined
age = undefined;
alert(age); // "undefined"
â¦Ðле ми не ÑекомендÑÑмо Ñак ÑобиÑи. Як пÑавило, ми викоÑиÑÑовÑÑмо null, Ñоби пÑиÑвоÑÑи змÑннÑй знаÑÐµÐ½Ð½Ñ âпоÑожнÑâ або âневÑдомеâ, ÑÐ¾Ð´Ñ Ñк undefined заÑезеÑвоване Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑаÑкового знаÑÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ðµ пÑиÑвоÑниÑ
ÑеÑей.
ÐбâÑкÑи (object) Ñа Ñимволи (symbol)
Тип object Ñ Ð¾Ñобливим Ñипом.
УÑÑ ÑнÑÑ Ñипи називаÑÑÑÑÑ âпÑимÑÑивамиâ, ÑÐ¾Ð¼Ñ Ñо ÑÑ Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑÑÑ Ð¼ÑÑÑиÑи ÑÑлÑки один ÐµÐ»ÐµÐ¼ÐµÐ½Ñ (Ñе може бÑÑи ÑÑдок, ÑиÑло, або бÑдÑ-Ñо ÑнÑе). РобâÑкÑÐ°Ñ Ð¶Ðµ збеÑÑгаÑÑÑÑÑ ÐºÐ¾Ð»ÐµÐºÑÑÑ Ð´Ð°Ð½Ð¸Ñ Ñ ÑкладнÑÑÑ ÑÑÑÑкÑÑÑи.
ÐбâÑкÑи Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¾Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ Ð¼Ð¾Ð²Ð¸, ÑÐ¾Ð¼Ñ Ð¼Ð¸ окÑемо ÑозглÑнемо ÑÑ Ñ ÑоздÑÐ»Ñ ÐбâÑкÑи пÑÑÐ»Ñ Ñого, Ñк дÑзнаÑмоÑÑ Ð±ÑлÑÑе пÑо пÑимÑÑиви.
Тип symbol викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ ÑнÑкалÑниÑ
ÑденÑиÑÑкаÑоÑÑв в обâÑкÑаÑ
. Ðи згадали Ñей Ñип Ð´Ð»Ñ Ð¿Ð¾Ð²Ð½Ð¾Ñи, пÑоÑе докладнÑÑе вивÑимо його пÑÑÐ»Ñ Ð¾Ð±âÑкÑÑв.
ÐпеÑаÑÐ¾Ñ typeof
ÐпеÑаÑÐ¾Ñ typeof повеÑÑÐ°Ñ Ñип аÑгÑменÑÑ. Це коÑиÑно, коли ми Ñ
оÑемо обÑоблÑÑи знаÑÐµÐ½Ð½Ñ ÑÑзниÑ
ÑипÑв по-ÑÑÐ·Ð½Ð¾Ð¼Ñ Ð°Ð±Ð¾ пÑоÑÑо Ñ
оÑемо зÑобиÑи ÑÐ²Ð¸Ð´ÐºÑ Ð¿ÐµÑевÑÑкÑ.
Ðиклик typeof x повеÑÑÐ°Ñ ÑÑдок Ñз Ð½Ð°Ð·Ð²Ð¾Ñ ÑипÑ:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
ÐÑÑÐ°Ð½Ð½Ñ ÑÑи ÑÑдки можÑÑÑ Ð¿Ð¾ÑÑебÑваÑи додаÑкового поÑÑненнÑ:
Mathâ Ñе вбÑдований обâÑкÑ, Ñкий забезпеÑÑÑ Ð¼Ð°ÑемаÑиÑÐ½Ñ Ð¾Ð¿ÐµÑаÑÑÑ. Ðи вивÑимо його в ÑоздÑÐ»Ñ Ð§Ð¸Ñла. ТÑÑ Ð²Ñн викоÑиÑÑаний лиÑе Ñк пÑиклад обâÑкÑа.- РезÑлÑÑаÑом
typeof nullÑ"object". Це оÑÑÑÑйно визнана помилка поведÑнкиtypeof, Ñо Ñ Ñе з ÑаннÑÑ Ð´Ð½Ñв JavaScript Ñ Ð·Ð±ÐµÑÑгаÑÑÑÑÑ Ð´Ð»Ñ ÑÑмÑÑноÑÑÑ. ÐезпеÑеÑно,nullне Ñ Ð¾Ð±âÑкÑом. Це оÑобливе знаÑÐµÐ½Ð½Ñ Ð· влаÑним Ñипом. У ÑÑÐ¾Ð¼Ñ ÑÐ°Ð·Ñ Ð¿Ð¾Ð²ÐµÐ´ÑнкаtypeofнекоÑекÑна. - РезÑлÑÑаÑом
typeof alertÑ"function", ÑÐ¾Ð¼Ñ Ñоalertâ Ñе ÑÑнкÑÑÑ. Ðи бÑдемо вивÑаÑи ÑÑнкÑÑÑ Ð² наÑÑÑÐ¿Ð½Ð¸Ñ ÑоздÑÐ»Ð°Ñ , де ми Ñакож побаÑимо, Ñо в JavaScript Ð½ÐµÐ¼Ð°Ñ ÑпеÑÑалÑного ÑÐ¸Ð¿Ñ âfunctionâ. ФÑнкÑÑÑ Ð½Ð°Ð»ÐµÐ¶Ð°ÑÑ Ð´Ð¾ ÑÐ¸Ð¿Ñ âобâÑкÑâ. ÐлеtypeofÑÑакÑÑÑ ÑÑ Ð¿Ð¾-ÑнÑомÑ, повеÑÑаÑÑи"function". Це Ñакож пÑиÑÑÑÐ½Ñ Ð· ÑаннÑÑ Ð´Ð½Ñв JavaScript. Ð¢ÐµÑ Ð½ÑÑно, Ñака поведÑнка не зовÑÑм пÑавилÑна, але може бÑÑи зÑÑÑÐ½Ð¾Ñ Ð½Ð° пÑакÑиÑÑ.
typeof(x)Ðожливо ви зÑÑÑÑÑÑали ÑнÑий ÑинÑакÑиÑ: typeof(x). Це Ñе Ñаме, Ñо typeof x.
Щоби бÑло зÑозÑмÑло: typeof â Ñе опеÑаÑоÑ, а не ÑÑнкÑÑÑ. ТÑÑ Ð´Ñжки не Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ typeof. Це ÑоÑÑ Ð½Ð° кÑÑÐ°Ð»Ñ Ð¼Ð°ÑемаÑиÑниÑ
дÑжок Ð´Ð»Ñ Ð³ÑÑпÑваннÑ.
ÐазвиÑай, ÑÐ°ÐºÑ Ð´Ñжки мÑÑÑÑÑÑ Ð¼Ð°ÑемаÑиÑÐ½Ñ Ð²Ð¸Ñази, Ñк (2 + 2), але ÑÑÑ Ð²Ð¾Ð½Ð¸ мÑÑÑÑÑÑ Ð»Ð¸Ñе один аÑгÑÐ¼ÐµÐ½Ñ (x). Ð¦Ñ Ð´Ñжки даÑÑÑ Ð·Ð¼Ð¾Ð³Ñ Ð¾Ð¿ÑÑÑиÑи пÑобÑл мÑж опеÑаÑоÑом typeof Ñа його аÑгÑменÑом, Ñ Ð´ÐµÐºÐ¾Ð¼Ñ Ñе подобаÑÑÑÑÑ.
Ð¢Ð¾Ð¼Ñ Ð²Ð¾Ð½Ð¸ надаÑÑÑ Ð¿ÐµÑÐµÐ²Ð°Ð³Ñ ÑинÑакÑиÑÑ typeof(x), пÑоÑе ÑинÑакÑÐ¸Ñ typeof x набагаÑо поÑиÑенÑÑий.
ÐÑдÑÑмки
У JavaScript Ñ 8 оÑÐ½Ð¾Ð²Ð½Ð¸Ñ ÑипÑв.
-
СÑм пÑимÑÑÐ¸Ð²Ð½Ð¸Ñ ÑипÑв Ð´Ð°Ð½Ð¸Ñ :
numberÐ´Ð»Ñ Ð±ÑдÑ-ÑÐºÐ¸Ñ ÑиÑел: ÑÑÐ»Ð¸Ñ Ð°Ð±Ð¾ з ÑÑÑ Ð¾Ð¼Ð¾Ñ ÑоÑкоÑ. ЦÑÐ»Ñ ÑиÑла Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ñ Ð´Ð¾Â±(253-1).bigintÐ´Ð»Ñ ÑÑÐ»Ð¸Ñ ÑиÑел довÑлÑÐ½Ð¾Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸.stringÐ´Ð»Ñ ÑÑдкÑв. Ð Ñдок може маÑи нÑÐ»Ñ Ð°Ð±Ð¾ бÑлÑÑе ÑимволÑв, Ð½ÐµÐ¼Ð°Ñ Ð¾ÐºÑемого ÑÐ¸Ð¿Ñ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑимволÑ.booleanдлÑtrue/false.nullÐ´Ð»Ñ Ð½ÐµÐ²ÑÐ´Ð¾Ð¼Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ â авÑономний Ñип, Ñкий Ð¼Ð°Ñ Ñдине знаÑеннÑnull.undefinedÐ´Ð»Ñ Ð½Ðµ пÑиÑвоÑÐ½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ â авÑономний Ñип, Ñкий Ð¼Ð°Ñ Ñдине знаÑеннÑundefined.symbolÐ´Ð»Ñ ÑнÑкалÑÐ½Ð¸Ñ ÑденÑиÑÑкаÑоÑÑв.
-
Родин непÑимÑÑивний Ñип Ð´Ð°Ð½Ð¸Ñ :
objectÐ´Ð»Ñ ÑÐºÐ»Ð°Ð´Ð½Ð¸Ñ ÑÑÑÑкÑÑÑ Ð´Ð°Ð½Ð¸Ñ .
ÐпеÑаÑÐ¾Ñ typeof Ð´Ð°Ñ Ð·Ð¼Ð¾Ð³Ñ Ð½Ð°Ð¼ баÑиÑи, Ñкий Ñип збеÑÑгаÑÑÑÑÑ Ð² змÑннÑй.
- ÐазвиÑай викоÑиÑÑовÑÑÑÑ ÑинÑакÑиÑ
typeof x, пÑоÑеtypeof(x)Ñакож можливий. - ÐовеÑÑÐ°Ñ ÑÑдок Ñз Ð½Ð°Ð·Ð²Ð¾Ñ ÑипÑ, Ñк-оÑ
"string". - ÐлÑ
nullповеÑÑаÑ"object"â Ñе помилка в мовÑ,nullнаÑпÑÐ°Ð²Ð´Ñ Ð½Ðµ обâÑкÑ.
У наÑÑÑÐ¿Ð½Ð¸Ñ ÑоздÑÐ»Ð°Ñ Ð¼Ð¸ зоÑеÑедимоÑÑ Ð½Ð° пÑимÑÑÐ¸Ð²Ð½Ð¸Ñ Ð·Ð½Ð°ÑеннÑÑ , а коли ознайомимоÑÑ Ð· ними, Ñо пеÑейдемо до обâÑкÑÑв.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)