í¨ì ë°í ê°
í¨ìì ëí´ ì°ë¦¬ê° ì´ì¼ê¸°í´ì¼ í ë§ì§ë§ í ê°ì§ íìì ì¸ ê°ë ì´ ììµëë¤ â ë°í ê°(return value)ì ëë¤. ëªëª í¨ìë¤ì ì¤ìí ê°ì ë°í(return)íì§ ìì§ë§, ë¤ë¥¸ í¨ìë¤ì ë°íí©ëë¤. ê·¸ ê°ë¤ì´ 무ìì¸ì§, ê·¸ê²ë¤ì ì´ë»ê² ì¬ì©íëì§, ê·¸ë¦¬ê³ ì´ë»ê² í¨ìê° ì ì©í ê°ì ë°ííê² ë§ëëì§ë¥¼ ì´í´íë ê²ì ì¤ìí©ëë¤. ì°ë¦¬ë ì´ ëª¨ë ê²ì ìëìì ë¤ë£° ê²ì ëë¤.
| íìí ì¬ì ì§ì: | 기본ì ì¸ ì»´í¨í° ì¬ì© ë¥ë ¥, HTMLê³¼ CSSì ëí 기본ì ì¸ ì´í´, JavaScript 첫걸ì, í¨ì â ì½ë ì¬ì¬ì©. |
|---|---|
| 목í: | í¨ì ë°í ê°ê³¼, ì´ë»ê² ê·¸ê²ì ì¬ì©íëì§ ì´í´í기. |
ë°í ê°ì´ 무ìì¸ê°ì?
ë°í ê°(return value)ì´ë ê·¸ë¥ ë¤ë¦¬ë ê·¸ëë¡ì ëë¤ â í¨ìê° ìë£ëìì ë í¨ìê° ë°ííë ê°ì ëë¤. ì¬ë¬ë¶ì ì´ë¯¸ ì ì°¨ë¡ ë°í ê°ì ë§ì£¼ì³¤ìµëë¤. ë¹ë¡ ê·¸ê²ë¤ì ëí´ ë¶ëª íê² ìê°íì§ë ìììì§ë 모르ì§ë§ì.
(ì´ ì리ì¦ì ì§ë 문ììì 본) ìµìí ìì ë¡ ëìê° ë´ ìë¤.
let myText = "The weather is cold";
let newString = myText.replace("cold", "warm");
console.log(newString); // Should print "The weather is warm"
// replace() 문ìì´ í¨ìë 문ìì´ì ì·¨í´ì,
// ë¶ë¶ì´(substring)ì ë¤ë¥¸ ê²ì¼ë¡ ë°ê¾¸ê³ ,
// ìë¡ì´ 문ìì´ì ë°íí©ëë¤.
replace() í¨ìë myText 문ìì´ìì í¸ì¶ëìê³ , ë 매ê°ë³ì(parameter)를 ì ë¬ë°ììµëë¤:
- ì°¾ì ë¶ë¶ì´ ('cold').
- ë°ê¿ 문ìì´ ('warm').
ì´ í¨ìê° ìë£ëìì (ì¤íì ëëì) ë, ê°ì ë°ííëë°, ê·¸ê²ì êµì²´ë 문ìì´ì
ëë¤. ìì ì½ëìì, ì´ ë°í ê°ì ê²°ê³¼ë newStringì ì ì¥ë©ëë¤.
replace() í¨ì MDN ë í¼ë°ì¤ íì´ì§ë¥¼ 본ë¤ë©´, return value ë¼ë ì¹ì
ì ë³´ê² ë ê²ì
ëë¤. ì´ë¤ ê°ì´ í¨ìì ìí´ ë°íëëì§ ì´í´íê³ ìë ê²ì 몹ì ì ì©í©ëë¤. ì´ëë ì§ ê°ë¥í ê³³ì ì´ ì 보를 ì¬ì©í´ ë³¼ ì ìëë¡ ë§ì
ëë¤.
ì´ë¤ í¨ìë¤ì ì´ë í ê°ë ë°ííì§ ììµëë¤. (ì´ ê²½ì°, ì°ë¦¬ì ë í¼ë°ì¤ íì´ì§ë ë°í ê°ì void ë undefinedë¡ ë³´ì¬ì¤ëë¤.) ì를 ë¤ë©´, ì§ë 문ììì ì°ë¦¬ê° ë§ë displayMessage() í¨ììì, ì´ë¤ í¹ì í ê°ë í¨ìê° í¸ì¶ëìì ë ë°íëì§ ììµëë¤. ì´ í¨ìë ë¨ì§ íë©´ ì´ëê°ì ë°ì¤ê° ëíëê² ë§ë¤ ë¿ì
ëë¤ â ê·¸ê² ì ë¶ì
ëë¤!
ì¼ë°ì ì¼ë¡, ë°í ê°ì í¨ìê° ì´ë¤ ì¢ ë¥ì ê³ì°ììì ì¤ê° ë¨ê³ì¸ ê³³ìì ì¬ì©ë©ëë¤. ìµì¢ 결과를 ì»ê¸° ìí´, ëªëª ê°ë¤ì í¨ìì ìí´ ê³ì°ë íìê° ìì ì ììµëë¤. í¨ìê° ê°ì ê³ì°í ì´íì, ê²°ê³¼ê° ë³ìì ì ì¥ë ì ìëë¡ í¨ìë ê³ì° 결과를 ë°íí©ëë¤; ê·¸ë¦¬ê³ ë¤ì ë¨ê³ì ê³ì°ìì ê·¸ ë³ì를 ì¬ì©í ì ììµëë¤.
ì¬ì©ì ì ì í¨ììì ë°í ê° ì¬ì©í기
ì¬ì©ì ì ì(custom) í¨ììì ê°ì ë°íí기 ìí´ìë, return í¤ìë를 ì¬ì©í íìê° ììµëë¤. ì°ë¦¬ë ìµê·¼ì ì´ê²ì random-canvas-circles.html ìì ìì ë³´ììµëë¤. draw() í¨ìë 무ììì ì 100ê°ë¥¼ HTML <canvas>ì 그립ëë¤:
function draw() {
ctx.clearRect(0, 0, WIDTH, HEIGHT);
for (let i = 0; i < 100; i++) {
ctx.beginPath();
ctx.fillStyle = "rgba(255,0,0,0.5)";
ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
ctx.fill();
}
}
ê° ë°ë³µ ë´ìì, íì¬ ìì x-coordinate, y-coordinate, ê·¸ë¦¬ê³ radiusì ëí 무ìì ê°ì ìì±í기 ìí´, random() í¨ìê° ì¸ ë² í¸ì¶ëììµëë¤. random() í¨ìë í ê°ì 매ê°ë³ì â ì ì â 를 ì·¨íê³ 0ê³¼ ê·¸ ì«ì ì¬ì´ì 무ìì ì ì를 ë°íí©ëë¤. ì´ í¨ìë ë¤ìê³¼ ê°ìµëë¤:
function random(number) {
return Math.floor(Math.random() * number);
}
ì´ê²ì ë¤ìê³¼ ê°ì´ ì°ì¬ì§ ìë ììµëë¤:
function random(number) {
const result = Math.floor(Math.random() * number);
return result;
}
íì§ë§ 첫ë²ì§¸ ì½ëê° ë ìì±ì´ ë¹ ë¥´ê³ , ë 콤í©í¸í©ëë¤.
í¨ìê° í¸ì¶ë ëë§ë¤ Math.floor(Math.random() * number) ê³ì°ì ê²°ê³¼ê° ë°íëê³ ììµëë¤. ì´ ë°í ê°ì í¨ìê° í¸ì¶ë ìì ìì ëíëê³ , ì½ëë ê³ìë©ëë¤.
ê·¸ëì ë¤ìì ì¤ííì ë:
ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
ë§ì½ ì¸ ê°ì random() í¸ì¶ì´ ê°ê° ê° 500, 200, ê·¸ë¦¬ê³ 35를 ë°ííë¤ë©´, ì´ ì¤ì ì¤ì ë¡ë ë¤ìì²ë¼ ì¤íë ê²ì
ëë¤:
ctx.arc(500, 200, 35, 0, 2 * Math.PI);
í¨ì í¸ì¶ë¤ì´ 먼ì ì¤íëê³ , ì¤ ìì²´ê° ê·¸ë¦¬ê³ ì ì¤íë기 ì ì í¨ìì ë°í ê°ì´ í¨ì í¸ì¶ì ëì í©ëë¤.
ì§ì í´ë³´ê¸°: ì°ë¦¬ë§ì ë°í ê° í¨ì
ë°í ê°ì í¬í¨íë ì°ë¦¬ë§ì í¨ì를 ìì±í´ ë´ ìë¤.
-
ì°ì , GitHubìì function-library.html íì¼ì ë¤ì´ë°ì¼ì¸ì. ì´ê²ì í ì¤í¸
<input>íëì ë¨ë½ì í¬í¨íê³ ìë ë¨ìí HTML íì´ì§ì ëë¤. ëí<script>ììê° ìëë°, ë HTML ììì ëí 참조를 ë ë³ìì ì ì¥í´ ëììµëë¤. ì´ ìì íì´ì§ë ì«ì를 í ì¤í¸ ë°ì¤ì ì ë ¥í ì ìê² íê³ , ê·¸ê²ì ê´ë ¨ë ë¤ë¥¸ ì«ìë¤ì ìëì ë¨ë½ì íìí ê²ì ëë¤. -
ëªëª ì ì©í í¨ìë¤ì ì´
<script>ììì ì¶ê°í©ìë¤. ë ì¤ì JavaScript ìëì, ë¤ìì í¨ì ì ì를 ì¶ê°íì¸ì.jsfunction squared(num) { return num * num; } function cubed(num) { return num * num * num; } function factorial(num) { if (num < 0) return undefined; if (num == 0) return 1; let x = num - 1; while (x > 1) { num *= x; x--; } return num; }squared()ìcubed()í¨ìë ë¶ëª í©ëë¤ â ì´ í¨ìë¤ì 매ê°ë³ìë¡ ì£¼ì´ì§ ì«ìì ì 곱과 ì¸ì ê³±ì ë°íí©ëë¤.factorial()í¨ìë 주ì´ì§ ì«ìì í©í 리ì¼ì ë°íí©ëë¤. -
ë¤ìì¼ë¡, ì°ë¦¬ë í ì¤í¸ ì¸íì ì ë ¥ë ì«ìì ëí ì 보를 ì¶ë ¥í ë°©ë²ì í¬í¨í ê²ì ëë¤. ë¤ìì ì´ë²¤í¸ í¸ë¤ë¬ë¥¼ ì¡´ì¬íë í¨ìë¤ ìëì ì ë ¥í´ ë³´ì¸ì:
jsinput.onchange = function () { const num = parseFloat(input.value); if (isNaN(num)) { para.textContent = "You need to enter a number!"; } else { para.textContent = num + " squared is " + squared(num) + ". " + num + " cubed is " + cubed(num) + ". " + num + " factorial is " + factorial(num) + "."; } };ì¬ê¸°ì ì°ë¦¬ë
onchangeì´ë²¤í¸ í¸ë¤ë¬ë¥¼ ë§ë¤ììµëë¤. ì´ê²ìchangeì´ë²¤í¸ê° ì¸ì ë ì§ í ì¤í¸ ì¸íìì ë°ì(fire)ëìì ë ì¤íë©ëë¤ â ì¦, ìë¡ì´ ê°ì´ í ì¤í¸inputì ì ë ¥ëê³ , ì ì¶ëìì ë (ì: ê°ì ì ë ¥íê³ , Tabì´ë Returnì ëë¬ ê·¸ë¦¬ê³ ì ì¸íìì í¬ì»¤ì¤ë¥¼ ì®ê²¼ì ë). ìµëª í¨ìê° ì¤íëìì ë,inputë´ì ê°ìnumììì ì ì¥ë©ëë¤.ë¤ìì¼ë¡, ì°ë¦¬ë 조건문 í ì¤í¸ë¥¼ í©ëë¤. ë§ì½ ì ë ¥ë ê°ì´ ì«ìê° ìëë¼ë©´, ì¤ë¥ ë©ìì§ê° ë¨ë½ì ì¶ë ¥ë©ëë¤. ì´ í ì¤í¸ë ííì(expression)
isNaN(num)ì´true를 ë°ííëì§ë¥¼ ì´íëë¤.isNaN()í¨ìënumê°ì´ ì«ìê° ìëì§ë¥¼ ê²ì¬í©ëë¤ â ë§ì½ ê·¸ë ë¤ë©´, ì´ê²ìtrue를 ë°ííê³ , ìëë¼ë©´,false를 ë°íí©ëë¤.ë§ì½ ê²ì¬ê°
false를 ë°ííë¤ë©´,numê°ì ì«ìì ëë¤. ê·¸ë¬ë¯ë¡, 문ì¥ì´ ê·¸ ì«ìì ì ê³±, ì¸ì ê³±, ê·¸ë¦¬ê³ í©í 리ì¼ì ìì íë ë¨ë½ ìì ë´ë¶ì ì¶ë ¥ë©ëë¤. 문ì¥ìsquared(),cubed(), 그리ê³factorial()í¨ì를 ì구ë ê°ì ê³ì°í기 ìí´ í¸ì¶í©ëë¤. -
ì½ë를 ì ì¥íê³ , ë¸ë¼ì°ì ìì ë¡ëí í, ìëí´ ë³´ì¸ì.
ì°¸ê³ : ë§ì½ ì´ ìì 를 ìì íë ë° ì´ë ¤ìì´ ìë¤ë©´, ìì ë¡ê² GitHubì ìë ìì±ë ë²ì ê³¼ ë¹êµí´ ë³´ê±°ë (ì¤ì ë¡ ìëíë 모ìµë ë³´ì¸ì), ì°ë¦¬ìê² ëìì ìì²í´ ë³´ì¸ì.
ì´ì ì¬ë¬ë¶ì ì°¨ë¡ì ëë¤!
ì´ ìì ìì, ì°ë¦¬ë ì¬ë¬ë¶ì´ ë ê°ì í¨ì를 ìì±í´ ë³´ê³ ë¼ì´ë¸ë¬ë¦¬ì ì¶ê°í기를 ìí©ëë¤. ì«ìì ì 곱근ì´ë ì¸ì 곱근ì ì´ë ì¸ì? í¹ì 주ì´ì§ ë°ì§ë¦ì ìì ëë ë ì´ë ì¸ì?
ëªëª ì¶ê°ì ì¸ í¨ìì ê´ê³ë íë¤:
- í¨ì ë´ë¶ì ì¤ë¥ ì²ë¦¬(error handling)를 ìì±íë ë¤ë¥¸ ìì 를 ë³´ì¸ì. íìì ì¸ ë§¤ê°ë³ìê° íì¸ëë ê²ê³¼, ì íì ì¸ ë§¤ê°ë³ìê° ëªëª ì¢ ë¥ì 주ì´ì§ 기본 ê°ì ê°ì§ê³ ìë ê²ì ê²ì¬íë ê²ì ì¼ë°ì ì¼ë¡ ì¢ì ìê°ì ëë¤. ì´ ë°©ë²ì¼ë¡, ì¬ë¬ë¶ì íë¡ê·¸ë¨ì´ ì¤ë¥ë¥¼ ë°ììí¬ ê°ë¥ì±ì ë ì ì´ì§ ê²ì ëë¤.
- í¨ì ë¼ì´ë¸ë¬ë¦¬(function library)를 ë§ëë ê²ì ëí´ ìê°í´ ë³´ì¸ì. íë¡ê·¸ëë° ê²½ë ¥ì´ ë ì¤ë ê°ìë¡, ì¬ë¬ë¶ì ëê°ì ì¢ ë¥ì ê²ë¤ì ê³ì ê·¸ë¦¬ê³ ê³ì íê² ë ê²ì ëë¤. ì´ë° ì¢ ë¥ì ê²ë¤ì í기 ìí ì¬ë¬ë¶ë§ì ì í¸ë¦¬í° í¨ì ë¼ì´ë¸ë¬ë¦¬ë¥¼ ë§ëë ê²ì ì¢ì ìê°ì ëë¤. ì¬ë¬ë¶ì ì´ê²ë¤ì ìë¡ì´ ì½ëì ë³µì¬í´ ë£ê±°ë, ì¬ì§ì´ë ë¨ìí íìí ê³³ ì´ëë HTML íì´ì§ì ì ì©í ìë ììµëë¤.
ì¤ë ¥ì íê°í´ ë³´ì¸ì!
ì´ ë¬¸ì를 ëê¹ì§ ì½ì¼ì ¨ì§ë§, ì¤ìí ê²ë¤ì ì¬ì í 기ìµíê³ ê³ì ê°ì? ë¤ì 문ì를 ì½ê¸° ì ì ì´ ë¬¸ìì ë´ì©ì ì íìµíê³ ì´í´íì ¨ëì§ íì¸íì¤ ì ììµëë¤ â ì¤ë ¥ì íê°í´ ë³´ì¸ì: í¨ì.
ê²°ë¡
ì´ì ëë¬ìµëë¤ â í¨ìë ì¦ê²ê³ , ì주 ì ì©íê³ , ê·¸ë¦¬ê³ ë¹ë¡ í¨ìì 문ë²ê³¼ 기ë¥ì±ì ëí´ ì´ì¼ê¸°í ê²ë¤ì´ ë§ì§ë§, ê·¸ê²ë¤ì 꽤 ì´í´í기 ì½ìµëë¤.
ë§ì½ ëë ì§ ì´í´íì§ ëª»í ê² ìë¤ë©´, ìì ë¡ê² ì´ ë¬¸ì를 ë¤ì ì½ê±°ë, 문ìí기ìì ëìì ìì²í´ ë³´ì¸ì.
ê°ì´ 보기
- í¨ì ê³ ê¸ â ëì± ê³ ê¸ì í¨ìì ê´ë ¨ë ì 보를 ë¤ë£¨ë ìì¸í ê°ì´ë
- JavaScriptììì ì½ë°±(callback) í¨ì â ì¼ë°ì ì¸ JavaScript í¨í´ì í¨ì를 ë¤ë¥¸ í¨ì ë´ë¶ì ì¸ì(argument)ë¡ì ì ë¬íë ê²ì ëë¤. ì´ê²ì ê·¸ë¦¬ê³ ì 첫ë²ì§¸ í¨ì ë´ë¶ìì í¸ì¶ë©ëë¤. ì´ê²ì ì´ ì½ì¤ì ë²ì를 ì¡°ê¸ ëì´ìì§ë§, 머ì§ìì ê³µë¶í ê°ì¹ë ììµëë¤.