๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒDevelopment/JavaScript

[JS] ๋ฐ์ดํ„ฐํƒ€์ž…, data types, ๋ณ€์ˆ˜ ์„ ์–ธ let vs var, hoisting

by geumsong 2023. 3. 12.

Variable, rw (read / write)

: ๋ณ€์ˆ˜

: ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’

:  let์„ ๋งŽ์ด ์”€

 

let name = 'ellie';

-  ํ•ด์„:  let์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ ์ด์šฉํ•ด์„œ name์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ(declaration)ํ•˜๊ณ  ellie๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

 

name = 'hello';

- ํ•ด์„: ๋‹ค์‹œ name ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— hello ๋ผ๋Š” ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด console์—๋Š” ellie์™€ hello๊ฐ€ ๋‚˜๋ž€ํžˆ ์ถœ๋ ฅ๋œ๋‹ค.

 

 




๋ณ€์ˆ˜๊ฐ€ ์“ฐ์ด๋Š” ์›๋ฆฌ




์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์“ฐ๊ฒŒ ๋˜๋ฉด, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งˆ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜์–ด์ง„๋‹ค. 

์ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ……ํ…… ๋น„์–ด์žˆ๋Š” ๋ฐ•์Šค๋“ค์ธ๋ฐ 




let์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ name์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ฒŒ๋˜๋ฉด ํ•œ๊ฐ€์ง€์˜ ๋ฐ•์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์ƒ๊น€.

name์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฐ•์Šค ์–ด๋”˜๊ฐ€์—





ellie๋ผ๋Š” ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.

์ถ”ํ›„์— name์ด ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฐ’์— ๋‹ค๋ฅธ ๊ฐ’(hello)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ.



 

Block scope

:  ๊ด„ํ˜ธ (๋ธ”๋Ÿญ)๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ธ”๋Ÿญ ๋ฐ–์—์„œ๋Š” ์•ˆ์— ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ๋ธ”๋Ÿญ ๋ฐ–์—์„œ console.log(name); ์„ ์ ์–ด ์ ‘๊ทผํ•˜๊ฒŒ๋˜๋ฉด ์•„๋ฌด ๊ฐ’๋„ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 global scope

-  ๋ฐ˜๋Œ€๋กœ ๋ธ”๋Ÿญ์„ ์“ฐ์ง€์•Š๊ณ  ํŒŒ์ผ ์•ˆ์— ์ •์˜ํ•ด์„œ ์“ฐ๋Š” ๋ณ€์ˆ˜๋ฅผ global scope์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์–ด๋Š ๊ณณ์—์„œ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. 

๋ธ”๋Ÿญ ๋ฐ–์—์„œ๋„, ์•ˆ์—์„œ๋„ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ˜์†”์—์„œ ๋‘˜๋‹ค ์ถœ๋ ฅ๋จ.

 

===>  global ๋ณ€์ˆ˜๋“ค์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ๋๋‚ ๋•Œ๊นŒ์ง€ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ํƒ‘์žฌ๋ผ ์žˆ์–ด์„œ ์ตœ์†Œํ•œ์œผ๋กœ ์จ์•ผํ•จ. (class, if, for, ํ•จ์ˆ˜ ๋“ฑ ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ๋งŒ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค)

 

 

<JS์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ> 

๋”ฑํ•˜๋‚˜!

let

๊ทธ ์ „์—๋Š” var ์„ ์ผ๋‹ค.


* var์„ ์“ฐ๋ฉด ์•ˆ๋˜๋Š” ์ด์œ ?

1. var hoisting : move delaration from bottom to top
2.has no block scope

 

1. var hoisting

- ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒŒ ์ •์ƒ์ .
var age;
age = 4;

 


ํ•˜์ง€๋งŒ ์„ ์–ธ๋„ ํ•˜๊ธฐ ์ „์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ณ 
age = 4;
var age;

 


๊ฐ’์„ ํ• ๋‹นํ•˜๊ธฐ ์ „์—๋„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
console.log(age);
age = 4;
var age;

===>  undefined๋กœ ๋‚˜์˜จ๋‹ค.( ๋ณ€์ˆ˜๋Š” ์ •์˜๋ผ์žˆ์ง€๋งŒ ๊ฐ’์ด ์•„์ง ์•ˆ๋“ค์–ด๊ฐ€์žˆ๋‹ค.) ๊ทธ๋ž˜์„œ 

 


