ì¤í¬ë¦½í¸ë¥¼ ìì±íë¤ ë³´ë©´ ì ì¬í ëìì íë ì½ëê° ì¬ë¬ ê³³ìì íìí ëê° ë§ìµëë¤.
ì¬ì©ìê° ë¡ê·¸ì¸ì´ë ë¡ê·¸ììì íì ë ìë´ ë©ìì§ë¥¼ ë³´ì¬ì£¼ë ëì ê°ì ê²½ì° ë§ì´ì£ .
í¨ìë íë¡ê·¸ë¨ì 구ì±íë 주ì 'êµ¬ì± ìì(building block)'ì ëë¤. í¨ì를 ì´ì©íë©´ ì¤ë³µ ìì´ ì ì¬í ëìì íë ì½ë를 ì¬ë¬ ë² í¸ì¶í ì ììµëë¤.
ì°ë¦¬ë ìì ë¤ìí ìììì alert(message), prompt(message, default), confirm(question)ê³¼ ê°ì ë´ì¥ í¨ì를 ì¬ì©í´ ë³´ììµëë¤. ì´ë² ì±í°ìì í¨ì를 ì§ì ë§ëë ë°©ë²ì ëí´ ììë³´ê² ìµëë¤.
í¨ì ì ì¸
í¨ì ì ì¸(function declaration) ë°©ìì ì´ì©íë©´ í¨ì를 ë§ë¤ ì ììµëë¤(í¨ì ì ì¸ ë°©ìì í¨ì ì ì¸ë¬¸ì´ë¼ê³ ë¶ë¥´ê¸°ë í©ëë¤ â ì®ê¸´ì´).
í¨ì ì ì¸ ë°©ìì ìëì ê°ì´ ìì±í ì ììµëë¤.
function showMessage() {
alert( 'ìë
íì¸ì!' );
}
function í¤ìë, í¨ì ì´ë¦, ê´í¸ë¡ ëë¬ì¼ 매ê°ë³ì를 ì°¨ë¡ë¡ ì¨ì£¼ë©´ í¨ì를 ì ì¸í ì ììµëë¤. ì í¨ììë 매ê°ë³ìê° ìëë°, ë§ì½ 매ê°ë³ìê° ì¬ë¬ ê° ìë¤ë©´ ê° ë§¤ê°ë³ì를 콤ë§ë¡ 구ë¶í´ ì¤ëë¤. ì´ì´ì í¨ì를 구ì±íë ì½ëì 모ìì¸ 'í¨ì 본문(body)'ì ì¤ê´í¸ë¡ ê°ì¸ ë¶ì¬ì¤ìë¤.
function name(parameter1, parameter2, ... parameterN) {
// í¨ì 본문
}
ìë¡ê² ì ìí í¨ìë í¨ì ì´ë¦ ìì ê´í¸ë¥¼ ë¶ì¬ í¸ì¶í ì ììµëë¤. showMessage()ê°ì´ ë§ì´ì£ .
ìì:
function showMessage() {
alert( 'ìë
íì¸ì!' );
}
showMessage();
showMessage();
showMessage()ë¡ í¨ì를 í¸ì¶íë©´ í¨ì ë³¸ë¬¸ì´ ì¤íë©ëë¤. ì ìììì showMessage를 ë ë² í¸ì¶íì¼ë¯ë¡ ì¼ë¿ ì°½ì´ ë ë² ë¹ëë¤.
í¨ìì 주ì ì©ë ì¤ íëë ì¤ë³µ ì½ë í¼í기ì ëë¤. ì ìì를 íµí´ ì´ë¥¼ íì¸í´ ë³´ììµëë¤.
ì¼ë¿ ì°½ì ë³´ì¬ì¤ ë©ìì§ë¥¼ ë°ê¾¸ê±°ë ë©ìì§ë¥¼ ë³´ì¬ì£¼ë ë°©ì ì체를 ë³ê²½íê³ ì¶ë¤ë©´, í¨ì 본문 ì¤ ì¶ë ¥ì ê´ì¬íë ì½ë ë± íëë§ ìì í´ì£¼ë©´ ë©ëë¤.
ì§ì ë³ì
í¨ì ë´ìì ì ì¸í ë³ìì¸ ì§ì ë³ì(local variable)ë í¨ì ìììë§ ì ê·¼í ì ììµëë¤.
ìì:
function showMessage() {
let message = "ìë
íì¸ì!"; // ì§ì ë³ì
alert( message );
}
showMessage(); // ìë
íì¸ì!
alert( message ); // ReferenceError: message is not defined (messageë í¨ì ë´ ì§ì ë³ìì´ê¸° ë문ì ìë¬ê° ë°ìí©ëë¤.)
ì¸ë¶ ë³ì
í¨ì ë´ë¶ìì í¨ì ì¸ë¶ì ë³ìì¸ ì¸ë¶ ë³ì(outer variable)ì ì ê·¼í ì ììµëë¤.
let userName = 'John';
function showMessage() {
let message = 'Hello, ' + userName;
alert(message);
}
showMessage(); // Hello, John
í¨ììì ì¸ë¶ ë³ìì ì ê·¼íë ê²ë¿ë§ ìëë¼, ìì ë í ì ììµëë¤.
ìì:
let userName = 'John';
function showMessage() {
userName = "Bob"; // (1) ì¸ë¶ ë³ì를 ìì í¨
let message = 'Hello, ' + userName;
alert(message);
}
alert( userName ); // í¨ì í¸ì¶ ì ì´ë¯ë¡ John ì´ ì¶ë ¥ë¨
showMessage();
alert( userName ); // í¨ìì ìí´ Bob ì¼ë¡ ê°ì´ ë°ë
ì¸ë¶ ë³ìë ì§ì ë³ìê° ìë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
í¨ì ë´ë¶ì ì¸ë¶ ë³ìì ëì¼í ì´ë¦ì ê°ì§ ë³ìê° ì ì¸ëìë¤ë©´, ë´ë¶ ë³ìë ì¸ë¶ ë³ì를 ê°ë¦½ëë¤. ìì를 ì´í´ë´
ìë¤. í¨ì ë´ë¶ì ì¸ë¶ ë³ìì ëì¼í ì´ë¦ì ê°ì§ ì§ì ë³ì userNameê° ì ì¸ëì´ ììµëë¤. ì¸ë¶ ë³ìë ë´ë¶ ë³ìì ê°ë ¤ì ¸ ê°ì´ ìì ëì§ ìììµëë¤.
let userName = 'John';
function showMessage() {
let userName = "Bob"; // ê°ì ì´ë¦ì ê°ì§ ì§ì ë³ì를 ì ì¸í©ëë¤.
let message = 'Hello, ' + userName; // Bob
alert(message);
}
// í¨ìë ë´ë¶ ë³ìì¸ userNameë§ ì¬ì©í©ëë¤,
showMessage();
alert( userName ); // í¨ìë ì¸ë¶ ë³ìì ì ê·¼íì§ ììµëë¤. ë°ë¼ì ê°ì´ ë³ê²½ëì§ ìê³ , Johnì´ ì¶ë ¥ë©ëë¤.
ì ììì userNameì²ë¼, í¨ì ì¸ë¶ì ì ì¸ë ë³ìë ì ì ë³ì(global variable) ë¼ê³ ë¶ë¦
ëë¤.
ì ì ë³ìë ê°ì ì´ë¦ì ê°ì§ ì§ì ë³ìì ìí´ ê°ë ¤ì§ì§ë§ ìëë¤ë©´ 모ë í¨ììì ì ê·¼í ì ììµëë¤.
ë³ìë ì°ê´ëë í¨ì ë´ì ì ì¸íê³ , ì ì ë³ìë ëëë¡ ì¬ì©íì§ ìë ê²ì´ ì¢ìµëë¤. ë¹êµì ê·¼ëì ìì±ë ì½ëë¤ì ëë¶ë¶ ì ìë³ì를 ì¬ì©íì§ ìê±°ë ìµìíì¼ë¡ë§ ì¬ì©í©ëë¤. ë¤ë§ íë¡ì í¸ ì ë°ìì ì¬ì©ëë ë°ì´í°ë ì ì ë³ìì ì ì¥íë ê²ì´ ì ì©í ê²½ì°ë ìì¼ë ì´ ì ì ììëì기 ë°ëëë¤.
매ê°ë³ì
매ê°ë³ì(parameter)를 ì´ì©íë©´ ììì ë°ì´í°ë¥¼ í¨ì ìì ì ë¬í ì ììµëë¤. 매ê°ë³ìë ì¸ì(parameter) ë¼ê³ ë¶ë¦¬ê¸°ë í©ëë¤.
ìë ìììì í¨ì showMessageë 매ê°ë³ì from ê³¼ text를 ê°ì§ëë¤.
function showMessage(from, text) { // ì¸ì: from, text
alert(from + ': ' + text);
}
showMessage('Ann', 'Hello!'); // Ann: Hello! (*)
showMessage('Ann', "What's up?"); // Ann: What's up? (**)
(*), (**)ë¡ íìí ì¤ìì í¨ì를 í¸ì¶íë©´, í¨ìì ì ë¬ë ì¸ìë ì§ìë³ì fromê³¼ textì ë³µì¬ë©ëë¤. ê·¸ í í¨ìë ì§ìë³ìì ë³µì¬ë ê°ì ì¬ì©í©ëë¤.
ìì íë를 ë ì´í´ë´
ìë¤. ì ì ë³ì fromì´ ìê³ , ì´ ë³ì를 í¨ìì ì ë¬íììµëë¤. í¨ìê° fromì ë³ê²½íì§ë§, ë³ê²½ ì¬íì ì¸ë¶ ë³ì fromì ë°ìëì§ ìììµëë¤. í¨ìë ì¸ì ë ë³µì¬ë ê°ì ì¬ì©í기 ë문ì
ëë¤.
function showMessage(from, text) {
from = '*' + from + '*'; // "from"ì ì¢ ë ë©ì§ê² 꾸며ì¤ëë¤.
alert( from + ': ' + text );
}
let from = "Ann";
showMessage(from, "Hello"); // *Ann*: Hello
// í¨ìë ë³µì¬ë ê°ì ì¬ì©í기 ë문ì ë°ê¹¥ì "from"ì ê°ì´ ë³ê²½ëì§ ììµëë¤.
alert( from ); // Ann
í¨ìì 매ê°ë³ìì ì ë¬ë ê°ì *ì¸ì(argument)*ë¼ê³ ë¶ë¥´ê¸°ë í©ëë¤.
ë ì íí ì´í´ë¥¼ ë기 ìí´ ì©ì´ë¥¼ ë¤ì íë² ì 리í´ë³¼ê¹ì?
- 매ê°ë³ìë í¨ì ì ì¸ ë°©ì ê´í¸ ì¬ì´ì ìë ë³ìì ëë¤(ì ì¸ ì ì°ì´ë ì©ì´).
- ì¸ìë í¨ì를 í¸ì¶í ë 매ê°ë³ìì ì ë¬ëë ê°ì ëë¤(í¸ì¶ ì ì°ì´ë ì©ì´).
ì¦, í¨ì ì ì¸ ì 매ê°ë³ì를 ëì´íê² ëê³ , í¨ì를 í¸ì¶í ë ì¸ì를 ì ë¬í´ í¸ì¶í©ëë¤.
ì ììì í¨ì showMessageë fromê³¼ textë¼ë ë 매ê°ë³ì를 ì¬ì©í´ ì ì¸ëìê³ , ê·¸ í í¸ì¶ ìì from, Helloë¼ë ë ì¸ì를 ì¬ì©í´ í¸ì¶ëììµëë¤.
기본ê°
í¨ì í¸ì¶ ì 매ê°ë³ìì ì¸ì를 ì ë¬íì§ ìì¼ë©´ ê·¸ ê°ì undefinedê° ë©ëë¤.
ìì를 íµí´ ì´ì ëí´ ììë´
ìë¤. ììì ì ìí í¨ì showMessage(from, text)ë 매ê°ë³ìê° 2ê°ì§ë§, ìëì ê°ì´ ì¸ì를 íëë§ ë£ì´ì í¸ì¶í ì ììµëë¤.
showMessage("Ann");
ì´ë ê² ì½ë를 ìì±í´ë ìë¬ê° ë°ìíì§ ììµëë¤. ë ë²ì§¸ 매ê°ë³ìì ê°ì ì ë¬íì§ ìì기 ë문ì textì undefinedê° í ë¹ë ë¿ì
ëë¤. ë°ë¼ì ìë¬ ìì´ "Ann: undefined"ê° ì¶ë ¥ë©ëë¤.
매ê°ë³ìì ê°ì ì ë¬íì§ ììë ê·¸ ê°ì´ undefinedê° ëì§ ìê² íë ¤ë©´ í¨ì를 ì ì¸í ë =를 ì¬ì©í´ '기본ê°(default value)'ì ì¤ì í´ì£¼ë©´ ë©ëë¤.
function showMessage(from, text = "no text given") {
alert( from + ": " + text );
}
showMessage("Ann"); // Ann: no text given
ì´ì textê° ê°ì ì ë¬ë°ì§ 못í´ë undefined ëì ê¸°ë³¸ê° "no text given"ì´ í ë¹ë©ëë¤.
매ê°ë³ìì ê°ì ì ë¬í´ë ê·¸ ê°ì´ undefinedì ì격í ì¼ì¹íë¤ë©´ 기본ê°ì´ í ë¹ë©ëë¤.
ìì:
showMessage("Ann", undefined); // Ann: no text given
ì ìììì 문ìì´ "no text given"ì 기본ê°ì¼ë¡ ì¤ì íìµëë¤. íì§ë§ ìëì ê°ì´ ë³µì¡í ííìë 기본ê°ì¼ë¡ ì¤ì í ìë ììµëë¤.
function showMessage(from, text = anotherFunction()) {
// anotherFunction()ì textê°ì´ ìì ëë§ í¸ì¶ë¨
// anotherFunction()ì ë°í ê°ì´ textì ê°ì´ ë¨
}
ìë°ì¤í¬ë¦½í¸ìì í¨ì를 í¸ì¶í ëë§ë¤ 매ê°ë³ì 기본ê°ì íê°í©ëë¤. ë¬¼ë¡ í´ë¹íë 매ê°ë³ìê° ìì ëë§ ê¸°ë³¸ê°ì íê°íì£ .
ì ìììì 매ê°ë³ì textì ê°ì´ ì ë¬ëë ê²½ì° anotherFunction()ì í¸ì¶ëì§ ììµëë¤.
ë°ë©´ textì ê°ì´ ìë ê²½ì° showMessage()를 í¸ì¶í ëë§ë¤ anotherFunction()ì´ í¸ì¶ë©ëë¤.
ëª ë ì ë§ í´ë ìë°ì¤í¬ë¦½í¸ì 매ê°ë³ì ê¸°ë³¸ê° ê´ë ¨ êµ¬ë¬¸ì´ ìììµëë¤. ê·¸ëì 매ê°ë³ì 기본ê°ì ì¤ì íë ¤ë©´ ë¤ë¥¸ ë°©ë²ì ì¬ì©í´ì¼ë§ íì£ .
ìì¦ìë ì¤ëë ì¤í¬ë¦½í¸ë¥¼ ë³´ë¤ ë³´ë©´ 매ê°ë³ì ê¸°ë³¸ê° ì¤ì ê´ë ¨ ì½ë를 ì í ì ììµëë¤.
구ì ì½ëììë 매ê°ë³ì ê¸°ë³¸ê° ì¤ì ì ìí´ ë¨¼ì 매ê°ë³ì ê°ì´ undefinedì¸ì§ ëª
ìì ì¼ë¡ íì¸íê³ , ì¼ì¹íë ê²½ì°ì 기본ê°ì ì¤ì í©ëë¤.
ìì:
function showMessage(from, text) {
if (text === undefined) {
text = 'no text given';
}
alert( from + ": " + text );
}
ì´ ë°©ë² ë§ê³ ë ë
¼ë¦¬ ì°ì°ì ||를 ì¬ì©í´ 매ê°ë³ì 기본ê°ì ì¤ì íë ë°©ë²ë ììµëë¤.
function showMessage(from, text) {
// textì ê°ì´ falsyë©´ 기본ê°ì´ í ë¹ë¨
// ì´ ë°©ìì text == ""ì¼ ê²½ì°, textì ê°ì´ ì ë¬ëì§ ììê²ê³¼ ê°ë¤ê³ ê°ì£¼í©ëë¤..
text = text || 'no text given';
...
}
매ê°ë³ì 기본ê°ì ì¤ì í ì ìë ë ë¤ë¥¸ ë°©ë²
ê°ëì í¨ì를 ì ì¸í ëê° ìë í¨ì ì ì¸ íì 매ê°ë³ì 기본ê°ì ì¤ì íë ê²ì´ ì ì í ê²½ì°ë ììµëë¤.
ì´ë° ê²½ì°ì í¨ì를 í¸ì¶í ë 매ê°ë³ì를 undefinedì ë¹êµíì¬ ë§¤ê°ë³ìê° ì ë¬ëìëì§ë¥¼ íì¸í©ëë¤.
function showMessage(text) {
// ...
if (text === undefined) { // 매ê°ë³ìê° ìëµëìë¤ë©´
text = 'ë¹ ë¬¸ìì´';
}
alert(text);
}
showMessage(); // ë¹ ë¬¸ìì´
ì´ë ê² if문ì ì°ë ê² ëì ë
¼ë¦¬ ì°ì°ì ||를 ì¬ì©í ìë ììµëë¤.
// 매ê°ë³ìê° ìëµëìê±°ë ë¹ ë¬¸ìì´("")ì´ ëì´ì¤ë©´ ë³ìì 'ë¹ ë¬¸ìì´'ì´ í ë¹ë©ëë¤.
function showMessage(text) {
text = text || 'ë¹ ë¬¸ìì´';
...
}
ì´ ì¸ìë 모ë ìë°ì¤í¬ë¦½í¸ ìì§ì´ ì§ìíë nullish ë³í© ì°ì°ì(nullish coalescing operator) ??를 ì¬ì©íë©´ 0ì²ë¼ falsyë¡ íê°ëë ê°ë¤ì ì¼ë° ê°ì²ë¼ ì²ë¦¬í ì ìì´ì ì¢ìµëë¤.
// 매ê°ë³ì 'count'ê° `undefined` ëë `null`ì´ë©´ 'unknown'ì ì¶ë ¥í´ì£¼ë í¨ì
function showCount(count) {
alert(count ?? "unknown");
}
showCount(0); // 0
showCount(null); // unknown
showCount(); // unknown
ë°í ê°
í¨ì를 í¸ì¶íì ë í¨ì를 í¸ì¶í 그곳ì í¹ì ê°ì ë°ííê² í ì ììµëë¤. ì´ë ì´ í¹ì ê°ì ë°í ê°(return value)ì´ë¼ê³ ë¶ë¦ ëë¤.
ì¸ìë¡ ë°ì ë ê°ì ëí´ì£¼ë ê°ë¨í í¨ì를 ë§ë¤ì´ ë°í ê°ì ëí´ ììë³´ëë¡ íê² ìµëë¤.
function sum(a, b) {
return a + b;
}
let result = sum(1, 2);
alert( result ); // 3
ì§ìì returnì í¨ì ë´ ì´ëìë ì¬ì©í ì ììµëë¤. ì¤í íë¦ì´ ì§ìì returnì ë§ëë©´ í¨ì ì¤íì ì¦ì ì¤ë¨ëê³ í¨ì를 í¸ì¶í ê³³ì ê°ì ë°íí©ëë¤. ì ìììì ë°í ê°ì resultì í ë¹íììµëë¤.
ìëì ê°ì´ í¨ì íëì ì¬ë¬ ê°ì returnë¬¸ì´ ì¬ ìë ììµëë¤.
function checkAge(age) {
if (age >= 18) {
return true;
} else {
return confirm('ë³´í¸ìì ëì를 ë°ì¼ì
¨ëì?');
}
}
let age = prompt('ëì´ë¥¼ ìë ¤ì£¼ì¸ì', 18);
if ( checkAge(age) ) {
alert( 'ì ì íì©' );
} else {
alert( 'ì ì ì°¨ë¨' );
}
ìëì ê°ì´ ì§ìì returnë§ ëª
ìíë ê²ë ê°ë¥í©ëë¤. ì´ë° ê²½ì°ë í¨ìê° ì¦ì ì¢
ë£ë©ëë¤.
ìì:
function showMovie(age) {
if ( !checkAge(age) ) {
return;
}
alert( "ìí ìì" ); // (*)
// ...
}
ì ìììì, checkAge(age)ê° false를 ë°ííë©´, (*)ë¡ íìí ì¤ì ì¤íì´ ì ë기 ë문ì í¨ì showMovieë ì¼ë¿ ì°½ì ë³´ì¬ì£¼ì§ ììµëë¤.
returnë¬¸ì´ ìê±°ë return ì§ììë§ ìë í¨ìë undefined를 ë°íí©ëë¤.returnë¬¸ì´ ìë í¨ìë 무ì¸ê°ë¥¼ ë°íí©ëë¤. undefined를 ë°ííì£ .
function doNothing() { /* empty */ }
alert( doNothing() === undefined ); // true
return ì§ììë§ ìë ê²½ì°ë undefined를 ë°íí©ëë¤. returnì return undefinedì ëì¼íê² ëìíì£ .
function doNothing() {
return;
}
alert( doNothing() === undefined ); // true
returnê³¼ ê° ì¬ì´ì ì ë ì¤ì ì½ì
íì§ ë§ì¸ì.ë°ííë ¤ë ê°ì´ 긴 ííìì¸ ê²½ì°, ìëì ê°ì´ ì§ìì returnê³¼ ë°ííë ¤ë ê° ì¬ì´ì ì ì¤ì ë£ì´ ì½ë를 ìì±íê³ ì¶ì ìë ììµëë¤.
return
(some + long + expression + or + whatever * f(a) + f(b))
ìë°ì¤í¬ë¦½í¸ë return문 ëì ì¸ë¯¸ì½ë¡ ì ìëì¼ë¡ ë£ê¸° ë문ì ì´ë ê² return문ì ìì±íë©´ ì ë©ëë¤. ì ì½ëë ìë ì½ëì²ë¼ ëìí©ëë¤.
return;
(some + long + expression + or + whatever * f(a) + f(b))
ë°ë¼ì ë°ííê³ ì íë ííìì ë°ííì§ ëª»íê³ ì무ê²ë ë°ííì§ ìë ê²ì²ë¼ ëì´ë²ë¦½ëë¤.
ííìì ì¬ë¬ ì¤ì ê±¸ì³ ìì±íê³ ì¶ë¤ë©´ ííìì´ return ì§ììê° ìë ì¤ìì ììíëë¡ ìì±í´ì¼ í©ëë¤. ëë ìëì ê°ì´ ì¬ë ê´í¸ë¥¼ return ì§ììì ê°ì ì¤ì ì¨ì¤ë ê´ì°®ìµëë¤.
return (
some + long + expression
+ or +
whatever * f(a) + f(b)
)
ì´ë ê² íë©´ ìëí ëë¡ ííìì ë°íí ì ììµëë¤.
í¨ì ì´ë¦ì§ê¸°
í¨ìë ì´ë¤ ëìì ìíí기 ìí ì½ë를 모ìëì ê²ì
ëë¤. ë°ë¼ì í¨ìì ì´ë¦ì ëê° ëì¬ì
ëë¤. í¨ì ì´ë¦ì ê°ë¥í í ê°ê²°íê³ ëª
íí´ì¼ í©ëë¤. í¨ìê° ì´ë¤ ëìì íëì§ ì¤ëª
í ì ìì´ì¼ íì£ . ì½ë를 ì½ë ì¬ëì í¨ì ì´ë¦ë§ ë³´ê³ ë í¨ìê° ì´ë¤ 기ë¥ì íëì§ íí¸ë¥¼ ì»ì ì ìì´ì¼ í©ëë¤.
í¨ìê° ì´ë¤ ëìì íëì§ ì¶ì½í´ì ì¤ëª í´ ì£¼ë ëì¬ë¥¼ ì ëì´ë¡ ë¶ì¬ í¨ì ì´ë¦ì ë§ëë ê² ê´ìµì ëë¤. ë¤ë§, í ë´ìì ê·¸ ë»ì´ ë°ëì í©ìë ì ëì´ë§ ì¬ì©í´ì¼ í©ëë¤.
"show"ë¡ ììíë í¨ìë ëê° ë¬´ì¸ê°ë¥¼ ë³´ì¬ì£¼ë í¨ìì
ëë¤.
ì´ ì¸ì ìëì ê°ì ì ëì´ë¥¼ ì¬ì©í ì ììµëë¤.
"getâ¦"â ê°ì ë°íí¨"calcâ¦"â 무ì¸ê°ë¥¼ ê³ì°í¨"createâ¦"â 무ì¸ê°ë¥¼ ìì±í¨"checkâ¦"â 무ì¸ê°ë¥¼ íì¸íê³ ë¶ë¦°ê°ì ë°íí¨
ì ì ëì´ë¥¼ ì¬ì©íë©´ ìëì ê°ì í¨ì를 ë§ë¤ ì ììµëë¤.
showMessage(..) // ë©ìì§ë¥¼ ë³´ì¬ì¤
getAge(..) // ëì´ë¥¼ ëíë´ë ê°ì ì»ê³ ê·¸ ê°ì ë°íí¨
calcSum(..) // í©ê³ë¥¼ ê³ì°íê³ ê·¸ 결과를 ë°íí¨
createForm(..) // formì ìì±íê³ ë§ë¤ì´ì§ formì ë°íí¨
checkPermission(..) // ì¹ì¸ ì¬ë¶ë¥¼ íì¸íê³ trueë false를 ë°íí¨
ì ëì´ë¥¼ ì ì í íì©íë©´ í¨ì ì´ë¦ë§ ë³´ê³ ë í¨ìê° ì´ë¤ ëìì íê³ ì´ë¤ ê°ì ë°ííëì§ ì½ê² ì ì ììµëë¤.
í¨ìë í¨ì ì´ë¦ì ì¸ê¸ëì´ ìë ëìì ì íí ìíí´ì¼ í©ëë¤. ê·¸ ì´ì¸ì ëìì ìíí´ì ì ë©ëë¤.
ë 립ì ì¸ ë ê°ì ëìì ë 립ë í¨ì ë ê°ìì ëë ì ìíí ì ìê² í´ì¼ í©ëë¤. í ì¥ììì ë ëìì ëìì íìë¡ íë ê²½ì°ë¼ë ë§ì´ì£ (ì´ ê²½ì°ë ì 3ì í¨ì를 ë§ë¤ì´ 그곳ìì ë í¨ì를 í¸ì¶í©ëë¤).
ê°ë°ìë¤ì´ ë¹ë²í íë ì¤ì를 ìê°í´ ë³´ê² ìµëë¤.
getAgeí¨ìë ëì´ë¥¼ ì»ì´ì¤ë ëìë§ ìíí´ì¼ í©ëë¤.alertì°½ì ëì´ë¥¼ ì¶ë ¥í´ 주ë ëìì ì´ í¨ìì ë¤ì´ê°ì§ ìë ê²ì´ ì¢ìµëë¤.createFormí¨ìë formì ë§ë¤ê³ ì´ë¥¼ ë°ííë ëìë§ í´ì¼ í©ëë¤. formì 문ìì ì¶ê°íë ëìì´ í´ë¹ í¨ìì ë¤ì´ê° ìì¼ë©´ ì¢ì§ ììµëë¤.checkPermissioní¨ìë ì¹ì¸ ì¬ë¶ë¥¼ íì¸íê³ ê·¸ 결과를 ë°ííë ëìë§ í´ì¼ í©ëë¤. ì¹ì¸ ì¬ë¶ë¥¼ ë³´ì¬ì£¼ë ë©ìì§ë¥¼ ëì°ë ëìì´ ë¤ì´ê° ìì¼ë©´ ì¢ì§ ììµëë¤.
ì ììë¤ì ì ëì´ì ìë¯¸ê° í©ìëìë¤ê³ ê°ì íê³ ë§ë¤ììµëë¤. 본ì¸ì´ë 본ì¸ì´ ìí íìì ì ëì´ì ì미를 ì¬í©ìíì¬ í¨ì를 ë§ë¤ ìë ì긴 íì§ë§, ìë§ë ì ìììì ì¬ì©í ì ëì´ ì미ì í¬ê² ì°¨ì´ê° ëì§ ìì ê²ëë¤. ì´ì° ëìë ì ëì´ë¥¼ ì¬ì©íì¬ í¨ì ì´ë¦ì ì§ì ë, í´ë¹ ì ëì´ì ì´ë¤ ìë¯¸ê° ìëì§ ì ì´í´íê³ ìì´ì¼ í©ëë¤. í´ë¹ ì ëì´ê° ë¶ì í¨ìê° ì´ë¤ ëìì íëì§, ì´ë¤ ëìì íì§ ëª»íëì§ ìê³ ìì´ì¼ íì£ . ì ëì´ë¥¼ ë¶ì¬ ë§ë 모ë í¨ìë íìì ë§ë ê·ì¹ì ë°ëì ë°ë¼ì¼ í©ëë¤. íìë¤ì ì´ ê·ì¹ì ì¶©ë¶í ì´í´íê³ ìì´ì¼ íë©°, íìë¤ ì¬ì´ì ì´ ê·ì¹ì´ ì ê³µì ëì´ì¼ í©ëë¤.
ì ë§ ë¹ë²í ì°ì´ë í¨ì ì¤ì ì´ë¦ì´ ì주 ì§§ì í¨ìê° ììµëë¤.
jQuery íë ììí¬ìì ì°ì´ë í¨ì $ì Lodash ë¼ì´ë¸ë¬ë¦¬ì íµì¬ í¨ì _ ë§ì´ì£ .
ì´ í¨ìë¤ì ì§ê¸ê¹ì§ ìê°í í¨ì ì´ë¦ì§ê¸°ì ê´ë ¨ë ê·ì¹ì ì§í¤ì§ ìê³ ììµëë¤. ìì¸ì ìíì£ . í¨ì ì´ë¦ì ê°ê²°íê³ í¨ìê° ì´ë¤ ì¼ì íëì§ ì¤ëª í ì ìê² ì§ì´ì¼ í©ëë¤.
í¨ì == 주ì
í¨ìë ê°ê²°íê³ , í ê°ì§ 기ë¥ë§ ìíí ì ìê² ë§ë¤ì´ì¼ í©ëë¤. í¨ìê° ê¸¸ì´ì§ë©´ í¨ì를 ìê² ìª¼ê°¤ ëê° ëìë¤ë ì í¸ë¡ ë°ìë¤ì´ì ì¼ í©ëë¤. í¨ì를 쪼ê°ë ê±´ ì¬ì´ ìì ì ìëëë¤. íì§ë§ í¨ì를 ë¶ë¦¬í´ ìì±íë©´ ë§ì ì¥ì ì´ ì기 ë문ì í¨ìê° ê¸¸ì´ì§ ê²½ì°ì í¨ì를 ë¶ë¦¬í´ ìì±í ê²ì ê¶ì í©ëë¤.
í¨ì를 ê°ê²°íê² ë§ë¤ë©´ í ì¤í¸ì ëë²ê¹ ì´ ì¬ìì§ëë¤. ê·¸ë¦¬ê³ í¨ì ê·¸ ìì²´ë¡ ì£¼ìì ìí ê¹ì§ í©ëë¤!
ê°ì ëìì íë í¨ì, showPrimes(n)를 ë ê° ë§ë¤ì´ ë¹êµí´ ë´
ìë¤. showPrimes(n)ì nê¹ì§ì ìì(prime numbers)를 ì¶ë ¥í´ì¤ëë¤.
첫 ë²ì§¸ showPrimes(n)ìì ë ì´ë¸ì ì¬ì©í´ ë°ë³µë¬¸ì ìì±í´ë³´ììµëë¤.
function showPrimes(n) {
nextPrime: for (let i = 2; i < n; i++) {
for (let j = 2; j < i; j++) {
if (i % j == 0) continue nextPrime;
}
alert( i ); // ìì
}
}
ë ë²ì§¸ showPrimes(n)ë ììì¸ì§ ìëì§ ì¬ë¶ë¥¼ ê²ì¦íë ì½ë를 ë°ë¡ ë¶ë¦¬í´ isPrime(n)ì´ë¼ë í¨ìì ë£ì´ì ìì±íìµëë¤.
function showPrimes(n) {
for (let i = 2; i < n; i++) {
if (!isPrime(i)) continue;
alert(i); // a prime
}
}
function isPrime(n) {
for (let i = 2; i < n; i++) {
if ( n % i == 0) return false;
}
return true;
}
ë ë²ì§¸ showPrimes(n)ê° ë ì´í´í기 ì½ì§ ìëì? isPrime í¨ì ì´ë¦ì ë³´ê³ í´ë¹ í¨ìê° ìì ì¬ë¶ë¥¼ ê²ì¦íë ëìì íë¤ë 걸 ì½ê² ì ì ììµëë¤. ì´ë ê² ì´ë¦ë§ ë³´ê³ ë ì´ë¤ ëìì íëì§ ì ì ìë ì½ë를 ì기 ì¤ëª
ì (self-describing) ì½ëë¼ê³ ë¶ë¦
ëë¤.
ìì ê°ì´ í¨ìë ì¤ë³µì ìì ë ¤ë ì©ë ì¸ìë ì¬ì©í ì ììµëë¤. ì´ë ê² í¨ì를 íì©íë©´ ì½ëê° ì ëëê³ ê°ë ì±ì´ ëìì§ëë¤.
ìì½
í¨ì ì ì¸ ë°©ìì¼ë¡ í¨ì를 ë§ë¤ ì ììµëë¤.
function í¨ìì´ë¦(ë³µìì, 매ê°ë³ìë, 콤ë§ë¡, 구ë¶í©ëë¤) {
/* í¨ì 본문 */
}
- í¨ìì ì ë¬ë 매ê°ë³ìë ë³µì¬ë í í¨ìì ì§ìë³ìê° ë©ëë¤.
- í¨ìë ì¸ë¶ ë³ìì ì ê·¼í ì ììµëë¤. íì§ë§ í¨ì ë°ê¹¥ìì í¨ì ë´ë¶ì ì§ìë³ìì ì ê·¼íë ê±´ ë¶ê°ë¥í©ëë¤.
- í¨ìë ê°ì ë°íí ì ììµëë¤. ê°ì ë°ííì§ ìë ê²½ì°ë ë°í ê°ì´
undefinedê° ë©ëë¤.
ê¹ëíê³ ì´í´í기 ì¬ì´ ì½ë를 ìì±íë ¤ë©´ í¨ì ë´ë¶ìì ì¸ë¶ ë³ì를 ì¬ì©íë ë°©ë² ëì ì§ì ë³ìì 매ê°ë³ì를 íì©íë ê² ì¢ìµëë¤.
ê°ë°ìë 매ê°ë³ì를 ë°ìì ê·¸ ë³ì를 ê°ì§ê³ ë°í ê°ì ë§ë¤ì´ ë´ë í¨ì를 ë ì½ê² ì´í´í ì ììµëë¤. 매ê°ë³ì ìì´ í¨ì ë´ë¶ìì ì¸ë¶ ë³ì를 ìì í´ ë°í ê°ì ë§ë¤ì´ ë´ë í¨ìë ì½ê² ì´í´í기 íëëë¤.
í¨ì ì´ë¦ì ì§ì ë ìëì ê°ì ê·ì¹ì ë°ë¥´ë ê²ì´ ì¢ìµëë¤.
- í¨ì ì´ë¦ì í¨ìê° ì´ë¤ ëìì íëì§ ì¤ëª í ì ìì´ì¼ í©ëë¤. ì´ë ê² ì´ë¦ì ì§ì¼ë©´ í¨ì í¸ì¶ ì½ëë§ ë³´ìë í´ë¹ í¨ìê° ë¬´ìì íê³ ì´ë¤ ê°ì ë°íí ì§ ë°ë¡ ì ì ììµëë¤.
- í¨ìë ëìì ìíí기 ë문ì ì´ë¦ì´ ì£¼ë¡ ëì¬ì ëë¤.
createâ¦,showâ¦,getâ¦,checkâ¦ë±ì ì ìë ¤ì§ ì ëì´ë¥¼ ì¬ì©í´ ì´ë¦ì ì§ì ì ììµëë¤. ì ëì´ë¥¼ ì¬ì©íë©´ í¨ì ì´ë¦ë§ ë³´ê³ ë í´ë¹ í¨ìê° ì´ë¤ ëìì íëì§ íì í ì ììµëë¤.
í¨ìë ì¤í¬ë¦½í¸ë¥¼ 구ì±íë 주ì êµ¬ì± ììì ëë¤. ì§ê¸ê¹ì§ ë¤ë£¬ ë´ì©ì í¨ìì 기본ì ëë¤. ì¬ê¸°ì í¨ì를 ë§ëë ë°©ë², ì¬ì©íë ë°©ë²ì ìê°íëë° ì´ ë´ì©ì ììì¼ ë¿ì ëë¤. ì´ì´ì§ë ì±í°ìì ì§ê¸ê¹ì§ ë°°ì´ ê²ì ë°íì¼ë¡ í¨ìê° ì ê³µíë ê³ ê¸ ê¸°ë¥ì ëí´ íìµí´ ë³´ëë¡ íê² ìµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.