ÐавайÑе кÑаÑко повÑоÑим изÑÑеннÑй маÑеÑиал и оÑмеÑим наиболее «Ñонкие» моменÑÑ.
СÑÑÑкÑÑÑа кода
ÐнÑÑÑÑкÑии ÑазделÑÑÑÑÑ ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой:
alert('ÐÑивеÑ'); alert('ÐиÑ');
Ðак пÑавило, пеÑевод ÑÑÑоки Ñакже инÑеÑпÑеÑиÑÑеÑÑÑ ÐºÐ°Ðº ÑазделиÑелÑ, Ñак Ñоже бÑÐ´ÐµÑ ÑабоÑаÑÑ:
alert('ÐÑивеÑ')
alert('ÐиÑ')
ÐÑо Ñак назÑÐ²Ð°ÐµÐ¼Ð°Ñ Â«Ð°Ð²ÑомаÑиÑеÑÐºÐ°Ñ Ð²ÑÑавка ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой». ÐпÑоÑем, она не вÑегда ÑÑабаÑÑваеÑ, напÑимеÑ:
alert("ÐоÑле ÑÑого ÑообÑÐµÐ½Ð¸Ñ Ð¶Ð´Ð¸Ñе оÑибкÑ")
[1, 2].forEach(alert)
ÐолÑÑинÑÑво ÑÑководÑÑв по ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ð° ÑекомендÑÑÑ ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой поÑле каждой инÑÑÑÑкÑии.
ТоÑка Ñ Ð·Ð°Ð¿ÑÑой не ÑÑебÑеÑÑÑ Ð¿Ð¾Ñле блоков кода {â¦} и ÑинÑакÑиÑеÑÐºÐ¸Ñ ÐºÐ¾Ð½ÑÑÑÑкÑий Ñ Ð½Ð¸Ð¼Ð¸, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº, напÑимеÑ, ÑиклÑ:
function f() {
// поÑле обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÑнкÑии необÑзаÑелÑно ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой
}
for(;;) {
// поÑле Ñикла ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой Ñакже необÑзаÑелÑна
}
â¦ÐпÑоÑем, еÑли даже Ð¼Ñ Ð¸ поÑÑавим «лиÑнÑÑ» ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой, оÑибки не бÑдеÑ. Ðна пÑоÑÑо бÑÐ´ÐµÑ Ð¿ÑоигноÑиÑована.
ÐодÑобноÑÑи: СÑÑÑкÑÑÑа кода.
СÑÑогий Ñежим
ЧÑÐ¾Ð±Ñ Ð¿Ð¾ макÑимÑÐ¼Ñ Ð¸ÑполÑзоваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи ÑовÑеменного JavaScript, вÑе ÑкÑипÑÑ ÑекомендÑеÑÑÑ Ð½Ð°ÑинаÑÑ Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸ÑекÑÐ¸Ð²Ñ "use strict".
'use strict';
...
ÐÑÑ Ð´Ð¸ÑекÑÐ¸Ð²Ñ ÑледÑÐµÑ ÑазмеÑаÑÑ Ð² пеÑвой ÑÑÑоке ÑкÑипÑа или в наÑале Ñела ÑÑнкÑии.
Ðез "use strict" код Ñакже запÑÑÑиÑÑÑ, но некоÑоÑÑе возможноÑÑи бÑдÑÑ ÑабоÑаÑÑ Ð² «Ñежиме ÑовмеÑÑимоÑÑи» Ñо ÑÑаÑÑми веÑÑиÑми ÑзÑка JavaScript. Ðам же пÑедпоÑÑиÑелÑнее ÑовÑеменное поведение.
ÐекоÑоÑÑе конÑÑÑÑкÑии ÑзÑка (напÑимеÑ, клаÑÑÑ, коÑоÑÑе нам еÑÑ Ð¿ÑедÑÑÐ¾Ð¸Ñ Ð¸Ð·ÑÑиÑÑ) вклÑÑаÑÑ ÑÑÑогий Ñежим по ÑмолÑаниÑ.
ÐодÑобноÑÑи: СÑÑогий Ñежим â "use strict".
ÐеÑеменнÑе
Ðожно обÑÑвиÑÑ Ð¿Ñи помоÑи:
letconst(конÑÑанÑа, Ñ.е. Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ подлежиÑ)var(ÑÑÑаÑевÑий ÑпоÑоб, подÑобноÑÑи позже)
ÐÐ¼Ñ Ð¿ÐµÑеменной Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ:
- ÐÑÐºÐ²Ñ Ð¸ ÑиÑÑÑ, однако ÑиÑÑа не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑвÑм Ñимволом.
- СимволÑ
$и_иÑполÑзÑÑÑÑÑ Ð½Ð°ÑÑÐ´Ñ Ñ Ð±Ñквами. - ÐеÑоглиÑÑ Ð¸ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½ÐµÐ»Ð°ÑинÑкого алÑавиÑа Ñакже допÑÑÑимÑ, но обÑÑно не иÑполÑзÑÑÑÑÑ.
ÐеÑеменнÑе ÑипизиÑÑÑÑÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки. Ð Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ñ ÑаниÑÑÑÑ Ð»ÑбÑе знаÑениÑ:
let x = 5;
x = "ÐаÑÑ";
ÐÑего ÑÑÑеÑÑвÑÐµÑ 8 Ñипов даннÑÑ :
numberÐ´Ð»Ñ ÑелÑÑ Ð¸ веÑеÑÑвеннÑÑ ÑиÑел,bigintÐ´Ð»Ñ ÑабоÑÑ Ñ ÑелÑми ÑиÑлами пÑоизволÑной длинÑ,stringÐ´Ð»Ñ ÑÑÑок,booleanÐ´Ð»Ñ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ Ð·Ð½Ð°Ñений иÑÑинноÑÑи или ложноÑÑи:true/false,nullâ Ñип Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑм знаÑениемnull, Ñ.е. «пÑÑÑое знаÑение» или «знаÑение не ÑÑÑеÑÑвÑеÑ»,undefinedâ Ñип Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑм знаÑениемundefined, Ñ.е. «знаÑение не задано»,objectиsymbolâ ÑложнÑе ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸ ÑникалÑнÑе иденÑиÑикаÑоÑÑ; Ð¸Ñ Ð¼Ñ ÐµÑÑ Ð½Ðµ изÑÑили.
ÐпеÑаÑÐ¾Ñ typeof возвÑаÑÐ°ÐµÑ Ñип знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной, Ñ Ð´Ð²ÑÐ¼Ñ Ð¸ÑклÑÑениÑми:
typeof null == "object" // оÑибка в ÑзÑке
typeof function(){} == "function" // именно Ð´Ð»Ñ ÑÑнкÑий
ÐодÑобноÑÑи: ÐеÑеменнÑе, Ð¢Ð¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐзаимодейÑÑвие Ñ Ð¿Ð¾ÑеÑиÑелем
РкаÑеÑÑве ÑабоÑей ÑÑÐµÐ´Ñ Ð¼Ñ Ð¸ÑполÑзÑем бÑаÑзеÑ, Ñак ÑÑо пÑоÑÑейÑими ÑÑнкÑиÑми взаимодейÑÑÐ²Ð¸Ñ Ñ Ð¿Ð¾ÑеÑиÑелем ÑвлÑÑÑÑÑ:
prompt(question, [default])- ÐадаÑÑ Ð²Ð¾Ð¿ÑоÑ
questionи возвÑаÑÐ°ÐµÑ Ñо, ÑÑо ввÑл поÑеÑиÑелÑ, либоnull, еÑли поÑеÑиÑÐµÐ»Ñ Ð½Ð°Ð¶Ð°Ð» на ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐÑмена». confirm(question)- ÐадаÑÑ Ð²Ð¾Ð¿ÑоÑ
questionи пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð²ÑбÑаÑÑ Â«Ðл или «ÐÑмена». ÐÑÐ±Ð¾Ñ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ Ð² ÑоÑмаÑеtrue/false. alert(message)- ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑообÑение
message.
ÐÑе ÑÑи ÑÑнкÑии показÑваÑÑ Ð¼Ð¾Ð´Ð°Ð»ÑнÑе окна, они оÑÑанавливаÑÑ Ð²Ñполнение кода и не позволÑÑÑ Ð¿Ð¾ÑеÑиÑÐµÐ»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвоваÑÑ Ñо ÑÑÑаниÑей, пока не бÑÐ´ÐµÑ Ð´Ð°Ð½ оÑÐ²ÐµÑ Ð½Ð° вопÑоÑ.
ÐапÑимеÑ:
let userName = prompt("ÐведиÑе имÑ", "ÐлиÑа");
let isTeaWanted = confirm("ÐÑ Ñ
оÑиÑе ÑаÑ?");
alert( "ÐоÑеÑиÑелÑ: " + userName ); // ÐлиÑа
alert( "Чай: " + isTeaWanted ); // true
ÐодÑобноÑÑи: ÐзаимодейÑÑвие: alert, prompt, confirm.
ÐпеÑаÑоÑÑ
JavaScript поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑледÑÑÑие опеÑаÑоÑÑ:
- ÐÑиÑмеÑиÑеÑкие
-
ÐÑоÑÑÑе
* + - /, а Ñакже деление по модÑлÑ%и возведение в ÑÑепенÑ**.ÐинаÑнÑй плÑÑ
+обÑединÑÐµÑ ÑÑÑоки. РеÑли одним из опеÑандов ÑвлÑеÑÑÑ ÑÑÑока, Ñо вÑоÑой Ñоже бÑÐ´ÐµÑ ÐºÐ¾Ð½Ð²ÐµÑÑиÑован в ÑÑÑокÑ:alert( '1' + 2 ); // '12', ÑÑÑока alert( 1 + '2' ); // '12', ÑÑÑока - ÐпеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ
-
ÐÑоÑÑÑе
a = bи ÑоÑÑавнÑеa *= 2. - ÐиÑовÑе опеÑаÑии
-
ÐиÑовÑе опеÑаÑоÑÑ ÑабоÑаÑÑ Ñ 32-биÑнÑми ÑелÑми ÑиÑлами на Ñамом низком, побиÑовом ÑÑовне. ÐодÑобнее об Ð¸Ñ Ð¸ÑполÑзовании можно пÑоÑиÑаÑÑ Ð½Ð° ÑеÑÑÑÑе MDN и в Ñазделе ÐобиÑовÑе опеÑаÑоÑÑ.
- УÑловнÑй опеÑаÑоÑ
-
ÐдинÑÑвеннÑй опеÑаÑÐ¾Ñ Ñ ÑÑÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑами:
cond ? resultA : resultB. ÐÑли ÑÑловиеcondиÑÑинно, возвÑаÑаеÑÑÑresultA, инаÑе âresultB. - ÐогиÑеÑкие опеÑаÑоÑÑ
-
ÐогиÑеÑкие Ð
&&, ÐÐÐ||иÑполÑзÑÑÑ Ñак назÑваемое «ленивое вÑÑиÑление» и возвÑаÑаÑÑ Ð·Ð½Ð°Ñение, на коÑоÑом оно оÑÑановилоÑÑ (не обÑзаÑелÑноtrueилиfalse). ÐогиÑеÑкое ÐÐ!конвеÑÑиÑÑÐµÑ Ð¾Ð¿ÐµÑанд в логиÑеÑкий Ñип и возвÑаÑÐ°ÐµÑ Ð¸Ð½Ð²ÐµÑÑиÑованное знаÑение. - ÐпеÑаÑÐ¾Ñ Ð½Ñлевого ÑлиÑниÑ
-
ÐпеÑаÑоÑ
??пÑедоÑÑавлÑÐµÑ ÑпоÑоб вÑбоÑа опÑеделÑнного знаÑÐµÐ½Ð¸Ñ Ð¸Ð· ÑпиÑка пеÑеменнÑÑ . РезÑлÑÑаÑомa ?? bбÑдеÑa, еÑли ÑолÑко оно не Ñавноnull/undefined, Ñогдаb. - СÑавнение
-
ÐÑовеÑка на ÑавенÑÑво
==знаÑений ÑазнÑÑ Ñипов конвеÑÑиÑÑÐµÑ Ð¸Ñ Ð² ÑиÑло (за иÑклÑÑениемnullиundefined, коÑоÑÑе могÑÑ ÑавнÑÑÑÑÑ ÑолÑко дÑÑг дÑÑгÑ), Ñак ÑÑо пÑимеÑÑ Ð½Ð¸Ð¶Ðµ ÑавнÑ:alert( 0 == false ); // true alert( 0 == '' ); // trueÐÑÑгие опеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñоже конвеÑÑиÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑазнÑÑ Ñипов в ÑиÑловой Ñип.
ÐпеÑаÑÐ¾Ñ ÑÑÑогого ÑавенÑÑва
===не вÑполнÑÐµÑ ÐºÐ¾Ð½Ð²ÐµÑÑиÑованиÑ: ÑазнÑе ÑÐ¸Ð¿Ñ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ вÑегда ознаÑаÑÑ ÑазнÑе знаÑениÑ.ÐнаÑениÑ
nullиundefinedоÑобеннÑе: они ÑавнÑ==ÑолÑко дÑÑг дÑÑгÑ, но не ÑÐ°Ð²Ð½Ñ Ð½Ð¸ÑÐµÐ¼Ñ ÐµÑÑ.ÐпеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑе/менÑÑе ÑÑавниваÑÑ ÑÑÑоки поÑимволÑно, оÑÑалÑнÑе ÑÐ¸Ð¿Ñ ÐºÐ¾Ð½Ð²ÐµÑÑиÑÑÑÑÑÑ Ð² ÑиÑло.
- ÐÑÑгие опеÑаÑоÑÑ
-
СÑÑеÑÑвÑÑÑ Ð¸ дÑÑгие опеÑаÑоÑÑ, Ñакие как запÑÑаÑ.
ÐодÑобноÑÑи: ÐазовÑе опеÑаÑоÑÑ, маÑемаÑика, ÐпеÑаÑоÑÑ ÑÑавнениÑ, ÐогиÑеÑкие опеÑаÑоÑÑ, ÐпеÑаÑоÑÑ Ð½Ñлевого ÑлиÑÐ½Ð¸Ñ Ð¸ пÑиÑваиваниÑ: '??', '??='.
ЦиклÑ
-
ÐÑ Ð¸Ð·ÑÑили ÑÑи вида Ñиклов:
// 1 while (condition) { ... } // 2 do { ... } while (condition); // 3 for(let i = 0; i < 10; i++) { ... } -
ÐеÑеменнаÑ, обÑÑÐ²Ð»ÐµÐ½Ð½Ð°Ñ Ð² Ñикле
for(let...), видна ÑолÑко внÑÑÑи Ñикла. Ðо Ð¼Ñ Ñакже можем опÑÑÑиÑÑletи пеÑеиÑполÑзоваÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð¿ÐµÑеменнÑÑ. -
ÐиÑекÑивÑ
break/continueпозволÑÑÑ Ð²ÑйÑи из Ñикла/ÑекÑÑей иÑеÑаÑии. ÐÑполÑзÑйÑе меÑки Ð´Ð»Ñ Ð²ÑÑ Ð¾Ð´Ð° из вложеннÑÑ Ñиклов.
ÐодÑобноÑÑи: Ð¦Ð¸ÐºÐ»Ñ while и for.
Ðозже Ð¼Ñ Ð¸Ð·ÑÑим еÑÑ Ð²Ð¸Ð´Ñ Ñиклов Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð±ÑекÑами.
ÐонÑÑÑÑкÑÐ¸Ñ Â«switch»
ÐонÑÑÑÑкÑÐ¸Ñ Â«switch» Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¼ÐµÐ½Ð¸ÑÑ Ð½ÐµÑколÑко пÑовеÑок if. ÐÑи ÑÑавнении она иÑполÑзÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ ÑÑÑогого ÑавенÑÑва ===.
ÐапÑимеÑ:
let age = prompt('СколÑко вам леÑ?', 18);
switch (age) {
case 18:
alert("Так не ÑÑабоÑаеÑ"); // ÑезÑлÑÑаÑом prompt ÑвлÑеÑÑÑ ÑÑÑока, а не ÑиÑло
case "18":
alert("Ð Ñак ÑÑабоÑаеÑ!");
break;
default:
alert("ÐÑбое знаÑение, неÑавное знаÑÐµÐ½Ð¸Ñ Ð²ÑÑе");
}
ÐодÑобноÑÑи: ÐонÑÑÑÑкÑÐ¸Ñ "switch".
ФÑнкÑии
ÐÑ ÑаÑÑмоÑÑели ÑÑи ÑпоÑоба ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑнкÑии в JavaScript:
-
Function Declaration: ÑÑнкÑÐ¸Ñ Ð² оÑновном поÑоке кода
function sum(a, b) { let result = a + b; return result; } -
Function Expression: ÑÑнкÑÐ¸Ñ ÐºÐ°Ðº ÑаÑÑÑ Ð²ÑÑажениÑ
let sum = function(a, b) { let result = a + b; return result; }; -
СÑÑелоÑнÑе ÑÑнкÑии:
// вÑÑажение в пÑавой ÑаÑÑи let sum = (a, b) => a + b; // многоÑÑÑоÑнÑй код в ÑигÑÑнÑÑ ÑÐºÐ¾Ð±ÐºÐ°Ñ { ... }, здеÑÑ Ð½Ñжен return: let sum = (a, b) => { // ... return a + b; } // без аÑгÑменÑов let sayHi = () => alert("ÐÑивеÑ"); // Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом let double = n => n * 2;
- У ÑÑнкÑий могÑÑ Ð±ÑÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑе пеÑеменнÑе: Ñ.е. обÑÑвленнÑе в Ñеле ÑÑнкÑии. Такие пеÑеменнÑе Ð²Ð¸Ð´Ð¸Ð¼Ñ ÑолÑко внÑÑÑи ÑÑнкÑии.
- У паÑамеÑÑов могÑÑ Ð±ÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ:
function sum(a = 1, b = 2) {...}. - ФÑнкÑии вÑегда ÑÑо-нибÑÐ´Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ. ÐÑли Ð½ÐµÑ Ð¾Ð¿ÐµÑаÑоÑа
return, ÑезÑлÑÑаÑом бÑдеÑundefined.
ÐодÑобноÑÑи: ФÑнкÑии, СÑÑелоÑнÑе ÑÑнкÑии, оÑновÑ.
Ðалее Ð¼Ñ Ð¸Ð·ÑÑим болÑÑе
ÐÑо бÑл кÑаÑкий ÑпиÑок возможноÑÑей JavaScript. Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¼Ñ Ð¸Ð·ÑÑили ÑолÑко оÑновÑ. Ðалее в ÑÑебнике Ð²Ñ Ð½Ð°Ð¹Ð´ÑÑе болÑÑе оÑобенноÑÑей и пÑодвинÑÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей JavaScript.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)