πŸ’β€β™€οΈ λ³€μˆ˜(Variable)λž€,
ν”„λ‘œκ·Έλž¨μ΄ 싀행될 λ•Œ 잠재적으둜 λ³€κ²½ 될 μˆ˜μžˆλŠ” λͺ…λͺ…λœ κ°’

πŸ‘€ 데이터 νƒ€μž…

πŸ™‹β€ 잠깐 ! μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 데이터 νƒ€μž…μ€ 무슨 νŠΉμ§•μ΄ μžˆλ‚˜μš”?
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 데이터 νƒ€μž…μ€ 크게 μ›μ‹œ νƒ€μž…, 객체 νƒ€μž…μœΌλ‘œ λΆ„λ₯˜

  • μ›μ‹œ νƒ€μž… : number, string, boolean, undefined, null, symbol
  • 객체 νƒ€μž… : μœ„ 6κ°€μ§€ μ΄μ™Έμ˜ λͺ¨λ“  νƒ€μž… (객체, ν•¨μˆ˜, λ°°μ—΄ λ“±)

1) number

숫자 νƒ€μž…μ€ λͺ¨λ‘ μ‹€μˆ˜λ‘œ 처리

var integer = 10;
var double = 5.5;
var negative = -10;

console.log(10 == 10.0); // true
console.log(10 / 4); // 2.5 좜λ ₯ (μ‹€μˆ˜λΌλ¦¬μ˜ λ‚˜λˆ„κΈ°μ΄λ―€λ‘œ μ†Œμˆ˜μ κΉŒμ§€ 처리)

2) string

var string;
string = 'JavaScript'; // ν™‘λ”°μ˜΄ν‘œ
string = "JavaScript"; // μŒλ”°μ˜΄ν‘œ
string = `JavaScript`; // λ°±ν‹±

string = 'μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 감싼 λ¬Έμžμ—΄ λ‚΄μ˜ "큰 λ”°μ˜΄ν‘œ"λŠ” λ¬Έμžμ—΄λ‘œ 인식';
string = "큰 λ”°μ˜΄ν‘œλ‘œ 감싼 λ¬Έμžμ—΄ λ‚΄μ˜ 'μž‘μ€ λ”°μ˜΄ν‘œ'λŠ” λ¬Έμžμ—΄λ‘œ 인식";

[1] ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄

πŸ’β€β™€οΈ ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ΄λž€,
ES6λΆ€ν„° λ„μž… 된 멀티라인 λ¬Έμžμ—΄, ν‘œν˜„μ‹ μ‚½μž… λ“± νŽΈλ¦¬ν•œ λ¬Έμžμ—΄ 처리 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ¬Έμžμ—΄ ν‘œκΈ°λ²•

β—Ό 일반 λ¬Έμžμ—΄ λ‚΄μ—μ„œλŠ” μ€„λ°”κΏˆμ΄ ν—ˆμš© X
// var str = 'μ•ˆλ…•ν•˜μ„Έμš”.
// λ°˜κ°‘μŠ΅λ‹ˆλ‹€';

var str = 'μ•ˆλ…•ν•˜μ„Έμš”.\nλ°˜κ°‘μŠ΅λ‹ˆλ‹€.'; 
// μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λ₯Ό μ‚¬μš©ν•΄μ•Όλ§Œ κ°€λŠ₯
β—Ό λ°±ν‹±(ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄)을 μ‚¬μš©ν•˜λ©΄ μ€„λ°”κΏˆ ν—ˆμš©, λͺ¨λ“  곡백 적용
var multiline = `μ•ˆλ…•ν•˜μ„Έμš”.
λ°˜κ°‘μŠ΅λ‹ˆλ‹€.
제 이름은 νš¨μ—°μž…λ‹ˆλ‹€.`
console.log(multiline); // κ°œν–‰μ΄ κ·ΈλŒ€λ‘œ 좜λ ₯

var lastName = 'μ‘°';
var firstName = 'νš¨μ—°';

// λ¬Έμžμ—΄μ€ λ¬Έμžμ—΄ μ—°μ‚°μž '+'λ₯Ό μ‚¬μš©ν•΄ μ—°κ²°
console.log('제 Full Name은 ' + lastName + firstName + 'μž…λ‹ˆλ‹€.');

