ÐаÑнÑм изÑÑение ÑзÑка Ñ ÑаÑÑмоÑÑÐµÐ½Ð¸Ñ Ð¾ÑновнÑÑ Â«ÑÑÑоиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¾Ð²Â» кода.
ÐнÑÑÑÑкÑии
ÐнÑÑÑÑкÑии â ÑÑо ÑинÑакÑиÑеÑкие конÑÑÑÑкÑии и командÑ, коÑоÑÑе вÑполнÑÑÑ Ð´ÐµÐ¹ÑÑвиÑ.
ÐÑ Ñже видели инÑÑÑÑкÑÐ¸Ñ alert('ÐÑивеÑ, миÑ!'), коÑоÑÐ°Ñ Ð¾ÑобÑÐ°Ð¶Ð°ÐµÑ ÑообÑение «ÐÑивеÑ, миÑ!».
РнаÑем коде Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑолÑко инÑÑÑÑкÑий, ÑколÑко Ð¼Ñ Ð·Ð°Ñ Ð¾Ñим. ÐнÑÑÑÑкÑии могÑÑ Ð¾ÑделÑÑÑÑÑ ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой.
ÐапÑимеÑ, здеÑÑ Ð¼Ñ Ñазделили ÑообÑение «ÐÑÐ¸Ð²ÐµÑ ÐиÑ» на два вÑзова alert:
alert('ÐÑивеÑ'); alert('ÐиÑ');
ÐбÑÑно каждÑÑ Ð¸Ð½ÑÑÑÑкÑÐ¸Ñ Ð¿Ð¸ÑÑÑ Ð½Ð° новой ÑÑÑоке, ÑÑÐ¾Ð±Ñ ÐºÐ¾Ð´ бÑло легÑе ÑиÑаÑÑ:
alert('ÐÑивеÑ');
alert('ÐиÑ');
ТоÑка Ñ Ð·Ð°Ð¿ÑÑой
РболÑÑинÑÑве ÑлÑÑаев ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой можно не ÑÑавиÑÑ, еÑли еÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´ на новÑÑ ÑÑÑокÑ.
Так Ñоже бÑÐ´ÐµÑ ÑабоÑаÑÑ:
alert('ÐÑивеÑ')
alert('ÐиÑ')
Ð ÑÑом ÑлÑÑае JavaScript инÑеÑпÑеÑиÑÑÐµÑ Ð¿ÐµÑÐµÐ½Ð¾Ñ ÑÑÑоки как «неÑвнÑÑ» ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой. ÐÑо назÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑÐºÐ°Ñ Ð²ÑÑавка ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой.
РболÑÑинÑÑве ÑлÑÑаев Ð½Ð¾Ð²Ð°Ñ ÑÑÑока подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой. Ðо «в болÑÑинÑÑве ÑлÑÑаев» не знаÑÐ¸Ñ Â«Ð²Ñегда»!
РнекоÑоÑÑÑ ÑиÑÑаÑиÑÑ Ð½Ð¾Ð²Ð°Ñ ÑÑÑока вÑÑ Ð¶Ðµ не ознаÑÐ°ÐµÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой. ÐапÑимеÑ:
alert(3 +
1
+ 2);
Ðод вÑÐ²ÐµÐ´ÐµÑ 6, поÑÐ¾Ð¼Ñ ÑÑо JavaScript не вÑÑавлÑÐµÑ Ð·Ð´ÐµÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой. ÐнÑÑиÑивно оÑевидно, ÑÑо, еÑли ÑÑÑока заканÑиваеÑÑÑ Ð·Ð½Ð°ÐºÐ¾Ð¼ "+", знаÑиÑ, ÑÑо «незавеÑÑÑнное вÑÑажение», поÑÑÐ¾Ð¼Ñ ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой не ÑÑебÑеÑÑÑ. Рв ÑÑом ÑлÑÑае вÑÑ ÑабоÑаеÑ, как задÑмано.
Ðо еÑÑÑ ÑиÑÑаÑии, где JavaScript «забÑваеÑ» вÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой Ñам, где она нÑжна.
ÐÑибки, коÑоÑÑе пÑи ÑÑом поÑвлÑÑÑÑÑ, доÑÑаÑоÑно Ñложно обнаÑÑживаÑÑ Ð¸ иÑпÑавлÑÑÑ.
ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе ÑвидеÑÑ ÐºÐ¾Ð½ÐºÑеÑнÑй пÑÐ¸Ð¼ÐµÑ Ñакой оÑибки, обÑаÑиÑе внимание на ÑÑÐ¾Ñ ÐºÐ¾Ð´:
alert('Hello');
[1, 2].forEach(alert);
Ðока Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи знаÑÑ Ð·Ð½Ð°Ñение Ñкобок [] и forEach. ÐÑ Ð¸Ð·ÑÑим иÑ
позже. Ðока ÑÑо пÑоÑÑо запомниÑе ÑезÑлÑÑÐ°Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑого кода: вÑводиÑÑÑ Hello, заÑем 1, заÑем 2.
Ð ÑепеÑÑ Ð´Ð°Ð²Ð°Ð¹Ñе ÑбеÑем ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой поÑле alert:
alert('Hello')
[1, 2].forEach(alert);
ÐÑÐ¾Ñ ÐºÐ¾Ð´ оÑлиÑаеÑÑÑ Ð¾Ñ ÐºÐ¾Ð´Ð°, пÑиведенного вÑÑе, ÑолÑко в одном: пÑопала ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой в конÑе пеÑвой ÑÑÑоки.
ÐÑли Ð¼Ñ Ð·Ð°Ð¿ÑÑÑим ÑÑÐ¾Ñ ÐºÐ¾Ð´, вÑведеÑÑÑ ÑолÑко пеÑвÑй alert, а заÑем Ð¼Ñ Ð¿Ð¾Ð»ÑÑим оÑÐ¸Ð±ÐºÑ (вам Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾ÑкÑÑÑÑ ÐºÐ¾Ð½ÑолÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÐµÑ)!
ÐÑо поÑÐ¾Ð¼Ñ ÑÑо JavaScript не вÑÑавлÑÐµÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой пеÑед квадÑаÑнÑми Ñкобками [...]. РпоÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð´ в поÑледнем пÑимеÑе вÑполнÑеÑÑÑ, как одна инÑÑÑÑкÑиÑ.
ÐÐ¾Ñ ÐºÐ°Ðº движок Ð²Ð¸Ð´Ð¸Ñ ÐµÐ³Ð¾:
alert('Hello')[1, 2].forEach(alert);
ÐÑглÑÐ´Ð¸Ñ ÑÑÑанно, пÑавда? Такое ÑлиÑние в данном ÑлÑÑае непÑавилÑное. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой поÑле alert, ÑÑÐ¾Ð±Ñ ÐºÐ¾Ð´ ÑабоÑал пÑавилÑно.
ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи и в некоÑоÑÑÑ Ð´ÑÑÐ³Ð¸Ñ ÑиÑÑаÑиÑÑ .
ÐÑ ÑекомендÑем ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой Ð¼ÐµÐ¶Ð´Ñ Ð¸Ð½ÑÑÑÑкÑиÑми, даже еÑли они оÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¿ÐµÑеноÑами ÑÑÑок. ÐÑо пÑавило ÑиÑоко иÑполÑзÑеÑÑÑ Ð² ÑообÑеÑÑве ÑазÑабоÑÑиков. СÑÐ¾Ð¸Ñ Ð¾ÑмеÑиÑÑ ÐµÑÑ Ñаз â в болÑÑинÑÑве ÑлÑÑаев можно не ÑÑавиÑÑ ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой. Ðо безопаÑнее, оÑобенно Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñка, ÑÑавиÑÑ ÐµÑ.
ÐомменÑаÑии
Со вÑеменем пÑогÑÐ°Ð¼Ð¼Ñ ÑÑановÑÑÑÑ Ð²ÑÑ Ñложнее и Ñложнее. ÐÐ¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии, коÑоÑÑе Ð±Ñ Ð¾Ð¿Ð¸ÑÑвали, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÐºÐ¾Ð´ и поÑемÑ.
ÐомменÑаÑии могÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² лÑбом меÑÑе ÑкÑипÑа. Ðни не влиÑÑÑ Ð½Ð° его вÑполнение, поÑколÑÐºÑ Ð´Ð²Ð¸Ð¶Ð¾Ðº пÑоÑÑо игноÑиÑÑÐµÑ Ð¸Ñ .
ÐдноÑÑÑоÑнÑе комменÑаÑии наÑинаÑÑÑÑ Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ коÑой ÑеÑÑÑ //.
ЧаÑÑÑ ÑÑÑоки поÑле // ÑÑиÑаеÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑием. Такой комменÑаÑий Ð¼Ð¾Ð¶ÐµÑ ÐºÐ°Ðº занимаÑÑ ÑÑÑÐ¾ÐºÑ Ñеликом, Ñак и наÑ
одиÑÑÑÑ Ð¿Ð¾Ñле инÑÑÑÑкÑии.
Ðак здеÑÑ:
// ÐÑÐ¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð²ÑÑ ÑÑÑокÑ
alert('ÐÑивеÑ');
alert('ÐиÑ'); // ÐÑÐ¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий ÑледÑÐµÑ Ð·Ð° инÑÑÑÑкÑией
ÐногоÑÑÑоÑнÑе комменÑаÑии наÑинаÑÑÑÑ ÐºÐ¾Ñой ÑеÑÑой Ñо звÑздоÑкой /* и заканÑиваÑÑÑÑ Ð·Ð²ÑздоÑкой Ñ ÐºÐ¾Ñой ÑеÑÑой */.
Ðак Ð²Ð¾Ñ Ð·Ð´ÐµÑÑ:
/* ÐÑÐ¸Ð¼ÐµÑ Ñ Ð´Ð²ÑÐ¼Ñ ÑообÑениÑми.
ÐÑо - многоÑÑÑоÑнÑй комменÑаÑий.
*/
alert('ÐÑивеÑ');
alert('ÐиÑ');
СодеÑжимое комменÑаÑÐ¸Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ, поÑÑомÑ, еÑли Ð¼Ñ Ð¿Ð¾Ð¼ÐµÑÑим код внÑÑÑи /* ⦠*/, он не бÑÐ´ÐµÑ Ð¸ÑполнÑÑÑÑÑ.
ÐÑо бÑÐ²Ð°ÐµÑ Ñдобно Ð´Ð»Ñ Ð²Ñеменного оÑклÑÑÐµÐ½Ð¸Ñ ÑÑаÑÑка кода:
/* ÐакомменÑиÑовали код
alert('ÐÑивеÑ');
*/
alert('ÐиÑ');
РболÑÑинÑÑве ÑедакÑоÑов ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð´Ð° можно закомменÑиÑоваÑÑ, нажав комбинаÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ Ctrl+/ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾ÑÑÑоÑного комменÑаÑÐ¸Ñ Ð¸ ÑÑо-Ñо вÑоде Ctrl+Shift+/ â Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑÑÑоÑнÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев (вÑделиÑе кÑÑок кода и нажмиÑе комбинаÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ). Ð ÑиÑÑеме Mac попÑобÑйÑе Cmd вмеÑÑо Ctrl и Option вмеÑÑо Shift.
Ðе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ /*...*/ внÑÑÑи /*...*/.
Такой код «ÑмÑÑÑ» Ñ Ð¾Ñибкой:
/*
/* вложеннÑй комменÑаÑий ?!? */
*/
alert( 'ÐиÑ' );
Ðе ÑÑеÑнÑйÑеÑÑ Ð¸ÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии в ÑвоÑм коде.
ÐомменÑаÑии ÑвелиÑиваÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾Ð´Ð°, но ÑÑо не пÑоблема. ÐÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво инÑÑÑÑменÑов, коÑоÑÑе миниÑиÑиÑÑÑÑ ÐºÐ¾Ð´ пеÑед пÑбликаÑией на ÑабоÑий ÑеÑвеÑ. Ðни ÑбиÑаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии, Ñак ÑÑо они не ÑодеÑжаÑÑÑ Ð² ÑабоÑÐ¸Ñ ÑкÑипÑÐ°Ñ . Таким обÑазом, комменÑаÑии никоим обÑазом не вÑедÑÑ ÑабоÑÐµÐ¼Ñ ÐºÐ¾Ð´Ñ.
Ðозже в ÑÑебнике бÑÐ´ÐµÑ Ð³Ð»Ð°Ð²Ð° ÐаÑеÑÑво кода, коÑоÑÐ°Ñ Ð¾Ð±ÑÑÑниÑ, как лÑÑÑе пиÑаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)