모ë íë¡ê·¸ëë° ì¸ì´ìë ë´ì¥ë ìë£êµ¬ì¡°ê° ì¡´ì¬íì§ë§, ë³´íµ ê·¸ ë´ì©ì ì¸ì´ë§ë¤ ë¤ë¦ ëë¤. ì´ ê¸ììë JavaScriptìì ì¬ì©í ì ìë ë´ì¥ ìë£êµ¬ì¡°ì ê·¸ ìì±ì ëí´ ììë³´ê² ìµëë¤. ê·¸ë¬ë©´ ì´ ìë£êµ¬ì¡°ë¤ì ë¤ë¥¸ ìë£êµ¬ì¡° ê°ë°ì ì¬ì©í ì ìì ê²ì ëë¤.
ì¸ì´ ê°ìë ì¼ë°ì ì¸ ë°ì´í° íì ì ëí ì ì¬í ì 리ë ë´ì©ì ì ê³µíì§ë§, ë¤ë¥¸ ì¸ì´ì ë ë§ì ë¹êµë¥¼ ì ê³µí©ëë¤.
ëì ë° ì½íìJavaScriptë ëì íì ì´ ìë ëì ì¸ì´ì ëë¤. JavaScriptì ë³ìë ì´ë¤ í¹ì íì ê³¼ ì°ê²°ëì§ ìì¼ë©°, 모ë íì ì ê°ì¼ë¡ í ë¹ (ë° ì¬í ë¹) ê°ë¥í©ëë¤.
let foo = 42; // fooë ì´ì ì«ìì
ëë¤
foo = "bar"; // fooë ì´ì 문ìì´ì
ëë¤
foo = true; // fooë ì´ì ë¶ë¦¬ì¸ì
ëë¤
JavaScriptë ëí ì½íì ì¸ì´ì´ê¸°ë í©ëë¤. ì¦, ìì ì íì ì¤ë¥ê° ë°ìíë ëì , ì¼ì¹íì§ ìë íì ì´ í¬í¨ë ê²½ì° ììì íì ë³íì´ ê°ë¥í©ëë¤.
const foo = 42; // fooë ì«ìì
ëë¤.
const result = foo + "1"; // JavaScriptë foo를 문ìì´ë¡ ê°ì ë³ííë¯ë¡, ë¤ë¥¸ í¼ì°ì°ìì ì°ê²°í ì ììµëë¤.
console.log(result); // 421
ììì íë³íì ë§¤ì° í¸ë¦¬íì§ë§, ê°ë°ìê° ë³íì ìíí ìëê° ìê±°ë, ë¤ë¥¸ ë°©í¥ì¼ë¡ ë³ííë ¤ë ê²½ì°(ì: ì«ììì 문ìì´ ëì , 문ìì´ìì ì«ìë¡ ë³ííë ê²) ì ì¬ì ì¸ ì¤ë¥(footgun)ê° ë ì ììµëë¤. ê¸°í¸ ë° BigIntsì ê²½ì°, JavaScriptë ìëì ì¼ë¡ í¹ì ììì íì ë³íì íì©íì§ ììµëë¤.
ìì ê°(Primitive values)Object를 ì ì¸í 모ë íì ì ì¸ì´ì ìµíì ìì¤ìì ì§ì ííëë ë¶ë³ ê°ì ì ìí©ëë¤. ì´ë¬í íì ì ê°ì 'ìì ê°'ì´ë¼ê³ í©ëë¤.
null
ì ì ì¸í 모ë 기본 íì
ì typeof
ì°ì°ìë¡ í
ì¤í¸í ì ììµëë¤. typeof null
ì "object"
를 ë°ííë¯ë¡ === null
ì ì¬ì©íì¬ null
ì í
ì¤í¸í´ì¼ í©ëë¤.
null
ë° undefined
를 ì ì¸í, 모ë ìì íì
ìë ìì ê°ì¼ë¡ ìì
íë ë° ì ì©í ë©ìë를 ì ê³µíë í´ë¹ ê°ì²´ ëí¼ íì
ì´ ììµëë¤. ì를 ë¤ì´, Number
ê°ì²´ë toExponential()
ì ê°ì ë©ìë를 ì ê³µí©ëë¤. ìì ê°ìì ìì±ì ì ê·¼íë©´, JavaScriptë ê°ì í´ë¹ ëí¼ ê°ì²´ë¡ ìëì¼ë¡ ê°ì¸ë ëì ê°ì²´ì ìì±ì ì ê·¼í©ëë¤. ê·¸ë¬ë null
ëë undefined
ìì ìì±ì ì ê·¼íë©´, TypeError
ìì¸ê° ë°ìíë¯ë¡ ì íì ì²´ì´ë ì°ì°ì를 ëì
í´ì¼ í©ëë¤.
ê°ì²´ ëí¼ í´ëì¤ì 참조 íì´ì§ìë ê° íì ì ì¬ì©í ì ìë ë©ìë ë° ìì±ì ëí ìì¸í ì ë³´ì, ìì íì ìì²´ì ì미 ì²´ê³ì ëí ìì¸í ì¤ëª ì´ í¬í¨ëì´ ììµëë¤.
Null íìNull íì
ì null
ì´ë¼ë ì¤ì§ íëì ê°ë§ ê°ì§ ì ììµëë¤.
Undefined íì
ì undefined
ì´ë¼ë ì¤ì§ íëì ê°ë§ ê°ì§ ì ììµëë¤.
ê°ë
ì ì¼ë¡, undefined
ë ê°ì´ ììì ì미íê³ , null
ì ê°ì²´ê° ììì ì미í©ëë¤. (typeof null === "object"
ì ëí ë³ëª
ì´ ë ìë ììµëë¤). ì¼ë°ì ì¼ë¡ ê°ì´ ìë ê²½ì° ì¸ì´ì 기본ê°ì undefined
ì
ëë¤.
return
문(return;
)ì ììì ì¼ë¡ undefined
를 ë°íí©ëë¤.obj.iDontExist
) íë©´ undefined
ê° ë°íë©ëë¤.let x;
)ê° ìë ë³ì ì ì¸ì ë³ì를 undefined
ë¡ ììì ì¼ë¡ ì´ê¸°íí©ëë¤.Array.prototype.find()
ë° Map.prototype.get()
ì ê°ì ëë¶ë¶ì ë©ìëë, ìì를 ì°¾ì ì ìì ë undefined
를 ë°íí©ëë¤.null
ì ì¸ì´ì íµì¬ì ì¸ ë¶ë¶ìì ë ì주 ì¬ì©ë©ëë¤. ê°ì¥ ì¤ìí ìì¹ë prototype chainì ëë¶ë¶ì
ëë¤. ì´ì´ì, Object.getPrototypeOf()
, Object.create()
ë± íë¡í íì
ê³¼ ìí¸ ìì©íë ë©ìëë undefined
ëì null
ì ë°ê±°ë ë°íí©ëë¤.
null
ì í¤ìëì´ì§ë§, undefined
ë ì ì ìì±ì¸ ì¼ë°ì ì¸ ìë³ìì
ëë¤. ì¤ì ë¡ë undefined
ê° ì¬ì ìëê±°ë ê°ë ¤ì ¸ìë ì ë기 ë문ì ê·¸ ì°¨ì´ë 미미í©ëë¤.
Boolean
íì
ì ë
¼ë¦¬ ìì를 ëíë´ë©° true
ì false
ë ê°ì§ì ê°ì ê°ì§ ì ììµëë¤.
ë¶ë¦¬ì¸ ê°ì ì¼ë°ì ì¼ë¡ ì¼í ì°ì°ì , if...else
, while
ë±ì í¬í¨í, ì¡°ê±´ë¶ ì°ì°ì ì¬ì©ë©ëë¤.
Number
íì
ì ë°°ì ë°ë 64ë¹í¸ ì´ì§ íì IEEE 754 ê°ì
ëë¤. 2-1074 (Number.MIN_VALUE
) ì 21024 (Number.MAX_VALUE
) ì¬ì´ì ìì ë¶ë ììì ë¿ë§ ìëë¼, -2-1074 ì -21024 ì¬ì´ì ìì ë¶ë ììì ì«ìë ì ì¥í ì ìì§ë§, -(253 â 1) (Number.MIN_SAFE_INTEGER
) ì 253 â 1 (Number.MAX_SAFE_INTEGER
) ë²ìì ì ìë§ ìì íê² ì ì¥í ì ììµëë¤. ì´ ë²ì를 ë²ì´ëë©´, JavaScriptë ë ì´ì ì ì를 ìì íê² íìí ì ììµëë¤. ëì ë°°ì ë°ë ë¶ë ììì ê·¼ì¬ê°ì¼ë¡ íìë©ëë¤. Number.isSafeInteger()
를 ì¬ì©íì¬ ì«ìê° ìì í ì ì ë²ì ë´ì ìëì§ íì¸í ì ììµëë¤.
±(2-1074 to 21024) ë²ì를 ë²ì´ëë ê°ì ìëì¼ë¡ ë³íë©ëë¤.
Number.MAX_VALUE
ë³´ë¤ í° ììê°ì +Infinity
ë¡ ë³íë©ëë¤.Number.MIN_VALUE
ë³´ë¤ ìì ììê°ì +0
ì¼ë¡ ë³íë©ëë¤.Number.MAX_VALUE
ë³´ë¤ ìì ììê°ì -Infinity
ë¡ ë³íë©ëë¤.Number.MIN_VALUE
ë³´ë¤ í° ììê°ì -0
ì¼ë¡ ë³íë©ëë¤.+Infinity
ë° -Infinity
ë ìíììì 무íëì ì ì¬íê² ìëíì§ë§, ì½ê°ì ì°¨ì´ê° ììµëë¤. ìì¸í ë´ì©ì Number.POSITIVE_INFINITY
ë° Number.NEGATIVE_INFINITY
를 ì°¸ê³ íì¸ì.
Number íì
ìë ì¬ë¬ ííì´ ìë íëì ê°ë§ ììµëë¤. 0
ì -0
ê³¼ +0
ë ë¤ë¡ ííë©ëë¤(ì¬ê¸°ì 0
ì +0
ì ë³ì¹ì
ëë¤). ì¤ì ë¡ë, ìë¡ ë¤ë¥¸ íí ê°ì ê±°ì ì°¨ì´ê° ììµëë¤. ì를 ë¤ì´, +0 === -0
ì true
ì
ëë¤. ê·¸ë¬ë, 0ì¼ë¡ ëëë©´ ë¤ìê³¼ ê°ì´ ì ì ììµëë¤.
console.log(42 / +0); // Infinity
console.log(42 / -0); // -Infinity
NaN
("Not a Number")ë ì°ì ì°ì°ì 결과를 ì«ìë¡ ííí ì ìì ë, ì¼ë°ì ì¼ë¡ ë°ìíë í¹ë³í ì¢
ë¥ì ì«ì ê°ì
ëë¤. ëí, "NaN" ì기 ìì ê³¼ ê°ì§ ìì JavaScriptì ì ì¼í ê°ì´ê¸°ë í©ëë¤.
ì«ìë ê°ë ì ì¼ë¡ "ìíì ì¸ ê°"ì´ê³ íì ììì ì¼ë¡ ë¶ë ììì ì¼ë¡ ì¸ì½ë©ëì§ë§, JavaScriptë ë¹í¸ ì°ì°ì를 ì ê³µí©ëë¤. ë¹í¸ ì°ì°ì를 ì ì©í ë ì«ìë 먼ì 32ë¹í¸ ì ìë¡ ë³íë©ëë¤.
ì°¸ê³ : ë¹í¸ ë§ì¤í¹ì ì¬ì©í´ì íëì ì«ì ìì ë¤ìì ë¶ë¦¬ì¸ ê°ì ëíë¼ ë ë¹í¸ ì°ì°ì를 ì¬ì©í ì ì긴 íì§ë§ ì´ê±´ ë³´íµ ëì ë°©ë²ì¼ë¡ ì¬ê²¨ì§ëë¤. JavaScriptë ì¼ë ¨ì ë¶ë¦¬ì¸ ê°ë¤ì ëíë´ë ë°©ë²ì (ë°°ì´ì´ë ë¶ë¦¬ì¸ ìì± ê°ì í ë¹í ê°ì²´ë¡) ì ê³µí©ëë¤. ë¹í¸ ë§ì¤í¹ì ì½ë를 ì½ê³ , ì´í´íê³ , ì ì§í기 íë¤ê² ë§ëëë¤.
ë¤ë§ ë¡ì»¬ ì ì¥ìì íì ë ê³µê°ì íì©í´ì¼ íë¤ê±°ë, ë¤í¸ìí¬ì ë¹í¸ íëíëê° ìì¤í ê·¹í ìí©ì²ë¼ ì íë íê²½ììë ì´ë° 기ì ì´ íìí ìë ììµëë¤. ë¹í¸ ë§ì¤í¹ì ì©ë ìµì íì ë§ì§ë§ ìë¨ì¼ë¡ë§ ê³ ë ¤í´ì¼ í©ëë¤.
BigInt íìBigInt
íì
ì ìì ì ë°ëë¡ ì ì를 ëíë¼ ì ìë JavaScript ì«ì ìì ê°ì
ëë¤. BigIntë¡ Numberì ìì í ì ì ì í(Number.MAX_SAFE_INTEGER
)ì ëì´ìë í° ì ìë ìì íê² ì ì¥íê³ ì°ì°í ì ììµëë¤.
BigIntë ì ì ëì n
ì ì¶ê°íê±°ë BigInt()
í¨ì를 í¸ì¶í´ ìì±í ì ììµëë¤.
ë¤ì ìì ë Number.MAX_SAFE_INTEGER
를 ì¦ê°ìí¤ë©´, ììë ê°ì ë°ííë ê²ì ë³´ì¬ì¤ëë¤.
// BigInt
const x = BigInt(Number.MAX_SAFE_INTEGER); // 9007199254740991n
x + 1n === x + 2n; // 9007199254740992në 9007199254740993nê³¼ ê°ì§ ìì falseì
ëë¤.
// Number
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // ë ë¤ 9007199254740992 ì´ê¸° ë문ì trueì
ëë¤.
+
, *
, -
, **
, %
ì°ì°ì를 BigIntììë ì¬ì©í ì ììµëë¤. ê¸ì§ë ì°ì°ìë >>>
ë¿ ì
ëë¤. BigIntë Numberì ì격íê² ê°ì§ë ìì§ë§ ëì¨íê² ì ì¬í©ëë¤.
BigIntë ìì를 ëíë¼ ì ìì§ë§, í° ì ì를 ë ì ííê² ëíë¼ ì ì기 ë문ì, BigInt ê°ì ì«ìë³´ë¤ íì ë ì ííê±°ë ë ì ííì§ ììµëë¤. ì´ë¤ íì
ë ë¤ë¥¸ íì
ì ìë°íì§ ìì¼ë©°, ìë¡ ëì²´í ì ììµëë¤. TypeError
ë BigInt ê°ì´ ì°ì ííìì ì¼ë° ì«ìì í¼í©ëê±°ë ìë¡ ììì ì¼ë¡ ë³íëë ê²½ì° ë°ìí©ëë¤.
String
íì
ì í
ì¤í¸ ë°ì´í°ë¥¼ ëíë´ë©°, UTF-16 ì½ë ë¨ì ì를 ëíë´ë 16ë¹í¸ ë¶í¸ ìë ì ì ê°ì ëì´ë¡ ì¸ì½ë©ë©ëë¤. Stringì ê° ììë String ë´ë¶ì ìì¹ë¥¼ ì°¨ì§í©ëë¤. 첫 ë²ì§¸ ììë ì¸ë±ì¤ 0
ì, ë¤ì ììë ì¸ë±ì¤ 1
ì ììµëë¤. Stringì 길ì´ë UTF-16 ì½ë ë¨ìì ìì´ë©°, ì¤ì ì ëì½ë 문ì ìì ì¼ì¹íì§ ìì ì ììµëë¤. ìì¸í ë´ì©ì String
íì´ì§ë¥¼ 참조íì¸ì.
JavaScript Stringì ë³ê²½í ì ììµëë¤. ì¦, Stringì´ ìì±ëë©´ ìì í ì ììµëë¤. String ë©ìëë íì¬ Stringì ë´ì©ì 기ë°ì¼ë¡ ì Stringì ë§ëëë¤. ì를 ë¤ë©´, ë¤ìê³¼ ê°ìµëë¤.
substring()
ì ì¬ì©í´ ìë Stringì íì Stringì ë§ë¤ ì ììµëë¤.+
) ëë concat()
를 ì¬ì©íì¬ ë 문ìì´ì ì°ê²°í©ëë¤.문ìì´ì ì¬ì©í´ ë³µì¡í ë°ì´í°ë¥¼ íííë ê²ì´ ë§¤ë ¥ì ì¼ë¡ ë³´ì¼ì§ë ëª¨ë¥´ê³ , ë¨ê¸°ì ì¼ë¡ë ë¤ìê³¼ ê°ì ì¥ì ì´ ììµëë¤.
responseText
ì í¨ê» ì¬ì©íë XMLHttpRequest
ë±ë±)ì ê³µíµ ë¶ëª¨ì´ë©° 문ìì´ë¡ë§ ìì
íê³ ì¶ì ì ììµëë¤.ê·ì¹ì íµí´, ì´ë¤ ìë£êµ¬ì¡°ë¼ë 문ìì´ë¡ ííí ì ììµëë¤. ê·¸ë¬ë ê·¸ê² ì¢ì ë°©ë²ì ìëëë¤. ì를 ë¤ì´, 구ë¶ì를 ì¬ì©íë©´ (ë¬¼ë¡ JavaScript ë°°ì´ì´ ë ì í©íê² ì§ë§) 문ìì´ë¡ 리ì¤í¸ë¥¼ íë´ë¼ ìë ìì ê²ì ëë¤. ê·¸ë¬ë 구ë¶ì를 리ì¤í¸ì ììë¡ ì¬ì©íë ìê° ë¦¬ì¤í¸ê° ë§ê°ì§ê³ ë§ëë¤. ì´ì 구ë¶ì를 구ë¶í기 ìí´ ì´ì¤ì¼ì´í 문ì를 ì ííê³ , ë±ë±... ì´ ëª¨ë ê²ì´ ê°ìì ê·ì¹ì íìë¡ íê³ ë¶íìí ì ì§ë³´ì ë¶ë´ì´ ë°ìí©ëë¤.
문ìì´ì í ì¤í¸ ë°ì´í°ìë§ ì¬ì©íì¸ì. ë³µì¡í ë°ì´í°ë¥¼ ííí´ì¼ í ë 문ìì´ì 구문 ë¶ìíê³ ì í©í ì¶ìí를 ì¬ì©íì¸ì.
Symbol íìSymbol
ì ê³ ì íê³ ë³ê²½ ë¶ê°ë¥í ìì ê°ì´ë©° ê°ì²´ì ìì±(ìë를 ì°¸ê³ íì¸ì) í¤ë¡ ì¬ì©í ì ììµëë¤. ì´ë¤ íë¡ê·¸ëë° ì¸ì´ë¤ìì "ìì"ë¼ê³ ë¶ë¥´ê¸°ë í©ëë¤. 기í¸ì 목ì ì ë¤ë¥¸ ì½ëì í¤ì ì¶©ëíì§ ìëë¡ ë³´ì¥ëë ê³ ì í ìì± í¤ë¥¼ ë§ëë ê²ì
ëë¤.
ì»´í¨í° ê³¼íììì ê°ì²´ë ìë³ìë¡ ì°¸ì¡°í ì ìë ë©ëª¨ë¦¬ ìì ê°ì ë§í©ëë¤. JavaScriptìì ê°ì²´ë ì ì¼í ë³ê²½ ê°ë¥í ê°ì ëë¤. Functionsë ì¬ì¤ callable ì´ë¼ë ì¶ê° 기ë¥ì´ ìë ê°ì²´ì´ê¸°ë í©ëë¤.
ìì±JavaScriptììì ê°ì²´ë ìì±ì 컬ë ì ì¼ë¡ ë³¼ ì ììµëë¤. ê°ì²´ 리í°ë´ 구문ì ì¬ì©í´ ì íì ì¼ë¡ ìì±ì ì´ê¸°íí ìì ìê³ , ê·¸ íì ìì±ì ì¶ê°íê±°ë ì ê±°í ìë ììµëë¤. ê°ì²´ ìì±ì í¤-ê° ìê³¼ ëì¼í©ëë¤. ìì± í¤ë stringsíì ëë symbolsíì ì´ ë ì ììµëë¤. ìì± ê°ì¼ë¡ë ë¤ë¥¸ ê°ì²´ë¥¼ í¬í¨í´ 모ë íì ì ì¬ì©í ì ìì¼ë¯ë¡ ë³µì¡í ìë£êµ¬ì¡°ì 구ì¶ì´ ê°ë¥í©ëë¤.
ê°ì²´ ìì±ìë ë°ì´í° ìì±ê³¼ ì ê·¼ì ìì± ë ì¢
ë¥ê° ììµëë¤. ê°ê°ì ìì±ìë ë¤ì 'í¹ì±'(attribute)ë¤ì´ ì¡´ì¬í©ëë¤. í¹ì±ì JavaScript ìì§ ë´ë¶ììë ì ê·¼ëì§ë§, Object.defineProperty()
를 íµí´ ì¤ì íê±°ë, Object.getOwnPropertyDescriptor()
를 íµí´ ì½ì ì ììµëë¤.
Object.defineProperty()
ìì ë ììë³´ì¸ì.
ë°ì´í° ìì±ì í¤ë¥¼ ê°ê³¼ ì°ê²°íë©°, ë¤ìê³¼ ê°ì í¹ì±ì ê°ì§ëë¤.
value
ìì±ì get ì ê·¼ì¼ë¡ ê²ìë ê°ì ëë¤. 모ë JavaScriptì ê°ì´ ë³¼ ì ììµëë¤.
writable
í ë¹ì¼ë¡ ìì±ì ë³ê²½í ì ìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ëë¤.
enumerable
A boolean value indicating if the property can be enumerated by a for...in
loop. See also Enumerability and ownership of properties for how enumerability interacts with other functions and syntaxes.
ìì±ì for...in
루íë¡ ì´ê±°í ì ìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì
ëë¤. ì´ê±° ê°ë¥ì±ì´ ë¤ë¥¸ í¨ì ë° êµ¬ë¬¸ê³¼ ìí¸ ìì©íë ë°©ìì ëí´ìë ìì± ì´ê±° ê°ë¥ì± ë° ìì ê¶ì 참조íì¸ì.
configurable
ìì±ì ìì í ì ìëì§, ì ê·¼ì ìì±ì¼ë¡ ë³ê²½í ì ìëì§, ìì±ì ë³ê²½í ì ìëì§ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ëë¤.
ì ê·¼ì ìì±ì í¤ë¥¼ ë ê°ì ì ê·¼ì í¨ì(get
, set
) ì¤ íëì ì°ê²°íì¬ ê°ì ê°ì ¸ì¤ê±°ë ì ì¥í©ëë¤.
ì°¸ê³ : ì ê·¼ì 'ë©ìë'ê° ìëë¼ ì ê·¼ì 'ìì±'ìì ì¸ì§íë ê²ì´ ì¤ìí©ëë¤. í¨ì를 ê°ì¼ë¡ ì¬ì©íì¬ JavaScript ê°ì²´ì í´ëì¤ì²ë¼ ì ê·¼ì를 ë¶ì¬í ì ìì§ë§, ê·¸ë ë¤ê³ ê·¸ ê°ì²´ê° í´ëì¤ë¡ ë°ëë ê²ì ìëëë¤.
ì ê·¼ì ìì±ì ë¤ìê³¼ ê°ì í¹ì±ì ê°ì§ëë¤.
get
ê°ì ëí get ì ê·¼ì´ ìíë ëë§ë¤ ìì± ê°ì ê²ìí기 ìí´ ë¹ì´ ìë ì¸ì 목ë¡ì¼ë¡ í¸ì¶ëë í¨ìì
ëë¤. getters를 ì°¸ê³ íì¸ì. undefined
ì¼ ì ììµëë¤.
set
í ë¹ë ê°ì í¬í¨íë ì¸ìë¡ í¸ì¶ëë í¨ìì
ëë¤. ì§ì ë ìì±ì ë³ê²½íë ¤ê³ ìëí ëë§ë¤ ì¤íë©ëë¤. settersë ì°¸ê³ íì¸ì. undefined
ì¼ ì ììµëë¤.
enumerable
ìì±ì for...in
루íë¡ ì´ê±°í ì ìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì
ëë¤. ì´ê±° ê°ë¥ì±ì´ ë¤ë¥¸ í¨ì ë° êµ¬ë¬¸ê³¼ ìí¸ ìì©íë ë°©ìì ëí´ìë ìì± ì´ê±° ê°ë¥ì± ë° ìì ê¶ì 참조íì¸ì.
configurable
ìì±ì ìì í ì ìëì§, ë°ì´í° ìì±ì¼ë¡ ë³ê²½í ì ìëì§, ìì±ì ë³ê²½í ì ìëì§ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ëë¤.
ê°ì²´ì prototypeì ë¤ë¥¸ ê°ì²´ ëë null
ì ê°ë¦¬íµëë¤. ì´ë ê°ë
ì ì¼ë¡ ê°ì²´ì ì¨ê²¨ì§ ìì±ì´ë©°, ì¼ë°ì ì¼ë¡ [[Prototype]]
ì¼ë¡ íìë©ëë¤. ê°ì²´ì [[Prototype]]
ìì±ì ê°ì²´ ìì²´ììë ì ê·¼í ì ììµëë¤.
ê°ì²´ë ìì í¤-ê° ìì´ë¯ë¡, ì¢
ì¢
ë§µì¼ë¡ ì¬ì©ë©ëë¤. ê·¸ë¬ë ì¸ì²´ ê³µí, ë³´ì ë° ì±ë¥ 문ì ê° ìì ì ììµëë¤. ëì ììì ë°ì´í°ë¥¼ ì ì¥íë ¤ë©´, Map
ì ì¬ì©íì¸ì. Map
참조ìë í¤-ê° ì°ê²°ì ì ì¥í기 ìí ì¼ë° ê°ì²´ì Map ê°ì ì¥ë¨ì ì ëí ìì¸í ì¤ëª
ì´ í¬í¨ëì´ ììµëë¤.
ë ì§ì ìê°ì ëíë¼ ëì ê°ì¥ ì¢ì ì íì JavaScript ë´ì¥ Date
ì í¸ë¦¬í°ë¥¼ ì¬ì©íë ê²ì
ëë¤.
ë°°ì´ì ì ì í¤ë¥¼ ê°ì§ ìì±ê³¼ length
ìì± ì¬ì´ì í¹ë³í ì°ê´ì ì§ì´ëì ì¼ë° ê°ì²´ì
ëë¤.
ì´ì ëí´, ë°°ì´ì ë°°ì´ì ì¡°ìí ì ìë ëª ê°ì§ í¸ë¦¬í ë©ìë를 ì ê³µíë Array.prototype
ìì ììë©ëë¤. ì를 ë¤ì´, indexOf()
ë ë°°ì´ìì ê°ì íìíê³ , push()
ë ë°°ì´ì ìì를 ì¶ê°í©ëë¤. ë°ë¼ì ë°°ì´ì ì ë ¬ë 목ë¡ì ëíë´ë ìë²½í íë³´ê° ë©ëë¤.
íìí ë°°ì´(Typed Arrays)ì ì쪽ì ì´ì§ ë°ì´í° ë²í¼ì ëí´ ë°°ì´ê³¼ ê°ì 뷰를 ì ê³µíê³ , ë°°ì´ê³¼ ì미 ì²´ê³ê° ì ì¬í ë§ì ë©ìë를 ì ê³µí©ëë¤. "(íìí ë°°ì´)Typed Array"ì Int8Array
, Float32Array
ë±ì ë¹ë¡¯í ë¤ìí ë°ì´í° 구조를 ê°ë¦¬í¤ë í¬ê´ì ì¸ ì©ì´ì
ëë¤. ìì¸í ë´ì©ì typed arrayì ì°¸ê³ íì¸ì. Typed Arrayë ì¢
ì¢
ArrayBuffer
ë° DataView
ì í¨ê» ì¬ì©ë©ëë¤.
í¤ ì»¬ë ì
ìë£êµ¬ì¡°ë ê°ì²´ 참조를 í¤ë¡ ê°ì§ëë¤. Set
ê³¼ WeakSet
ì ê³ ì í ê°ì 모ìì ëíë´ê³ , Map
ê³¼ WeakMap
ì ê°ì²´ì ê°ì ì°ê²° ì§ë ìë¤ì 모ìì ëíë
ëë¤.
Map
ê³¼ Set
ì ì§ì 구íí ì ììµëë¤. ê·¸ë¬ë ê°ì²´ë¥¼ ì§ì ë¹êµ(<
, 'ìì' ë¹êµì ê°ì´)í ë°©ë²ì ìê³ , ìì§ë ê°ì²´ì ëí í´ì í¨ì를 ë
¸ì¶íì§ ì기 ë문ì, ì¡°í ì±ë¥ì´ íì°ì ì¼ë¡ ì íì
ëë¤. (WeakMap
ì í¬í¨í´) ë¤ì´í°ë¸ 구íì ìì ìê°ì ëí ë¡ê·¸í¨ìì ì¡°í ì±ë¥ì ê°ì§ ì ììµëë¤.
ë³´íµ DOM ë
¸ëì ë°ì´í°ë¥¼ ì°ê²°í ë í´ë¹ ê°ì²´ì ì§ì ìì±ì ì¶ê°íê±°ë data-*
í¹ì±ì ì¬ì©íê² ì§ë§, ëì¼í 컨í
ì¤í¸ìì ì´ë ê² ì¶ê°í ë°ì´í°ë¥¼ 모ë ì¤í¬ë¦½í¸ìì ë¤ ì¬ì©í ì ìë¤ë 문ì ê° ììµëë¤. Map
ê³¼ WeakMap
ì ì¬ì©íë©´ ë¹ê³µê° ë°ì´í°ë¥¼ ê°ì²´ì ì½ê² ë°ì¸ë© í ì ììµëë¤.
WeakMap
ë° WeakSet
ì ê°ë¹ì§ 컬ë ì
ì´ ê°ë¥í ê°ì²´ ëë ë±ë¡ëì§ ìì 기í¸ë§ í¤ë¡ íì©íë©°, í¤ê° 컬ë ì
ì ë¨ììì´ë ê°ë¹ì§ 컬ë ì
í ì ììµëë¤. í¹í ë©ëª¨ë¦¬ ì¬ì©ë ìµì íì ì¬ì©ë©ëë¤.
JSON(JavaScript Object Notation)ì ê²½ë ë°ì´í° êµí íìì¼ë¡, JavaScriptìì íìëì§ë§ ë§ì íë¡ê·¸ëë° ì¸ì´ìì ì¬ì©íê³ ììµëë¤. JSONì ë¤ìí í경과 ì¸ì´ ê°ì ì ì¡í ì ìë ë²ì© ë°ì´í° 구조를 구ì±í©ëë¤. ìì¸í ë´ì©ì JSON
를 참조íì¸ì.
JavaScriptë ë´ì¥ ê°ì²´ë¡ 구ì±ë íì¤ ë¼ì´ë¸ë¬ë¦¬ë¥¼ í¬í¨í©ëë¤. ë´ì¥ ê°ì²´ì ëí´ ìì¸í ììë³´ë ¤ë©´ ì°¸ê³ ì를 ì½ì´ë³´ì¸ì.
íì ê°ì ë³íììì ì¸ê¸íë¯ì´, JavaScriptë ì½íì ì¸ì´ì ëë¤. ì¦, ë¤ë¥¸ íì ì´ ììëë íëì íì ì ê°ì ì주 ì¬ì©í ì ìì¼ë©°, ì¸ì´ìì ì´ë¥¼ ì í©í íì ì¼ë¡ ë³íí´ì¤ëë¤. ì´ë¥¼ ìí´, JavaScriptë ëª ê°ì§ ê°ì ë³í ê·ì¹ì ì ìí©ëë¤.
ìì íì ê°ì ë³íìì íì ê°ì ë³í íë¡ì¸ì¤ë ìì ê°ì´ ììëë ê²½ì°ì ì¬ì©ëì§ë§, ì¤ì íì ì´ ë¬´ìì´ì´ì¼ íëì§ì ëí ê°ë ¥í ì í¸ëë ììµëë¤. ì¼ë°ì ì¼ë¡ string, number ëë BigIntì´ ëë±íê² íì©ëë ê²½ì°ì ëë¤. ì를 ë¤ë©´ ìëì ê°ìµëë¤.
Date()
ìì±ìë Date
ì¸ì¤í´ì¤ê° ìë íëì ì¸ì를 ë°ë ê²½ì°, Stringì ë ì§ Stringì ëíë´ë ë°ë©´, ì«ìë íìì¤í¬í를 ëíë
ëë¤.+
ì°ì°ì, íëì í¼ì°ì°ìê° Stringì´ë©´ String ì°ê²°ì´ ìíë©ëë¤.==
ì°ì°ì, í¼ì°ì°ì ì¤ íëê° ìì íì
ì´ê³ ë¤ë¥¸ í¼ì°ì°ìë ê°ì²´ì¸ ê²½ì°, ê°ì²´ë ì í¸ íì
ì´ ìë ìì ê°ì¼ë¡ ë³íë©ëë¤.ì´ ìì
ì ê°ì´ ì´ë¯¸ ìì íì
ì¸ ê²½ì°, ë³íì ìííì§ ììµëë¤. ê°ì²´ë [@@toPrimitive]()
(íí¸ë¡ "default"
ì¬ì©), valueOf()
, toString()
ë©ìë를 ì°¨ë¡ë¡ í¸ì¶íì¬ ìì íì
ì¼ë¡ ë³íë©ëë¤. ìì íì
ë³íì toString()
ì´ì ì valueOf()
를 í¸ì¶íëë°, ì´ë ì«ì ê°ì ë³íì ëìê³¼ ë¹ì·íì§ë§, string ê°ì ë³íê³¼ë ë¤ë¦
ëë¤.
[@@toPrimitive]()
ë©ìëê° ìë ê²½ì°, ìì íì
ì ë°íí´ì¼ í©ëë¤. ê°ì²´ë¥¼ ë°ííë©´ TypeError
ê° ë°ìí©ëë¤. valueOf()
ë° toString()
ì ê²½ì°, íëê° ê°ì²´ë¥¼ ë°ííë©´ ë°í ê°ì 무ìëê³ ë¤ë¥¸ íëì ë°í ê°ì´ ëì ì¬ì©ë©ëë¤. ë ë¤ ì¡´ì¬íì§ ìê±°ë, ìì íì
ì ë°ííì§ ìì¼ë©´ TypeError
ê° ë°ìí©ëë¤. ë¤ì ì½ë를 ìë¡ ë¤ ì ììµëë¤.
console.log({} + []); // "[object Object]"
{}
ëë []
ìë [@@toPrimitive]()
ë©ìëê° ììµëë¤. {}
ë° []
모ë ê°ì²´ ì체를 ë°ííë Object.prototype.valueOf
ìì valueOf()
를 ììí©ëë¤. ë°í ê°ì ê°ì²´ì´ë¯ë¡ 무ìë©ëë¤. ë°ë¼ì toString()
ì´ ëì í¸ì¶ë©ëë¤. {}.toString()
ì "[object Object]"
를 ë°ííë ë°ë©´, [].toString()
ë ""
를 ë°ííë¯ë¡, ê²°ê³¼ë ì°ê²°ë ê°ì¸ "[object Object]"
ì
ëë¤.
[@@toPrimitive]()
ë©ìëë ìì íì
ì¼ë¡ ë³íí ë íì ì°ì í©ëë¤. ìì íì
ë³íì ì¼ë°ì ì¼ë¡ valueOf()
ê° ì°ì ì ì¼ë¡ í¸ì¶ë기 ë문ì, ì«ì ê°ì ë³íê³¼ ê°ì´ ëìí©ëë¤. ê·¸ë¬ë ì¬ì©ì ì§ì [@@toPrimitive]()
ë©ìëê° ìë ê°ì²´ë 모ë ìì íì
ì ë°ííëë¡ ì íí ì ììµëë¤. Date
ë° Symbol
ê°ì²´ë [@@toPrimitive]()
ë©ìë를 ì¬ì ìíë ì ì¼í ë´ì¥ ê°ì²´ì
ëë¤. Date.prototype[@@toPrimitive]()
ë "default"
íí¸ë¥¼ "string"
ì¸ ê²ì²ë¼ ì·¨ê¸íë ë°ë©´, Symbol.prototype[@@toPrimitive]()
ë íí¸ë¥¼ 무ìíê³ íì 기í¸(symbol)ì ë°íí©ëë¤.
Number ë° BigIntì ë ê°ì§ ì«ì íì
ì´ ììµëë¤. ëëë¡ ì¸ì´ë í¹ë³í ì«ì ëë BigInt(ì: ì¸ë±ì¤ê° ì«ìì¬ì¼ íë Array.prototype.slice()
)를 기ëí©ëë¤. ë¤ë¥¸ ê²½ì°ìë, ë ì¤ íë를 íì©íê³ í¼ì°ì°ìì íì
ì ë°ë¼ ë¤ë¥¸ ìì
ì ìíí ì ììµëë¤. ë¤ë¥¸ íì
ì ììì ë³íì íì©íì§ ìë ì격í ê°ì ë³í íë¡ì¸ì¤ë ì«ì ê°ì ë³í ë° BigInt ê°ì ë³íì 참조íì¸ì.
ì«ì ê°ì ë³íì BigIntê° TypeError
를 ë°ììí¤ë ëì ìë ê·¸ëë¡ ë°íëë¤ë ì ì ì ì¸íë©´ ì ê°ì ë³í(number coercion)íê³ ê±°ì ëì¼í©ëë¤. ì«ì ê°ì ë³íì Numberì BigInt 모ëì ëí´ ì¤ë²ë¡ë©ë기 ë문ì, 모ë ì°ì ì°ì°ììì ì¬ì©ë©ëë¤. ì ì¼í ìì¸ë íì ì«ì ê°ì ë³íì ìííë ë¨í ëí기ì
ëë¤.
Null, Undefined ë° Symbolì ì ì¸í 모ë ë°ì´í° íì ìë ê°ê°ì ê°ì ë³í íë¡ì¸ì¤ê° ììµëë¤. ìì¸í ë´ì©ì string ê°ì ë³í, ë¶ë¦¬ì¸(boolean) ê°ì ë³í ë° ê°ì²´ ê°ì ë³íìì íì¸íì¸ì.
ëì¹ì±ì ¨ê² ì§ë§, ê°ì²´ë¥¼ ìì íì ì¼ë¡ ë³íí ì ìë ì¸ ê°ì§ ê²½ë¡ê° ììµëë¤.
[@@toPrimitive]("default")
â valueOf()
â toString()
[@@toPrimitive]("number")
â valueOf()
â toString()
[@@toPrimitive]("string")
â toString()
â valueOf()
모ë ê²½ì°ì, [@@toPrimitive]()
ì´ ìì¼ë©´ í¸ì¶ ê°ë¥íê³ , ìì íì
ì ë°íí´ì¼ íë©°, valueOf
ëë toString
ì í¸ì¶ ê°ë¥íì§ ìê±°ë ê°ì²´ë¥¼ ë°ííë ê²½ì° ë¬´ìë©ëë¤. íë¡ì¸ì¤ê° ëëê³ , ì±ê³µíë©´ ê²°ê³¼ê° ìì íì
ìì ë³´ì¥í©ëë¤. ê²°ê³¼ ìì íì
ì 컨í
ì¤í¸ì ë°ë¼ ì¶ê° ê°ì ì ì©ì ë°ìµëë¤.
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