ÐÑе ÑзÑки пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑÐ¶Ð°Ñ Ð²ÑÑÑоеннÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ , но они ÑаÑÑо оÑлиÑаÑÑÑÑ Ð´ÑÑг Ð¾Ñ Ð´ÑÑга в ÑазнÑÑ ÑзÑÐºÐ°Ñ . ÐÑа ÑÑаÑÑÑ â попÑÑка опиÑаÑÑ Ð²ÑÑÑоеннÑе ÑÑÑÑкÑÑÑÑ (ÑипÑ) даннÑÑ , доÑÑÑпнÑе в JavaScript, и Ð¸Ñ ÑвойÑÑва. Ðа Ð¸Ñ Ð¾Ñнове ÑÑÑоÑÑÑÑ Ð´ÑÑгие ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ . Ðогда ÑÑо возможно, Ñо Ð¼Ñ Ð±Ñдем ÑÑавниваÑÑ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑазнÑÑ ÑзÑÐºÐ°Ñ .
ÐинамиÑеÑÐºÐ°Ñ ÑипизаÑиÑJavaScript ÑвлÑеÑÑÑ Ñлабо ÑипизиÑованнÑм или динамиÑеÑким ÑзÑком. ÐÑо знаÑиÑ, ÑÑо вам не нÑжно опÑеделÑÑÑ Ñип пеÑеменной заÑанее. Тип опÑеделиÑÑÑ Ð°Ð²ÑомаÑиÑеÑки во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑогÑаммÑ. Также ÑÑо знаÑиÑ, ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð´Ð½Ñ Ð¿ÐµÑеменнÑÑ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑазлиÑнÑÑ Ñипов:
var foo = 42; // ÑейÑÐ°Ñ foo Ñипа Number
foo = "bar"; // а ÑепеÑÑ foo Ñипа String
foo = true; // foo ÑÑановиÑÑÑ Ñипа Boolean
Ð¢Ð¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
СÑандаÑÑ ECMAScript опÑеделÑÐµÑ 8 Ñипов:
6 Ñипов даннÑÑ ÑвлÑÑÑÐ¸Ñ ÑÑ Ð¿ÑимиÑивами:
typeof instance === "undefined"
typeof instance === "boolean"
typeof instance === "number"
typeof instance === "string"
typeof instance === "bigint"
typeof instance === "symbol"
Null (Null Ñип ) : typeof instance === "object"
. СпеÑиалÑнÑй пÑимиÑив, иÑполÑзÑемÑй не ÑолÑко Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ
но и в каÑеÑÑве ÑказаÑÐµÐ»Ñ Ð½Ð° ÑиналÑнÑÑ ÑоÑÐºÑ Ð² ЦепоÑке ÐÑоÑоÑипов;
Object (ÐбÑекÑ) : typeof instance === "object"
. ÐÑоÑÑÐ°Ñ ÑÑÑÑкÑÑÑа, иÑполÑзÑÐµÐ¼Ð°Ñ Ð½Ðµ ÑолÑко Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
, но и Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´ÑÑгиÑ
ÑÑÑÑкÑÑÑ, где лÑÐ±Ð°Ñ ÑÑÑÑкÑÑÑа ÑоздаÑÑÑÑ Ñ Ð¸ÑполÑзованием клÑÑевого Ñлова new
: new Object, new Array, new Map, new Set, new WeakMap, new WeakSet, new Date и множеÑÑво дÑÑгиÑ
ÑÑÑÑкÑÑÑ;
РздеÑÑ Ð½Ð°Ð¼ необÑ
одимо ÑделаÑÑ Ð¿ÑедоÑÑеÑежение оÑноÑиÑелÑно иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа typeof
Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñипа ÑÑÑÑкÑÑÑ, Ñ.к. вÑе ÑÑÑÑкÑÑÑÑ Ð±ÑдÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ "object"
пÑи его иÑполÑзовании, Ñак как назнаÑение typeof
â пÑовеÑка Ñипа даннÑÑ
, но не ÑÑÑÑкÑÑÑ. ÐÑли пÑовеÑиÑÑ Ñип ÑÑÑÑкÑÑÑÑ Ð²ÑÑ Ð¶Ðµ необÑ
одимо, Ñо в ÑÑом ÑлÑÑае желаÑелÑно иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ instanceof, Ñак как именно он оÑвеÑÐ°ÐµÑ Ð½Ð° вопÑÐ¾Ñ Ð¾ Ñом, какой конÑÑÑÑкÑÐ¾Ñ Ð±Ñл иÑполÑзован Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑÑÑкÑÑÑÑ.
СÑÐ¾Ð¸Ñ Ð¾ÑмеÑиÑÑ Ð´Ð²Ð° оÑобÑÑ
ÑлÑÑÐ°Ñ ÑабоÑÑ Ð¾Ð¿ÐµÑаÑоÑа typeof
: возвÑÐ°Ñ "object"
Ð´Ð»Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ null
и "function"
Ð´Ð»Ñ ÑÑнкÑий: пеÑвое пÑинÑÑо ÑÑиÑаÑÑ Ð¾Ñибкой ÑзÑка, ÑоÑ
Ñаненной Ñади обÑаÑной ÑовмеÑÑимоÑÑи, вÑоÑое ÑвлÑеÑÑÑ ÑÑловноÑÑÑÑ, Ñдобной Ð´Ð»Ñ Ð¿ÑовеÑки на пÑинадлежноÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ°ÑегоÑии ÑÑнкÑий, где ÑÑнкÑÐ¸Ñ - ÑÑо оÑобÑй, "вÑзÑваемÑй", обÑекÑ.
ÐÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² JavaScript, кÑоме обÑекÑов, ÑвлÑÑÑÑÑ Ð¸Ð¼Ð¼ÑÑабелÑнÑми (знаÑÐµÐ½Ð¸Ñ Ð½Ðµ могÑÑ Ð±ÑÑÑ Ð¼Ð¾Ð´Ð¸ÑиÑиÑованÑ, а ÑолÑко пеÑезапиÑÐ°Ð½Ñ Ð½Ð¾Ð²Ñм полнÑм знаÑением). ÐапÑимеÑ, в оÑлиÑии Ð¾Ñ C, где ÑÑÑÐ¾ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ поÑимволÑно коÑÑекÑиÑоваÑÑ, в JavaScript ÑÑÑоки пеÑеÑоздаÑÑÑÑ ÑолÑко полноÑÑÑÑ. ÐнаÑÐµÐ½Ð¸Ñ ÑÐ°ÐºÐ¸Ñ Ñипов назÑваÑÑÑÑ Â«Ð¿ÑимиÑивнÑми знаÑениÑми».
ÐÑлевÑй Ñип даннÑÑÐÑлевÑй Ñип пÑедÑÑавлÑÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкÑÑ ÑÑÑноÑÑÑ Ð¸ Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ð° знаÑениÑ: true (иÑÑина)
и false (ложÑ)
. СмоÑÑиÑе Boolean и Boolean
Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей.
ÐÑÐ¾Ñ Ñип даннÑÑ
Ð¸Ð¼ÐµÐµÑ Ð²Ñего одно знаÑение: null
. СмоÑÑиÑе null
и Null Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей.
ÐеÑеменнаÑ, коÑоÑой не бÑло пÑиÑвоено знаÑение, бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение undefined
. СмоÑÑиÑе undefined
и undefined Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей.
Ð ÑооÑвеÑÑÑвии Ñо ÑÑандаÑÑом ECMAScript, ÑÑÑеÑÑвÑÐµÑ ÑолÑко один ÑиÑловой Ñип, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ñобой 64-биÑное ÑиÑло двойной ÑоÑноÑÑи ÑоглаÑно ÑÑандаÑÑÑ IEEE 754. ÐÑÑгими Ñловами, ÑпеÑиалÑного Ñипа Ð´Ð»Ñ ÑелÑÑ
ÑиÑел в JavaScript неÑ. ÐÑо ознаÑаеÑ, ÑÑо пÑи ÑиÑловÑÑ
опеÑаÑиÑÑ
Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ Ð½ÐµÑоÑное (окÑÑглÑнное) знаÑение. Рдополнение к возможноÑÑи пÑедÑÑавлÑÑÑ ÑиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой, еÑÑÑ Ð½ÐµÑколÑко ÑимволиÑеÑкиÑ
знаÑений: +Infinity
(положиÑелÑÐ½Ð°Ñ Ð±ÐµÑконеÑноÑÑÑ), -Infinity
(оÑÑиÑаÑелÑÐ½Ð°Ñ Ð±ÐµÑконеÑноÑÑÑ), и NaN
(не ÑиÑло).
ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñамого болÑÑого или Ñамого менÑÑего доÑÑÑпного знаÑÐµÐ½Ð¸Ñ Ð² пÑеделаÑ
+/-Infinity
, можно иÑполÑзоваÑÑ ÐºÐ¾Ð½ÑÑанÑÑ Number.MAX_VALUE
или Number.MIN_VALUE
. РнаÑÐ¸Ð½Ð°Ñ Ñ ECMAScript 2015, Ð²Ñ Ñакже можеÑе пÑовеÑиÑÑ, наÑ
одиÑÑÑ Ð»Ð¸ ÑиÑло в безопаÑном Ð´Ð»Ñ ÑелÑÑ
ÑиÑел диапазоне, иÑполÑзÑÑ Ð¼ÐµÑод Number.isSafeInteger()
, либо конÑÑанÑÑ Number.MAX_SAFE_INTEGER
и Number.MIN_SAFE_INTEGER
. Ðа пÑеделами ÑÑого диапазона опеÑаÑии Ñ ÑелÑми ÑиÑлами бÑдÑÑ Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°ÑнÑми, и возвÑаÑаÑÑ Ð¿ÑиближÑннÑе знаÑениÑ.
ÐÐ¾Ð»Ñ Ð² JavaScript Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ð° пÑедÑÑавлениÑ: -0 и +0. («0» ÑÑо Ñиноним +0). Ðа пÑакÑике ÑÑо Ð¸Ð¼ÐµÐµÑ Ð¼Ð°Ð»Ð¾Ð·Ð°Ð¼ÐµÑнÑй ÑÑÑекÑ. ÐапÑимеÑ, вÑÑажение +0 === -0
ÑвлÑеÑÑÑ Ð¸ÑÑиннÑм. Ðднако, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑвиÑÑÑÑ Ð¿Ñи делении на нолÑ:
> 42 / +0
Infinity
> 42 / -0
-Infinity
ХоÑÑ ÑиÑло в болÑÑинÑÑве ÑлÑÑаев пÑедÑÑавлÑÐµÑ ÑолÑко ÑÐ²Ð¾Ñ Ð·Ð½Ð°Ñение, JavaScript пÑедоÑÑавлÑÐµÑ Ð½ÐµÑколÑко бинаÑнÑÑ Ð¾Ð¿ÐµÑаÑий. Ðни могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿ÑедÑÑавлÑÑÑ ÑиÑло как неÑколÑко бÑлевÑÑ Ð·Ð½Ð°Ñений, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð±Ð¸Ñовой маÑки. ÐÑо ÑÑиÑаеÑÑÑ Ð¿Ð»Ð¾Ñ Ð¾Ð¹ пÑакÑикой, Ñак как JavaScript пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð´ÑÑгие ÑпоÑÐ¾Ð±Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑлевÑÑ Ð·Ð½Ð°Ñений (напÑимеÑ, маÑÑив ÑлеменÑов Ñ Ð±ÑлевÑми знаÑениÑми или обÑекÑ, ÑодеÑжаÑий Ð½Ð°Ð±Ð¾Ñ Ð±ÑлевÑÑ ÑвойÑÑв). ÐÑоме Ñого, биÑовÑе маÑки ÑаÑÑо делаÑÑ ÐºÐ¾Ð´ более ÑÑÑднÑм Ð´Ð»Ñ ÑÑениÑ, Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¸ далÑнейÑей поддеÑжки. ÐÑа ÑÐµÑ Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° в ÑÑловиÑÑ ÑÐµÑ Ð½Ð¸ÑеÑÐºÐ¸Ñ Ð¾Ð³ÑаниÑений, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº обÑÑм локалÑного Ñ ÑанилиÑа даннÑÑ , или в Ñакой ÑкÑÑÑемалÑной ÑиÑÑаÑии, когда каждÑй Ð±Ð¸Ñ Ð¿ÐµÑедаваемÑй по ÑеÑи на ÑÑеÑÑ. ÐаннÑй Ð¿Ð¾Ð´Ñ Ð¾Ð´ ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ°Ðº кÑайнÑÑ Ð¼ÐµÑÑ, когда не оÑÑаÑÑÑÑ Ð´ÑÑÐ³Ð¸Ñ Ð¿ÑÑей Ð´Ð»Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ опÑимизаÑии.
ТекÑÑовÑе ÑÑÑокиРJavaScript Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑовÑÑ
даннÑÑ
ÑлÑÐ¶Ð¸Ñ Ñип String
. Ðн пÑедÑÑавлÑÐµÑ Ñобой ÑепоÑÐºÑ Â«ÑлеменÑов» 16-биÑнÑÑ
беззнаковÑÑ
ÑелоÑиÑленнÑÑ
знаÑений. ÐаждÑй Ñакой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑÐ²Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² ÑÑÑоке. ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð¼ÐµÐµÑ Ð¸Ð½Ð´ÐµÐºÑ 0, ÑледÑÑÑий â 1, и Ñак далее. Ðлина ÑÑÑоки â ÑÑо колиÑеÑÑво ÑлеменÑов в ней.
РоÑлиÑие Ð¾Ñ ÑзÑков подобнÑÑ C, ÑÑÑоки в JavaScript ÑвлÑÑÑÑÑ Ð¸Ð¼Ð¼ÑÑабелÑнÑми. ÐÑо ознаÑаеÑ, ÑÑо поÑле Ñого, как ÑÑÑоковое знаÑение Ñоздано, его нелÑÐ·Ñ Ð¼Ð¾Ð´Ð¸ÑиÑиÑоваÑÑ. ÐÑÑаÑÑÑÑ Ð»Ð¸ÑÑ ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑÑÐ¾ÐºÑ Ð¿ÑÑÑм ÑовеÑÑÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ð¹ опеÑаÑии над иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑокой. ÐапÑимеÑ:
String.substr()
.+
) или меÑод String.concat()
.Ðногда Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑоблазниÑелÑнÑм иÑполÑзование ÑÑÑок Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑложнÑÑ ÑÑÑÑкÑÑÑ Ð´Ð°Ð½Ð½ÑÑ . ÐÑо даÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑие кÑаÑкоÑÑоÑнÑе вÑгодÑ:
XMLHttpRequest
возвÑаÑÐ°ÐµÑ Ð¾ÑÐ²ÐµÑ Ð² виде ÑÑÑоки, и Ñ. д.) и иÑполÑзоваÑÑ ÑолÑко ÑÑÑоки Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð·Ð°Ð¼Ð°Ð½ÑивÑм.ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо в ÑÑÑоке можно вÑÑазиÑÑ Ð´Ð°Ð½Ð½Ñе лÑбой ÑложноÑÑи, делаÑÑ ÑÑо â не ÑÐ°Ð¼Ð°Ñ Ð»ÑÑÑÐ°Ñ Ð¸Ð´ÐµÑ. ÐапÑимеÑ, иÑполÑзÑÑ ÑазделиÑелÑ, ÑÑÑÐ¾ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ ÐºÐ°Ðº ÑпиÑок ÑлеменÑов (маÑÑив JavaScript бÑÐ´ÐµÑ Ð±Ð¾Ð»ÐµÐµ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим ÑеÑением). Ð ÑожалениÑ, еÑли Ñакой ÑепаÑаÑÐ¾Ñ Ð²ÑÑÑеÑиÑÑÑ Ð² знаÑении одного из ÑлеменÑов, Ñакой ÑпиÑок бÑÐ´ÐµÑ Ñломан. ÐÑÑ Ð¾Ð´Ð¾Ð¼ Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ñимвола ÑкÑаниÑованиÑ, и Ñ. д. ÐÑÑ ÑÑо поÑÑебÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑва ненÑжнÑÑ Ð¿Ñавил, и ÑÑÐ°Ð½ÐµÑ Ð¾Ð±ÑемениÑелÑнÑм пÑи поддеÑжке.
ÐÑполÑзÑйÑе ÑÑÑоки ÑолÑко Ð´Ð»Ñ ÑекÑÑовÑÑ Ð´Ð°Ð½Ð½ÑÑ . ÐÐ»Ñ ÑоÑÑавнÑÑ ÑÑÑÑкÑÑÑ Ð¿ÑеобÑазÑйÑе ÑÑÑоки в подобаÑÑие конÑÑÑÑкÑии.
Тип даннÑÑ Ð¡Ð¸Ð¼Ð²Ð¾Ð» (Symbol)Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÑвлÑÑÑÑÑ Ð½Ð¾Ð²Ð¾Ð²Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ JavaScript наÑÐ¸Ð½Ð°Ñ Ñ ECMAScript 2015. Символ â ÑÑо ÑникалÑное и иммÑÑабелÑное пÑимиÑивное знаÑение, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзовано как клÑÑ Ð´Ð»Ñ ÑвойÑÑва обÑекÑа (ÑмоÑÑиÑе ниже). РнекоÑоÑÑÑ
ÑзÑкаÑ
пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð°Ð·ÑваÑÑÑÑ Ð°Ñомами. ÐÑ
Ñакже можно ÑÑавниÑÑ Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñми знаÑениÑми пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ (enum) в ÑзÑке C. ÐодÑобнее ÑмоÑÑиÑе Symbol и Symbol
.
BigInt
ÑвлÑеÑÑÑ Ð²ÑÑÑоеннÑм обÑекÑом, коÑоÑÑй пÑедоÑÑавлÑÐµÑ ÑпоÑоб пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑелÑÑ
ÑиÑел, коÑоÑÑе болÑÑе 2 53, ÑÑо ÑвлÑеÑÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑим ÑиÑлом, коÑоÑое JavaScript Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð´Ñжно пÑедÑÑавиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Number
пÑимиÑива.
> let bigInt = 19241924124n;
> console.log(bigInt);
19241924124n
> console.log(typeof bigInt);
"bigint"
ÐбÑекÑÑ
РкомпÑÑÑеÑной ÑеÑминологии, обÑÐµÐºÑ â ÑÑо знаÑение в памÑÑи, на коÑоÑое возможно ÑоÑлаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа.
СвойÑÑваРJavaScript обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ ÑаÑÑениваÑÑÑÑ ÐºÐ°Ðº Ð½Ð°Ð±Ð¾Ñ ÑвойÑÑв. ÐиÑеÑалÑÐ½Ð°Ñ Ð¸Ð½Ð¸ÑиализаÑÐ¸Ñ Ð¾Ð±ÑекÑа задаÑÑ Ð¾Ð¿ÑеделÑнное колиÑеÑÑво наÑалÑнÑÑ ÑвойÑÑв, и в пÑоÑеÑÑе ÑабоÑÑ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð¸ ÑдалÑÑÑÑÑ. ÐнаÑÐµÐ½Ð¸Ñ ÑвойÑÑв могÑÑ Ð¸Ð¼ÐµÑÑ Ð»Ñбой Ñип, вклÑÑÐ°Ñ Ð´ÑÑгие обÑекÑÑ, ÑÑо позволÑÐµÑ ÑÑÑоиÑÑ ÑложнÑе, ÑазвеÑвлÑннÑе иеÑаÑÑ Ð¸Ð¸ даннÑÑ . Ðаждое ÑвойÑÑво обÑекÑа иденÑиÑиÑиÑÑеÑÑÑ ÐºÐ»ÑÑом, в каÑеÑÑве коÑоÑого Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑÑÑпаÑÑ Ð·Ð½Ð°Ñение Ñ Ñипом СÑÑока или Символ.
ÐÑÑÑ Ð´Ð²Ð° Ñипа ÑвойÑÑв: ÑвойÑÑво-знаÑение и ÑвойÑÑво-акÑеÑÑÐ¾Ñ (ÑвойÑÑво, обÑÑнÑÑое в геÑÑÐµÑ Ð¸ ÑеÑÑеÑ). Ðни оÑлиÑаÑÑÑÑ Ð¾Ð¿ÑеделÑннÑми аÑÑибÑÑами.
СвойÑÑво-знаÑениеÐÑÑоÑииÑÑÐµÑ ÐºÐ»ÑÑ Ñо знаÑением, и Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑие аÑÑибÑÑÑ:
ÐÑÑибÑÑ Ð¢Ð¸Ð¿ ÐпиÑание ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ [[Value]] ÐÑбой Ñип JavaScript ÐнаÑение, возвÑаÑаемое пÑи обÑаÑении к ÑвойÑÑвÑ. undefined [[Writable]] Boolean ÐÑлиfalse
, Ñо [[Value]] ÑвойÑÑва не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾. false [[Enumerable]] Boolean ÐÑли true
, ÑвойÑÑво бÑÐ´ÐµÑ Ð¿ÐµÑеÑиÑлено в Ñикле for...in. СмоÑÑиÑе подÑобнее ÐеÑеÑиÑлÑемоÑÑÑ Ð¸ владение ÑвойÑÑвами. false [[Configurable]] Boolean ÐÑли false
, Ñо ÑвойÑÑво не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдалено, а его аÑÑибÑÑÑ, кÑоме [[Value]] и [[Writable]] не могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ. false ÐÑÑибÑÑ Ð¢Ð¸Ð¿ ÐпиÑание Read-only Boolean ÐаÑезеÑвиÑовано по аÑÑибÑÑÑ [[Writable]] ES5. DontEnum Boolean ÐаÑезеÑвиÑовано по аÑÑибÑÑÑ [[Enumerable]] ES5. DontDelete Boolean ÐаÑезеÑвиÑовано по аÑÑибÑÑÑ [[Configurable]] ES5. СвойÑÑво-акÑеÑÑоÑ
ÐÑÑоÑииÑÑÐµÑ ÐºÐ»ÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð¹ из двÑÑ ÑÑнкÑий-акÑеÑÑоÑов (геÑÑÐµÑ Ð¸ ÑеÑÑеÑ) Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑвойÑÑва, и Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий аÑÑибÑÑÑ:
ÐÑÑибÑÑ Ð¢Ð¸Ð¿ ÐпиÑание ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ [[Get]] Function или undefined ФÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ Ð±ÐµÐ· паÑамеÑÑов и возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение ÑвойÑÑва каждÑй Ñаз, когда пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑÑение ÑвойÑÑва. СмоÑÑиÑе Ñакжеget
. undefined [[Set]] Function или undefined ФÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом, ÑодеÑжаÑим пÑиÑваиваемое знаÑение, каждÑй Ñаз, когда пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð¿ÑÑка пÑиÑвоиÑÑ ÑвойÑÑÐ²Ñ Ð½Ð¾Ð²Ð¾Ðµ знаÑение. СмоÑÑиÑе Ñакже set
. undefined [[Enumerable]] Boolean ÐÑли true
, ÑвойÑÑво бÑÐ´ÐµÑ Ð¿ÐµÑеÑиÑлено в Ñикле for...in. false [[Configurable]] Boolean ÐÑли false
, Ñо ÑвойÑÑво не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдалено, и не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в ÑвойÑÑво-знаÑение. false
ÐÑимеÑание: ÐÑÑибÑÑÑ Ð¾Ð±ÑÑно иÑполÑзÑÑÑÑÑ Ð´Ð²Ð¸Ð¶ÐºÐ¾Ð¼ JavaScript, поÑÑÐ¾Ð¼Ñ Ð²Ñ Ð½Ðµ можеÑе обÑаÑиÑÑÑÑ Ðº ним напÑÑмÑÑ (ÑмоÑÑиÑе подÑобнее Object.defineProperty()). ÐÐ¾Ñ Ð¿Ð¾ÑÐµÐ¼Ñ Ð² ÑаблиÑÐ°Ñ Ð²ÑÑе они помеÑÐµÐ½Ñ Ð² двойнÑе квадÑаÑнÑе Ñкобки вмеÑÑо одиноÑнÑÑ .
«ÐбÑÑнÑе» обÑекÑÑ Ð¸ ÑÑнкÑииÐбÑÐµÐºÑ JavaScript â ÑÑо ÑаблиÑа ÑооÑноÑений Ð¼ÐµÐ¶Ð´Ñ ÐºÐ»ÑÑами и знаÑениÑми. ÐлÑÑи â ÑÑо ÑÑÑоки (или Symbol
), а знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð»ÑбÑми. ÐÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¾Ð±ÑекÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾ÑвеÑаÑÑими опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ
еÑ-ÑаблиÑÑ.
ФÑнкÑии â ÑÑо обÑÑнÑе обÑекÑÑ, имеÑÑие дополниÑелÑнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð±ÑÑÑ Ð²ÑзваннÑми Ð´Ð»Ñ Ð¸ÑполнениÑ.
ÐаÑÑÐÐ»Ñ ÑабоÑÑ Ñ Ð´Ð°Ñами ÑлÑÐ¶Ð¸Ñ Ð²ÑÑÑоеннÑй глобалÑнÑй обÑÐµÐºÑ Date
.
ÐаÑÑив â ÑÑо обÑÑнÑй обÑÐµÐºÑ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной ÑвÑзÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑелоÑиÑленнÑми клÑÑами его ÑвойÑÑв и ÑпеÑиалÑнÑм ÑвойÑÑвом length. Ðдобавок ко вÑемÑ, маÑÑÐ¸Ð²Ñ Ð½Ð°ÑледÑÑÑ Array.prototype
, пÑедоÑÑавлÑÑÑий иÑÑеÑпÑваÑÑий Ð½Ð°Ð±Ð¾Ñ Ð¼ÐµÑодов Ð´Ð»Ñ Ð¼Ð°Ð½Ð¸Ð¿ÑлÑÑии маÑÑивами. ÐапÑимеÑ, меÑод indexOf
(ÑлÑÐ¶Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка знаÑÐµÐ½Ð¸Ñ Ð² маÑÑиве), push
(добавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива) и Ñ. д. ÐÑÑ ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¼Ð°ÑÑив идеалÑнÑм кандидаÑом Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑков и пеÑеÑиÑлений.
ТипизиÑованнÑе маÑÑÐ¸Ð²Ñ ÑвлÑÑÑÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñми маÑÑивам пÑедÑÑавлениÑми набоÑов бинаÑнÑÑ
даннÑÑ
и пÑедлагаÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво меÑодов, ÑеманÑика коÑоÑÑÑ
аналогиÑна аналогам маÑÑива. "ТипизиÑованнÑй маÑÑив" ÑÑо обÑий ÑеÑмин Ð´Ð»Ñ ÑÑда ÑÑÑÑкÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
, вклÑÑÐ°Ñ Int8Array
, Float32Array
и Ñ.д. ÐодÑобнее о ниÑ
можно ÑзнаÑÑ Ð² ÑÑководÑÑве о ÑипизиÑованнÑÑ
маÑÑиваÑ
. ТипизиÑованнÑе маÑÑÐ¸Ð²Ñ ÑаÑÑо иÑполÑзÑÑÑÑÑ Ð²Ð¼ÐµÑÑе Ñ ArrayBuffer
и DataView
.
ÐÑи набоÑÑ Ð´Ð°Ð½Ð½ÑÑ
иÑполÑзÑÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° обÑÐµÐºÑ Ð² каÑеÑÑве клÑÑа, и Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð² JavaScript Ñ Ð¿ÑиÑ
одом ECMAScript Edition 6. Set
и WeakSet
ÑвлÑÑÑ Ñобой Ð½Ð°Ð±Ð¾Ñ ÑникалÑнÑÑ
обÑекÑов, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº Map
и WeakMap
аÑÑоÑииÑÑÑÑ Ñ Ð¾Ð±ÑекÑом (вÑÑÑÑпаÑÑим в каÑеÑÑве клÑÑа) некоÑоÑое знаÑение. РазниÑа Ð¼ÐµÐ¶Ð´Ñ Map и WeakMap заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо ÑолÑко Ñ Map клÑÑи ÑвлÑÑÑÑÑ Ð¿ÐµÑеÑиÑлÑемÑми. ÐÑо позволÑÐµÑ Ð¾Ð¿ÑимизиÑоваÑÑ ÑбоÑÐºÑ Ð¼ÑÑоÑа Ð´Ð»Ñ WeakMap.
Ðожно бÑло Ð±Ñ Ð½Ð°Ð¿Ð¸ÑаÑÑ ÑобÑÑвеннÑÑ ÑеализаÑÐ¸Ñ Map и Set на ÑиÑÑом ECMAScript 5. Ðднако, Ñак как обÑекÑÑ Ð½ÐµÐ»ÑÐ·Ñ ÑÑавниваÑÑ Ð½Ð° болÑÑе или менÑÑе, Ñо пÑоизводиÑелÑноÑÑÑ Ð¿Ð¾Ð¸Ñка в ÑамоделÑной ÑеализаÑии бÑÐ´ÐµÑ Ð²ÑнÑжденно линейной. ÐаÑÐ¸Ð²Ð½Ð°Ñ ÑеализаÑÐ¸Ñ (вклÑÑÐ°Ñ WeakMap) Ð¸Ð¼ÐµÐµÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð»Ð¾Ð³Ð°ÑиÑмиÑеÑки близкÑÑ Ðº конÑÑанÑе.
ÐбÑÑно, Ð´Ð»Ñ Ð¿ÑивÑзки некоÑоÑÑÑ
даннÑÑ
к ÑÐ·Ð»Ñ DOM, пÑиÑ
одиÑÑÑ ÑÑÑанавливаÑÑ ÑвойÑÑва ÑÑÐ¾Ð¼Ñ ÑÐ·Ð»Ñ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно, либо иÑполÑзоваÑÑ ÐµÐ³Ð¾ аÑÑибÑÑÑ data-*
. ÐбÑаÑной ÑÑоÑоной Ñакого подÑ
ода ÑвлÑеÑÑÑ Ñо, ÑÑо ÑÑи даннÑе бÑдÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð»ÑÐ±Ð¾Ð¼Ñ ÑкÑипÑÑ, ÑабоÑаÑÑÐµÐ¼Ñ Ð² Ñом же конÑекÑÑе. Maps и WeakMaps даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÑиваÑной пÑивÑзки даннÑÑ
к обÑекÑÑ.
JSON (JavaScript Object Notation) â ÑÑо легковеÑнÑй ÑоÑÐ¼Ð°Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° даннÑми, пÑоиÑÑ
одÑÑий Ð¾Ñ JavaScript, но иÑполÑзÑемÑй во множеÑÑве ÑзÑков пÑогÑаммиÑованиÑ. JSON ÑÑÑÐ¾Ð¸Ñ ÑнивеÑÑалÑнÑе ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
. СмоÑÑиÑе JSON и JSON
Ð´Ð»Ñ Ð´ÐµÑалÑного изÑÑениÑ.
JavaScript Ð¸Ð¼ÐµÐµÑ ÑÑандаÑÑнÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð²ÑÑÑоеннÑÑ Ð¾Ð±ÑекÑов. ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº ÑпÑавоÑникÑ, ÑÑÐ¾Ð±Ñ Ð½Ð°Ð¹Ñи опиÑание вÑÐµÑ Ð¾Ð±ÑекÑов доÑÑÑпнÑÑ Ð´Ð»Ñ ÑабоÑÑ.
ÐпÑеделение Ñипов опеÑаÑоÑомtypeof
ÐпеÑаÑÐ¾Ñ typeof
Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¾Ð¿ÑеделиÑÑ Ñип ваÑей пеÑеменной. СмоÑÑиÑе ÑÑÑаниÑÑ Ð´Ð¾ÐºÑменÑаÑии, где пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ ÐµÐ³Ð¾ деÑали и ÑлÑÑаи иÑполÑзованиÑ.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4