console.log(age);
age = 4;
console.log(age); (๊ฐ’์„ ํ• ๋‹น)
var age;
===>  ๊ฐ’์„ ํ• ๋‹นํ•œ ํ›„ ์ถœ๋ ฅํ•˜๋ฉด 4๋กœ ๋‚˜์˜จ๋‹ค.

 

 

 

๋งŒ์•ฝ var์ด ์•„๋‹Œ  let์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค. (์ •์ƒ์ )
์„ ์–ธํ•˜๊ธฐ๋„ ์ „์— ๊ฐ’์„ ํ• ๋‹นํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

ํ•˜์ง€๋งŒ var์€ ์„ ์–ธํ•˜๊ธฐ ์ „์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ var hoisting ์ด๋ผ๊ณ  ํ•œ๋‹ค.

* var hoising
:  ์–ด๋””์— ์„ ์–ธํ–ˆ๋Š”์ง€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ œ์ผ ์œ„๋กœ ์„ ์–ธ์„ ๋Œ์–ด์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

 -  global scope์„ ์ด์šฉํ•ด์„œ ์„ ์–ธํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ํŒŒ์ผ ์ œ์ผ ์œ„์— ์„ ์–ธ์ด ์˜ฌ๋ผ๊ฐ€๊ฒŒ๋œ๋‹ค.


+ console.log(age);
-  age๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ๋˜๋ฉด undefined๋กœ ๋‚˜์˜จ๋‹ค.

 

 

 

 

 

2. has no block scope

 

:  var์€ ๋ธ”๋Ÿญ์„ ์ฒ ์ €ํžˆ ๋ฌด์‹œํ•œ๋‹ค.

 

age๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ธ”๋Ÿญ ์•ˆ์—์„œ ์„ ์–ธํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฝ˜์†”์„ ์ด์šฉํ•ด age๋ฅผ ๋ฐ–์—์„œ ์ถœ๋ ฅํ•˜๊ฒŒ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜จ๋‹ค. 

์•„๋ฌด๋ฆฌ ๋ธ”๋Ÿญ์„ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์„ ์–ธํ•ด๋„ ์–ด๋””์—์„œ๋‚˜ ๋ณด์ผ ์ˆ˜ ์žˆ์Œ.
์ดˆ์ฐฝ๊ธฐ์—๋Š” ์ด๋Ÿฐ ์œ ์—ฐ์„ฑ์„ ์ด์šฉํ•ด์„œ ๋Œ€์ถฉ ๋™์ž‘ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์–ด๋Š์ •๋„ ๊ทœ๋ชจ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ์„ ์–ธํ•˜์ง€๋„ ์•Š์€ ๊ฐ’๋“ค์ด ํ• ๋‹น๋˜์–ด์˜ด. ์ด๋Ÿฐ ์œ„ํ—˜๋ถ€๋‹ด๋•Œ๋ฌธ์— let์„ ์จ์•ผํ•œ๋‹ค.



===> ํ˜ธํ™˜์„ฑ ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ es6๋Š” ๋ฉ”์ด์ €๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค ์ง€์›๋˜๊ธฐ๋•Œ๋ฌธ์— ์•ˆ์‹ฌํ•˜๊ณ  ์จ๋„๋จ.

 

 


constant, r(read only)์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐ’์„ ์“ฐ๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅ

:  favor immutable data type always for a few reasons:
    -security ๋ณด์•ˆ์ƒ (ํ•ด์ปค๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ)
    -thread safety (์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ,๋น ๋ฅด๊ฒŒ ๋Œ๋ฆด ์ˆ˜ ์žˆ์Œ)
    -reduce human mistakes(๊ฐ’์„ ๋ฐ”๊พผ๋‹ค๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•œ ๊ฒƒ์ด๊ธฐ๋•Œ๋ฌธ์— ์•ˆ๋ณ€ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค ๋ณ€๊ฒฝํ•ด์•ผํ•  ์ด์œ ๊ฐ€ ์—†์œผ๋ฉด const๋ฅผ ์‚ฌ์šฉํ•˜         ๋Š”๊ฒŒ ์ข‹๋‹ค)
: ํ• ๋‹นํ•˜๋ฉด ๊ฐ’์ด ๋ฐ”๋€Œ์ง€์•Š์Œ. (์ž ๊ธˆ)
:  ๊ฐ’์„ ์„ ์–ธํ•จ๊ณผ ๋™์‹œ์— ์ ˆ๋Œ€๋กœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์Œ.

 

 