// ν‘œν˜„μ‹ μ‚½μž…μ„ μ΄μš©ν•˜λ©΄ λ¬Έμžμ—΄ μ—°μ‚°μžλ³΄λ‹€ 가독성 μ’‹κ³  κ°„νŽΈν•˜κ²Œ 문자λ₯Ό μ‘°ν•© κ°€λŠ₯
console.log(`제 Full Name은 ${lastName}${firstName}μž…λ‹ˆλ‹€.`); // μœ„μ™€ λ™μΌν•œ 좜λ ₯ (λ°±ν‹±μ˜ 효과)

// ν‘œν˜„μ‹ μ‚½μž…μ€ λ°˜λ“œμ‹œ λ°±ν‹± λ‚΄μ—μ„œλ§Œ μ‚¬μš©
console.log('제 Full Name은 ${lastName}${firstName}μž…λ‹ˆλ‹€.'); // κ·ΈλŒ€λ‘œ 좜λ ₯

3) boolean

μžλ°”μ™€ λ™μΌν•œ μ„±μ§ˆ

var flag = true;
console.log(flag);
flag = false;
console.log(flag);

4) undefined & null

// var undef = undefined; // κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠ” 것은 μ§€μ–‘
var undef;                // μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λ³€μˆ˜ μ΄ˆκΈ°ν™” μ‹œ undefined μ‚¬μš©
console.log(undef);

// null은 λ³€μˆ˜μ— 값이 μ—†λ‹€λŠ” 것을 μ˜λ„μ μœΌλ‘œ λͺ…μ‹œν•  λ•Œ μ‚¬μš©
var nullVal = 'something';
nullVal = null; // 이전 μ°Έμ‘°κ°€ μ œκ±°λ˜μ–΄ 더 이상 'something'을 μ°Έμ‘° X
console.log(nullVal);

5) symbol & object

πŸ’β€β™€οΈ symbolμ΄λž€,
λ‹€λ₯Έ κ°’κ³Ό 쀑볡 λ˜μ§€ μ•ŠλŠ” μœ μΌλ¬΄μ΄ν•œ κ°’μœΌλ‘œ 이름 좩돌 μœ„ν—˜μ΄ μ—†λŠ” 객체의 μœ μΌν•œ ν”„λ‘œνΌν‹°

  • ν‚€ 값을 λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©
  • 심볼 μ™Έμ˜ μ›μ‹œ 값을 λ¦¬ν„°λŸ΄μ„ 톡해 생성, 심볼은 Symbolν•¨μˆ˜λ₯Ό 톡해 ν˜ΈμΆœν•˜μ—¬ 생성

typeof : λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ 확인할 λ•Œ μ‚¬μš©

// 심볼 생성
var key = Symbol('key');
console.log(typeof key); // symbol 좜λ ₯
// 객체 생성
var obj = {};

obj[key] = 'value'; // 심볼 key에 valueλΌλŠ” λ¬Έμžμ—΄μ„ λ‹΄μŒ
console.log(obj[key]); // value 좜λ ₯

πŸ‘€ 동적 νƒ€μž… μ–Έμ–΄

πŸ’β€β™€οΈ 동적 νƒ€μž… μ–Έμ–΄μ΄λž€,
데이터 νƒ€μž…μ„ 사전에 μ„ μ–Έν•˜μ§€ μ•ŠλŠ” 것을 μ˜λ―Έν•˜λ©°, λ³€μˆ˜ 선언이 μ•„λ‹ˆλΌ 할당에 μ˜ν•΄ νƒ€μž…μ΄ κ²°μ •λ˜κ³  μž¬ν• λ‹Ήμ— μ˜ν•΄ λ™μ μœΌλ‘œ λ³€μˆ˜μ˜ νƒ€μž…μ΄ λ³€ν™”ν•  수 있음

  • JavaScriptλŠ” 동적 νƒ€μž… μ–Έμ–΄
var test;
console.log(typeof test); // undefined 좜λ ₯

test = 1;
console.log(typeof test); // number 좜λ ₯

test = "I'm Joy";
console.log(typeof test); // string 좜λ ₯

test = true;
console.log(typeof test); // boolean 좜λ ₯

