ì´ ì¥ì JavaScriptì 기본 문ë²ê³¼ ë³ì ì ì¸, ìë£í ë° ë¦¬í°ë´ì ë¤ë£¹ëë¤.
기본JavaScriptë 문ë²ì ëë¶ë¶ì Javaì C, C++ë¡ë¶í° ì°¨ì©íê³ ìì¼ë©°, Awk, Perl, Pythonì ìí¥ë ë°ììµëë¤.
JavaScriptë ëì문ì를 구ë³íë©° ì ëì½ë 문ìì ì ì´ì©í©ëë¤. ì를 ë¤ë©´, Früh(ë ì¼ì´ë¡ "ì´ë¥¸")ì ë³ìëª ì¼ë¡ ì¬ì©í ìë ììµëë¤.
var ê°ì = "ë³ì ";
var Früh = "foobar";
íì§ë§ Früh
ë früh
ì ë¤ë¦
ëë¤. ëì문ì를 구ë¶í기 ë문ì
ëë¤.
JavaScriptììë ëª ë ¹ì ëª ë ¹ë¬¸(statement)ì´ë¼ê³ ë¶ë¥´ë©°, ì¸ë¯¸ì½ë¡ (;)ì¼ë¡ 구ë¶í©ëë¤.
ëª ë ¹ë¬¸ì´ í ì¤ì ë¤ ì°¨ì§í ê²½ì°ìë ì¸ë¯¸ì½ë¡ ì´ íìíì§ ììµëë¤. ê·¸ë¬ë í ì¤ì ë ê° ì´ìì ëª ë ¹ë¬¸ì´ íìíë¤ë©´ ë°ëì ì¸ë¯¸ì½ë¡ ì¼ë¡ 구ë¶í´ì¼ í©ëë¤.
ì°¸ê³ : ECMAScriptë ì¸ë¯¸ì½ë¡ ì ìëì¼ë¡ ì½ì í´ ëª ë ¹ë¬¸ì ëë´ë ê·ì¹(ASI)ë ê°ì§ê³ ììµëë¤. (ë ë§ì ì ë³´ë JavaScriptì ì´í 문ë²ì ëí ìì¸í ì°¸ê³ ì를 ì°¸ê³ íì¸ì.)
íì§ë§, ì¸ë¯¸ì½ë¡ ì´ íìíì§ ìì ê²½ì°ë¼ë íì ì¸ë¯¸ì½ë¡ ì¼ë¡ ëë§ì¹ë í¸ì´ ë²ê·¸ ìë°© ì°¨ììì ë ì¢ì ìµê´ì´ë¼ê³ ì¬ê²¨ì§ëë¤.
JavaScriptì ì¤í¬ë¦½í¸ ìì¤ë ì¼ìª½ìì ì¤ë¥¸ìª½ì¼ë¡ íìíë©´ì í í°, ì ì´ ë¬¸ì, ì¤ë°ê¿ 문ì, 주ìì´ë 공백ì¼ë¡ ì´ë£¨ì´ì§ ì ë ¥ ììì ìíì¤ë¡ ë³íë©ëë¤. (ì¤íì´ì¤, í, ì¤ë°ê¿ 문ìë 공백ì¼ë¡ ê°ì£¼ë©ëë¤.)
주ì주ìì 구문ì C++ ë° ë¤ë¥¸ ë§ì ì¸ì´ì ëê°ìµëë¤.
// í ì¤ ì£¼ì
/* ì´ê±´ ë 긴,
* ì¬ë¬ ì¤ ì£¼ìì
ëë¤.
*/
/* ê·¸ë¬ë, /* ì¤ì²©ë 주ìì ì¸ ì ììµëë¤ */ SyntaxError */
주ìì 공백ì²ë¼ íëíë©° ì¤í¬ë¦½í¸ ì¤í ì ë²ë ¤ì§ëë¤.
ì°¸ê³ : ëªëª JavaScript íì¼ì ììë¶ì #!/usr/bin/env node
ì ê°ì ííì 주ì 문ë²ì´ ì°ì´ë ê²ì ë³¼ ì ììµëë¤.
ì´ê²ì í´ìë± ì£¼ì 구문ì´ë¼ê³ íëë°, ì´ í¹ë³í 주ìì ì¤í¬ë¦½í¸ë¥¼ ì¤íí ë ì¸ í¹ë³í JavaScript ì¸í°í리í°ì ê²½ë¡ë¥¼ ì¤ì í ë ì°ì ëë¤. í´ìë± ì£¼ìì ì°¸ê³ íì¬ ìì¸í ë´ì©ì íì¸í ì ììµëë¤.
ì ì¸JavaScriptì ì ì¸ìë 3ê°ì§ ë°©ë²ì´ ììµëë¤.
var
ë³ì를 ì ì¸. ì¶ê°ë¡ ëìì ê°ì ì´ê¸°í.
let
ë¸ë¡ ì¤ì½í ì§ì ë³ì를 ì ì¸. ì¶ê°ë¡ ëìì ê°ì ì´ê¸°í.
const
ë¸ë¡ ì¤ì½í ì½ê¸° ì ì© ìì를 ì ì¸.
ì í리ì¼ì´ì ìì ê°ì ìì§ì ì¸ ì´ë¦ì¼ë¡ ë³ì를 ì¬ì©í©ëë¤. ë³ìëª ì ìë³ì(identifiers)ë¼ê³ ë¶ë¦¬ë©° í¹ì ê·ì¹ì ë°ë¦ ëë¤.
JavaScript ìë³ìë 문ì, ë°ì¤ (_
) í¹ì ë¬ë¬ ê¸°í¸ ($
)ë¡ ììí´ì¼ íë ë°ë©´ ì´íë ì«ì (0
â9
) ì¼ ìë ììµëë¤.
JavaScriptê° ëì문ì를 구ë¶í기ì, 문ìë "A
"ë¶í° "Z
" (ë문ì)ì "a
"ë¶í° "z
" (ì문ì)ê¹ì§ 모ë í¬í¨í©ëë¤.
ISO 8859-1 í¹ì Unicode 문ì(ê°ë ¹ Ã¥
ë ü
)ë ìë³ìì ì¬ì©í ì ììµëë¤. (ì¢ ë ìì¸í ë´ì©ì ì´ ë¸ë¡ê·¸ ê¸ì ì°¸ê³ .) ëí Unicode escape sequencesë ìë³ìì 문ìë¡ ì¬ì©í ì ììµëë¤.
ì ì í ì´ë¦ì¼ë¡ë Number_hits
, temp99
, $credit
ë° _name
ë± ì
ëë¤.
ë³ì ì ì¸ì ìë 3ê°ì§ ë°©ë²ì¼ë¡ ê°ë¥í©ëë¤.
var x = 42
ì ê°ì´ var
í¤ìëë¡ ë³ì를 ì ì¸í ì ììµëë¤. ì´ êµ¬ë¬¸ì ì¤í ë§¥ë½ì ë°ë¼ ì§ì ë° ì ì ë³ì를 ì ì¸íëë° ëª¨ë ì¬ì©ë ì ììµëë¤.let y = 13
ì ê°ì´ const
í¹ì let
í¤ìëë¡ ë³ì를 ì ì¸í ì ììµëë¤. ì´ êµ¬ë¬¸ì ë¸ë¡ ì¤ì½í ì§ì ë³ì를 ì ì¸íëë° ì¬ì©ë ì ììµëë¤. ìë ë³ì ì¤ì½í를 ì°¸ê³ íì¸ì.구조 ë¶í´ í ë¹ êµ¬ë¬¸ì ì¬ì©íì¬ ê°ì²´ 리í°ë´ìì ê°ì í기 ìí´ ë³ì를 ì ì¸í ì ììµëë¤. ì를 ë¤ë©´, let { bar } = foo
. ì´ êµ¬ë¬¸ì bar
ë¼ë ì´ë¦ì ë³ì를 ìì±íê³ foo
ê°ì²´ì ìë ëì¼í ì´ë¦ì í¤ì í´ë¹íë ê°ì ë³ìì í ë¹í©ëë¤.
ê°ë¨í ë³ìì ê°ì í ë¹ í ìë ììµëë¤. ì를 ë¤ì´, x = 42
ì ê°ì 구문ì ì ì¸ëì§ ìì ì ìë³ì를 ë§ëëë¤. ë¿ë§ ìëë¼, JavaScriptì ì격í ê²½ê³ ë¥¼ ë§ë¤ì´ë
ëë¤. ì ì¸ëì§ ìì ì ìë³ìë ìëëì§ ìì ëìì ë§ë¤ì´ë´ê³ ë í©ëë¤. ë°ë¼ì ì ì¸ëì§ ìì ì ìë³ì를 ì¬ì©íë©´ ìë©ëë¤.
ì§ì ë ì´ê¸° ê° ìì´ var
í¹ì let
문ì ì¬ì©í´ì ì ì¸ë ë³ìë undefined
ê°ì ê°ìµëë¤.
ì ì¸ëì§ ìì ë³ìì ì ê·¼ì ìëíë ê²½ì° ReferenceError
ìì¸ê° ë°ìí©ëë¤.
var a;
console.log("a ê°ì " + a); // a ê°ì undefined
console.log("b ê°ì " + b); // b ê°ì undefined
var b;
// ì´ê²ì ìëì 'ë³ì í¸ì´ì¤í
'ì ì½ê¸° ì ìë í¼ëì¤ë¬ì¸ ì ìì
console.log("c ê°ì " + c); // Uncaught ReferenceError: c is not defined
let x;
console.log("x ê°ì " + x); // x ê°ì undefined
console.log("y ê°ì " + y); // Uncaught ReferenceError: y is not defined
let y;
undefined
를 ì¬ì©íì¬ ë³ì ê°ì´ ìëì§ íì¸í ì ììµëë¤. ìë ì½ëìì, input
ë³ìë ê°ì´ í ë¹ëì§ ììê³ if
문ì true
ë¡ íê°í©ëë¤.
var input;
if (input === undefined) {
doThis();
} else {
doThat();
}
undefined
ê°ì ë¶ë¦¬ì¸ ë§¥ë½(context)ìì ì¬ì©ë ë false
ë¡ ëìí©ëë¤. ì를 ë¤ì´, ìë ì½ëë myArray
ììê° undefined
ì´ë¯ë¡ myFunction
í¨ì를 ì¤íí©ëë¤.
var myArray = [];
if (!myArray[0]) myFunction();
undefined
ê°ì ìì¹ ë§¥ë½ìì ì¬ì©ë ë NaN
ì¼ë¡ ë³íë©ëë¤.
var a;
a + 2; // NaNì¼ë¡ íê°
null
ê°ì íê°í ë, ìì¹ ë§¥ë½ììë 0
ì¼ë¡, ë¶ë¦¬ì¸ ë§¥ë½ììë false
ë¡ ëìí©ëë¤. ì를 ë¤ë©´,
var n = null;
console.log(n * 32); // ì½ìì 0 ì¼ë¡ ë¡ê·¸ê° ë¨ì
ë³ì ì¤ì½í
ì´ë¤ í¨ìì ë°ê¹¥ì ë³ì를 ì ì¸íë©´, íì¬ ë¬¸ìì ë¤ë¥¸ ì½ëì í´ë¹ ë³ì를 ì¬ì©í ì ì기ì ì ì ë³ìë¼ê³ í©ëë¤. ë§ì½ í¨ì ë´ë¶ì ë³ì를 ì ì¸íë©´, ì¤ì§ ê·¸ í¨ì ë´ììë§ ì¬ì©í ì ì기ì ì§ì ë³ìë¼ê³ ë¶ë¦ ëë¤.
ECMAScript 2015 ì´ì ì JavaScriptë ë¸ë¡ 문 ì¤ì½íê° ììµëë¤. ê·¸ëì ì¤íë ¤, ë¸ë¡ ë´ì ì ì¸ë ë³ìë ê·¸ ë¸ë¡ ë´ì ì¡´ì¬íë í¨ì(í¹ì ì ì ì¤ì½í)ì ì§ìì ì ëë¤.
ì를 ë¤ì´ì ìëì ì½ëë 5
ë¼ë ë¡ê·¸ê° ë¨ëë°. x
ì ì¤ì½íê° ì ì ë§¥ë½ (í¹ì ì½ëê° í¨ìì ì¼ë¶ë¶ì´ë¼ë©´ í¨ì ë§¥ë½)ì´ê¸° ë문ì
ëë¤. x
ì ì¤ì½íë if
문 ë¸ë¡ì ì íëì§ ììµëë¤.
if (true) {
var x = 5;
}
console.log(x); // 5
ì´ ëìì let
ì ì¸ì ì¬ì©íë©´ ë°ëëë¤ (ECMAScript 2015ì ëì
ë¨).
if (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined
ë³ì í¸ì´ì¤í
ë ë¤ë¥¸ JavaScript ë³ìì í¹ì´í ì ì ìì¸ë¥¼ ë°ì§ ìê³ ë, ëì¤ì ì ì¸ë ë³ì를 참조í ì ìë¤ë ê²ì ëë¤.
ì´ ê°ë
ì í¸ì´ì¤í
(hoisting)ì¼ë¡ ìë ¤ì ¸ ììµëë¤. ì¦ JavaScript ë³ìê° ì´ë¤ ì미ìì í¨ìë 문ì ìµìë¨ì¼ë¡ "ì¬ë ¤ì§ë" (í¹ì "ëì´ì¬ë ¤ì§ë") ê²ì ë§í©ëë¤. íì§ë§, ëì´ì¬ë ¤ì§ ë³ìë undefined
ê°ì ë°íí©ëë¤. ê·¸ëì ì¬ì§ì´ ì´ ë³ì를 ì¬ì© í¹ì 참조í íì ì ì¸ ë° ì´ê¸°ííëë¼ë, ì¬ì í undefined
를 ë°íí©ëë¤.
/**
* Example 1
*/
console.log(x === undefined); // true
var x = 3;
/**
* Example 2
*/
// undefined ê°ì ë°íí¨.
var myvar = "my value";
(function () {
console.log(myvar); // undefined
var myvar = "local value";
})();
ì ìì ë ìë ìì ì ëì¼íê² ë³¼ ì ììµëë¤.
/**
* Example 1
*/
var x;
console.log(x === undefined); // true
x = 3;
/**
* Example 2
*/
var myvar = "my value";
(function () {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
í¸ì´ì¤í
ë문ì, í¨ì ë´ì 모ë var
문ì ê°ë¥í í¨ì ìë¨ ê·¼ì²ì ëë ê²ì´ ì¢ìµëë¤. ì´ ë°©ë²ì ì½ë를 ëì± ëª
ííê² ë§ë¤ì´ì¤ëë¤.
ECMAScript 2015ì let
ê³¼ const
ë ë³ì를 ë¸ë¡ì ìë¨ì¼ë¡ ëì´ì¬ë¦¬ì§ë§ ì´ê¸°ííì§ ììµëë¤. ë³ìê° ì ì¸ë기 ì ì ë¸ë¡ ììì ë³ì를 참조íê² ëë©´ ReferenceError
를 ë°ììí¤ê² ëëë°, ë³ìë ë¸ë¡ ììë¶í° ì ì¸ì´ ì²ë¦¬ë ëê¹ì§ "temporal dead zone"ì ìì¹íê² ë기 ë문ì
ëë¤.
console.log(x); // ReferenceError
let x = 3;
í¨ì í¸ì´ì¤í
í¨ìììë í¨ì ì ì¸ì¼ë¡ë í¸ì´ì¤í ëì§ë§ í¨ì ííìì¼ë¡ë í¸ì´ì¤í ëì§ ììµëë¤.
/* í¨ì ì ì¸ */
foo(); // "bar"
function foo() {
console.log("bar");
}
/* í¨ì ííì */
baz(); // TypeError: baz is not a function
var baz = function () {
console.log("bar2");
};
ì ì ë³ì
ì ì ë³ìë ì¬ì¤ ì ì ê°ì²´ì ìì±(property)ì ëë¤.
ì¹ íì´ì§ìì ì ì ê°ì²´ë window
ì´ë¯ë¡, windows.variable
구문ì íµí´ ì ì ë³ì를 ì¤ì íê³ ì ê·¼í ì ììµëë¤.
ê·¸ ê²°ê³¼, window
í¹ì frame
ì ì´ë¦ì ì§ì íì¬ í window í¹ì frameìì ë¤ë¥¸ window í¹ì frameì ì ì¸ë ì ì ë³ìì ì ê·¼í ì ììµëë¤. ì를 ë¤ì´, phoneNumber
ë¼ë ë³ìê° ë¬¸ìì ì ì¸ë ê²½ì°, iframe
ìì parent.phoneNumber
ë¡ ì´ ë³ì를 참조í ì ììµëë¤.
const
í¤ìëë¡ ì½ê¸° ì ì© ìì를 ë§ë¤ ì ììµëë¤.
ìì ìë³ìì 구문ì ë³ì ìë³ìì ê°ìµëë¤. 문ì, ë°ì¤ì´ë ë¬ë¬ ê¸°í¸ ($
) ë¡ ììí´ì¼ íê³ ë¬¸ì, ì«ìë ë°ì¤ì í¬í¨í ì ììµëë¤.
ììë ì¤í¬ë¦½í¸ê° ì¤í ì¤ì¸ ëì ëì ì íµí´ ê°ì ë°ê¾¸ê±°ë ì¬ì ì¸ë ì ììµëë¤. ê°ì¼ë¡ ì´ê¸°íí´ì¼ í©ëë¤.
ììì ëí ì¤ì½í ê·ì¹ì let
ë¸ë¡ ì¤ì½í ë³ìì ëì¼í©ëë¤. ë§ì½ const
í¤ìëê° ìëµë ê²½ì°ìë, ìë³ìë ë³ì를 ëíë´ë ê²ì¼ë¡ ê°ì£¼ë©ëë¤.
ììë ê°ì ì¤ì½íì ìë í¨ìë ë³ìì ëì¼í ì´ë¦ì¼ë¡ ì ì¸í ì ììµëë¤. ì를 ë¤ì´,
// ì¤ë¥ê° ë°ìí©ëë¤
function f() {}
const f = 5;
// ìì ì¤ë¥ê° ë°ìí©ëë¤
function f() {
const g = 5;
var g;
//statements
}
ê·¸ë¬ë, ììì í ë¹ë ê°ì²´ì ìì±ì ë³´í¸ëì§ ììì ë¤ìì 문ì 문ì ìì´ ì¤íë©ëë¤.
const MY_OBJECT = { key: "value" };
MY_OBJECT.key = "otherValue";
ëí, ë°°ì´ì ë´ì©ë ë³´í¸ëì§ ììì ë¤ìì 문ë 문ì ìì´ ì¤íë©ëë¤.
const MY_ARRAY = ["HTML", "CSS"];
MY_ARRAY.push("JAVASCRIPT");
console.log(MY_ARRAY); //logs ['HTML','CSS','JAVASCRIPT'];
ë°ì´í° 구조 ë° í ë°ì´í° í
ìµì ECMAScript íì¤ì 8ê°ì§ ë°ì´í° íì ì ìí©ëë¤.
7ê°ì§ ìì ë°ì´í° í
true
ì false
null
ì Null
, NULL
í¹ì ë¤ë¥¸ ë³íê³¼ë ë¤ë¦
ëë¤.)42
í¹ì 3.14159
.9007199254740992n
.ê·¸ë¦¬ê³ Object
ì´ë¬í ë°ì´í° íì´ ë¹êµì ë§ì§ ìì§ë§, ì í리ì¼ì´ì
ì ì ì©í 기ë¥ì ìíí ì ììµëë¤. ê°ì²´
ì í¨ì
ë ì¸ì´ì ë¤ë¥¸ 기본 ììì
ëë¤. ê°ì²´ë ê°ì ìí 컨í
ì´ë, í¨ìë ì í리ì¼ì´ì
ì´ ìíí ì ìë ì ì°¨(procedure)ë¡ ìê°í ì ììµëë¤.
JavaScriptë ëì íì§ì (ì í) ì¸ì´ì ëë¤. ì´ë ë³ì를 ì ì¸í ë ë°ì´í° íì ì§ì í íìê° ììì ì미í©ëë¤. ëí ë°ì´í° íì´ ì¤í¬ë¦½í¸ ì¤í ëì¤ íìì ìí´ ìëì¼ë¡ ë³íë¨ì ë»í©ëë¤.
ê·¸ëì, ì를 ë¤ì´, ë¤ìê³¼ ê°ì´ ë³ì를 ì ìí ì ììµëë¤.
ê·¸ë¦¬ê³ ëì¤ì, ëì¼í ë³ìì 문ìì´ ê°ì í ë¹í ìë ììµëë¤. ìëì ê°ì´,
answer = "Thanks for all the fish...";
JavaScriptë ëì íì§ì ì¸ì´ì´ë¯ë¡, ì´ í ë¹ì ì¤ë¥ ë©ìì§ê° ë°ìíì§ ììµëë¤.
ì«ìì '+' ì°ì°ìì«ìì 문ìì´ ê° ì¬ì´ì +
ì°ì°ì를 í¬í¨í ììì, JavaScriptë ì«ì ê°ì 문ìì´ë¡ ë³íí©ëë¤. ì를 ë¤ì´, ìëì ê°ì ë¬¸ì´ ììµëë¤.
x = "The answer is " + 42; // "The answer is 42"
y = 42 + " is the answer"; // "42 is the answer"
ë¤ë¥¸ ì°ì°ì를 í¬í¨í ìì ê²½ì°, JavaScriptë ì«ì ê°ì 문ìì´ë¡ ë³ííì§ ììµëë¤. ì를 ë¤ë©´,
"37" - 7; // 30
"37" + 7; // "377"
문ìì´ì ì«ìë¡ ë³íí기
ì«ì를 ëíë´ë ê°ì´ 문ìì´ë¡ ë©ëª¨ë¦¬ì ìë ê²½ì°, ë³íì ìí ë©ìëê° ììµëë¤.
parseInt
ë ì¤ì§ ì ìë§ ë°ííë¯ë¡, ììììë ì¬ì©ì±ì´ ë¨ì´ì§ëë¤.
ì°¸ê³ : ê²ë¤ê° parseInt
를 ì ì¬ì©í기 ìí´ìë íì ì§ë²(Radix) 매ê°ë³ì를 í¬í¨í´ì¼ í©ëë¤. ì§ë² 매ê°ë³ìë ë³íì ì¬ì©ë ì§ë²ì ì§ì íëë° ì¬ì©ë©ëë¤.
문ìì´ì ì«ìë¡ ë³ííë ëìì +
(ë¨í ëí기) ì°ì°ìì
ëë¤.
'1.1' + '1.1'; // '1.11.1'
(+'1.1') + (+'1.1'); // 2.2
// ì°¸ê³ : ê´í¸ë ëª
íì±ì ìí´ ì¶ê°, íìí ê²ì ìëëë¤.
리í°ë´
JavaScriptìì ê°ì ëíë´ê¸° ìí´ ë¦¬í°ë´ì ì¬ì©í©ëë¤. ì´ë ë§ ê·¸ëë¡ ì¤í¬ë¦½í¸ì ë¶ì¬í ê³ ì ê°ì¼ë¡, ë³ìê° ìëëë¤. ì´ êµ¬íììë ë¤ìê³¼ ê°ì ííì 리í°ë´ì ì¤ëª í©ëë¤.
ë°°ì´ ë¦¬í°ë´ì 0ê° ì´ìì ì(expression) 목ë¡ì
ëë¤. ê° ìì ë°°ì´ ìì를 ëíë´ê³ ëê´í¸([]
)ë¡ ë¬¶ì
ëë¤. ë°°ì´ ë¦¬í°ë´ì ì¬ì©íì¬ ë°°ì´ì ë§ë¤ ë, ê·¸ ììë¡ ì§ì ë ê°ì¼ë¡ ì´ê¸°íëê³ , ê·¸ length
ë ì§ì ë ì¸ìì ê°¯ìë¡ ì¤ì ë©ëë¤.
ìë ìì ë ììê° 3ê°ë¡ length
ê° 3ì¸ coffees
ë°°ì´ì ë§ëëë¤.
let coffees = ["French Roast", "Colombian", "Kona"];
ì°¸ê³ : ë°°ì´ ë¦¬í°ë´ì ì¼ì¢ ì ê°ì²´ ì´ê¸°ì(initializer) ì ëë¤. ê°ì²´ ì´ê¸°ì ì¬ì©í기 ì°¸ê³ .
ë°°ì´ì´ ìµìë¨ ì¤í¬ë¦½í¸ìì 리í°ë´ì ì¬ì©íì¬ ë§ë¤ì´ì§ ê²½ì°, JavaScriptë ë°°ì´ ë¦¬í°ë´ì í¬í¨í ìì íê°í ëë§ë¤ ë°°ì´ë¡ í´ìí©ëë¤. ê²ë¤ê°, í¨ììì ì¬ì©ëë 리í°ë´ì í¨ìê° í¸ì¶ë ëë§ë¤ ìì±ë©ëë¤.
ì°¸ê³ : ë°°ì´ ë¦¬í°ë´ì Array
ê°ì²´ì
ëë¤. Array
ê°ì²´ì ëí ìì¸í ë´ì©ì Array
ì Indexed collections ì°¸ê³ .
ë°°ì´ ë¦¬í°ë´ìì 모ë ìì를 ì§ì í íìë ììµëë¤. ë§ì½ ìë¬ì ë ê°ì ì¼í를 ëë©´, ë°°ì´ì ì§ì ëì§ ìì ìì를 undefined
ë¡ ì±ìëë¤. ë¤ì ìì ë fish
ë°°ì´ì ë§ëëë¤.
let fish = ["Lion", , "Angel"];
ì´ ë°°ì´ì ê°ì´ ìë ë ììì ë¹ ìì íë를 ê°ì§ëë¤.
fish[0]
ì "Lion"fish[1]
ì undefined
fish[2]
ë "Angel"ë§ì½ ìì 목ë¡ì íí(trailing) ì¼íë¡ ëë¸ë¤ë©´, ê·¸ ì¼íë 무ìë©ëë¤.
ë¤ì ìì ìì, ë°°ì´ì length
ë 3ì
ëë¤. myList[3]
ì ììµëë¤. 목ë¡ì ë¤ë¥¸ 모ë ì¼íë ìë¡ì´ ìì를 ëíë
ëë¤.
ì°¸ê³ : íí ì¼íë 구ë²ì ë¸ë¼ì°ì ìì ì¤ë¥ë¥¼ ì ë°í ì ìì¼ë¯ë¡ ì ê±°íëê² ìµì ì ëë¤.
var myList = ["home", , "school", ];
ìë ìì ìì, ë°°ì´ì length
ë 4ì´ë©°, myList[0]
ê³¼ myList[2]
ë ê°ì´ ë¹ ì¡ìµëë¤.
var myList = [, "home", , "school"];
ìë ìì ìì, ë°°ì´ì length
ë 4ì´ë©°, myList[1]
ê³¼ myList[3]
ì ê°ì´ ë¹ ì¡ìµëë¤. ë§ì§ë§ ì¼íë 무ìë©ëë¤.
var myList = ["home", , "school", ,];
ì¶ê° ì¼íì ëìì ì´í´íë ê²ì JavaScript를 ì¸ì´ë¡ì ì´í´íëë° ì¤ìí©ëë¤.
íì§ë§ ì½ë를 ìì±í ëë ë¹ ì§ ììì ê°ì ëª
ìì ì¼ë¡ undefined
ë¡ ì ì¸íë ê²ì´ ì½ëì ëª
íì±ê³¼ ì ì§ë³´ìì±ì ëì
ëë¤.
ë¶ë¦¬ì¸ íì true
ì false
ì 리í°ë´ ê°ì ê°ì§ëë¤.
ì°¸ê³ : ìì ë¶ë¦¬ì¸ ê° true
ë° false
ì Boolean
ê°ì²´ì true ë° false ê°ì í¼ëíì§ ë§ì¸ì.
ë¶ë¦¬ì¸ ê°ì²´ë ìì ë¶ë¦° ë°ì´í° íì ê°ì¸ë ëí¼(wrapper)ì
ëë¤. ë ë§ì ì ë³´ë Boolean
ì ì°¸ê³ íì¸ì.
JavaScript ì«ì 리í°ë´ì ë¤ë¥¸ ì§ë²ì ì ì 리í°ë´ê³¼ 10ì§ìì ë¶ë ììì 리í°ë´ì´ í¬í¨ë©ëë¤.
ì¸ì´ ëª
ì¸ìì ë°ë¥´ë©´ ì«ì 리í°ë´ì ë¶í¸ê° ìì´ì¼ í©ëë¤. ê·¸ë¼ìë ë¶êµ¬íê³ , -123.4
ì ê°ì ì½ë ê´ì°®ìµëë¤. ì«ì 리í°ë´ 123.4
ì ë¨í ì°ì°ì -
ê° ë¶ì ê²ì¼ë¡ í´ìë©ëë¤.
ì ìì BigInt
리í°ë´ì 10ì§ì, 16ì§ì, 8ì§ì ë° 2ì§ìë¡ ííë ì ììµëë¤.
0
ì¼ë¡ ìì(leading zero)íì§ ìë ì«ìì´ë¡ ì´ë£¨ì´ì§ëë¤.0
ì¼ë¡ ììíê±°ë 0o
(í¹ì 0O
)ì¼ë¡ ììíë ì«ìì´ì 8ì§ììì ëíë
ëë¤. 8ì§ì ì ì 리í°ë´ì ì¤ì§ ì«ì 0
-7
ë§ í¬í¨í ì ììµëë¤.0x
(ë 0X
)ë¡ ììíë ì«ìì´ì 16ì§ì ì ì 리í°ë´ ìì ëíë
ëë¤. 16ì§ì ì ìë ì«ì (0
-9
) ë° ë¬¸ì a
-f
, A
-F
를 í¬í¨í ì ììµëë¤. (문ìì ëì문ìë ê·¸ ê°ì ë³ê²½íì§ ììµëë¤. ê·¸ë¬ë¯ë¡ 0xa
= 0xA
= 10
ê·¸ë¦¬ê³ 0xf
= 0xF
= 15
ì
ëë¤.)0b
(ë 0B
)ë¡ ììíë ì«ìì´ì 2ì§ì ì ì 리í°ë´ ìì ëíë
ëë¤. 2ì§ì ì ì 리í°ë´ì ì¤ì§ ì«ì 0
ê³¼ 1
ë§ í¬í¨í ì ììµëë¤.n
ì¼ë¡ ëëë ì«ìì´ì BigInt
리í°ë´ ìì ëíë
ëë¤. ì ì 리í°ë´ì ìì ì´ë¤ ì§ìë ì¬ì©í ì ììµëë¤. 0123n
ê³¼ ê°ì 0
ì¼ë¡ ììíë 8ì§ì 구문ì íì©ëì§ ìì¼ë, 0o123n
ì íì©ë©ëë¤.ë¤ìì ì ì 리í°ë´ ìì ì ëë¤.
0, 117, 123456789123456789n (10ì§ì) 015, 0001, 0o777777777777n (8ì§ì) 0x1123, 0x00111, 0x123456789ABCDEFn (16ì§ì) 0b11, 0b0011, 0b11101001010101010101n (2ì§ì)
ë ë§ì ì ë³´ë ì´í 문ë²ì ì«ì 리í°ë´ë¥¼ ì°¸ê³ íì¸ì.
ë¶ë ììì 리í°ë´ë¶ë ììì 리í°ë´ì ìëì ê°ì ë¶ë¶ì¼ë¡ ì´ë£¨ì´ì§ëë¤.
.
"),ì§ìë¶ë "e
"ë "E
" ë¤ìì ì¤ë©° ë¶í¸("+
"ë "-
")ê° ë¬ë¦´ ì ìë ì ìì
ëë¤. ë¶ë ììì 리í°ë´ì ì ì´ë ì«ì íëì ììì í¹ì "e
"(ë "E
")ê° ìì´ì¼ í©ëë¤.
ë ê°ê²°íê² ì¤ëª íë©´, 구문ì ë¤ìê³¼ ê°ìµëë¤.
[digits].[digits][(E|e)[(+|-)]digits]
ì를 ë¤ë©´,
3.1415926 .123456789 3.1E+12 .1e-23ê°ì²´ 리í°ë´
ê°ì²´ 리í°ë´ì ì¤ê´í¸({}
)ë¡ ë¬¶ì¸ 0ê° ì´ìì¸ ê°ì²´ì ìì±ëª
ê³¼ ê´ë ¨ ê° ì 목ë¡ì
ëë¤.
주ì: 문(statement)ì ììì ê°ì²´ 리í°ë´ì ì¬ì©í´ìë ìë©ëë¤. ì´ë
{
ê° ë¸ë¡ì ììì¼ë¡ í´ìë기 ë문ì ì¤ë¥ë¥¼ ì ë°íê±°ë ìëí ëë¡ ëìíì§ ììµëë¤.
ìëë ê°ì²´ 리í°ë´ì ìì ì
ëë¤. car
ê°ì²´ì 첫째 ììë myCar
ìì±ì ì ìíê³ ë¬¸ìì´ "Saturn"
ì í ë¹í©ëë¤. ë°ë©´ ë째 ììì¸ getCar
ìì±ì í¨ì (carTypes("Honda"))
ì í¸ì¶í ê²°ê³¼ê° ì¦ì í ë¹ë©ëë¤. ì
째 ìì special
ìì±ì 기존 ë³ì (sales
)를 ì¬ì©í©ëë¤.
var sales = "Toyota";
function carTypes(name) {
if (name === "Honda") {
return name;
} else {
return "Sorry, we don't sell " + name + ".";
}
}
var car = { myCar: "Saturn", getCar: carTypes("Honda"), special: sales };
console.log(car.myCar); // Saturn
console.log(car.getCar); // Honda
console.log(car.special); // Toyota
ê²ë¤ê°, ìì±ëª ì¼ë¡ ì«ìë 문ìì´ ë¦¬í°ë´ì ì¬ì©íê±°ë ëë¤ë¥¸ ê°ì²´ 리í°ë´ ë´ë¶ì ê°ì²´ë¥¼ ì¤ì²©í ìë ììµëë¤. ìë ìì ë ì´ ìµì ì ì¬ì©í©ëë¤.
var car = { manyCars: { a: "Saab", b: "Jeep" }, 7: "Mazda" };
console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda
ê°ì²´ ìì±ëª ì ë¹ ë¬¸ìì´ í¬í¨ ì´ë¤ 문ìì´ë ë ì ììµëë¤. ìì±ëª ì´ ì í¨í JavaScript ìë³ìë ì«ìê° ìë ê²½ì°, ë°ì´íë¡ ë¬¶ì¬ì¼ í©ëë¤.
ëí ì í¨í ìë³ìê° ìë ìì±ëª
ì ì (.
) ìì±ì¼ë¡ ì ê·¼í ì ììµëë¤. ëì ë°°ì´ ê°ì í기ë²("[]
")ì¼ë¡ ì ê·¼íê³ ê°ì ì¤ì í ì ììµëë¤.
var unusualPropertyNames = {
'': 'An empty string',
'!': 'Bang!'
}
console.log(unusualPropertyNames.''); // SyntaxError: Unexpected string
console.log(unusualPropertyNames['']); // An empty string
console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
console.log(unusualPropertyNames['!']); // Bang!
í¥ìë ê°ì²´ 리í°ë´
ES2015ìì, ê°ì²´ 리í°ë´ì 구ì±ìì íë¡í íì
ì¤ì , foo: foo
í ë¹ì ìí ë¨ì¶ í기, ë©ìë ì ì, super
í´ëì¤ í¸ì¶ ë° ìì¼ë¡ ëì ì¸ ìì±ëª
ê³ì°ì ì§ìí기 ìí´ íì¥ëìµëë¤.
ê·¸ì ë°ë¼ ê°ì²´ 리í°ë´ ë° í´ëì¤ ì ì¸ì´ í¨ê» ë ê°ê¹ìì§ê³ , ê°ì²´ ê¸°ë° ì¤ê³ë ê°ì ì¼ë¶ í¸ì기ë¥ì¼ë¡ ëì ë³¼ ì ììµëë¤.
var obj = {
// __proto__
__proto__: theProtoObj,
// âhandler: handlerâì ë¨ì¶ í기
handler,
// Methods
toString() {
// Super calls
return "d " + super.toString();
},
// Computed (dynamic) property names
["prop_" + (() => 42)()]: 42,
};
ì ê·ì 리í°ë´
ì ê·ì 리í°ë´ì (ì ê·ì ìì¸) ì¬ëì ì¬ì´ì ê°ì¸ì¸ í¨í´ì ëë¤. ë¤ìì ì ê·ì 리í°ë´ ìì ì ëë¤.
문ìì´ ë¦¬í°ë´ë¬¸ìì´ ë¦¬í°ë´ì í° ë°ì´í("
) í¹ì ìì ë°ì´í('
)ë¡ ë¬¶ì¸ 0ê° ì´ìì 문ìì
ëë¤. 문ìì´ì ê°ì í ë°ì´í (ì¦ í° ë°ì´í ìì´ë ìì ë°ì´í ì) ë¡ êµ¬ë¶ëì´ì¼ í©ëë¤.
ìëë 문ìì´ ë¦¬í°ë´ì ìì ì ëë¤.
'foo';
"bar";
'1234';
'one line \n another line';
"John's cat";
ê¼ String
ê°ì²´ë¥¼ ì¬ì©í íìê° ìë ê²½ì° ë¬¸ìì´ ë¦¬í°ë´ì ì¬ì©í´ì¼ í©ëë¤. String
ê°ì²´ì ëí´ ìì¸í ì¬íì String
ì ì°¸ê³ íì¸ì.
문ìì´ ë¦¬í°ë´ ê°ì String
ê°ì²´ì 모ë ë©ìë를 í¸ì¶í ì ììµëë¤. JavaScriptë ìëì¼ë¡ 문ìì´ ë¦¬í°ë´ì ìì 문ìì´ ê°ì²´ë¡ ë³í, ë©ìë를 í¸ì¶íê³ ëì ìì 문ìì´ ê°ì²´ë¥¼ í기í©ëë¤. ëí 문ìì´ ë¦¬í°ë´ììë String.length
ìì±ì ì¬ì©í ì ììµëë¤.
// 공백ì í¬í¨í 문ìì´ ë´ ì¬ë³¼ ê°¯ìê° ì¶ë ¥ë©ëë¤.
console.log("John's cat".length); // ì¬ê¸°ìë, 10.
í
í릿 리í°ë´ë ì¬ì©í ì ììµëë¤. í
í릿 리í°ë´ì í° ë°ì´íë ìì ë°ì´í ëì ë°±í± (`
) (ìµì ë¶í¸) ì¼ë¡ 문ì를 ê°ìëë¤.
í í릿 리í°ë´ì 문ìì´ êµ¬ì±ì ìí ë¬ì½¤í 구문ì ì ê³µí©ëë¤. (ì´ë Perl, Python ë±ì ìë 문ìì´ ì½ì (interpolation) 기ë¥ê³¼ ë¹ì·í©ëë¤.)
// 기본ì ì¸ ë¬¸ìì´ ë¦¬í°ë´ ìì±
`In JavaScript '\n' is a line-feed.`;
// ì¬ë¬ ì¤ ë¬¸ìì´
`In JavaScript, template strings can run
over multiple lines, but double and single
quoted strings cannot.`;
// 문ìì´ ì½ì
var name = "Bob",
time = "today";
`Hello ${name}, how are you ${time}?`;
Tagged templatesì 구문 ë¶ìì ìí "íê·¸" í¨ìì ëí í¸ì¶ê³¼ í¨ê» í
í릿 리í°ë´ì ì§ì í기 ìí ê°ê²°í 구문ì
ëë¤. í
í릿 íê·¸ í¨ìì ì´ë¦ì ìë ìì ìì myTag
ê° í
í릿 íê·¸ í¨ì ì´ë¦ì¸ ê²ê³¼ ê°ì´ í
í릿 리í°ë´ ìì ìµëë¤.
let myTag = (str, name, age) => `${str[0]}${name}${str[1]}${age}${str[2]}`;
let [name, age] = ["Mika", 28];
myTag`Participant "${name}" is ${age} years old.`;
// Participant "Mika" is 28 years old.
문ìì´ìì í¹ì 문ì ì¬ì©
ë³´íµ ë¬¸ìì ëí´ì, 문ìì´ì ìë ìì ì ê°ì´ í¹ì 문ìë í¬í¨í ì ììµëë¤.
"one line \n another line";
ë¤ì íë JavaScript 문ìì´ì ì¬ì©í ì ìë í¹ì 문ì 목ë¡ì ëë¤.
í: JavaScript í¹ì 문ì 문ì ë»\0
Null Byte \b
Backspace \f
Form feed \n
New line \r
Carriage return \t
Tab \v
Vertical tab \'
Apostrophe í¹ì ìì ë°ì´í \"
í° ë°ì´í \\
ë°±ì¬ëì \XXX
Latin-1 ì¸ì½ë© 문ìë 0
- 377
ì¬ì´ 8ì§ì 3ì리 XXXê¹ì§ ì§ì ë ì ììµëë¤.
\251
ì copyright ì¬ë³¼ì íííë 8ì§ì ìíì¤ì
ëë¤. \xXX
Latin-1 ì¸ì½ë© 문ìë 00
- FF
ì¬ì´ì 16ì§ì 2ì리 XXë¡ ì§ì ë ì ììµëë¤.
\xA9
ë copyright ì¬ë³¼ì íííë 16ì§ì ìíì¤ì
ëë¤. \uXXXX
ì ëì½ë 문ìë 16ì§ì 4ì리 XXXXë¡ ì§ì ë ì ììµëë¤.
\u00A9
ë copyright ì¬ë³¼ì íííë ì ëì½ë ìíì¤ì
ëë¤. Unicode escape sequences를 ì°¸ê³ íì¸ì. \u{XXXXX}
ì ëì½ë ì½ë í¬ì¸í¸ ì´ì¤ì¼ì´í.
\u{2F804}
ë ê°ë¨í ì ëì½ë ì´ì¤ì¼ì´í \uD87E\uDC04
ì ê°ìµëë¤. 문ì ì´ì¤ì¼ì´í
íì ìë 문ìì ê²½ì° ì í ë°±ì¬ëìë 무ìëì§ë§, ì´ ì©ë²ì ë ì´ì ì¬ì©ëì§ ìì¼ë©°, ì¬ì©ì í¼í´ì¼ í©ëë¤.
ì í ë°±ì¬ëìì í¨ê» 문ìì´ ìì ë°ì´í를 ì¬ì©í ì ììµëë¤. ì´ê²ì ë°ì´í ì´ì¤ì¼ì´íë¼ê³ í©ëë¤. ì를 ë¤ì´,
var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
console.log(quote);
ì´ ì½ëì ê²°ê³¼ë,
He read "The Cremation of Sam McGee" by R.W. Service.
ë°±ì¬ëì를 문ìì´ ë´ì í¬í¨ìí¤ê¸° ìí´ìë, ë°±ì¬ëì 문ì를 ì´ì¤ì¼ì´í í´ì¼ í©ëë¤. ì를 ë¤ì´, íì¼ ê²½ë¡ c:\temp
를 문ìì´ì í ë¹í기 ìí´ìë ìëì ê°ì´ ì¬ì©í©ëë¤.
ëí ì¤ë°ê¿ ìì ì í ë°±ì¬ëìë¡ ì´ì¤ì¼ì´íí ì ììµëë¤. ë°±ì¬ëìì ì¤ë°ê¿ 모ë 문ìì´ ê°ììë ì¬ë¼ì§ëë¤.
var str =
"this string \
is broken \
across multiple \
lines.";
console.log(str); // this string is broken across multiple lines.
JavaScriptìë "heredoc" 구문ì ìì§ë§, ì¤ë°ê¿ ì´ì¤ì¼ì´íì ê° ì¤ ë ì´ì¤ì¼ì´íë ì¤ë°ê¿ì ì¶ê°íì¬ íë´ë¼ ì ììµëë¤.
var poem =
"Roses are red,\n\
Violets are blue.\n\
Sugar is sweet,\n\
and so is foo.";
ECMAScript 2015ììë í í릿 리í°ë´ì´ë¼ë ìë¡ì´ 리í°ë´ì´ ìê°ëììµëë¤. ì´ê²ì ë¤ì¤ 문ìì´ì í¬í¨í ë§ì ìë¡ì´ 기ë¥ì ê°ì§ê³ ììµëë¤!
var poem = `Roses are red,
Violets are blue.
Sugar is sweet,
and so is foo.`;
ì¶ê° ì ë³´
ì´ ì¥ì ì ì¸ê³¼ íì ëí 기본 구문ì ì´ì ì ë§ì¶¥ëë¤. JavaScript ì¸ì´ 구조ì ëí´ ë ë§ì´ ë°°ì°ë ¤ë©´, ë¤ì ì¥ì ì°¸ê³ íì¸ì.
ë¤ì ì¥ììë, íë¦ ì ì´ êµ¬ì¡°ì ìë¬ ì²ë¦¬ë¥¼ ì´í´ ë³¼ ê²ì ëë¤.
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