๋ฐ์ดํ„ฐ ํƒ€์ž…์—” mutable / immutable 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

mutable data types immutable data types
๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐํƒ€์ž… ๊ฐ’์ด ์ ˆ๋Œ€๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒƒ.
= object (์Šค์Šค๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
- JS์—์„œ ๋ชจ๋“  object๋Š” ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
ex)
-  JS์—์„œ array(๋ฐฐ์—ด)์€ mutable data type.
primitive types
ex)
ellie๋ผ๋Š” string์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด ellie๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ†ต์งธ๋กœ ์˜ฌ๋ ธ๋‹ค๊ฐ€ ๋‹ค๋ฅธ string์œผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜์ง€, ellie์—์„œ i๋ฅผ ๋นผ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พผ๋‹ค๋˜์ง€ ๋ฐ์ดํ„ฐ ์ž์ฒด ๋ณ€๊ฒฝx. 

-frozen objects : ๋ณ€๊ฒฝX

 

JavaScript ๋ณ€์ˆ˜ ์„ ์–ธ
Mutable (๋ฐ”๋€Œ๋Š”๊ฒƒ) Immutable  (๋ฐ”๋€Œ์ง€ ์•Š๋Š”๊ฒƒ)
let const

 


 

Variable types (2๊ฐ€์ง€)

primitive (Variable๋กœ ๊ฐ’์ด ์ €์žฅ๋จ) object (object๋กœ ๊ฐ’์ด ์ €์žฅ๋จ)
- single item(๋” ์ด์ƒ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์—†๋Š” ํ•œ ๊ฐ€์ง€ ์•„์ดํ…œ)
- ๊ฐ’ ์ž์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋จ
box container(์‹ฑ๊ธ€์•„์ดํ…œ๋“ค์„  ํ•œ๋ฐ•์Šค๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ)
- ๋„ˆ๋ฌด ์ปค์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์—†์Œ. object๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ref๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค.
-number
-string
-boolean
-null
-undefined
-symbol

-function
-first-class function
(๋œป: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” function ๋„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํƒ€์ž…์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅํ•˜๊ณ  ํ•จ์ˆ˜์˜ parameter(์ธ์ž)๋กœ๋„ ์ „๋‹ฌ๋˜๊ณ  returnํƒ€์ž…์œผ๋กœ๋„ function์„ returnํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค)

 


C์–ธ์–ด (์ข€ ๋” ์„ธ์„ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ)
-short / int / long (์ˆซ์ž ํ• ๋‹นํ•  ๋•Œ), float / double (์†Œ์ˆ˜์  ํ• ๋‹นํ•  ๋•Œ) ๋“ฑ ๋‹ค์–‘ํ•จ. ์–ผ๋งˆ๋‚˜ ํฐ ์‚ฌ์ด์ฆˆ๋ฅผ ๋‹ด๋Š๋ƒ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์จ์•ผํ•œ๋‹ค.


Java์—์„œ๋„ ์ˆซ์ž์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐํƒ€์ž…์ด ๋งŽ๋‹ค.


.
.
.

 

 

 

primitive


1. number


ํ•˜์ง€๋งŒ JS์—์„œ๋Š” number๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋!!
JS์—์„œ๋Š” number์„ ์–ธ ์•ˆํ•ด๋„ ๋จ(ํƒ€์ž…์ด ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ)
let a = 12;
let b = 1.2;
์–ด๋–ค ์ˆซ์ž๋“  ํ• ๋‹นํ•˜๋ฉด ๋.

์•„์ง ๋ฐฐ์šฐ์ง„ ์•Š์•˜์ง€๋งŒ TS(Time Script)์—์„œ๋„ number์„ ์“ด๋‹ค. 
let a: number = 12;
let b: number = 1.2;

===> ์ด๋Ÿฐ๊ฒŒ ์žˆ๊ตฌ๋‚˜ ์•Œ์•„๋งŒ๋‘๊ธฐ.

 

 

 


JS์—์„œ๋Š”
integer :์ •์ˆ˜
decimal number: ์†Œ์ˆ˜์ 
===>number type์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.


Special numeric values : infinity, -infinity, NaN
:  number์—์„œ๋„ ํŠน๋ณ„ํ•œ ๊ฐ’์ด ์ ์šฉ๋ผ์žˆ๋‹ค.

1. infinity
:  ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋ฌดํ•œ๋Œ€(infinity)๊ฐ€ ๋œ๋‹ค.