test = null;
console.log(typeof test); // object 좜λ ₯
// μžλ°”μŠ€ν¬λ¦½νŠΈ 첫 번째 λ²„μ „μ˜ λ²„κ·Έμ΄μ§€λ§Œ κΈ°μ‘΄ μ½”λ“œμ— 영ν–₯을 쀄 수 μžˆμ–΄ μ•„μ§κΉŒμ§€ μˆ˜μ • X

test = Symbol();
console.log(typeof test); // symbol 좜λ ₯

test = {}; // 객체
console.log(typeof test); // object 좜λ ₯

test = []; // λ°°μ—΄
console.log(typeof test); // object 좜λ ₯

test = function(){}; // ν•¨μˆ˜
console.log(typeof test); // function 좜λ ₯

πŸ‘€ 암묡적 ν˜•λ³€ν™˜

1) to string

[1] λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž

λ¬Έμžμ—΄ νƒ€μž…μ΄ μ•„λ‹Œ ν”Όμ—°μ‚°μžλ₯Ό λ¬Έμžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜

console.log(10 + '20');

[2] ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ ν‘œν˜„μ‹ μ‚½μž…

ν‘œν˜„μ‹μ˜ κ²°κ³Όλ₯Ό λ¬Έμžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜

console.log(`10 + 20 : ${10 + 20}`);

[3] 빈 λ¬Έμžμ—΄ μΆ”κ°€

console.log(1 + '');
console.log(NaN + '');
console.log(Infinity + '');
console.log(true + '');
console.log(null + '');
console.log(undefined + '');
// console.log(Symbol() + '');   
// Cannot convert a Symbol value to a string (Symbol은 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ λΆˆκ°€λŠ₯)
console.log({} + '');           // 객체 - "[object Object]"
console.log([] + '');           // λ°°μ—΄ - ""
console.log(function(){} + ''); // ν•¨μˆ˜ - "function(){}"

2) to number

[1] μ‚°μˆ  μ—°μ‚°μž

μ‚°μˆ  μ—°μ‚°μžμ˜ ν”Όμ—°μ‚°μžλŠ” λͺ¨λ‘ μˆ«μžμ—¬μ•Ό ν•˜λ―€λ‘œ μˆ«μžκ°€ μ•„λ‹Œ ν”Όμ—°μ‚°μžλ₯Ό 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜
NaN : Not a Number

console.log(10 - '5');
console.log(10 * '5');
console.log(10 / '5');
console.log(10 % 'JavaScript'); // NaN
								// ν”Όμ—°μ‚°μžλ₯Ό 숫자둜 λ³€ν™˜ λΆˆκ°€ (μ—°μ‚° μˆ˜ν–‰ λΆˆκ°€)

[2] 비ꡐ μ—°μ‚°μž

비ꡐ μ—°μ‚°μžλ‘œ 크기λ₯Ό λΉ„κ΅ν•˜λ €λ©΄ λͺ¨λ‘ 숫자 νƒ€μž…μ΄μ—¬μ•Ό ν•˜λ―€λ‘œ μˆ«μžκ°€ μ•„λ‹Œ ν”Όμ—°μ‚°μžλ₯Ό 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜
isNaN() : NaN은 λΉ„κ΅μ—°μ‚°μž(==)λŒ€μ‹  isNaN으둜 확인

console.log(10 > '5');
console.log(10 > '20');
console.log(`10 > 'a' : ${10 > 'a'}`);  
// λ¬ΈμžλŠ” λͺ¨λ‘ NaN으둜 λ³€ν™˜λ˜κΈ° λ•Œλ¬Έμ— NaN은 비ꡐ μ—°μ‚°μžμ—μ„œ μ–΄λ–€ 값과도 비ꡐ λΆˆκ°€λŠ₯
// λ”°λΌμ„œ 항상 falseλ₯Ό λ°˜ν™˜

/* μ°Έκ³  */
console.log(`NaN == NaN : ${NaN == NaN}`); // false
console.log(`isNaN(NaN) : ${isNaN(NaN)}`); // true

[3] 단항 μ—°μ‚°μž (+)

  • 단항 μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžκ°€ 숫자 νƒ€μž…μ˜ 값이 μ•„λ‹ˆλ©΄ 숫자 νƒ€μž…μ˜ κ°’μœΌλ‘œ λ³€ν™˜
