ì§ê¸ê¹ì§ ë°°ì´ ë´ì©ì ë¤ì ë ì¬ë¦¬ê³ ìì½í´ë´ ìë¤. ì¸ì°ê¸° ì½ì§ ìì ì칫íë©´ ì¤ìí ì ìë ë¶ë¶ì ì¤ì¬ì¼ë¡ ìì½í´ ë³´ëë¡ íê² ìµëë¤.
ì½ë 구조
ì¬ë¬ ê°ì 구문ì ì¸ë¯¸ì½ë¡ ì 기ì¤ì¼ë¡ 구ë¶í ì ììµëë¤.
alert('Hello'); alert('World');
ì¤ ë°ê¿ë ì¬ë¬ ê°ì 구문ì 구ë¶íë ë° ì¬ì©ëë¯ë¡ ìë ì½ëë ì ìì ì¼ë¡ ëìí©ëë¤.
alert('Hello')
alert('World')
ì´ë° ëì ë°©ìì 'ì¸ë¯¸ì½ë¡ ìë ì½ì (automatic semicolon insertion)'ì´ë¼ê³ ë¶ë¦ ëë¤. ê·¸ë°ë° ì¸ë¯¸ì½ë¡ ìë ì½ì ì´ ëìíì§ ìì ëë ììµëë¤.
alert("ì´ ë©ìì§ê° ì¶ë ¥ë íì ìë¬ê° ë°ìí©ëë¤.")
[1, 2].forEach(alert)
ì½ë© 컨벤ì ê³¼ ê°ì ì½ë ì¤íì¼ ì§ì¹¨ì ëë¶ë¶ì 문ì¥ì ëì ì¸ë¯¸ì½ë¡ ì ë¶ì´ë 걸 ê¶ì¥í©ëë¤.
ì½ë ë¸ë¡({...} )ì´ë ì½ë ë¸ë¡ê³¼ í¨ê» 구ì±ëë 문ë²(ì: ë°ë³µë¬¸) ëì ì¸ë¯¸ì½ë¡ ì ë¶ì´ì§ ììë ê´ì°®ìµëë¤.
function f() {
// í¨ì ì ì¸ë¬¸ ëì ì¸ë¯¸ì½ë¡ ì´ íì ììµëë¤.
}
for(;;) {
// ë°ë³µë¬¸ ëì ì¸ë¯¸ì½ë¡ ì´ íì ììµëë¤.
}
ì¸ë¯¸ì½ë¡ ì´ ìì´ë ëë ì리ì âì¬ë¶ìâ ì¸ë¯¸ì½ë¡ ì ë¶ì´ëë¼ë í´ë¹ ì¸ë¯¸ì½ë¡ ì 무ìë기 ë문ì ìë¬ê° ë°ìíì§ ììµëë¤.
ìì¸í ë´ì©ì ì½ë 구조ìì ì´í´ë³´ì기 ë°ëëë¤.
ì격 모ë
모ë ìë°ì¤í¬ë¦½í¸ìì ì§ìíë 모ë 기ë¥ì íì±ííë ¤ë©´ ì¤í¬ë¦½í¸ 맨 ìì 'use strict'를 ì ì´ì¤ì¼ í©ëë¤.
'use strict';
...
'use strict'ë ì¤í¬ë¦½í¸ ìµìë¨ì´ë í¨ì 본문 ìµìë¨ì ìì´ì¼ í©ëë¤.
'use strict'ê° ìì´ë ì½ëë ì ìì ì¼ë¡ ëìí©ëë¤. ë¤ë§, 모ëí ë°©ìì´ ìë ìë ë°©ìì¼ë¡ ëìíì£ . 'íì í¸íì±âì ì§í¤ë©´ì ë§ì´ì£ . ë ì ìì¼ë©´ 모ëí ë°©ìì ì¬ì©íë 걸 ì¶ì²í´ ë립ëë¤.
ì°¸ê³ ë¡, ì¶íì ë°°ì°ê² ë í´ëì¤ì ê°ì ëªëª 모ë 기ë¥ì ì격 모ë를 ìëì¼ë¡ íì±íí©ëë¤.
ì격 모ëì ëí ìì¸í ë´ì©ì ì격 모ëìì ì´í´ë³´ì기 ë°ëëë¤.
ë³ì
ë³ìë ìëì ê°ì í¤ìë를 ì´ì©í´ ì ì¸í ì ììµëë¤.
letconstâ í ë² ê°ì í ë¹íë©´ ëë ê°ì ë°ê¿ ì ìë ìì를 ì ìí ë ì°ì ëë¤.varâ 과거ì ì°ì´ë í¤ìëë¡ ìì¸í ë´ì©ì ì¶íì ë¤ë£° ìì ì ëë¤.
ë³ì ì´ë¦ ëª ëª ê·ì¹ì ë¤ìê³¼ ê°ìµëë¤.
- ì«ìì 문ì를 ì¬ì©íë 첫 ê¸ìë ì«ìê° ë ì ììµëë¤.
- í¹ì기í¸ë
$ì_ë§ ì¬ì©í ì ììµëë¤. - ë¹ ë¼í´ê³ ì¸ì´ì 문ìë ìí문ìë ì¬ì©í ì ìì§ë§ ì ì°ì´ì§ ììµëë¤.
ìë°ì¤í¬ë¦½í¸ë ëì íì´íì íì©í기 ë문ì, ìë£íì ë°ê¿ê°ë©° ê°ì í ë¹í ì ììµëë¤.
let x = 5;
x = "John";
ìë°ì¤í¬ë¦½í¸ë ì¬ë ê°ì§ 기본 ìë£íì ì§ìí©ëë¤.
- ì ìì ë¶ë ììì ì ì ì¥íë ë° ì°ì´ë
ì«ìí - ì주 í° ì«ì를 ì ì¥í ì ìë
BigIntí - 문ìì´ì ì ì¥íë ë° ì°ì´ë
문ìí - ë
¼ë¦¬ê°
true/falseì ì ì¥íë ë° ì°ì´ëë¶ë¦°í - âë¹ì´ììâ, 'ì¡´ì¬íì§ ììâì ëíë´ë
nullê°ë§ì ìí ë 립 ìë£ínull - ê°ì´ í ë¹ëì§ ìì ìí를 ëíë´ë
undefinedê°ë§ì ìí ë 립 ìë£íundefined - ë³µì¡í ìë£êµ¬ì¡°ë¥¼ ì ì¥íë ë° ì°ì´ë
ê°ì²´íê³¼ ê³ ì í ìë³ì를 ë§ë¤ ë ì¬ì©ëëì¬ë³¼í
typeof ì°ì°ìë ê°ì ìë£íì ë°íí´ì¤ëë¤. ê·¸ë°ë° ë ê°ì§ ìì¸ ì¬íì´ ììµëë¤.
typeof null == "object" // ì¸ì´ ìì²´ì ì¤ë¥
typeof function(){} == "function" // í¨ìë í¹ë³íê² ì·¨ê¸ë©ëë¤.
ìì¸í ë´ì©ì ë³ìì ììì ìë£íìì ì´í´ë³´ì기 ë°ëëë¤.
ìí¸ìì©
í¸ì¤í¸ íê²½ì´ ë¸ë¼ì°ì ì¸ ê²½ì°, ë¤ìê³¼ ê°ì UI í¨ì를 ì´ì©í´ ì¬ì©ìì ìí¸ìì©í ì ììµëë¤.
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ì ì´ì©í ìí¸ìì©ìì ì´í´ë³´ì기 ë°ëëë¤.
ì°ì°ì
ìë°ì¤í¬ë¦½í¸ë ìëì ê°ì ë¤ìí ì°ì°ì를 ì ê³µí©ëë¤.
- ì°ì ì°ì°ì
-
ì¬ì¹ ì°ì°ì ê´ë ¨ë ì°ì°ì
* + - /ì ëë¨¸ì§ ì°ì°ì%, ê±°ëì ê³± ì°ì°ì**ê° ëíì ì¸ ì°ì ì°ì°ìì ìí©ëë¤.ì´í ë§ì ì°ì°ì
+ë í¼ì°ì°ì ì¤ íëê° ë¬¸ìì´ì¼ ë ëë¨¸ì§ íë를 문ìíì¼ë¡ ë°ê¾¸ê³ ë 문ìì´ì ì°ê²°í©ëë¤.alert( '1' + 2 ); // '12', 문ìì´ alert( 1 + '2' ); // '12', 문ìì´ - í ë¹ ì°ì°ì
-
a = bííì í ë¹ ì°ì°ììa *= 2ííì ë³µí© í ë¹ ì°ì°ìê° ììµëë¤. - ë¹í¸ ì°ì°ì
-
ë¹í¸ ì°ì°ìë ì¸ì를 32ë¹í¸ ì ìë¡ ë³ííì¬ ì´ì§ ì°ì°ì ìíí©ëë¤. ìì¸í ë´ì©ì docsìì ë³¼ ì ììµëë¤.
- ì¡°ê±´ë¶ ì°ì°ì
-
ì¡°ê±´ë¶ ì°ì°ìë ìë°ì¤í¬ë¦½í¸ ì°ì°ì ì¤ ì ì¼íê² ë§¤ê°ë³ìê° 3ê°ì¸ ì°ì°ìì ëë¤.
cond ? resultA : resultBì ê°ì ííë¡ ì¬ì©íê³ ,condê° truthyë©´resultA를, ìëë©´resultB를 ë°íí©ëë¤. - ë ¼ë¦¬ ì°ì°ì
-
AND ì°ì°ì
&&ì OR ì°ì°ì||ì ë¨ë½ íê°ë¥¼ ìííê³ , íê°ê° ë©ì¶ ìì ì ê°ì ë°íí©ëë¤(ê¼trueëfalseì¼ íìë ììµëë¤). NOT ì°ì°ì!ë í¼ì°ì°ìì ìë£íì ë¶ë¦°íì¼ë¡ ë°ê¾¼ í ê·¸ ìì ë°íí©ëë¤. - nullish ë³í© ì°ì°ì
-
nullish ë³í© ì°ì°ì
??ë í¼ì°ì°ì ì¤ ì¤ì ê°ì´ ì ìë í¼ì°ì°ì를 ì°¾ë ë° ì°ì ëë¤.aê°nullì´ëundefinedê° ìëë©´a ?? bì íê° ê²°ê³¼ëaì´ê³ ,aê°nullì´ëundefinedì´ë©´a ?? bì íê° ê²°ê³¼ëbê° ë©ëë¤. - ë¹êµ ì°ì°ì
-
ëë± ì°ì°ì
==ë íì´ ë¤ë¥¸ ê°ë¼ë¦¬ ë¹êµí ë í¼ì°ì°ìì ìë£íì ì«ìíì¼ë¡ ë°ê¾¼ í ë¹êµë¥¼ ì§íí©ëë¤.nullê³¼undefinedë ì기ë¼ë¦¬ ë¹êµí ë ì°¸ì ë°ííì§ë§ ë¤ë¥¸ ìë£íê³¼ ë¹êµí ë ê±°ì§ì ë°íí©ëë¤.alert( 0 == false ); // true alert( 0 == '' ); // true기í ë¹êµ ì°ì°ìë¤
< > <= >=ìì í¼ì°ì°ìì ìë£íì ì«ìíì¼ë¡ ë°ê¾¼ í ë¹êµë¥¼ ì§íí©ëë¤.ì¼ì¹ ì°ì°ì
===ë í¼ì°ì°ìì íì ë³ííì§ ììµëë¤. íì´ ë¤ë¥´ë©´ 무조건 ë¤ë¥´ë¤ê³ íê°í©ëë¤.nullê³¼undefinedë í¹ë³í ê°ì ëë¤. ë ê°ì==ì°ì°ìë¡ ë¹êµíë©´true를 ë°ííì§ë§, ë¤ë¥¸ ê°ê³¼ ë¹êµíë©´ 무조건false를 ë°íí©ëë¤.í¬ê³ ììì ë¹êµíë ì°ì°ìì í¼ì°ì°ìë¡ ë¬¸ìì´ì´ ë¤ì´ì¤ë©´ ê¸ì ë¨ìë¡ í¬ê¸° ë¹êµê° ì´ë¤ì§ëë¤. ë¤ë¥¸ íì ì ê°ì´ ë¤ì´ì¤ë©´ ì«ìíì¼ë¡ í ë³íí í ë¹êµë¥¼ ì§íí©ëë¤.
- 기í ì°ì°ì
-
ì¼í ì°ì°ì ë±ì 기í ì°ì°ìë ììµëë¤.
ìì¸í ë´ì©ì 기본 ì°ì°ìì ìí, ë¹êµ ì°ì°ì, ë ¼ë¦¬ ì°ì°ì, nullish ë³í© ì°ì°ì '??'ìì ì´í´ë³´ì기 ë°ëëë¤.
ë°ë³µë¬¸
-
while, do-while, for 문ì ìëì ê°ì´ ìì±í ì ììµëë¤.
// 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문ì ì¬ì©í´ ì¬ìì±í ì ììµëë¤. 'switchâ문ì ì¡°ê±´ì íì¸í ë ë´ë¶ì ì¼ë¡ ì¼ì¹ ì°ì°ì ===를 ì¬ì©í´ ë¹êµë¥¼ ì§íí©ëë¤.
ìì:
let age = prompt('ëì´ë¥¼ ìë ¤ì£¼ì¸ì.', 18);
switch (age) {
case 18:
alert("Won't work"); // prompt í¨ìë íì 문ìì´ì ë°ííë¯ë¡, ì´ case문ì ì ë ëë¬í ì ììµëë¤.
break;
case "18":
alert("ëë 18ì¸ì´ìêµ°ì!");
break;
default:
alert("ì´ë¤ case문ìë í´ë¹íì§ ììµëë¤.");
}
ìì¸í ë´ì©ì switch문ìì ì´í´ë³´ì기 ë°ëëë¤.
í¨ì
ì¸ ê°ì§ ë°©ë²ì¼ë¡ í¨ì를 ë§ë¤ ì ììµëë¤.
-
í¨ì ì ì¸ë¬¸: 주ì ì½ë íë¦ì ì°¨ì§íë ë°©ì
function sum(a, b) { let result = a + b; return result; } -
í¨ì ííì: ííì ííë¡ ì ì¸ë í¨ì
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("Hello"); // ì¸ìê° íëì¸ ê²½ì° let double = n => n * 2;
- í¨ìë ì§ì ë³ì를 ê°ì§ ì ììµëë¤. ì§ì ë³ìë í¨ìì 본문ì ì ì¸ë ë³ìë¡, í¨ì ë´ë¶ììë§ ì ê·¼í ì ììµëë¤.
- 매ê°ë³ìì 기본ê°ì ì¤ì í ì ììµëë¤. 문ë²ì ë¤ìê³¼ ê°ìµëë¤.
function sum(a = 1, b = 2) {...} - í¨ìë íì 무ì¸ê°ë¥¼ ë°íí©ëë¤.
returnë¬¸ì´ ìë ê²½ì°ëundefined를 ë°íí©ëë¤.
ìì¸í ë´ì©ì í¨ìì íì´í í¨ì 기본ìì ì´í´ë³´ì기 ë°ëëë¤.
ìì§ ëì´ ìëëë¤!
ì§ê¸ê¹ì§ ì´í´ë³¸ 기ë¥ë¤ì ìë°ì¤í¬ë¦½í¸ìì ì ê³µíë íµì¬ 기ë¥ì ëë¤. ì´ì ê²¨ì° ê¸°ë³¸ì ê°ì·ë¤ì. ì´ì ì´ ê¸°ë³¸ì ë°íì¼ë¡ ë ë§ì ê²ë¤ì íìµí´ ë³´ëë¡ í©ìë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.