2. negative infinity
:  ๋งˆ์ด๋„ˆ์Šค ๊ฐ’(negative value)์„ 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด negative infinity๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

3. NaN (not a number)
: ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ string์„ ์ˆซ์ž๋กœ ๋‚˜๋ˆ„๋ฉด NaN๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ๋œ๋‹ค.

๋‹ค์–‘ํ•œ ๊ณ„์‚ฐ ํ•ด์•ผ๋ ๋•Œ ๋‚˜๋ˆ„์–ด์•ผ ํ•˜๋Š” ๊ฐ’์ด 0์ธ์ง€ ์•„๋‹Œ์ง€ ์ˆซ์ž์ธ์ง€ ์•„๋‹Œ์ง€ ๋ชจ๋ฅด๊ณ  ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ Infinity, -Infinity, NaN๊ฐ€ ๋‚˜์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์—๋Ÿฌ๋‚  ์ˆ˜ ์žˆ์Œ. ์—ฐ์‚ฐํ• ๋•Œ ๊ทธ ๊ฐ’์ด validํ•œ ๊ฐ’์ธ์ง€ ํ™•์ธํ•ด์•ผํ•œ๋‹ค.


 

 


* bigInt

-  JS์˜ number๋Š” -2์˜ 53์Šน๋ถ€ํ„ฐ 2์˜ 53์Šน๊นŒ์ง€ ๊ฐ€๋Šฅ(ํ‘œ๊ธฐ:  -2**53 ~ 2*53)

-  ์ตœ๊ทผ์—๋Š” bigInt ๋ผ๋Š”๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ์ˆซ์ž์˜ ๋งˆ์ง€๋ง‰์— n๋งŒ ๋ถ™์ด๋ฉด bigInt๋กœ ๊ฐ„์ฃผ๋จ
ex) const bigInt = 12345678912345678945615234789465n;

===> chrome, firefox์—์„œ๋งŒ ์ธ์‹๋จ.(๋‹ค๋ฅธ๋ธŒ๋ผ์šฐ์ € ์ง€์›X) ๋งŽ์ด ์“ฐ์ง€๋Š” ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์ง€๋งŒ ์•Œ์•„๋งŒ๋‘๊ธฐ

 

 

 

 

 


2. string (๋ฌธ์ž์—ด)


1.  ํ•œ ๊ฐ€์ง€ ๊ธ€์ž๋“  ์—ฌ๋Ÿฌ๊ฐœ ๊ธ€์ž๋“ , string ํƒ€์ž…์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

ex)
const char = 'c';
const brendan = 'brendan';

 

 

2 .  ์ผ๋ฐ˜ string๊ณผ +๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•ด string์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค.
ex)
const greeting = 'hello' + brendan;

-  string์ด ์—ฐ๊ฒฐ๋˜์–ด ๋‚˜์˜ด.

 

 

3. template literals ๋˜๋Š” template string (๋งŽ์ด์“ฐ์ž„)
๋ฌธ๋ฒ•:
'hi ${brendan}!';
      โ””์›ํ•˜๋Š” string(hi)์„ ์ ๊ณ  ๋‹ฌ๋Ÿฌ์˜ ๊ฐ’์„ ์ ๊ณ  ๊ทธ ์•ˆ์— ๊ด„ํ˜ธ์— ๋ณ€์ˆ˜(brendan)์„ ์“ฐ๋ฉด ๊ทธ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ž๋™์ ์œผ๋กœ ๋ถ™์—ฌ์ ธ์„œ ๋‚˜์˜ด

ex)
const helloBob = 'hi ${brendan}!';

 

(์•„๋ž˜) +๊ธฐํ˜ธ๋ฅผ ์ผ์„ ๋•Œ ๋ฒˆ๊ฑฐ๋กญ๋‹ค ( ์ฝ”ํŠธ('')์— ๋„ฃ์–ด์„œ ํ”Œ๋Ÿฌ์Šคํ•˜๊ณ  ๋˜ ์ฝ”ํŠธ์— ๋„ฃ์–ด์„œ ํ”Œ๋Ÿฌ์Šค... ๋ฐ˜๋ณต..)

(์œ„) ``(back tick;๋นฝํ‹ฑ, ๋ฐฑํ‹ฑ)์„ ์ด์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

 


3. Boolean


false: -, null, undefined, NaN, ' '

: true: any other value (1์ด๋‚˜ string ๊ฐ’)

 