console.log(+'');                   // 0
console.log(+'1');                  // 1
console.log(+'JavaScript');         // NaN
console.log(+true);                 // 1
console.log(+false);                // 0
console.log(+null);                 // 0
console.log(+undefined);            // NaN
//console.log(+Symbol());           // Cannot convert a Symbol value to a number
console.log(+{});                   // NaN
console.log(+[]);                   // 0
console.log(+function(){});         // NaN

πŸ“Œ Ref. πŸ”₯μ€‘μš”πŸ”₯

* 빈 λ¬Έμžμ—΄, 빈 λ°°μ—΄, null, falseλŠ” 0으둜 λ³€ν™˜
* trueλŠ” 1둜 λ³€ν™˜λœλ‹€.
* 객체와 undefined, ν•¨μˆ˜λŠ” λ³€ν™˜λ˜μ§€ μ•Šμ•„ NaN이 λ°˜ν™˜

3) to boolean

πŸ’β€β™€οΈ JavaScript 엔진은 boolean νƒ€μž…μ΄ μ•„λ‹Œ 값을 Truthy κ°’(참으둜 ν‰κ°€λ˜λŠ” κ°’) λ˜λŠ” Falsy κ°’(κ±°μ§“μœΌλ‘œ ν‰κ°€λ˜λŠ” κ°’)으둜 ꡬ뢄

  • Truthy πŸ‘‰ true | Falsy πŸ‘‰ false둜 암묡적 νƒ€μž… λ³€ν™˜
if(undefined) console.log("if(undefined)");         // false
if(null) console.log("if(null)");                   // false
if(0) console.log("if(0)");                         // false
if(1) console.log("if(1)");                         // true => 정상 좜λ ₯
if(NaN) console.log("if(NaN)");                     // false
if('') console.log("if('')");                       // false
if('JavaScript') console.log("if('JavaScript')");   // true => 정상 좜λ ₯

πŸ“Œ Ref. πŸ”₯μ€‘μš”πŸ”₯

* false, undefined, null, 0, NaN, ''(빈 λ¬Έμžμ—΄)은 Falsy κ°’
* 이 μ™Έμ˜ λͺ¨λ“  값듀은 Truthy κ°’

πŸ‘€ λͺ…μ‹œμ  ν˜•λ³€ν™˜

1) to string

[1] String μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 호좜

console.log(String(10));
console.log(String(NaN));
console.log(String(Infinity));
console.log(String(true));
console.log(String(false));

[2] toString() λ©”μ†Œλ“œ μ‚¬μš©

console.log((10).toString());
console.log((NaN).toString());
console.log((Infinity).toString());
console.log((true).toString());
console.log((false).toString());

2) to number

[1] Number μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 호좜

console.log(Number('10'));
console.log(Number('10.01'));
console.log(Number(true));	// 1
console.log(Number(false));	// 0

[2] parseInt, parseFloat ν•¨μˆ˜ 이용

λ¬Έμžμ—΄ πŸ‘‰ 숫자만 κ°€λŠ₯

console.log(parseInt('10'));
console.log(parseFloat('10'));
console.log(parseInt('10.01'));
console.log(parseFloat('10.01'));

[3] * μ‚°μˆ  μ—°μ‚°μž 이용

console.log('10' * 1);
console.log('10.01' * 1);
console.log(true * 5);  // 5 
console.log(false * 5); // 0

3) to boolean

[1] Boolean μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 호좜

console.log(Boolean('JavaScript'));     // true
console.log(Boolean(''));               // false
console.log(Boolean(1));                // true
console.log(Boolean(0));                // false
console.log(Boolean(NaN));              // false
console.log(Boolean(Infinity));         // true
console.log(Boolean(null));             // false
console.log(Boolean(undefined));        // false
console.log(Boolean({}));               // true
console.log(Boolean([]));               // true

[2] ! λΆ€μ • 논리 μ—°μ‚°μžλ₯Ό 두 번 μ‚¬μš©

console.log(!!'JavaScript');    // true
console.log(!!'');              // false
console.log(!!1);               // true
console.log(!!0);               // false
console.log(!!NaN);             // false
console.log(!!Infinity);        // true
console.log(!!null);            // false
console.log(!!undefined);       // false
console.log(!!{});              // true
console.log(!![]);              // true
profile
Tiny little habits make me

0개의 λŒ“κΈ€

Powered by GraphCDN, the GraphQL CDN