๐ป ํท๊ฐ๋ฆฌ๋ ์ฉ์ด(๊ฐ, ๋ฆฌํฐ๋ด, ํํ์, ๋ฌธ, ํ ํฐ)
๐จ๐ปโ๐ป ๊ฐ(value)
๊ฐ์ ์(ํํ์[expression])
์ด ํ๊ฐ(evaluate)
๋์ด ์์ฑ๋ ๊ฒฐ๊ณผ๋ฅผ ๋งํ๋ค. ๋ํ, ํ๊ฐ
๋ ์์ ํด์ํด์ ๊ฐ์ ์์ฑํ๊ฑฐ๋ ์ฐธ์กฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์๋ ์์ ์์ 10 + 20(์)
์ ํ๊ฐ
๋์ด ์ซ์์ธ ๊ฐ 30
์ ์์ฑํ๋ค.
๋ชจ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์
์ ๊ฐ์ง๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ 2์ง์
, ์ฆ ๋นํธ(Bit)์ ๋์ด
๋ก ์ ์ฅ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์
์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ 0100 0001์ ์ซ์๋ก ํด์ํ๋ฉด 65์ด์ง๋ง ๋ฌธ์๋ก ํด์ํ๋ฉด 'A' ์ด๋ค.
๐จ๐ปโ๐ป ๋ณ์(variable)
๋ณ์๋ ํ๋์ ๊ฐ
์ ์ ์ฅํ๊ธฐ ์ํด ํ๋ณดํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์์ฒด
๋๋ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ณํ๊ธฐ ์ํด ๋ถ์ธ ์ด๋ฆ
์ด๋ค. ๋ฐ๋ผ์ ๋ณ์์ ํ ๋น๋๋ ๊ฒ์ ๊ฐ
์ด๋ค.
์๋ ์์ ์์ sum์ด๋ผ๋ ๋ณ์์ 10 + 20(์)์ด ํ๊ฐ๋์ด ์์ฑ๋ ์ซ์ ๊ฐ 30์ด ํ ๋น๋๋ค.
sum๋ณ์์ ํ ๋น๋๋ ๊ฒ์ด 10 + 20์ด ์๋๋ผ 10 + 20์ด ํ๊ฐ๋ ๊ฒฐ๊ณผ ๊ฐ์ธ 30์ธ ๊ฒ์ ๊ธฐ์ตํ์. ๋ฐ๋ผ์ 10 + 20์ ํ ๋น ์ด์ ์ ํ๊ฐ๋์ด ๊ฐ์ ์์ฑํด์ผ๋ง ํ๋ค.
๐จ๐ปโ๐ป ๋ฆฌํฐ๋ด(literal)
๊ฐ์ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ ์ ์๋๋ฐ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฆฌํฐ๋ด
์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๋ฆฌํฐ๋ด์ ์ฌ๋์ด ์ดํดํ ์ ์๋ ๋ฌธ์
๋๋ ์ฝ์๋ ๊ธฐํธ
๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์์ฑํ๋ ํ๊ธฐ๋ฒ(notation)
์ ๋งํ๋ค.
์๋ ์์ ์์ 3์ ๋จ์ํ ์๋ผ๋น์ ์ซ์๊ฐ ์๋๋ผ ์ซ์ ๋ฆฌํฐ๋ด์ด๋ค. ์ฌ๋์ด ์ดํดํ ์ ์๋ ์๋ผ๋น์ ์ซ์๋ฅผ ์ฌ์ฉํด ์ซ์ ๋ฆฌํฐ๋ด 3์ ์ฝ๋์ ๊ธฐ์ ํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ด๋ฅผ ํ๊ฐํด ์ซ์ ๊ฐ 3์ ์์ฑํ๋ค.
์ด์ฒ๋ผ ๋ฆฌํฐ๋ด์ ์ฌ๋์ด ์ดํดํ ์ ์๋ ๋ฌธ์(์๋ผ๋น์ ์ซ์, ์ํ๋ฒณ, ํ๊ธ ๋ฑ)
๋๋ ๋ฏธ๋ฆฌ ์ฝ์๋ ๊ธฐํธ('', "", {}, [], // ๋ฑ)
๋ก ํ๊ธฐํ ์ฝ๋์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฝ๋๊ฐ ์คํ๋๋ ์์ ์ธ ๋ฐํ์(runtime)
์ ๋ฆฌํฐ๋ด์ ํ๊ฐํด ๊ฐ์ ์์ฑํ๋ค. ์ฆ, ๋ฆฌํฐ๋ด์ ๊ฐ์ ์์ฑํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ์ฝ์ํ ํ๊ธฐ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
๐จ๐ปโ๐ป ํํ์(expression)
ํํ์์ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ๋ฌธ(statement)
์ด๋ค. ์ฆ, ํํ์์ด ํ๊ฐ๋๋ฉด ์๋ก์ด ๊ฐ์ ์์ฑ
ํ๊ฑฐ๋ ๊ธฐ์กด ๊ฐ์ ์ฐธ์กฐ
ํ๋ค.
์์์ ๋ฆฌํฐ๋ด์ ์ค๋ช
ํ ๋ ๋ฆฌํฐ๋ด์ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ค๊ณ ์ค๋ช
ํ๋ค. ๋ฐ๋ผ์ ๋ฆฌํฐ๋ด๋ ํํ์
์ธ ๊ฒ์ด๋ค.
์๋ ์์ ์์ 100์ ๋ฆฌํฐ๋ด์ด๋ค. ๋ฆฌํฐ๋ด 100์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ํ๊ฐ๋์ด ๊ฐ์ ์์ฑํ๋ฏ๋ก ๋ฆฌํฐ๋ด์ ๊ทธ ์์ฒด๋ก ํํ์์ธ ๊ฒ์ด๋ค.
์๋ ์์ 50 + 50์ ๋ฆฌํฐ๋ด๊ณผ ์ฐ์ฐ์(+)๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ํ์ง๋ง 50 + 50๋ ํ๊ฐ๋์ด ์ซ์ ๊ฐ 100์ ์์ฑํ๋ฏ๋ก 50 + 50๋ ํํ์
์ด๋ค.
๋ํ ๋ณ์ ์๋ณ์๋ฅผ ์ฐธ์กฐํ๋ฉด ๋ณ์ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ค. ์๋ณ์ ์ฐธ์กฐ๋ ๊ฐ์ ์์ฑํ์ง๋ ์์ง๋ง ๊ฐ์ผ๋ก ํ๊ฐ๋๋ฏ๋ก ์ด ๋ํ ํํ์
์ธ ๊ฒ์ด๋ค. ์ฐธ๊ณ ๋ก, ์๋ณ์๋ ๋ณ์, ํจ์ ๋ฑ์ ์ด๋ฆ์ ์๋ฏธํ๋ค.
์ด์ฒ๋ผ ํํ์์ ๋ฆฌํฐ๋ด, ์๋ณ์, ์ฐ์ฐ์, ํจ์ ํธ์ถ
๋ฑ์ ์ด๋ค์ง ์ ์๋ค. ์ฆ, ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ๋ฌธ์ ๋ชจ๋ ํํ์์ด๋ค.
// ๋ฆฌํฐ๋ด ํํ์
10 ;
( "Hello" ) ;
// ์๋ณ์ ํํ์
sum ;
person . name ;
arr [ 1 ] ;
// ์ฐ์ฐ์ ํํ์
50 + 50 ;
// ํจ์ ํธ์ถ ํํ์(์ ์ธ ๋์๋ค๊ณ ๊ฐ์ )
square ( ) ;
๊ณ์ ์ธ๊ธํ์ง๋ง ํํ์์ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ค.
์ด๋ ํํ์๊ณผ ํํ์์ด ํ๊ฐ๋ ๊ฐ์ ๋๋ฑํ ๊ด๊ณ, ์ฆ ๋์น(equivalent)๋ค.
์๋ฅผ ๋ค์ด, ์ํ ์์ 1 + 2 = 3์์ 1 + 2๋ 3๊ณผ ๋์น๋ค. ์ฆ, 1 + 2๋ 3๊ณผ ๊ฐ๋ค๊ณ ํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํํ์ 1 + 2๋ ํ๊ฐ๋์ด ๊ฐ 3์ ์์ฑํ๋ฏ๋ก ํํ์ 1 + 2์ ๊ฐ 3์ ๋์น์ธ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ํํ์์ ๊ฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
์ด์ฒ๋ผ ๋ฌธ๋ฒ์ ์ผ๋ก ๊ฐ์ด ์์นํ ์ ์๋ ์๋ฆฌ์์ ํํ์๋ ์์นํ ์ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์.
์๋ ์์ ๋ ๋ฐฉ๊ธ ๋งํ ๋ถ๋ถ์๋ํ ์์์ด๋ค. + ์ฐ์ฐ์๋ ์ขํญ๊ณผ ์ฐํญ์ ๊ฐ์ ์ฐ์ ์ฐ์ฐํ๋ ์ฐ์ฐ์์ด๋ฏ๋ก ์ซ์ ๊ฐ์ด ์์นํด์ผ ํ๋ค. ์๋ ์์ ๋ ์ขํญ x๋ ์๋ณ์ ํํ์์ด๋ค. ์ฆ, x๋ ํ ๋น๋์ด ์๋ ๋ณ์ ๊ฐ 3์ผ๋ก ํ๊ฐ๋๋ค. ๋ฐ๋ผ์ ์ซ์ ๊ฐ์ด ์์นํด์ผ ํ ์๋ฆฌ์ ํํ์ x๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
var x = 1 + 2 ;
x + 3 ; // 6
๐จ๐ปโ๐ป ๋ฌธ(Statement)/ํ ํฐ(token)
๋ฌธ๊ณผ ํํ์์ ๊ตฌ๋ณํ๊ณ ํด์ํ ์ ์๋ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์
์ฅ์์ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๊ณ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ๋๋ฐ ๋์์ด ๋๋ค. ์ด๋ ๋ฒ๊ทธ๋ฅผ ์ค์ด๊ณ ์ฝ๋์ ํ์ง์ ๋์ฌ์ค ์ ์๋ค. ๋ฐ๋ผ์ ๋ฌธ๊ณผ ํํ์์ ํ์คํ ์ดํดํ ํ์๊ฐ ์๋ค.
๊ฐ๋
์ ์ผ๋ก ์ค๋ช
ํ๋ฉด ๋ฌธ(statement)๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋จ์
์ด์ ์ต์ ์คํ ๋จ์
์ด๋ค. ๋ฌธ์ ์งํฉ์ผ๋ก ์ด๋ค์ง ๊ฒ์ด ๋ฐ๋ก ํ๋ก๊ทธ๋จ์ด๋ฉฐ, ๋ฌธ์ ์์ฑํ๊ณ ์์์ ๋ง๊ฒ ๋์ดํ๋ ๊ฒ์ด ํ๋ก๊ทธ๋๋ฐ์ด๋ค.
๋ฌธ์ ์ฌ๋ฌ ํ ํฐ์ผ๋ก ๊ตฌ์ฑ
๋๋ค. ํ ํฐ(token)์ด๋ ๋ฌธ๋ฒ์ ์ธ ์๋ฏธ
๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฌธ๋ฒ์ ์ผ๋ก ๋ ์ด์ ๋๋ ์ ์๋ ์ฝ๋์ ๊ธฐ๋ณธ ์์
๋ฅผ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ํค์๋
, ์๋ณ์
, ์ฐ์ฐ์
, ๋ฆฌํฐ๋ด
์ฌ์ง์ด ์ธ๋ฏธ์ฝ๋ก (;)
์ด๋ ๋ง์นจํ(.)
๋ฑ์ด๋ค.
ํน์ ๊ธฐํธ๋ ๋ฌธ๋ฒ์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฌธ๋ฒ์ ์ผ๋ก ๋ ์ด์ ๋๋ ์ ์๋ ์ฝ๋์ ๊ธฐ๋ณธ ์์์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ ํฐ์ธ ๊ฒ์ด๋ค.
๋ฌธ์ ๋ช
๋ น๋ฌธ
์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ์ฆ, ๋ฌธ์ ์ปดํจํฐ์ ๋ด๋ฆฌ๋ ๋ช
๋ น
์ด๋ค. ๋ฌธ์ด ์คํ๋๋ฉด ๋ช
๋ น์ด ์คํ๋๊ณ ๋ฌด์จ ์ผ์ธ๊ฐ ์ผ์ด๋๋ค.
๋ฌธ์ ์ ์ธ๋ฌธ
, ํ ๋น๋ฌธ
, ์กฐ๊ฑด๋ฌธ
, ๋ฐ๋ณต๋ฌธ
๋ฑ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
๋ณ์ ์ ์ธ๋ฌธ์ ์คํํ๋ฉด ๋ณ์๊ฐ ์ ์ธ๋๊ณ , ํ ๋น๋ฌธ์ ์คํํ๋ฉด ๊ฐ์ด ํ ๋น๋๋ค. ์กฐ๊ฑด๋ฌธ์ ์คํํ๋ฉด ์ง์ ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํํ ์ฝ๋ ๋ธ๋ก({ ... }) ์ด ๊ฒฐ์ ๋์ด ์คํ๋๊ณ , ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ฉด ํน์ ์ฝ๋ ๋ธ๋ก์ด ๋ฐ๋ณต ์คํ๋๋ค.
// ๋ณ์ ์ ์ธ๋ฌธ
var x ;
// ํ ๋น๋ฌธ
x = 5 ;
โ
// ํจ์ ์ ์ธ๋ฌธ
function foo ( ) { }
// ์กฐ๊ฑด๋ฌธ
if ( x > 1 ) {
console . log ( x ) ;
}
// ๋ฐ๋ณต๋ฌธ
for ( let i = 0 ; i < 5 ; i ++ ) {
console . log ( x , i ) ;
}
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ DeepDive