ì½ë©ì ìì´ì ë íëì íìì ì¸ ê°ë ì í¨ìì¸ë°, ì´ë íëì ì¼ì íë ì½ë ì¡°ê°ì ì ìë ë¸ë¡ ìì ì ì¥íê³ , ê°ì ì½ë를 ì¬ë¬ ë² íì´íí기보ë¤ë, íëì ì§§ì ëª ë ¹ì ì¬ì©íì¬ ì¬ë¬ë¶ì´ ê·¸ í¨ìê° íìí ë ì¸ì ë ì§ ê·¸ ì½ë를 í¸ì¶í ì ìê² í©ëë¤. ì´ ë¬¸ììì ì°ë¦¬ë 기본 문ë²(syntax), ì´ë»ê² í¨ì를 í¸ì¶íê³ (invoke) ì ìíëì§, ì¤ì½í(scope), ê·¸ë¦¬ê³ ë§¤ê°ë³ì(parameter)ì ê°ì í¨ì ë¤ì ìë íµì¬ì ì¸ ê°ë ë¤ì í구í ê²ì ëë¤.
íìí ì¬ì ì§ì: 기본ì ì¸ ì»´í¨í° íì© ë¥ë ¥, HTMLê³¼ CSSì 기본ì ì¸ ì´í´, JavaScript 첫 ë¨ê³. 목í: JavaScript í¨ìì 기본 ê°ë ì ì´í´í©ëë¤. í¨ìë ì´ëìì ì°¾ì ì ìëì?JavaScript ì´ëìë í¨ì를 ì°¾ì ì ììµëë¤. ì¬ì¤, ì°ë¦¬ë ì§ê¸ê¹ì§ ìì ìì í¨ì를 ê³ì ì¬ì©í´ììµëë¤. í¨ìì ëí´ì ì주 ë§ì´ ë§í´ì¤ì§ ììì ë¿ì´ì£ . ê·¸ë¬ë ì´ì í¨ìì ëí´ì ë¶ëª íê² ë§íê³ , ì¤ì ë¡ ë¬¸ë²ì ííí ëê° ëììµëë¤.
for loop, while ê³¼ do...while loop, ëë if...else문과 ê°ì ì¼ë°ì ì¸ ë´ì¥ ì¸ì´ 구조를 ì¬ì©íì§ ìê³ â ()
âê°ì ê´í¸ ìì ì¬ì©íë¤ë©´ ì¬ë¬ë¶ì í¨ì를 ì¬ì©íê³ ìë ê²ëë¤.
ì°ë¦¬ë ì´ ì½ì¤ìì ë§ì ë¸ë¼ì°ì ë´ì¥(built-in) í¨ì를 ì¬ì©í´ììµëë¤. ì를 ë¤ì´, ì°ë¦¬ê° ë§¤ë² í ì¤í¸ 문ìì´ì ì¡°ìí ëë§ë¤:
var myText = "I am a string";
var newString = myText.replace("string", "sausage");
console.log(newString);
// the replace() string function takes a string,
// replaces one substring with another, and returns
// a new string with the replacement made
ëë ì°ë¦¬ê° ë°°ì´ì ì¡°ìí ëë§ë¤:
var myArray = ["I", "love", "chocolate", "frogs"];
var madeAString = myArray.join(" ");
console.log(madeAString);
// the join() function takes an array, joins
// all the array items together into a single
// string, and returns this new string
ëë ì°ë¦¬ê° 무ììì ì«ì를 ìì±í ëë§ë¤:
var myNumber = Math.random();
// the random() function generates a random
// number between 0 and 1, and returns that
// number
...ì°ë¦¬ë í¨ì를 ì¬ì©íê³ ììì´ì!
ì°¸ê³ : ë§ì½ íìíë¤ë©´, ì´ ê¸°ë¥ë¤ì ë¤ì ìµìí´ì§ê¸° ìí´ ì¬ë¬ë¶ì ë¸ë¼ì°ì JavaScript ì½ìì ìì ë¡ê² ì´ ì½ëë¤ì ì ë ¥í´ ë³´ì¸ì.
JavaScript ì¸ì´ë ì¬ë¬ë¶ ì¤ì¤ë¡ ì½ë ì 체를 ì ì íì ìì´, ì ì©í ê²ë¤ì í ì ìê² í´ì£¼ë ë§ì ë´ì¥ í¨ì를 ê°ì§ê³ ììµëë¤. ì¬ì¤, ë¸ë¼ì°ì ë´ì¥ í¨ì를 í¸ì¶("í¨ì를 ì¤ííë¤(run ëë execute)"ë ë§ì ë©ìê² "í¸ì¶íë¤(invoke)"ë¼ê³ í기ë í©ëë¤)í ë í¸ì¶íë ì¼ë¶ ì½ëë JavaScriptë¡ ìì±ë ì ìììµëë¤ â ì´ë¬í í¨ì ì¤ ìë¹ìë 백그ë¼ì´ë ë¸ë¼ì°ì ì½ëì ì¼ë¶ë¥¼ í¸ì¶íê³ ìì¼ë©°, ì´ë JavaScriptì ê°ì ì¹ ì¸ì´ê° ìëë¼ ëì²´ë¡ C++ì ê°ì ì ìì¤ ìì¤í ì¸ì´ë¡ ìì±ë©ëë¤.
ëªëª ë¸ë¼ì°ì ë´ì¥í¨ìë íµì¬(core) JavaScript ì¸ì´ì ì¼ë¶ê° ìëë¼ë ê²ì ì ë íì¸ì. ëªëªì ë¸ë¼ì°ì APIì ì¼ë¶ë¡ì¨ ì ìëì´ ìëë°, ëì± ë§ì 기ë¥ì±ì ì ê³µí기 ìí´ ê¸°ë³¸(default) ì¸ì´ì ìì ê°ë°ëììµëë¤ (ìì ì½ì¤ìì ë ìì¸í ì¤ëª ì ë³¼ ì ììµëë¤). ë¸ë¼ì°ì API를 ë¤ë£¨ë ë²ì ëì¤ì ë ì´í´ë³´ëë¡ íê² ìµëë¤.
í¨ì ë ë©ìëíë¡ê·¸ë머ë¤ì ê°ì²´(object)ì ë¶ë¶ì¸ í¨ì를 ë©ìë(method)ë¼ê³ ë¶ë¦ ëë¤. ì¬ë¬ë¶ì ìì§ êµ¬ì±ë(structured) JavaScript ê°ì²´ì ë´ë¶ ìëì ëí´ì ë°°ì¸ íìë ììµëë¤. ì°¨íì 모ëìì ê°ì²´ì ë´ë¶ ìëê³¼, ì´ë»ê² ê°ì²´ë¥¼ ìì±íëì§ì ëí 모ë ê²ì ë°°ì¸ ì ììµëë¤. ì°ì ì, ì°ë¦¬ë ë©ìë ë í¨ìì ëí´ ìì ì ìë í¼ëì ë¨ì§ ì 리í기를 ìí©ëë¤. â ì¹ ììì ì´ì© ê°ë¥í ê´ë ¨ë 리ìì¤ë¤ì ì´í´ë³´ë©´ì ì¬ë¬ë¶ì ë ì©ì´ë¥¼ ë§ë ê°ë¥ì±ì´ ììµëë¤.
ì°ë¦¬ê° ì§ê¸ê¹ì§ ì¬ì©í´ ìë ë´ì¥ë(built-in) ì½ëë ë ííë¡ ëíë©ëë¤. ë°ë¡ í¨ìì ë©ìëì ëë¤. ì¬ë¬ë¶ì ë´ì¥ í¨ìì ì ì²´ 목ë¡ê³¼, ë´ì¥ ê°ì²´ì ê·¸ë¤ì í´ë¹íë ë©ìëë¤ ëí ì¬ê¸°ì íì¸í ì ììµëë¤.
ì¬ë¬ë¶ì ëí ë§ì ì¬ì©ì ì ì í¨ì(custom functions)ë¤ì ì´ ì½ì¤ìì ì§ê¸ê¹ì§ ë´ ììµëë¤. â ë¸ë¼ì°ì ë´ë¶ìì ì ìë ê² ìëë¼, ì¬ë¬ë¶ì ì½ëìì ì ìë í¨ì ë§ì
ëë¤. ê´í¸ ë°ë¡ ìì ìë ì¬ì©ì ì ì ì´ë¦ì ë´¤ì ëë§ë¤, ì¬ë¬ë¶ì ì¬ì©ì ì ì í¨ì를 ì¬ì©íê³ ììë ê²ì
ëë¤. ë°ë³µë¬¸(loops) 문ìì random-canvas-circles.html ìì (ì ì²´ ìì¤ ì½ë ëí ë³´ì¸ì)ìì, ì°ë¦¬ë ë¤ìê³¼ ê°ì ì¬ì©ì ì ì draw()
í¨ì를 í¬í¨íììµëë¤.
function draw() {
ctx.clearRect(0, 0, WIDTH, HEIGHT);
for (var 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();
}
}
ì´ í¨ìë <canvas>
ìì ìì 100ê°ì ììì ìì 그립ëë¤. ìí ëë§ë¤ ìë ì½ëë¡ í¨ì를 í¸ì¶í ì ììµëë¤.
ì°ë¦¬ê° ì´ê²ì ë°ë³µí기를 ìí ëë§ë¤ 모ë ì½ë를 ë ìì±íì§ ìê³ ë§ì´ì£ . ê·¸ë¦¬ê³ í¨ìë ì¬ë¬ë¶ì´ ìíë ì½ë를 무ìì´ë ì§ê°ì í¬í¨í ì ììµëë¤. ì¬ë¬ë¶ì ì¬ì§ì´ ë¤ë¥¸ í¨ìë¤ì í¨ì ë´ë¶ììë¶í° í¸ì¶í ì ììµëë¤. ìì ììë ìëì ê°ì´ ì ìë random()
í¨ì를 ì¸ ë²ì´ë í¸ì¶íê³ ìì£ .
function random(number) {
return Math.floor(Math.random() * number);
}
ë¸ë¼ì°ì ì ë´ì¥ Math.random() í¨ìë ì¤ì§ 0ê³¼ 1ì¬ì´ì 무ìì ìì를 ìì±í기 ë문ì ì°ë¦¬ë ì´ í¨ìê° íìíìµëë¤. ì°ë¦¬ë 0ê³¼ ëª ìë ì«ì ì¬ì´ì 무ìì ì ì를 ìíìµëë¤.
í¨ì í¸ì¶ì§ê¸ê¹ì§ 꽤 ì ë°ë¼ì¨ ê±° ê°ìë° í¹ì 모르ëê¹ ë§í´ 주ìë©´... ì ìë í¨ì를 ìëìí¤ê¸° ìí´ì í¨ì를 'í¸ì¶' í´ì¼ ë¼ì. í¨ì í¸ì¶ì í¨ìì ì´ë¦ì ê´í¸ì í¨ê» ì½ë ë´ì ì ì´ ì£¼ë©´ ë©ëë¤.
function myFunction() {
alert("hello");
}
myFunction();
// calls the function once
ì°¸ê³ : ì´ ííì í¨ì ìì±ì ëí í¨ì ì ì¸(function declaration)ì¼ë¡ë ìë ¤ì ¸ ììµëë¤. ì´ê²ì ì¸ì ë í¸ì´ì¤í (hoisting)ëì´ì, ì¬ë¬ë¶ì í¨ì를 í¨ì ì ì ììì í¸ì¶í ì ìê³ ì´ê²ì ì ìëí ê²ì ëë¤.
ìµëª í¨ìì¬ë¬ë¶ì ì¡°ê¸ ë¤ë¥¸ ë°©ìì¼ë¡ ì ìëê±°ë í¸ì¶ëë í¨ì를 본 ì ìì ê±°ìì. ì´ì ê¹ì§ ì°ë¦¬ë ì´ë° ìì¼ë¡ í¨ì를 ìì±íì£ :
function myFunction() {
alert("hello");
}
íì§ë§ ì´ë¦ ìë í¨ì ëí ë§ë¤ ì ìëµëë¤.
function() {
alert('hello');
}
ì´ê±´ ìµëª í¨ìë¼ê³ ë¶ë ¤ì. ì´ë¦ì´ ìë¤ë ë»ì´ì£ ! ìµëª í¨ìë ì¤ì¤ë¡ ë ì´ì©ì§ 못 í´ì. ìµëª í¨ìë ì£¼ë¡ ì´ë²¤í¸ í¸ë¤ë¬ì ì¬ì©ë©ëë¤. ìëì ììë í¨ì ë´ì ì½ëê° ê´ë ¨ë ë²í¼ì í´ë¦í¨ì ë°ë¼ ìëíë¤ë 걸 ë³´ì¬ì£¼ì£ .
var myButton = document.querySelector("button");
myButton.onclick = function () {
alert("hello");
};
ìì ììë íì´ì§ ìì í´ë¦ì ìí´ <button>
ìì를 íìë¡ í©ëë¤. ì¬ë¬ë¶ì ì½ì¤ë¥¼ ê±°ì¹ë©° ì´ë° 구조ì ì½ë를 꽤 ë´ìì ê±°ìì. ë¤ì 문ììì ë ë§ì 걸 ë°°ì ë³´ì구ì.
ì¬ë¬ë¶ì ë³ì ìì ìµëª í¨ì를 ë£ì ì ìì´ì. ììì ëë¤.
var myGreeting = function () {
alert("hello");
};
ì°¸ê³ : ì´ ííì í¨ì ìì±ì ëí í¨ì ííì(function expression)ì¼ë¡ë ìë ¤ì ¸ ììµëë¤. í¨ì ì ì¸ê³¼ë ë¤ë¥´ê², í¨ì ííìì í¸ì´ì¤í ëì§ ììµëë¤.
ì´ í¨ìë ì´ë° ìì¼ë¡ í¸ì¶ëì£ :
ì´ ë°©ë²ì í¨ê³¼ì ì¼ë¡ í¨ìì ì´ë¦ì ë¶ì¬íê³ ìì´ì. ì¬ë¬ë¶ì ë¤ì¤ ë³ìë¤ì í¨ì를 í ë¹í ìë ìì£ . ì를 ë¤ë©´,
var anotherGreeting = function () {
alert("hello");
};
ì´ì í¨ìë ì´ë° ìì¼ë¡ë í¸ì¶ì´ ê°ë¥í´ì¡êµ¬ì.
myGreeting();
anotherGreeting();
íì§ë§ ìì ë°©ìì ì¬ë í·ê°ë¦¬ê² ë§ë¤ì´ì. ê·¸ëê¹ ì°ì§ ë§ìë¤! í¨ì를 ë§ë¤ ë ìëì íí를 ê³ ìíë ê² ëìì.
function myGreeting() {
alert("hello");
}
ìµëª í¨ìë ì´ë²¤í¸ ë°ìì ë°ë¥¸ ìë§ì ì½ë를 ìëìí¤ê¸° ìí´ ì£¼ë¡ ì°ì´ê² ë¼ì. ì´ë²¤í¸ í¸ë¤ë¬ë¥¼ ì¬ì©í ë²í¼ì í´ë¦ê³¼ ê°ì ìí©ì ë§ì´ì£ . ì, ê·¸ ì½ëë ìëì ê°ì´ ìê²¼ì´ì.
myButton.onclick = function () {
alert("hello");
// ë´ê° ìíë ë§í¼ ì¼ë§ë ì§
// ì¬ê¸°ì ì½ë를 ìì±íë©´ ë©ëë¤!
};
í¨ì 매ê°ë³ì
ëªëª í¨ìë í¸ì¶ì ìí´ ë§¤ê°ë³ì를 íìë¡ íë ê²½ì°ê° ììµëë¤. ì´ê²ë¤ì í¨ì ê´í¸ ìì í¬í¨ë íìê° ìë ê°ë¤ì¸ë°, ì¬ë°ë¥´ê² ëìí기 ìí´ íìí©ëë¤.
ì°¸ê³ : 매ê°ë³ìë ì¢ ì¢ arguments, properties, ì¬ì§ì´ attributes ë¼ê³ ë ë¶ë ¤ì.
ì를 ë¤ì´, ë¸ë¼ì°ì ì ë´ì¥ í¨ìì¸ Math.random()ì ì´ë¤ 매ê°ë³ìë íìë¡ íì§ ììµëë¤. ì´ í¨ìë í¸ì¶ëë©´ ë 0ê³¼ 1ì¬ì´ì 무ìì ì를 ë°íí´ ì£¼ì£ .
var myNumber = Math.random();
íì§ë§ ë¸ë¼ì°ì ì ë´ì¥ 문ìì´ replace() í¨ìë ë ê°ì 매ê°ë³ì를 íìë¡ í©ëë¤. ëì²´ë 문ìì ëì²´í 문ìì£ .
var myText = "I am a string";
var newString = myText.replace("string", "sausage");
ì°¸ê³ : ì¬ë¬ ê°ì 매ê°ë³ìë 콤ë§ì ìí´ êµ¬ë¶ëì´ì§ëë¤.
매ê°ë³ìë ì´ë°ê¸ ì í ì¬íì´ê¸°ë í©ëë¤. ì¬ë¬ë¶ì´ ëª ìí´ ì¤ íìê° ìë¤ë ë»ì´ì£ . ê·¸ë° ê²½ì°, ì¼ë°ì ì¼ë¡ í¨ìë 기본 기ë¥ì ìíí©ëë¤. ì를 ë¤ì´, ë°°ì´ê³¼ ê´ë ¨ë join() í¨ìì 매ê°ë³ìê° ê·¸ë ì£ .
var myArray = ["I", "love", "chocolate", "frogs"];
var madeAString = myArray.join(" ");
// returns 'I love chocolate frogs'
var madeAString = myArray.join();
// returns 'I,love,chocolate,frogs'
ê²°í©(joining)/íì (delimiting)íë 문ì를 ëª ìí ì´ë í 매ê°ë³ìë í¬í¨ëì§ ìëë¤ë©´, 콤ë§ê° 기본ì¼ë¡ ì¬ì©ë ê²ì ëë¤.
í¨ì ì¤ì½íì ì¶©ë(conflicts)ì°ë¦¬ 'ì¤ì½í(scope)'ì ëí´ ìê¸°í´ ë³¼ê¹ì? 'ì¤ì½í'ë í¨ìì ê´ë ¨ë ë§¤ì° ì¤ìí ê°ë ì ëë¤. í¨ì를 ìì±í ë, ë³ì ë° í¨ì ë´ ì ìë ì½ëë¤ì ê·¸ë¤ë§ì ë¶ë¦¬ë 'ì¤ì½í' ìì ì리íê² ë©ëë¤. ê·¸ ë§ì¸ ì¦ì¨, ë¤ë¥¸ í¨ìì ë´ë¶ë ì¸ë¶ í¨ìì ì½ëê° ì ê·¼í ì ìë ê·¸ë¤ë§ì 구íì ê°í ìë¤ë ë»ì ëë¤.
í¨ì ë°ê¹¥ì ì ì¸ë ê°ì¥ ìì ë 벨ì ì¤ì½í를 'ì ì ì¤ì½í(global scope)' ë¼ê³ ë¶ë¦ ëë¤.ì ì ì¤ì½í ë´ì ì ìë ê°ë¤ì ì´ë ì½ëë ì ê·¼ì´ ê°ë¥í©ëë¤.
JavaScriptë ë¤ìí ì´ì ë¡ ì¸í´ ì´ì ê°ì´ ì¤ì ëì´ ìì§ë§, 주ë¡ë ìì ì±ê³¼ 구조 ë문ì ëë¤. ì´ë¤ ëìë ì¬ë¬ë¶ì ë³ìê° ì´ë ì½ëë ì ê·¼ ê°ë¥í ë³ìê° ëë 걸 ìì¹ ìì ê²ëë¤. ì¬ë¬ë¶ì´ ì´ëê°ìì ë¶ë¬ì¨ ì¸ë¶ ì¤í¬ë¦½í¸ê° 문ì 를 ì¼ì¼í¬ ìë ìì¼ëê¹ì. ì¸ë¶ ì¤í¬ë¦½í¸ì ì½ëì ê°ì ë³ì ì´ë¦ì ì¬ì©íë©´ ì¶©ëì´ ì¼ì´ëê² ë¼ì. ì´ê±´ ì ìì ì¼ ìë ìê³ , ìë ë ë¨ìí ì°ì°ì´ê² ì£ .
ì를 ë¤ì´ , ì¬ë¬ë¶ìê² ë ê°ì ì¸ë¶ JavaScript íì¼ì í¸ì¶íë HTMLì´ ìë¤ê³ ì³ì. ê·¸ ëì ê°ì ì´ë¦ì¼ë¡ ì ìë ë³ìì í¨ì를 ì¬ì©íê³ ììµëë¤.
<!-- Excerpt from my HTML -->
<script src="first.js"></script>
<script src="second.js"></script>
<script>
greeting();
</script>
// first.js
var name = "Chris";
function greeting() {
alert("Hello " + name + ": welcome to our company.");
}
// second.js
var name = "Zaptec";
function greeting() {
alert("Our company is called " + name + ".");
}
ì¬ë¬ë¶ì´ í¸ì¶íê³ ì¶ì ë í¨ì 모ë greeting()
ì´ì§ë§, ì¬ë¬ë¶ì ì¤ì§ first.js
íì¼ì greeting()
í¨ììë§ ì ê·¼í ì ìì ë¿ì
ëë¤ (ëë²ì§¸ ê²ì 무ìë©ëë¤). ì¶ê°ì ì¼ë¡, second.js
íì¼ìì let
í¤ìëë¡ name
ë³ì를 ë ë²ì§¸ë¡ ì ì¸íë ¤ê³ ìëíë ê²ì ì¤ë¥ë¥¼ ë³ìµëë¤.
ì°¸ê³ : ìì 를 GitHubìì ë³¼ ì ììµëë¤. (ìì¤ ì½ë ëí ë³¼ ì ììµëë¤).
í¨ìì ì¼ë¶ë¥¼ ì½ë ìì ê°ëë ê²ì ì´ë¬í 문ì 를 í¼í ì ìê³ , ê°ì¥ ì¢ì ë°©ë²ì´ë¼ ì¬ê²¨ì§ëë¤.
ë물ì ê°ë¤ì. ì¬ì, ì¼ë£©ë§, í¸ëì´, ê·¸ë¦¬ê³ íê·ì ìì ë¤ë§ì ì¸í리 ìì ìì¼ë©°, ê·¸ë¤ì ì¸í리 ë´ë¶ì ìë ê²ë§ ê±´ë릴 ì ìì´ì. í¨ì ì¤ì½íì²ë¼ ë§ì´ì£ . ë§ì½ ë물ë¤ì´ ë¤ë¥¸ ì¸í리 ìì¼ë¡ ë¤ì´ê° ì ììë¤ë©´, 문ì ê° ìê²¼ì ê²ëë¤. ì¢ê²ë ë¤ë¥¸ ëë¬¼ì´ ë¯ì 거주 íê²½ìì ë¶í¸í¨ì ëë¼ë ì ëê² ì£ . ì¬ìë í¸ëì´ê° íê·ì 물기 ë§ê³ ì¶ì´ ìì ììì ëì°í¨ì ëë¼ë¯ì´ì. íì§ë§ ìµì ì ìí©ì ì¬ìë í¸ëì´ê° íê·ì ë¨¹ì´ ì¹ì¸ì§ë ëª¨ë¥´ì£ !
ì¬ì¡ì¬ë ì ì ì¤ì½íì ê°ìµëë¤. ê·¸ë¤ì 모ë ì¸í리ì ë¤ì´ê° ì ìê³ , 먹ì´ë¥¼ ë³´ì¶©íê³ , ìí ë물ë¤ì ëë³¼ ì ìì´ì.
ì§ì í´ë³´ê¸°: ì¤ì½íë ëìì¤ì½í를 ì¤ëª í기 ìí´ ì¤ì½í ì¬ì©ì ì¤ë¡ë¥¼ íë² ë´ ìë¤.
먼ì , 주ì´ì§ function-scope.html ìì ì ë³µì¬ë³¸ì ë§ëì¸ì. ìì ìë 2ê°ì í¨ì a()
ì b()
, ê·¸ë¦¬ê³ 3ê°ì ë³ì â x
, y
, ì z
âê° ììµëë¤. ê·¸ ì¤ 2ê°ë í¨ì ìì ì ìëì´ ìì¼ë©°, 1ê°ë ì ì ì¤ì½íì ì ìëì´ ììµëë¤. ì´ê²ì ëí ì¸ ë²ì§¸ í¨ì output()
ì í¬í¨íê³ ìëë°, ì´ê±´ íëì 매ê°ë³ìë§ ë°ì¼ë©°, íì´ì§ì ë¨ë½ ìì ê·¸ê²ì ì¶ë ¥í©ëë¤.
ìì 를 ì¸í°ë· ë¸ë¼ì°ì ë í ì¤í¸ ìëí°ë¥¼ íµí´ ì´ì´ë´ ìë¤.
ë¸ë¼ì°ì ê°ë°ì í´ìì JavaScript ì½ìì ì½ìë¤. JavaScript ì½ììì ìëì ê°ì´ ìì±í´ë³´ì¸ì.
ì¬ë¬ë¶ì ë¸ë¼ì°ì ë·°í¬í¸ì ì¶ë ¥ë ë³ì x
ì ê°ì ë³¼ ì ìì ê²ì
ëë¤.
ì´ì ë¤ìì ì½ìì ì ë ¥í´ ë³´ì¸ì.
ì´ê² 모ëë ë¤ìì ì¤ë¥ë¥¼ 리í´í ê²ì
ëë¤. "ReferenceError: y is not defined". ì´ê²ì ì ê·¸ë´ê¹ì? ìëíë©´ í¨ì ì¤ì½í ë문ì
ëë¤. â y
ì z
ë a()
ì b()
í¨ì ìì ì¡í ìì´ì, output()
ì ì ì ì¤ì½íìì í¸ì¶ëìì ë ê·¸ë¤ìê² ì ê·¼í ì ììµëë¤.
ê·¸ë¬ë, ì´ê²ì´ ë¤ë¥¸ í¨ì ì쪽ìì í¸ì¶ëìì ëë ì´ë¨ê¹ì? a()
ì b()
를 ë¤ìê³¼ ê°ì´ ë³´ì´ëë¡ ìì í´ ë³´ì¸ì.
function a() {
var y = 2;
output(y);
}
function b() {
var z = 3;
output(z);
}
ì½ë를 ì ì¥íê³ ë¸ë¼ì°ì ìì ë¤ì ë¡ëí í, a()
ì b()
í¨ì를 JavaScript ì½ììì í¸ì¶í´ ë³´ì¸ì.
ì¬ë¬ë¶ì íì´ì§ì ì¶ë ¥ë y
ì z
ê°ë¤ì ë³¼ ì ìì ê²ì
ëë¤. output()
í¨ìê° ë¤ë¥¸ í¨ì ì쪽ìì í¸ì¶ëê³ ìì¼ë¯ë¡, ì´ê²ì ì ìëí©ëë¤. â ê°ê°ì ê²½ì°ìì, ê°ì ì¤ì½íìì ê·¸ê²ì´ ì¶ë ¥íê³ ìë ë³ìë¤ì´ ì ìëì´ ìì¼ë¯ë¡. output()
ë ì ì ì¤ì½íìì ì ìëìì¼ë¯ë¡, ì´ í¨ì ìì²´ë ì´ëìë ì´ì©í ì ììµëë¤.
ì´ì ì¬ë¬ë¶ì ì½ë를 ë¤ìê³¼ ê°ì´ ê°±ì í´ ë³´ì¸ì.
function a() {
var y = 2;
output(x);
}
function b() {
var z = 3;
output(x);
}
ì ì¥íê³ ë¤ì ë¡ëí í ì´ê²ì JavaScript ì½ììì ìëí´ ë³´ì¸ì.
ë¸ë¼ì°ì ë·°í¬í¸ì a()
ì b()
모ë x ê°ì ì¶ë ¥í´ì¼ í©ëë¤. ìëíë©´ ë¹ë¡ output()
í¸ì¶ì´ x
ê° ì ìëì´ ìë ê°ì ì¤ì½íì ìì§ ìëë¼ë, x
ë ì ì ë³ìì´ë¯ë¡ 모ë ì½ë ì´ëìë ì´ì© ê°ë¥í기 ë문ì ì´ê²ë¤ì ì ìëí©ëë¤.
ë§ì§ë§ì¼ë¡, ì¬ë¬ë¶ì ì½ë를 ë¤ìê³¼ ê°ì´ ê°±ì í´ ë³´ì¸ì.
function a() {
var y = 2;
output(z);
}
function b() {
var z = 3;
output(y);
}
ì ì¥íê³ ë¤ì ë¡ëí í, JavaScript ì½ììì ë¤ì ë¤ìì ìëí´ ë³´ì¸ì.
ì´ë²ìë a()
ì b()
í¸ì¶ì´ ë ë¤ ì´ ì§ì¦ëë "ReferenceError: z is not defined" ì¤ë¥ë¥¼ 리í´í ê²ì
ëë¤. â ì´ê²ì ìëíë©´ output()
í¸ì¶ê³¼ ê·¸ë¤ì´ ì¶ë ¥í기를 ìëíë ë³ìë¤ì´ ê°ì í¨ì ì¤ì½í ë´ë¶ì ì ìëì´ ìì§ ì기 ë문ì
ëë¤. â ë³ìë¤ì í¨ê³¼ì ì¼ë¡ ì´ í¨ì í¸ì¶ì ë³´ì´ì§ ììµëë¤.
ì°¸ê³ : ê°ì ì¤ì½í ê·ì¹ì ë°ë³µë¬¸ (ì: for() { ... }
)ê³¼ 조건문(conditional blocks) (ì: if() { ... }
)ì ì ì©ëì§ ììµëë¤. â ì´ê²ë¤ì ì주 ë¹ì·íê² ìê²¼ì§ë§, ê°ì ê²ì´ ìëëë¤! í·ê°ë¦¬ì§ ìëë¡ ì¡°ì¬íì¸ì.
í¨ì ë´ë¶ì í¨ìì°¸ê³ : ReferenceError: "x" is not defined ì¤ë¥ë ì¬ë¬ë¶ì´ ë§ì£¼ì¹ ê°ì¥ ì¼ë°ì ì¸ ê²ë¤ ì¤ íëì ëë¤. ë§ì½ ì¬ë¬ë¶ì´ ì´ ì¤ë¥ë¥¼ ì»ìê³ ì¬ë¬ë¶ì´ 문ì ì ë³ì를 ì ìíë¤ë ê²ì´ íì¤íë¤ë©´, ê·¸ê²ì´ ì´ë¤ ì¤ì½í ìì ë¤ì´ìëì§ íì¸í´ ë³´ì¸ì.
ì¬ë¬ë¶ì í¨ì를 ì´ëììë, ì¬ì§ì´ ë¤ë¥¸ í¨ì ë´ììë í¸ì¶í ì ìë¤ë ê²ì ëª ì¬íì¸ì. ì´ê²ì ì¢ ì¢ ì½ë를 ê¹ëíê² ì ì§í기 ìí ë°©ë²ì¼ë¡ì¨ ì¬ì©ë©ëë¤. â ë§ì½ ì¬ë¬ë¶ì´ í¬ê³ ë³µì¡í í¨ì를 ê°ì§ê³ ìë¤ë©´, ë§ì½ ì¬ë¬ë¶ì´ ê·¸ê²ì ëªëªì íì í¨ì(sub-functions)ë¡ ëëë¤ë©´ ì´í´í기 ë ì¬ì¸ ê²ì ëë¤.
function myBigFunction() {
var myValue;
subFunction1();
subFunction2();
subFunction3();
}
function subFunction1() {
console.log(myValue);
}
function subFunction2() {
console.log(myValue);
}
function subFunction3() {
console.log(myValue);
}
í¨ì ë´ë¶ìì ì¬ì©ëê³ ìë ê°ë¤ì´ ì¬ë°ë¥´ê² ì¤ì½í ë´ì ìëì§ íì¤í íì¸ì. ì기ì ììë ReferenceError: myValue is not defined
ì¤ë¥ë¥¼ ëì§ ê²ì¸ë°, ì´ë ìëíë©´ ë¹ë¡ myValue
ë³ìê° í¨ìê° í¸ì¶ëë ê°ì ì¤ì½í ë´ì ì ìëì´ ì긴 íì§ë§, ì´ê²ì í¨ì ì ì (í¨ìê° í¸ì¶ë ë ì¤íëë ì¤ì ì½ë) ë´ë¶ì ì ìëì´ ìì§ ììµëë¤. ì´ê²ì ìëíê² íë ¤ë©´, ì¬ë¬ë¶ì ê°ì í¨ì ë´ë¶ì 매ê°ë³ìë¡ì¨ ë¤ìê³¼ ê°ì´ ì ë¬í´ì¼ë§ í©ëë¤.
function myBigFunction() {
var myValue = 1;
subFunction1(myValue);
subFunction2(myValue);
subFunction3(myValue);
}
function subFunction1(value) {
console.log(value);
}
function subFunction2(value) {
console.log(value);
}
function subFunction3(value) {
console.log(value);
}
ì¤ë ¥ì íê°í´ ë³´ì¸ì!
ì´ ë¬¸ì를 ëê¹ì§ ì½ì¼ì ¨ì§ë§, ì¤ìí ê²ë¤ì ì¬ì í 기ìµíê³ ê³ì ê°ì? ë¤ì 문ì를 ì½ê¸° ì ì ì´ ë¬¸ìì ë´ì©ì ì íìµíê³ ì´í´íì ¨ëì§ íì¸íì¤ ì ììµëë¤ â ì¤ë ¥ì íê°í´ ë³´ì¸ì: í¨ì. ì´ í ì¤í¸ë¤ì ë¤ì ë 문ììì ë¤ë¤ì§ë 기ì ë¤ì ì구íë¯ë¡, ì¬ë¬ë¶ì ê·¸ 문ìë¤ì ì´ í ì¤í¸ë¥¼ ìëí´ ë³´ê¸° ì ì 먼ì ì½ê¸°ë¥¼ ìí ì§ë ëª¨ë¦ ëë¤.
ê²°ë¡ì´ 문ìë, ì¬ë¬ë¶ë§ì ì¬ì©ì ì ì í¨ì ë§ë¤ê¸°ë¥¼ ìµíëë¡ ëê³ ì¤ì ì ì¸ ê²ì ë¤ë£¨ë ë¤ì 문ìì ëí 길ì ë§ë¤ë©°, í¨ì ë¤ì ìë íµì¬ì ì¸ ê°ë ë¤ì í구íìµëë¤.
ê°ì´ 보기RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4