ìë°ì¤í¬ë¦½í¸ìì ê°ì íì 문ìì´ì´ë ì«ìí ê°ì í¹ì í ìë£íì ìí©ëë¤.
ìë°ì¤í¬ë¦½í¸ìë ì¬ë ê°ì§ 기본 ìë£íì´ ììµëë¤. ì´ë² ì±í°ìì ì´ ìë£í 모ë를 ê°ê´ì ì¼ë¡ ë¤ë£¨ëë¡ íê² ìµëë¤. ê° ìë£íì ëí ì¸ë¶ ì¬íë¤ì ì´ì´ì§ë ì±í°ìì ë¤ë£° ìì ì ëë¤.
ìë°ì¤í¬ë¦½í¸ì ë³ìë ìë£íì ê´ê³ìì´ ëª¨ë ë°ì´í°ì¼ ì ììµëë¤. ë°ë¼ì ë³ìë ì´ë¤ ìê°ì 문ìì´ì¼ ì ìê³ ë¤ë¥¸ ìê°ì ì«ìê° ë ìë ììµëë¤.
// no error
let message = "hello";
message = 123456;
ì´ì²ë¼ ìë£ì íì ì ìì§ë§ ë³ìì ì ì¥ëë ê°ì íì ì ì¸ì ë ì§ ë°ê¿ ì ìë ì¸ì´ë¥¼ âëì íì (dynamically typed)â ì¸ì´ë¼ê³ ë¶ë¦ ëë¤.
ì«ìí
let n = 123;
n = 12.345;
ì«ìí(number type) ì ì ì ë° ë¶ëììì ì«ì(floating point number)를 ëíë ëë¤.
ì«ìíê³¼ ê´ë ¨ë ì°ì°ì ë¤ìíë°, ê³±ì
*, ëëì
/, ë§ì
+, ëºì
- ë±ì´ ëíì ì
ëë¤.
ì«ìíì ì¼ë°ì ì¸ ì«ì ì¸ì Infinity, -Infinity, NaNê°ì 'í¹ì ì«ì ê°(special numeric value)'ì´ í¬í¨ë©ëë¤.
-
Infinityë ì´ë¤ ì«ìë³´ë¤ ë í° í¹ì ê°, 무íë(â)를 ëíë ëë¤.ì´ë ì«ìë 0ì¼ë¡ ëëë©´ 무íë를 ì»ì ì ììµëë¤.
alert( 1 / 0 ); // 무íëInfinity를 ì§ì 참조í ìë ììµëë¤.alert( Infinity ); // 무íë -
NaNì ê³ì° ì¤ì ìë¬ê° ë°ìíë¤ë ê²ì ëíë´ì£¼ë ê°ì ëë¤. ë¶ì ííê±°ë ì ìëì§ ìì ìí ì°ì°ì ì¬ì©íë©´ ê³ì° ì¤ì ìë¬ê° ë°ìíëë°, ì´ëNaNì´ ë°íë©ëë¤.alert( "ì«ìê° ìë" / 2 ); // NaN, 문ìì´ì ì«ìë¡ ëëë©´ ì¤ë¥ê° ë°ìí©ëë¤.NaNì ì¬ê°í´ì ë°ëì§ ììµëë¤.NaNì ì´ë¤ ì¶ê° ì°ì°ì í´ë ê²°êµNaNì´ ë°íë©ëë¤.alert( "ì«ìê° ìë" / 2 + 5 ); // NaNì°ì° ê³¼ì ì´ëìì ê°
NaNì´ ë°íëìë¤ë©´, ì´ë 모ë ê²°ê³¼ì ìí¥ì 미칩ëë¤.
ìë°ì¤í¬ë¦½í¸ìì íí´ì§ë ìí ì°ì°ì 'ìì âíë¤ê³ ë³¼ ì ììµëë¤. 0ì¼ë¡ ëëë¤ê±°ë ì«ìê° ìë 문ìì´ì ì«ìë¡ ì·¨ê¸íë ë±ì ì´ë¡ì ì¸ ì°ì°ì´ ìë°ì¤í¬ë¦½í¸ìì ê°ë¥í©ëë¤.
ë§ì´ ì ëë ìí ì°ì°ì íëë¼ë ì¤í¬ë¦½í¸ë ì¹ëª
ì ì¸ ìë¬ë¥¼ ë´ë¿ì¼ë©° ì£½ì§ ììµëë¤. NaNì ë°ííë©° ì°ì°ì´ ì¢
ë£ë ë¿ì
ëë¤.
íì¤ìì í¹ì ì«ì ê°ì ì«ìë¡ ì·¨ê¸íì§ ììµëë¤. íì§ë§ ìë°ì¤í¬ë¦½í¸ìì í¹ì ì«ì ê°ì ì«ìíì¼ë¡ ë¶ë¥í©ëë¤.
ì«ì를 ë¤ë£¨ë ë°©ë²ì ëí´ì ì«ìí ì±í°ìì ìì¸í ììë³´ëë¡ íê² ìµëë¤.
BigInt
ë´ë¶ íí ë°©ì ë문ì ìë°ì¤í¬ë¦½í¸ìì (253-1)(9007199254740991) ë³´ë¤ í° ê° í¹ì -(253-1) ë³´ë¤ ìì ì ìë 'ì«ìíâì ì¬ì©í´ ëíë¼ ì ììµëë¤.
ì¬ì¤ ëë¶ë¶ì ìí©ìì ì´ë° ì ì½ì¬íì 문ì ê° ëì§ ììµëë¤. ê·¸ë ì§ë§ ìí¸ ê´ë ¨ ìì ê°ì´ ì주 í° ì«ìê° íìí ìí©ì´ê±°ë ì주 ëì ì ë°ëë¡ ìì ì í´ì¼ í ëë ì´ë° í° ì«ìê° íìí©ëë¤.
BigIntíì íì¤ì¼ë¡ ì±íë ì§ ì¼ë§ ì ë ìë£íì¼ë¡, 길ì´ì ìê´ìì´ ì ì를 ëíë¼ ì ììµëë¤.
BigIntí ê°ì ì ì 리í°ë´ ëì nì ë¶ì´ë©´ ë§ë¤ ì ììµëë¤.
// ëì 'n'ì´ ë¶ì¼ë©´ BigIntí ìë£ì
ëë¤.
const bigInt = 1234567890123456789012345678901234567890n;
BigIntí ì«ìë ì주 ì°ì´ì§ ì기 ë문ì ì¬ê¸°ì ìì¸í ë¤ë£¨ì§ ìê³ ë³ëì ì±í°, BigIntìì ì¤ëª
ëë¦¬ê² ìµëë¤. ì주 í° ì«ì를 ì¬ì©í´ì¼ íë ê²½ì°ë¼ë©´ í´ë¹ ì±í°ë¥¼ ì°¸ê³ í´ ì£¼ì기 ë°ëëë¤.
ì´ ê¸ì´ ìì±ë ìì ì Firefox, Chrome, Edge, Safariììë§ BigInt를 ì§ìí©ëë¤. IEìì ì§ìíì§ ììµëë¤.
문ìí
ìë°ì¤í¬ë¦½í¸ìì 문ìì´(string)ì ë°ì´íë¡ ë¬¶ìµëë¤.
let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed another ${str}`;
ë°ì´íë ì¸ ì¢ ë¥ê° ììµëë¤.
- í°ë°ì´í:
"Hello" - ììë°ì´í:
'Hello' - ì ë°ì´í(ë°±í±, backtick):
`Hello`
í°ë°ì´íì ììë°ì´íë â기본ì ì¸â ë°ì´íë¡, ìë°ì¤í¬ë¦½í¸ììë ì´ ëì ì°¨ì´ë¥¼ ëì§ ììµëë¤.
ì ë°ì´íë¡ ë³ìë ííìì ê°ì¼ í ${â¦}ìì ë£ì´ì£¼ë©´, ìëì ê°ì´ ìíë ë³ìë ííìì 문ìì´ ì¤ê°ì ìì½ê² ë£ì ì ììµëë¤.
let name = "John";
// ë³ì를 문ìì´ ì¤ê°ì ì½ì
alert( `Hello, ${name}!` ); // Hello, John!
// ííìì 문ìì´ ì¤ê°ì ì½ì
alert( `the result is ${1 + 2}` ); // the result is 3
${â¦} ììë name ê°ì ë³ìë 1 + 2 ê°ì ìí ê´ë ¨ ííìì ë£ì ì ììµëë¤. ë¬¼ë¡ ë ë³µì¡í ííìë ë£ì ì ìì£ . 무ìì´ë ë¤ì´ê° ì ììµëë¤. ì´ë ê² ë¬¸ìì´ ì¤ê°ì ë¤ì´ê° ë³ìë ííìì íê°ê° ëë í 문ìì´ì ì¼ë¶ê° ë©ëë¤.
í°ë°ì´íë ììë°ì´í를 ì¬ì©íë©´ ì¤ê°ì ííìì ë£ì ì ìë¤ë ì ì 주ìíì기 ë°ëëë¤. ì´ ë°©ë²ì ì ë°ì´í를 ì¨ì¼ë§ ê°ë¥í©ëë¤.
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (í°ë°ì´íë íì¥ ê¸°ë¥ì ì§ìíì§ ììµëë¤.)
문ìì´ì 문ìì´ì±í°ìì ë ìì¸í ë¤ë£¨ëë¡ íê² ìµëë¤.
ì¼ë¶ ì¸ì´ë ê¸ì íë를 ì ì¥í ë ì°ì´ë ìë£í, 'ê¸ì(character)'íì ë°ë¡ ì§ìí©ëë¤. C ì¸ì´ì Javaì charê° ëíì ì¸ ìì
ëë¤.
ìë°ì¤í¬ë¦½í¸ë ê¸ìíì ì§ìíì§ ììµëë¤. 문ìíë§ ìì ë¿ì
ëë¤. ì¬ê¸°ì ê¸ìê° íë í¹ì ì¬ë¬ ê° ë¤ì´ê° ì ììµëë¤.
ë¶ë¦°í
ë¶ë¦°í(ë
¼ë¦¬ íì
)ì trueì false ë ê°ì§ ê°ë°ì ìë ìë£íì
ëë¤.
ë¶ë¦°íì ê¸ì (yes)ì´ë ë¶ì (no)ì ëíë´ë ê°ì ì ì¥í ë ì¬ì©í©ëë¤. trueë ê¸ì , falseë ë¶ì ì ì미í©ëë¤.
ìì:
let nameFieldChecked = true; // ë¤, name fieldê° íì¸ëììµëë¤(checked).
let ageFieldChecked = false; // ìëì, age field를 íì¸íì§ ìììµëë¤(not checked)
ë¶ë¦°ê°ì ë¹êµ 결과를 ì ì¥í ëë ì¬ì©ë©ëë¤.
let isGreater = 4 > 1;
alert( isGreater ); // true (ë¹êµ ê²°ê³¼: "yes")
ë¶ë¦°íì ëí ìì¸í ì¬íë¤ì ë ¼ë¦¬ ì°ì°ì ì±í°ìì ë¤ë£¨ëë¡ íê² ìµëë¤.
ânullâ ê°
null ê°ì ì§ê¸ê¹ì§ ìê°í ìë£í ì¤ ì´ë ìë£íìë ìíì§ ìë ê°ì
ëë¤.
null ê°ì ì¤ë¡ì§ null ê°ë§ í¬í¨íë ë³ëì ìë£íì ë§ëëë¤.
let age = null;
ìë°ì¤í¬ë¦½í¸ì nullì ìë°ì¤í¬ë¦½í¸ ì´ì¸ ì¸ì´ì nullê³¼ ì±ê²©ì´ ë¤ë¦
ëë¤. ë¤ë¥¸ ì¸ì´ìì nullì 'ì¡´ì¬íì§ ìë ê°ì²´ì ëí 참조âë 'ë í¬ì¸í°(null pointer)'를 ëíë¼ ë ì¬ì©í©ëë¤.
íì§ë§ ìë°ì¤í¬ë¦½í¸ìì nullì âì¡´ì¬íì§ ìë(nothing)â ê°, âë¹ì´ ìë(empty)â ê°, âì ì ìë(unknown)â ê°ì ëíë´ë ë° ì¬ì©í©ëë¤.
let age = null;ì ëì´(age)를 ì ì ìê±°ë ê·¸ ê°ì´ ë¹ì´ììì ë³´ì¬ì¤ëë¤.
âundefinedâ ê°
undefined ê°ë null ê°ì²ë¼ ìì ë§ì ìë£íì íì±í©ëë¤.
undefinedë 'ê°ì´ í ë¹ëì§ ìì ìíâ를 ëíë¼ ë ì¬ì©í©ëë¤.
ë³ìë ì ì¸íì§ë§, ê°ì í ë¹íì§ ììë¤ë©´ í´ë¹ ë³ìì undefinedê° ìëì¼ë¡ í ë¹ë©ëë¤.
let age;
alert(age); // 'undefined'ê° ì¶ë ¥ë©ëë¤.
ê°ë°ìê° ë³ìì undefined를 ëª
ìì ì¼ë¡ í ë¹íë ê²ë ê°ë¥í긴 í©ëë¤.
let age = 100;
// ê°ì undefinedë¡ ë°ê¿ëë¤.
age = undefined;
alert(age); // "undefined"
íì§ë§ ì´ë ê² undefined를 ì§ì í ë¹íë 걸 ê¶ì¥íì§ ììµëë¤. ë³ìê° âë¹ì´ìê±°ëâ âì ì ìëâ ìíë¼ë 걸 ëíë´ë ¤ë©´ nullì ì¬ì©íì¸ì. undefinedë ê°ì´ í ë¹ëì§ ìì ë³ìì ì´ê¸°ê°ì ìí´ ìì½ì´ë¡ ë¨ê²¨ë¡ìë¤.
ê°ì²´ì ì¬ë³¼
ê°ì²´(object)íì í¹ìí ìë£íì
ëë¤.
ê°ì²´íì ì ì¸í ë¤ë¥¸ ìë£íì 문ìì´ì´ë ì«ìë í ê°ì§ë§ ííí ì ì기 ë문ì ìì(primitive) ìë£íì´ë¼ ë¶ë¦ ëë¤. ë°ë©´ ê°ì²´ë ë°ì´í° 컬ë ì ì´ë ë³µì¡í ê°ì²´(entity)를 ííí ì ììµëë¤.
ì´ë° í¹ì§ ë문ì ìë°ì¤í¬ë¦½í¸ìì ê°ì²´ë ì¢ ë í¹ë³í ì·¨ê¸ì ë°ìµëë¤. ìì¸í ë´ì©ì ììíì ë°°ì°ê³ ë í ê°ì²´ìì ë¤ë£¨ëë¡ íê² ìµëë¤.
ì¬ë³¼(symbol)íì ê°ì²´ì ê³ ì í ìë³ì(unique identifier)를 ë§ë¤ ë ì¬ì©ë©ëë¤. ì¬ë³¼íì ëí´ì ê°ì²´ë¥¼ íìµíê³ ë ì´íì ìì¸í ììë³´ê² ìµëë¤.
typeof ì°ì°ì
typeof ì°ì°ìë ì¸ìì ìë£íì ë°íí©ëë¤. ìë£íì ë°ë¼ ì²ë¦¬ ë°©ìì ë¤ë¥´ê² íê³ ì¶ê±°ë ë³ìì ìë£íì ë¹ ë¥´ê² ììë´ê³ ì í ë ì ì©í©ëë¤.
typeof ì°ì°ìë ë ê°ì§ ííì 문ë²ì ì§ìí©ëë¤.
- ì°ì°ì:
typeof x - í¨ì:
typeof(x)
ê´í¸ê° ìë ìë ê²°ê³¼ê° ëì¼í©ëë¤.
typeof x를 í¸ì¶íë©´ ì¸ìì ìë£íì ëíë´ë 문ìì´ì ë°íí©ëë¤.
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
ë§ì§ë§ ì¸ ì¤ì ì½ê°ì ì¤ëª ì´ íìí´ ë³´ì´ë¤ì.
Mathë ìí ì°ì°ì ì ê³µíë ë´ì¥ ê°ì²´ì´ë¯ë¡"object"ê° ì¶ë ¥ë©ëë¤.Mathì ëí´ì ì«ìí ì±í°ìì íìµíëë¡ íê² ìµëë¤. ë´ì¥ ê°ì²´ë ê°ì²´íì´ë¼ë ê²ì ìë ¤ì£¼ê¸° ìí´ ì´ë° ìì를 ìì±í´ ë³´ììµëë¤.typeof nullì ê²°ê³¼ë"object"ì ëë¤.nullì ë³ëì ê³ ì í ìë£íì ê°ì§ë í¹ì ê°ì¼ë¡ ê°ì²´ê° ìëì§ë§, íì í¸íì±ì ì ì§í기 ìí´ ì´ë° ì¤ë¥ë¥¼ ìì íì§ ìê³ ë¨ê²¨ë ìí©ì ëë¤. ì¸ì´ ìì²´ì ì¤ë¥ì´ë¯ë¡nullì´ ê°ì²´ê° ìëì ì ìíì기 ë°ëëë¤.typeofë í¼ì°ì°ìê° í¨ìë©´"function"ì ë°íí©ëë¤. ê·¸ë¬ë¯ë¡typeof alertë"function"ì ì¶ë ¥í´ì¤ëë¤. ê·¸ë°ë° 'í¨ìâíì ë°ë¡ ììµëë¤. í¨ìë ê°ì²´íì ìí©ëë¤. ì´ë° ëì ë°©ìì´ íìì ì¼ë¡ ì못ë긴 íì§ë§, ì주 ì¤ëì ì ë§ë¤ì´ì§ ê·ì¹ì´ì기 ë문ì íì í¸íì± ì ì§ë¥¼ ìí´ ë¨ê²¨ì§ ìíì ëë¤. íí¸, ì¤ë¬´ìì ì´ë° í¹ì§ì´ ë§¤ì° ì ì©íê² ì¬ì©ë기ë í©ëë¤.
ìì½
ìë°ì¤í¬ë¦½í¸ìë ì¬ë ê°ì§ 기본 ìë£íì´ ììµëë¤.
ì«ìíâ ì ì, ë¶ë ììì ì«ì ë±ì ì«ì를 ëíë¼ ë ì¬ì©í©ëë¤. ì ìì íê³ë ±253 ì ëë¤.bigintâ ê¸¸ì´ ì ì½ ìì´ ì ì를 ëíë¼ ì ììµëë¤.문ìíâ ë¹ ë¬¸ìì´ì´ë ê¸ìë¤ë¡ ì´ë¤ì§ 문ìì´ì ëíë¼ ë ì¬ì©í©ëë¤. ë¨ì¼ 문ì를 ëíë´ë ë³ëì ìë£íì ììµëë¤.ë¶ë¦°íâtrue,false를 ëíë¼ ë ì¬ì©í©ëë¤.nullânullê°ë§ì ìí ë 립 ìë£íì ëë¤.nullì ì ì ìë ê°ì ëíë ëë¤.undefinedâundefinedê°ë§ì ìí ë 립 ìë£íì ëë¤.undefinedë í ë¹ëì§ ìì ê°ì ëíë ëë¤.ê°ì²´íâ ë³µì¡í ë°ì´í° 구조를 ííí ë ì¬ì©í©ëë¤.ì¬ë³¼íâ ê°ì²´ì ê³ ì ìë³ì를 ë§ë¤ ë ì¬ì©í©ëë¤.
typeof ì°ì°ìë í¼ì°ì°ìì ìë£íì ìë ¤ì¤ëë¤.
typeof xëëtypeof(x)ííë¡ ì¬ì©í©ëë¤.- í¼ì°ì°ìì ìë£íì 문ìì´ ííë¡ ë°íí©ëë¤.
nullì typeof ì°ì°ì"object"ì¸ë°, ì´ë ì¸ì´ì ì¤ë¥ì ëë¤. nullì ê°ì²´ê° ìëëë¤.
ì´ì´ì§ë ì±í°ìì ìì ìë£íì ëí´ íìµí´ ë³¼ ìì ì ëë¤. ììíì ì´ë ì ë ìµìí´ì§ë©´ ê°ì²´íì ëí´ ììë³´ëë¡ íê² ìµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.