ex)

const canRead = true;

const test = 3 < 1; // false

 

 


4. Null


: empty๊ฐ’ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ

 

ex)

let nothing = null;

 

 


5. undefined


: ์„ ์–ธ์€ ๋์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๊ฐ’์ด ์ง€์ •๋ผ์žˆ์ง€ ์•Š๋Š”๋‹ค.

 

ex)

let x;    OR    let x = undefined;

: ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์€ ์˜๋ฏธ

 

 


6. symbol


:  ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๊ณ ์œ  ์‹๋ณ„์ž ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ๋™์‹œ๋‹ค๋ฐœ์ ์ธ ์ฝ”๋“œ์—์„œ ์šฐ์„ ์ˆœ์œ„ ์ฃผ๊ณ ์‹ถ์„ ๋•Œ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋กœ ํ•„์š”ํ• ๋•Œ ์“ฐ์ž„.

:  ๊ฐ„ํ˜น ์‹๋ณ„์ž๋ฅผ string์ด์šฉํ•ด ์“ฐ๋Š”๊ฒฝ์šฐ์žˆ์Œ. ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๋™์ผํ•œ string์„ ์ผ์„๋•Œ ๋™์ผํ•œ ์‹๋ณ„์ž๋กœ ๊ฐ„์ฃผ๋จ.

:  ๋ฐ˜๋Œ€๋กœ symbol์˜๊ฒฝ์šฐ, ๋™์ผํ•œ id๋ฅผ ์ด์šฉํ•ด symbol์„ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์ด 2๊ฐ€์ง€์˜ ์‹ฌ๋ณผ์€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋‹ค.

:  ๋™์ผํ•œ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌํ•ด๋ณด๋ฉด ๋™์ผํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. (์•„๋ž˜ ์‚ฌ์ง„ ์ฐธ๊ณ )

 

 

 

 

-  ๋˜‘๊ฐ™์ด ๋งŒ๋“ค๊ณ ์‹ถ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ.

 

 

+์‹ฌ๋ณผ์€ ๋ฐ”๋กœ ์ถœ๋ ฅํ•˜๋ฉด ์—๋Ÿฌ๋ฐœ์ƒ. ํ•ญ์ƒ .description ์ด์šฉํ•ด string์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค.

 

 

 

 

 

object

: ์ผ์ƒ์† ๋ฌผ๊ฑด, ๋ฌผ์ฒด๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ•์Šค ํ˜•ํƒœ

: ๊ทธ๋ƒฅ ๋ณ€์ˆ˜ name, age๋Š” ์•„๋ฌด๊ฒƒ๋„ ์„ค๋ช…๋˜์ง€ ์•Š์ง€๋งŒ ellie๋ผ๋Š” objec๋ฅผ ๋งŒ๋“ค๊ณ , 20์‚ด์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

ex)

const ellie = { name: 'ellie', age: 20};

-  ellie๋Š” const๋กœ ์ง€์ •๋ผ์žˆ์–ด ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ณ€๊ฒฝX. ๋Œ€์‹  name, age๋Š” ๋ณ€๊ฒฝ๊ฐ€๋Šฅ

const ellie = { name: 'ellie', age: 20};
ellie.age = 21;

-  ellie์˜ ๋‚˜์ด๋Š” 21์‚ด๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

 


Dynamic typing

: c์–ธ์–ด, Java - ๋ณ€์ˆ˜ ์„ ์–ธํ•  ๋•Œ ํƒ€์ž…์„ ์„ ์–ธํ•จ

:JavaScript - ์„ ์–ธํ•  ๋•Œ ํƒ€์ž… ์„ ์–ธX, ๋™์ž‘ํ•  ๋•Œ ํ• ๋‹น๋œ ๊ฐ’์— ๋”ฐ๋ผ ํƒ€์ž…์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ.

 

์ข‹์€ ์•„์ด๋””์–ด์žˆ์„๋•Œ ๋น ๋ฅด๊ฒŒ ํ”„๋กœํ† ํƒ€์ž…์— ๋„์›€๋จ. 

but ๊ทœ๋ชจ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋งŒ๋“ค๋•Œ ๋ฐœ๋“ฑ์— ๋ถˆ๋˜ฅ๋–จ์–ด์งˆ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

728x90

์ตœ๊ทผ๋Œ“๊ธ€

์ตœ๊ทผ๊ธ€

skin by ยฉ 2024 ttutta