Рданной главе ÑаÑÑмаÑÑиваÑÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ð°Ñ Ð³ÑаммаÑика, обÑÑвление пеÑеменнÑÑ , ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ лиÑеÑалÑ.
ÐÑновÑJavaScript заимÑÑвÑÐµÑ Ð±Ð¾Ð»ÑÑÑÑ ÑаÑÑÑ ÑинÑакÑиÑа из Java, но Ñакже иÑпÑÑал влиÑние ÑÐ°ÐºÐ¸Ñ ÑзÑков, как Awk, Perl и Python.
JavaScript ÑÑвÑÑвиÑелен к ÑегиÑÑÑÑ Ð¸ иÑполÑзÑÐµÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ñимволов Unicode. ÐапÑимеÑ, Ñлово Früh ("Ñано" по-немеÑки) Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каÑеÑÑве имени пеÑеменной.
Ðо, пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ früh
не Ñо же Ñамое ÑÑо Früh
поÑÐ¾Ð¼Ñ ÑÑо JavaScript ÑÑвÑÑвиÑелен к ÑегиÑÑÑÑ.
Ð JavaScript инÑÑÑÑкÑии назÑваÑÑÑÑ statements и ÑазделÑÑÑÑÑ ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой (;). ÐÑобел (space), ÑабÑлÑÑÐ¸Ñ (tab) и пеÑевод ÑÑÑоки (newline) назÑваÑÑÑÑ Ð¿ÑобелÑнÑми Ñимволами (whitespace). ÐÑÑ Ð¾Ð´Ð½Ñй ÑекÑÑ ÑкÑипÑов на JavaScript ÑканиÑÑеÑÑÑ Ñлева напÑаво и конвеÑÑиÑÑеÑÑÑ Ð² поÑледоваÑелÑноÑÑÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ ÑлеменÑов, ÑвлÑÑÑÐ¸Ñ ÑÑ Ñокенами (tokens), ÑпÑавлÑÑÑими Ñимволами, Ñимволами конÑа ÑÑÑоки, комменÑаÑиÑми или пÑобелÑнÑми Ñимволами. ECMAScript Ñакже опÑеделÑÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе клÑÑевÑе Ñлова и лиÑеÑÐ°Ð»Ñ Ð¸ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñавила Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкой вÑÑавки ÑоÑек Ñ Ð·Ð°Ð¿ÑÑой (ASI), ÑÑÐ¾Ð±Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑиÑÑ ÐºÐ¾Ð½ÐµÑ Ð¸Ð½ÑÑÑÑкÑий (statements). Ðднако, ÑекомендÑеÑÑÑ Ð²Ñегда ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой в конÑе каждой инÑÑÑÑкÑии вÑÑÑнÑÑ, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾Ð±Ð¾ÑнÑÑ ÑÑÑекÑов. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, пÑоÑиÑайÑе Lexical Grammar.
ÐомменÑаÑииСинÑакÑÐ¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев ÑвлÑеÑÑÑ Ñаким же, как и в C++ и во Ð¼Ð½Ð¾Ð³Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ ÑзÑÐºÐ°Ñ :
// ÐомменÑаÑий, занимаÑÑий Ð¾Ð´Ð½Ñ ÑÑÑокÑ.
/* ÐомменÑаÑий,
занимаÑÑий неÑколÑко ÑÑÑок.
*/
/* ÐелÑÐ·Ñ Ð²ÐºÐ»Ð°Ð´ÑваÑÑ /* комменÑаÑий в комменÑаÑий */ SyntaxError */
ÐбÑÑвлениÑ
Ð JavaScript ÑÑÑеÑÑвÑÐµÑ ÑÑи вида обÑÑвлений:
var
ÐбÑÑвлÑÐµÑ Ð¿ÐµÑеменнÑÑ, иниÑиализаÑÐ¸Ñ Ð¿ÐµÑеменной знаÑением ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑной.
let
ÐбÑÑвлÑÐµÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ Ð¿ÐµÑеменнÑÑ Ð² облаÑÑи видимоÑÑи блока, иниÑиализаÑÐ¸Ñ Ð¿ÐµÑеменной знаÑением ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑной.
const
ÐбÑÑвлÑÐµÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð½ÑÑанÑÑ, доÑÑÑпнÑÑ ÑолÑко Ð´Ð»Ñ ÑÑениÑ.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¿ÐµÑеменнÑе как ÑимволиÑеÑкие имена Ð´Ð»Ñ Ð·Ð½Ð°Ñений в ваÑем пÑиложении. Ðмена пеÑеменнÑÑ Ð½Ð°Ð·ÑваÑÑÑÑ identifiers и Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ð¾Ð¿ÑеделÑннÑм пÑавилам.
ÐденÑиÑикаÑÐ¾Ñ Ð² JavaScript должен наÑинаÑÑÑÑ Ñ Ð±ÑквÑ, нижнего подÑÑÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ (_) или знака доллаÑа ($); поÑледÑÑÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ñакже бÑÑÑ ÑиÑÑами (0-9). ÐоÑколÑÐºÑ JavaScript ÑÑвÑÑвиÑелен к ÑегиÑÑÑÑ, бÑÐºÐ²Ñ Ð²ÐºÐ»ÑÑаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾Ñ "A" до "Z" (веÑÑ Ð½Ð¸Ð¹ ÑегиÑÑÑ) и ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾Ñ "a" до "z" (нижний ÑегиÑÑÑ).
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð² иденÑиÑикаÑоÑÐ°Ñ Ð±ÑÐºÐ²Ñ ISO 8859-1 или Unicode, напÑимеÑ, Ã¥ или ü. ÐÑ Ñакже можеÑе иÑполÑзоваÑÑ ÑпÑавлÑÑÑие поÑледоваÑелÑноÑÑи Unicode как ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² иденÑиÑикаÑоÑÐ°Ñ .
ÐекоÑоÑÑе пÑимеÑÑ ÐºÐ¾ÑÑекÑнÑÑ
имÑн: Number_hits
, temp99
, _name
.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе обÑÑвиÑÑ Ð¿ÐµÑеменнÑÑ ÑÑÐµÐ¼Ñ ÑпоÑобами:
var
. ÐапÑимеÑ, var x = 42
. ÐаннÑй ÑинÑакÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ðº локалÑнÑÑ
, Ñак и глобалÑнÑÑ
пеÑеменнÑÑ
.x = 42
. ÐеÑеменнÑе, обÑÑвленнÑе даннÑм ÑпоÑобом, ÑвлÑÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑми. Такое обÑÑвление генеÑиÑÑÐµÑ ÑÑÑогое пÑедÑпÑеждение (strict mode). Ðе ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй ÑпоÑоб.let
. ÐапÑимеÑ, let y = 13
. ÐаннÑй ÑинÑакÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ñной пеÑеменной в облаÑÑи видимоÑÑи блока.ÐеÑеменнаÑ, обÑÑÐ²Ð»ÐµÐ½Ð½Ð°Ñ ÑеÑез var
или let
без пÑиÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð½Ð°ÑалÑного знаÑениÑ, Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение undefined
.
ÐÑи попÑÑке доÑÑÑпа к необÑÑвленной пеÑеменной или пеÑеменной до ÐµÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑклÑÑение ReferenceError
:
var a;
console.log("The value of a is " + a); //ÐнаÑение пеÑеменной a undefined
console.log("The value of b is " + b); //Uncaught ReferenceError: b не опÑеделена
console.log("The value of c is " + c); //ÐнаÑение пеÑеменной c undefined
var c;
console.log("The value of x is " + x); //Uncaught ReferenceError: x не опÑеделена
let x;
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ undefined
, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð·Ð½Ð°Ñение. Ð ÑледÑÑÑем пÑимеÑе пеÑеменной input
не пÑиÑвоено знаÑение, и опеÑаÑÐ¾Ñ if
бÑÐ´ÐµÑ Ð²ÑÑиÑлен как true
:
var input;
if (input === undefined) {
doThis();
} else {
doThat();
}
ÐнаÑение undefined
ведÑÑ ÑÐµÐ±Ñ ÐºÐ°Ðº false
, когда иÑполÑзÑеÑÑÑ Ð² логиÑеÑком конÑекÑÑе. ÐапÑимеÑ, ÑледÑÑÑий код вÑполнÑÐµÑ ÑÑнкÑÐ¸Ñ myFunction
, Ñ.к. ÑÐ»ÐµÐ¼ÐµÐ½Ñ myArray
не опÑеделÑн:
var myArray = [];
if (!myArray[0]) {
myFunction();
}
ÐнаÑение undefined
конвеÑÑиÑÑеÑÑÑ Ð² NaN
, когда иÑполÑзÑеÑÑÑ Ð² ÑиÑловом конÑекÑÑе:
ÐнаÑение null
ведÑÑ ÑÐµÐ±Ñ ÐºÐ°Ðº 0 в ÑиÑловом конÑекÑÑе и как false
в логиÑеÑком конÑекÑÑе:
var n = null;
console.log(n * 32); // РконÑÐ¾Ð»Ñ Ð²ÑведеÑÑÑ 0
ÐблаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи пеÑеменнÑÑ
Ðогда Ð²Ñ Ð¾Ð±ÑÑвлÑеÑе пеÑеменнÑÑ Ð²Ð½Ðµ ÑÑнкÑии, Ñо ÑÐ°ÐºÐ°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ð°Ð·ÑваеÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñной пеÑеменной, Ñ.к. доÑÑÑпна лÑÐ±Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ð² ÑекÑÑем докÑменÑе. Ðогда Ð²Ñ Ð¾Ð±ÑÑвлÑеÑе пеÑеменнÑÑ Ð²Ð½ÑÑÑи ÑÑнкÑии, Ñо ÑÐ°ÐºÐ°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ð°Ð·ÑваеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñной пеÑеменной, Ñ.к. доÑÑÑпна ÑолÑко внÑÑÑи данной ÑÑнкÑии.
Ðо ECMAScript 6 в JavaScript оÑÑÑÑÑÑвовала облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи блока; пеÑеменнаÑ, обÑÑÐ²Ð»ÐµÐ½Ð½Ð°Ñ Ð²Ð½ÑÑÑи блока, ÑвлÑеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñной Ð´Ð»Ñ _ÑÑнкÑии _(или глобалÑной облаÑÑи видимоÑÑи), внÑÑÑи коÑоÑой наÑ
одиÑÑÑ Ð´Ð°Ð½Ð½Ñй блок. ÐапÑимеÑ, ÑледÑÑÑий код вÑÐ²ÐµÐ´ÐµÑ Ð·Ð½Ð°Ñение 5, Ñ.к. облаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи пеÑеменной x
ÑвлÑеÑÑÑ ÑÑнкÑÐ¸Ñ (или глобалÑнÑй конÑекÑÑ), внÑÑÑи коÑоÑой обÑÑвлена пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ x
, а не блок, коÑоÑÑм в данном ÑлÑÑае ÑвлÑеÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ if
:
if (true) {
var x = 5;
}
console.log(x); // 5
Такое поведение менÑеÑÑÑ, еÑли иÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ let
, введÑннÑй в ECMAScript 6:
if (true) {
let y = 5;
}
console.log(y); // ReferenceError
ÐоднÑÑие пеÑеменнÑÑ
ÐÑÑгим необÑÑнÑм ÑвойÑÑвом пеÑеменнÑÑ
в JavaScript ÑвлÑеÑÑÑ Ñо, ÑÑо можно ÑоÑлаÑÑÑÑ Ð½Ð° пеÑеменнÑÑ, коÑоÑÐ°Ñ Ð¾Ð±ÑÑвлÑеÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ, и не полÑÑиÑÑ Ð¿Ñи ÑÑом иÑклÑÑениÑ. ÐÑа конÑепÑÐ¸Ñ Ð¸Ð·Ð²ÐµÑÑна как поднÑÑие (hoisting) пеÑеменнÑÑ
; пеÑеменнÑе в JavaScript поднимаÑÑÑÑ Ð² Ñамое наÑало ÑÑнкÑии или вÑÑажениÑ. Ðднако, пеÑеменнÑе, коÑоÑÑе еÑÑ Ð½Ðµ бÑли иниÑиализиÑованÑ, возвÑаÑÑÑ Ð·Ð½Ð°Ñение undefined
:
/*
* Example 1
*/
console.log(x === undefined); // true
var x = 3;
/*
* Example 2
*/
var myvar = "my value";
(function () {
console.log(myvar); // undefined
var myvar = "local value";
})();
ÐÑиведÑннÑе вÑÑе пÑимеÑÑ Ð±ÑдÑÑ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑÑÑ Ñак же, как:
/*
* Example 1
*/
var x;
console.log(x === undefined); // true
x = 3;
/*
* Example 2
*/
var myvar = "my value";
(function () {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
Ðз-за поднÑÑÐ¸Ñ Ð¿ÐµÑеменнÑÑ
, вÑе опеÑаÑоÑÑ var
в ÑÑнкÑии ÑледÑÐµÑ ÑазмеÑаÑÑ Ð½Ð°ÑÑолÑко близко к наÑÐ°Ð»Ñ ÑÑнкÑии, наÑколÑко ÑÑо возможно. Следование ÑÑÐ¾Ð¼Ñ Ð¿ÑÐ°Ð²Ð¸Ð»Ñ ÑлÑÑÑÐ°ÐµÑ ÑÑноÑÑÑ ÐºÐ¾Ð´Ð°.
Ð ECMAScript 2015, let (const)
не бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°ÑÑÑÑ Ð²Ð²ÐµÑÑ
блока. Ðднако, ÑÑÑлки на пеÑеменнÑÑ Ð² блоке до обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной вÑзовÑÑ ReferenceError
.
ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð²Ð¾ "вÑеменной мÑÑÑвой зоне" в наÑале блока, до обÑÑвлениÑ.
function do_something() {
console.log(foo); // ReferenceError
let foo = 2;
}
ÐоднÑÑие ÑÑнкÑий
ÐÐ»Ñ ÑÑнкÑий: ÑолÑко опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑнкÑий поднимаÑÑÑÑ Ð½Ð°Ð²ÐµÑÑ , но не ÑÑнкÑии, опÑеделÑннÑе ÑеÑез вÑÑажениÑ.
/* ÐпÑеделение ÑÑнкÑии */
foo(); // "bar"
function foo() {
console.log("bar");
}
/* ÐпÑеделение ÑÑнкÑии ÑеÑез вÑÑажение */
baz(); // TypeError: baz is not a function
var baz = function () {
console.log("bar2");
};
ÐлобалÑнÑе пеÑеменнÑе
ÐлобалÑнÑе пеÑеменнÑе на Ñамом деле ÑвлÑÑÑÑÑ ÑвойÑÑвами глобалÑного обÑекÑа. Ðа веб-ÑÑÑаниÑаÑ
глобалÑнÑм обÑекÑом ÑвлÑеÑÑÑ window
, поÑÑÐ¾Ð¼Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑÑÑанавливаÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе пеÑеменнÑе и обÑаÑаÑÑÑÑ Ðº ним, иÑполÑзÑÑ ÑинÑакÑÐ¸Ñ window.variable
:
СледоваÑелÑно, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе обÑаÑаÑÑÑÑ Ðº глобалÑнÑм пеÑеменнÑм, обÑÑвленнÑм в одном обÑекÑе window или frame из дÑÑгого обÑекÑа window или frame, Ñказав Ð¸Ð¼Ñ window или frame. ÐапÑимеÑ, еÑли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ phoneNumber
обÑÑвлена в докÑменÑе, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑоÑлаÑÑÑÑ Ð½Ð° ÑÑÑ Ð¿ÐµÑеменнÑÑ Ð¸Ð· iframe как parent.phoneNumber
.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð½ÑÑанÑÑ, доÑÑÑпнÑÑ ÑолÑко Ð´Ð»Ñ ÑÑениÑ, иÑполÑзÑÑ ÐºÐ»ÑÑевое Ñлово const
. СинÑакÑÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа конÑÑанÑÑ ÑвлÑеÑÑÑ Ñаким же, как и Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа пеÑеменной: он должен наÑинаÑÑÑÑ Ñ Ð±ÑквÑ, нижнего подÑÑÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ знака $ и Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð±ÑквÑ, ÑиÑÑÑ Ð¸Ð»Ð¸ нижнее подÑÑÑкивание.
ÐелÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð·Ð½Ð°Ñение конÑÑанÑÑ ÑеÑез пÑиÑваивание или повÑоÑное обÑÑвление во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа. ÐнаÑение должно бÑÑÑ Ñказано пÑи иниÑиализаÑии.
ÐÑавила, каÑаÑÑиеÑÑ Ð¾Ð±Ð»Ð°ÑÑи видимоÑÑи, Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑÐ°Ð½Ñ ÑвлÑÑÑÑÑ Ñакими же, как и Ð´Ð»Ñ Ð¿ÐµÑеменнÑÑ
, обÑÑвленнÑÑ
ÑеÑез let
. ÐÑли клÑÑевое Ñлово const
не Ñказано, Ñо иденÑиÑикаÑÐ¾Ñ Ð±ÑÐ´ÐµÑ ÑвлÑÑÑÑÑ Ð¿ÐµÑеменной.
ÐелÑÐ·Ñ Ð¾Ð±ÑÑвиÑÑ ÐºÐ¾Ð½ÑÑанÑÑ Ñ Ñаким же именем, как Ñ ÑÑнкÑии или пеÑеменной в одной облаÑÑи видимоÑÑи. СледÑÑÑие пÑимеÑÑ Ð²ÑбÑоÑÑÑ Ð¸ÑклÑÑение TypeError
:
// ÐÑо вÑÐ·Ð¾Ð²ÐµÑ Ð¾ÑибкÑ
function f() {}
const f = 5;
// ÐÑо Ñоже вÑÐ·Ð¾Ð²ÐµÑ Ð¾ÑибкÑ
function f() {
const g = 5;
var g;
// какие-Ñо вÑÑажениÑ
}
Ðднако, аÑÑибÑÑÑ Ð¾Ð±ÑекÑов не заÑиÑенÑ, Ñак ÑÑо ÑледÑÑÑее вÑÑажение вÑполниÑÑÑ Ð±ÐµÐ· пÑоблем
const MY_OBJECT = { key: "value" };
MY_OBJECT.key = "otherValue";
СÑÑÑкÑÑÑÑ Ð¸ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð¢Ð¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
ÐоÑледний ÑÑандаÑÑ ECMAScript опÑеделÑÐµÑ ÑÐµÐ¼Ñ Ñипов даннÑÑ :
ШеÑÑÑ Ñипов даннÑÑ , коÑоÑÑе ÑвлÑÑÑÑÑ Ð¿ÑимиÑивами:
true
и false
.null
не Ñо же Ñамое, ÑÑо Null
, NULL
или лÑбой дÑÑгой ваÑианÑ.undefined
.42
или 3.14159
.и Object
ХоÑÑ Ñипов даннÑÑ
оÑноÑиÑелÑно немного, но они позволÑÑÑ Ð²Ð°Ð¼ вÑполнÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñе ÑÑнкÑии в ваÑиÑ
пÑиложениÑÑ
. ÐбÑекÑÑ
и ÑÑнкÑии
ÑвлÑÑÑÑÑ Ð´ÑÑгими ÑÑндаменÑалÑнÑми ÑлеменÑами ÑзÑка. ÐÑ Ð¼Ð¾Ð¶ÐµÑе дÑмаÑÑ Ð¾Ð± обÑекÑаÑ
как об именованнÑÑ
конÑейнеÑаÑ
Ð´Ð»Ñ Ð·Ð½Ð°Ñений и о ÑÑнкÑиÑÑ
как о пÑоÑедÑÑаÑ
, коÑоÑÑе ваÑе пÑиложение Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполнÑÑÑ.
JavaScript â ÑÑо динамиÑеÑки ÑипизиÑованнÑй ÑзÑк. ÐÑо ознаÑаеÑ, ÑÑо вам не нÑжно ÑказÑваÑÑ Ñип даннÑÑ Ð¿ÐµÑеменной, когда Ð²Ñ ÐµÑ Ð¾Ð±ÑÑвлÑеÑе, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑеобÑазÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки по меÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа. Так, напÑимеÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе опÑеделиÑÑ Ð¿ÐµÑеменнÑÑ ÑледÑÑÑим обÑазом:
Рпозже Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑиÑвоиÑÑ ÑÑой пеÑеменной ÑÑÑоковое знаÑение, напÑимеÑ:
answer = "Thanks for all the fish...";
ÐоÑколÑÐºÑ JavaScript ÑвлÑеÑÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки ÑипизиÑованнÑм, ÑÑо пÑиÑваивание не вÑÐ·Ð¾Ð²ÐµÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке.
РвÑÑажениÑÑ
, вклÑÑаÑÑиÑ
ÑиÑловÑе и ÑÑÑоковÑе знаÑÐµÐ½Ð¸Ñ Ñ Ð¾Ð¿ÐµÑаÑоÑом +
, JavaScript пÑеобÑазÑÐµÑ ÑиÑловÑе знаÑÐµÐ½Ð¸Ñ Ð² ÑÑÑоковÑе. ÐапÑимеÑ:
x = "The answer is " + 42; // "The answer is 42"
y = 42 + " is the answer"; // "42 is the answer"
РвÑÑажениÑÑ Ñ Ð´ÑÑгими опеÑаÑоÑами JavaScript не пÑеобÑазÑÐµÑ ÑиÑловÑе знаÑÐµÐ½Ð¸Ñ Ð² ÑÑÑоковÑе. ÐапÑимеÑ:
"37" - 7; // 30
"37" + 7; // "377"
ÐÑеобÑазование ÑÑÑок в ÑиÑла
Ð Ñом ÑлÑÑае, еÑли знаÑение, пÑедÑÑавлÑÑÑее ÑиÑло, Ñ ÑаниÑÑÑ Ð² памÑÑи как ÑÑÑока, можно иÑполÑзоваÑÑ Ð¼ÐµÑÐ¾Ð´Ñ Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑок в ÑиÑла:
parseInt
пÑеобÑазÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð² ÑелоÑиÑленное знаÑение. ХоÑоÑей пÑакÑикой ÑвлÑеÑÑÑ Ð²Ñегда ÑказÑваÑÑ Ð¾Ñнование ÑиÑÑÐµÐ¼Ñ ÑÑиÑÐ»ÐµÐ½Ð¸Ñ (паÑамеÑÑ radix
).
ÐлÑÑеÑнаÑивнÑм ÑпоÑобом Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑиÑла из ÑÑÑоки ÑвлÑеÑÑÑ Ð¸ÑполÑзование опеÑаÑоÑа "ÑнаÑнÑй плÑÑ":
"1.1" + "1.1"; // "1.11.1"
(+"1.1") + (+"1.1"); // 2.2
// ÐбÑаÑиÑе внимание на Ñо, ÑÑо Ñкобки не ÑвлÑÑÑÑÑ Ð¾Ð±ÑзаÑелÑнÑми и иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑÑноÑÑи.
ÐиÑеÑалÑ
ÐиÑеÑÐ°Ð»Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений в JavaScript. Ðни ÑвлÑÑÑÑÑ ÑикÑиÑованнÑми знаÑениÑми, а не пеÑеменнÑми. Рданной ÑекÑии ÑаÑÑмаÑÑиваÑÑÑÑ ÑледÑÑÑие ÑÐ¸Ð¿Ñ Ð»Ð¸ÑеÑалов:
ÐиÑеÑал маÑÑива â ÑÑо ÑпиÑок из нÑÐ»Ñ Ð¸Ð»Ð¸ более вÑÑажений, каждое из коÑоÑÑÑ
пÑедÑÑавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива, заклÑÑÑннÑй в квадÑаÑнÑе Ñкобки ( []
). Ðогда Ð²Ñ ÑоздаÑÑе маÑÑив, иÑполÑзÑÑ Ð»Ð¸ÑеÑал маÑÑива, он иниÑиализиÑÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÐµÑеданнÑÑ
знаÑений, коÑоÑÑе бÑдÑÑ ÑвлÑÑÑÑÑ ÐµÐ³Ð¾ ÑлеменÑами, длина маÑÑива бÑÐ´ÐµÑ Ñавна ÑиÑÐ»Ñ Ð¿ÐµÑеданнÑÑ
аÑгÑменÑов.
Ð ÑледÑÑÑем пÑимеÑе ÑоздаÑÑÑÑ Ð¼Ð°ÑÑив coffees
Ñ ÑÑÐµÐ¼Ñ ÑлеменÑам и длиной, Ñавной ÑÑÑм:
var coffees = ["French Roast", "Colombian", "Kona"];
ÐÑимеÑание: ÐбÑаÑиÑе внимание на Ñо, ÑÑо лиÑеÑал маÑÑива ÑвлÑеÑÑÑ Ð¸Ð½Ð¸ÑиализаÑоÑом обÑекÑа. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, пÑоÑиÑайÑе ÐÑполÑзование иниÑиализаÑоÑов обÑекÑа.
ÐÑли маÑÑив ÑоздаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð»Ð¸ÑеÑала в ÑкÑипÑе веÑÑ Ð½ÐµÐ³Ð¾ ÑÑовнÑ, Ñо JavaScript инÑеÑпÑеÑиÑÑÐµÑ Ð¼Ð°ÑÑив каждÑй Ñаз, когда вÑÑиÑлÑÐµÑ Ð²ÑÑажение, ÑодеÑжаÑее лиÑеÑал. ÐÑоме Ñого, лиÑеÑал, иÑполÑзÑемÑй в ÑÑнкÑии, ÑоздаÑÑÑÑ ÐºÐ°Ð¶Ð´Ñй Ñаз, когда вÑзÑваеÑÑÑ ÑÑнкÑиÑ.
ÐиÑеÑÐ°Ð»Ñ Ð¼Ð°ÑÑива Ñакже ÑвлÑÑÑÑÑ Ð¾Ð±ÑекÑами Array
. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, пÑоÑиÑайÑе Array
и ÑпоÑÑдоÑеннÑе набоÑÑ Ð´Ð°Ð½Ð½ÑÑ
.
Ðе обÑзаÑелÑно ÑказÑваÑÑ Ð²Ñе ÑлеменÑÑ Ð² лиÑеÑале array. ÐÑли Ð²Ñ Ð¿Ð¾ÑÑавиÑе две запÑÑÑе подÑÑд, Ñо пÑопÑÑеннÑе ÑлеменÑÑ Ð±ÑдÑÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение undefined
. ÐапÑимеÑ:
var fish = ["Lion", , "Angel"]; // ["Lion", undefined, "Angel"]
У ÑÑого маÑÑива еÑÑÑ 2 ÑлеменÑа Ñо знаÑениÑм и один пÑÑÑой (fish[0]
- "Lion", fish[1]
- undefined
, а fish[2]
- "Angel").
ÐÑли Ð²Ñ Ð¿Ð¾ÑÑавиÑе запÑÑÑÑ Ð² конÑе ÑпиÑка ÑлеменÑов, Ñо она бÑÐ´ÐµÑ Ð¿ÑоигноÑиÑована. Ð ÑледÑÑÑем пÑимеÑе, длина маÑÑива Ñавна 3. ÐÐµÑ myList[3]
. ÐÑе дÑÑгие запÑÑÑе в ÑпиÑке говоÑÑÑ Ð¾ новом ÑлеменÑе.
ÐÑимеÑание: ÐиÑние запÑÑÑе могÑÑ Ð²ÑзÑваÑÑ Ð¾Ñибки в ÑÑаÑÑÑ Ð²ÐµÑÑиÑÑ Ð±ÑаÑзеÑов, поÑÑÐ¾Ð¼Ñ Ð»ÑÑÑе избегаÑÑ Ð¸Ñ Ð¸ÑполÑзованиÑ.
var myList = ["home", , "school", ]; // ["home", undefined, "school"]
Ð ÑледÑÑÑем пÑимеÑе длина маÑÑива Ñавна ÑеÑÑÑÑм, ÑлеменÑÑ myList[0]
и myList[2]
имеÑÑ Ð·Ð½Ð°Ñение undefined
:
var myList = [, "home", , "school"]; // [undefined, "home", undefined, "school"]
Ð ÑледÑÑÑем пÑимеÑе длина маÑÑива Ñавна ÑеÑÑÑÑм, ÑлеменÑÑ myList[1]
и myList[3]
имеÑÑ Ð·Ð½Ð°Ñение undefined
. ÐгноÑиÑÑеÑÑÑ ÑолÑко поÑледнÑÑ Ð·Ð°Ð¿ÑÑаÑ.
var myList = ["home", , "school", ,]; // ["home", undefined, "school", undefined]
Ðонимание Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð»Ð¸ÑниÑ
запÑÑÑÑ
важно Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ JavaScript как ÑзÑка. Ðднако, когда бÑдеÑе пиÑаÑÑ Ñвой ÑобÑÑвеннÑй код, Ñо имейÑе в видÑ, ÑÑо Ñвное обÑÑвление оÑÑÑÑÑÑвÑÑÑиÑ
ÑлеменÑов как undefined
ÑлÑÑÑÐ°ÐµÑ ÑÑноÑÑÑ ÐºÐ¾Ð´Ð° и лÑгкоÑÑÑ ÐµÐ³Ð¾ поддеÑжки.
ÐогиÑеÑкий (Boolean) Ñип Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ð° лиÑеÑалÑнÑÑ
знаÑениÑ: true
и false
.
Ðе пÑÑайÑе пÑимиÑивнÑе логиÑеÑкие знаÑÐµÐ½Ð¸Ñ true
и false
Ñо знаÑениÑми true и false обÑекÑа Boolean. ÐбÑÐµÐºÑ Boolean ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом-обÑÑÑкой над пÑимиÑивом логиÑеÑкого Ñипа. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, пÑоÑиÑайÑе Boolean
.
ЦелÑе ÑиÑла могÑÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ Ð² деÑÑÑиÑной, ÑеÑÑнадÑаÑеÑиÑной, воÑÑмеÑиÑной и двоиÑной ÑиÑÑÐµÐ¼Ð°Ñ ÑÑиÑлениÑ.
ÐеÑколÑко пÑимеÑов ÑелоÑиÑленнÑÑ Ð»Ð¸ÑеÑалов:
0, 117 и -345 (деÑÑÑиÑÐ½Ð°Ñ ÑиÑÑема ÑÑиÑлениÑ) 015, 0001 и -077 (воÑÑмеÑиÑÐ½Ð°Ñ ÑиÑÑема ÑÑиÑлениÑ) 0x1123, 0x00111 и -0xF1A7 (ÑеÑÑнадÑаÑеÑиÑÐ½Ð°Ñ ÑиÑÑема ÑÑиÑлениÑ) 0b11, 0b0011 и -0b11 (двоиÑÐ½Ð°Ñ ÑиÑÑема ÑÑиÑлениÑ)
ÐÐ»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÑмоÑÑиÑе ÑиÑловÑе лиÑеÑÐ°Ð»Ñ Ð² лекÑиÑеÑкой гÑаммаÑике.
ÐиÑеÑал ÑиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкойЧиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой могÑÑ ÑоÑÑоÑÑÑ Ð¸Ð· ÑледÑÑÑÐ¸Ñ ÑаÑÑей:
ÐкÑпоненÑа ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· Ñимвола "e" или "E", за коÑоÑÑм ÑледÑÐµÑ Ñелое ÑиÑло, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ðº. ЧиÑло Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой должно ÑоÑÑоÑÑÑ Ð¿Ð¾ кÑайней меÑе из одной ÑиÑÑÑ Ð¸ либо деÑÑÑиÑной ÑоÑки, либо Ñимвола "e" (или "E").
Рболее ÑжаÑой ÑоÑме ÑинÑакÑÐ¸Ñ Ð²ÑглÑÐ´Ð¸Ñ ÑледÑÑÑим обÑазом:
[(+|-)][digits][.digits][(E|e)[(+|-)]digits]
ÐÑимеÑÑ:
3.14 -3.1E+12 -.3333333333333333333 .1e-23ÐиÑеÑал обÑекÑа
ÐиÑеÑал обÑекÑа â ÑÑо ÑпиÑок из нÑÐ»Ñ Ð¸Ð»Ð¸ более паÑ, ÑоÑÑоÑÑиÑ
из имÑн ÑвойÑÑв и ÑвÑзаннÑÑ
Ñ Ð½Ð¸Ð¼Ð¸ знаÑений, заклÑÑÑннÑй в ÑигÑÑнÑе Ñкобки ( {}
). Ðам не ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð»Ð¸ÑеÑал обÑекÑа в наÑале вÑÑажениÑ, Ñ.к. ÑÑо пÑиведÑÑ Ðº оÑибке или к поведениÑ, коÑоÑого Ð²Ñ Ð½Ðµ ожидаеÑе, поÑÐ¾Ð¼Ñ ÑÑо Ñимвол "{" бÑÐ´ÐµÑ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑÑÑ ÐºÐ°Ðº наÑало блока.
Ð ÑледÑÑÑем пÑимеÑе ÑвойÑÑÐ²Ñ myCar
обÑекÑа car
пÑиÑваиваеÑÑÑ ÑÑÑока "Saturn"
, ÑвойÑÑÐ²Ñ getCar
â ÑезÑлÑÑÐ°Ñ Ð²Ñзова ÑÑнкÑии CarTypes("Honda")
, ÑвойÑÑÐ²Ñ special
â знаÑение пеÑеменной Sales
:
var Sales = "Toyota";
function CarTypes(name) {
if (name == "Honda") {
return name;
} else {
return "ÐзвиниÑе, Ð¼Ñ Ð½Ðµ пÑодаÑм " + name + ".";
}
}
var car = { myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales };
console.log(car.myCar); // Saturn
console.log(car.getCar); // Honda
console.log(car.special); // Toyota
ÐÑоме Ñого, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑиÑловой или ÑÑÑоковой лиÑеÑÐ°Ð»Ñ Ð² Ð¸Ð¼ÐµÐ½Ð°Ñ ÑвойÑÑв или вкладÑваÑÑ Ð¾Ð´Ð¸Ð½ обÑÐµÐºÑ Ð² дÑÑгой. ÐапÑимеÑ:
var car = { manyCars: { a: "Saab", b: "Jeep" }, 7: "Mazda" };
console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda
Ðменем ÑвойÑÑва обÑекÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»ÑÐ±Ð°Ñ ÑÑÑока, в Ñом ÑиÑле пÑÑÑÐ°Ñ ÑÑÑока. ÐÑли Ð¸Ð¼Ñ ÑвойÑÑва не ÑвлÑеÑÑÑ ÐºÐ¾ÑÑекÑнÑм JavaScript иденÑиÑикаÑоÑом, Ñо оно должно бÑÑÑ Ð·Ð°ÐºÐ»ÑÑено в кавÑÑки. ÐÐ»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº Ñаким именам ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ²Ð°Ð´ÑаÑнÑе Ñкобки ( []
), а не ÑоÑÐºÑ ( .
):
var unusualPropertyNames = {
"": "An empty string",
"!": "Bang!"
}
console.log(unusualPropertyNames.""); // SyntaxError: Unexpected string
console.log(unusualPropertyNames[""]); // "An empty string"
console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
console.log(unusualPropertyNames["!"]); // "Bang!"
Ð ES2015 лиÑеÑÐ°Ð»Ñ Ð¾Ð±ÑекÑов ÑаÑÑиÑÐµÐ½Ñ Ð´Ð¾ поддеÑжки ÑÑÑановки пÑоÑоÑипа в конÑÑÑÑкÑии коÑоÑкой запиÑи Ð´Ð»Ñ foo:
задание foo
, опÑеделение меÑодов, Ñоздание ÑÑÐ¿ÐµÑ Ð²Ñзовов и вÑÑиÑление имÑн ÑвойÑÑв в вÑÑажениÑÑ
. ÐмеÑÑе, они делаÑÑ Ð¿Ð¾Ñ
ожими обÑекÑнÑе лиÑеÑÐ°Ð»Ñ Ð¸ обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑов, а Ñакже позволÑÑÑ Ð¾Ð±ÑекÑÐ½Ð¾Ð¼Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ñ Ð¿Ð¾Ð»ÑÑаÑÑ Ð²ÑÐ³Ð¾Ð´Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ
возможноÑÑей.
var obj = {
// __proto__
__proto__: theProtoObj,
// ÐоÑоÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð´Ð»Ñ âhandler: handlerâ
handler,
// ÐеÑодÑ
toString() {
// СÑÐ¿ÐµÑ Ð²ÑзовÑ
return "d " + super.toString();
},
// ÐинамиÑеÑкое вÑÑиÑление имÑн ÑвойÑÑв
["prop_" + (() => 42)()]: 42,
};
ÐбÑаÑиÑе внимание на ÑледÑÑÑий пÑимеÑ:
var foo = { a: "alpha", 2: "two" };
console.log(foo.a); // alpha
console.log(foo[2]); // two
// console.log(foo.2); // SyntaxError: Unexpected number
// console.log(foo[a]); // ReferenceError: a is not defined
console.log(foo["a"]); // alpha
console.log(foo["2"]); // two
RegExp лиÑеÑал
ÐиÑеÑал regexp - Ñаблон Ð¼ÐµÐ¶Ð´Ñ ÑлеÑами. СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð»Ð¸ÑеÑал regex:
СÑÑоковÑй лиÑеÑалСÑÑоковÑй лиÑеÑал â ÑÑо Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более Ñимволов, заклÑÑÑннÑÑ
в двойнÑе ( "
) или одинаÑнÑе ( '
) кавÑÑки. СÑÑока должна бÑÑÑ Ð¾Ð³ÑаниÑена кавÑÑками одного Ñипа, Ñ.е. либо обе одинаÑнÑе, либо обе двойнÑе. ÐапÑимеÑ:
"foo" 'bar' "1234" "one line \n another line" "John's cat"
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑзваÑÑ Ð»Ñбой из меÑодов обÑекÑа String
Ð´Ð»Ñ ÑÑÑокового лиÑеÑала: JavaScript авÑомаÑиÑеÑки пÑеобÑазÑÐµÑ ÑÑÑоковой лиÑеÑал во вÑеменнÑй обÑÐµÐºÑ String
, вÑÐ·Ð¾Ð²ÐµÑ Ð¼ÐµÑод, а заÑем ÑниÑÑÐ¾Ð¶Ð¸Ñ Ð²ÑеменнÑй обÑÐµÐºÑ String
. ÐÑ Ñакже можеÑе иÑполÑзоваÑÑ ÑвойÑÑво String.length
Ñо ÑÑÑоковÑм лиÑеÑалом:
console.log("John's cat".length);
// ЧиÑло Ñимволов в ÑÑÑоке, вклÑÑÐ°Ñ Ð¿Ñобел.
// Рданном ÑлÑÑае длина ÑÑÑоки Ñавна 10.
Ð ES2015 Ñакже доÑÑÑÐ¿Ð½Ñ ÑÐ°Ð±Ð»Ð¾Ð½Ñ ÑÑÑок. Ð¨Ð°Ð±Ð»Ð¾Ð½Ñ ÑÑÑок пÑедÑÑавлÑÑÑ Ñобой ÑинÑакÑиÑеÑкий ÑÐ°Ñ Ð°Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑок. ÐÑо Ð¿Ð¾Ñ Ð¾Ð¶Ðµ на возможноÑÑи инÑеÑполÑÑии ÑÑÑок в Perl, Python и дÑÑÐ³Ð¸Ñ . ÐополниÑелÑно, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½ Ñег, позволÑÑÑий наÑÑÑаиваÑÑ ÐºÐ¾Ð½ÑÑÑÑиÑование ÑÑÑок, Ð¸Ð·Ð±ÐµÐ³Ð°Ñ Ð°Ñак внедÑÐµÐ½Ð¸Ñ Ð¸ поÑÑÑÐ¾ÐµÐ½Ð¸Ñ ÑÑÑÑкÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð²ÑÑокого ÑÑÐ¾Ð²Ð½Ñ Ð¸Ð· ÑодеÑжимого ÑÑÑоки.
// ÐÑоÑÑое Ñоздание ÑÑÑоки ÑеÑез лиÑеÑал string
`In JavaScript '\n' is a line-feed.`;
// ÐÑлÑÑиÑÑÑоковÑе ÑÑÑоки
`In JavaScript this is
not legal.`;
// ÐнÑеÑполÑÑÐ¸Ñ ÑÑÑок
var name = "Ðобби",
time = "ÑегоднÑ";
`ÐÑÐ¸Ð²ÐµÑ ${name}, как ÑÑ ${time}?`;
// СÑÑоим пÑеÑÐ¸ÐºÑ HTTP запÑоÑа, иÑполÑзÑемÑй Ð´Ð»Ñ Ð¸Ð½ÑеÑпÑеÑаÑии замен и конÑÑÑÑиÑованиÑ
POST`http://foo.org/bar?a=${a}&b=${b}
Content-Type: application/json
X-Credentials: ${credentials}
{ "foo": ${foo},
"bar": ${bar}}`(myOnReadyStateChangeHandler);
Ðам ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑÑоковÑе лиÑеÑÐ°Ð»Ñ Ð´Ð¾ ÑеÑ
поÑ, пока вам ÑпеÑиалÑно не понадобиÑÑÑ Ð¾Ð±ÑÐµÐºÑ String
. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± обÑекÑе String
, пÑоÑиÑайÑе String
.
ÐÑоме обÑÑнÑÑ Ñимволов Ð²Ñ Ñакже можеÑе вклÑÑаÑÑ ÑпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÑÑÑоки.
"one line \n another line";
Ð ÑледÑÑÑей ÑаблиÑе пеÑеÑиÑÐ»ÐµÐ½Ñ ÑпеÑиалÑнÑе ÑимволÑ, коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ.
Символ ÐнаÑение\b
ÐозвÑÐ°Ñ (Backspace) \f
ÐеÑевод или пÑогон ÑÑÑаниÑÑ (Form feed) \n
ÐеÑевод ÑÑÑоки (New line) \r
ÐозвÑÐ°Ñ ÐºÐ°ÑеÑки (Carriage return) \t
ТабÑлÑÑÐ¸Ñ (Tab) \v
ÐеÑÑикалÑÐ½Ð°Ñ ÑабÑлÑÑÐ¸Ñ (Vertical tab) \'
ÐпоÑÑÑÐ¾Ñ Ð¸Ð»Ð¸ одинаÑÐ½Ð°Ñ ÐºÐ°Ð²ÑÑка \"
ÐÐ²Ð¾Ð¹Ð½Ð°Ñ ÐºÐ°Ð²ÑÑка \\
ÐбÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа (Backslash) \XXX
Символ в кодиÑовке Latin-1, пÑедÑÑавленнÑй ÑÑÐµÐ¼Ñ Ð²Ð¾ÑÑмеÑиÑнÑми ÑиÑлами XXX Ð¾Ñ 0 до 377. ÐапÑимеÑ, \251 (Ñимвол ©). \xXX
Символ в кодиÑовке Latin-1, пÑедÑÑавленнÑй двÑÐ¼Ñ ÑеÑÑнадÑаÑеÑиÑнÑми ÑиÑлами XX Ð¾Ñ 00 до FF. ÐапÑимеÑ, \xA9 (Ñимвол ©). \uXXXX
Символ в Unicode, пÑедÑÑавленнÑй ÑеÑÑÑÑÐ¼Ñ ÑеÑÑнадÑаÑеÑиÑнÑми ÑиÑлами XXXX. ÐапÑимеÑ, \u00A9 (Ñимвол ©). \u{XXXXX}
Символ в UTF-32BE. ÐапÑимеÑ, \u{2F804} обознаÑÐ°ÐµÑ Ñо же, ÑÑо обÑÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ \uD87E\uDC04. ÐкÑаниÑÑÑÑие ÑимволÑ
ÐÐ»Ñ Ñимволов, не пеÑеÑиÑленнÑÑ Ð² вÑÑепÑиведÑнной ÑаблиÑе, пÑедваÑÑÑÑÐ°Ñ Ð¾Ð±ÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа игноÑиÑÑеÑÑÑ. Такое иÑполÑзование не ÑвлÑеÑÑÑ ÑекомендованнÑм (deprecated) и вам ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ ÐµÐ³Ð¾.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑÑавиÑÑ ÐºÐ°Ð²ÑÑÐºÑ Ð² ÑÑÑокÑ, еÑли поÑÑавиÑе пеÑед ней обÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ. ÐÑо назÑваеÑÑÑ ÑкÑаниÑованием кавÑÑек. ÐапÑимеÑ:
var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
console.log(quote); // He read "The Cremation of Sam McGee" by R.W. Service.
ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð¾Ð±ÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ Ð² ÑÑÑокÑ, пеÑед ней нÑжно поÑÑавиÑÑ ÐµÑÑ Ð¾Ð´Ð½Ñ Ð¾Ð±ÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ. ÐапÑимеÑ:
var home = "c:\\temp"; // c:\temp
ÐÑ Ñакже можеÑе ÑкÑаниÑоваÑÑ Ð¿ÐµÑевод ÑÑÑоки. ÐбÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа и пеÑевод ÑÑÑоки бÑдÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð· ÑодеÑжимого ÑÑÑоки. ÐапÑимеÑ:
var str =
"this string \
is broken \
across multiple\
lines.";
console.log(str); // this string is broken across multiplelines.
ХоÑÑ JavaScript не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑинÑакÑÐ¸Ñ "heredoc" (ÑоÑмаÑиÑованнÑй ÑекÑÑ Ð² одной ÑÑÑоковой пеÑеменной), но Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑмÑлиÑоваÑÑ ÐµÐ³Ð¾, добавив пеÑевод ÑÑÑоки и обÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ Ð² ÐºÐ¾Ð½ÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки:
var poem =
"Roses are red,\n\
Violets are blue.\n\
I'm schizophrenic,\n\
And so am I.";
ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ
ÐÐ°Ð½Ð½Ð°Ñ Ð³Ð»Ð°Ð²Ð° ÑÑокÑÑиÑована на базовом ÑинÑакÑиÑе Ð´Ð»Ñ Ð¾Ð±ÑÑвлений и Ñипов. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ конÑÑÑÑкÑиÑÑ JavaScript, пÑоÑиÑайÑе:
Ð ÑледÑÑÑей главе ÑаÑÑмаÑÑиваÑÑÑÑ ÑпÑавлÑÑÑие конÑÑÑÑкÑии и обÑабоÑка оÑибок.
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