๐ Chapter 5 : ๋ฌธ๋ฒ
Table of Contents
๐ฏ ๋ฌธ๊ณผ ํํ์โ
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์์ ๋ฌธ(Statement)์ ๋ฌธ์ฅ(Sentence), ํํ์(Expression)์ ์ด๊ตฌ(Phrase), ์ฐ์ฐ์๋ ๊ตฌ๋์ /์ ์์ฌ์ ํด๋น๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ํํ์์ ๋จ์ผํ, ํน์ ํ ๊ฒฐ๊ด๊ฐ์ผ๋ก ๊ณ์ฐ๋๋ค.
var a = 3 * 6;
var b = a;
b;
- ์ฌ๊ธฐ์
3 * 6
์ ํํ์์ด๋ค. ๋ ๋ฒ์งธ ์ค ์ญ์ ํํ์์ด๋ฉฐ, ์ธ ๋ฒ์งธ ์ค b๋ ํํ์์ด๋ค. - ์ด ์ธ ์ค์ ๊ฐ๊ฐ ํํ์์ด ํฌํจ๋ ๋ฌธ์ด๋ค.
- ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ ๋ ๋ฌธ์ ๊ฐ๊ฐ ๋ณ์๋ฅผ ์ ์ธํ๋ฏ๋ก ์ ์ธ๋ฌธ(Declaration Statement)์ด๋ผ ํ๋ค.
- ์์
var
์ด ๋น ์งa = 3 * 6
,b = a
๋ ํ ๋น ํํ์(Assignment Expression)์ด๋ผ๊ณ ํ๋ค. - ์ธ ๋ฒ์งธ ์ค์ b๊ฐ ํํ์์ ์ ๋ถ์ด์ง๋ง ์ด๊ฒ๋ง์ผ๋ก๋ ์์ ํ ๋ฌธ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ๋ฌธ์ ํํ์ ๋ฌธ(Expression Statement)์ด๋ผ๊ณ ์ผ์ปซ๋๋ค.
๐ ๋ฌธ์ ์๋ฃ ๊ฐโ
- ๋ชจ๋ ๋ฌธ์ (๊ทธ ๊ฐ์ด undefined๋ผ ํด๋) ์๋ฃ ๊ฐ์ ๊ฐ์ง๋ค.
- ES5.1. ๋ฌธ ๋์ ๋ถ์ ๋ฌธ์ ํ๊ฐ ๊ฒฐ๊ณผ๋ ํญ์ ์๋ฃ ๊ฐ์ด๋ค.
- ๋ํ, ํฌ๋กฌ์ ์ฝ์ ์ฐฝ์์ ์ต๊ทผ์ ์คํ๋ ๋ฌธ์ ์๋ฃ ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๋ ฅํ๊ฒ ๋์ด ์๋์ .
var b = a
๊ฐ์ ๋ฌธ์ ์๋ฃ ๊ฐ์?? ํ ๋น ํํ์b = a
๋ ํ ๋น ์ดํ์ ๊ฐ์ด ์๋ฃ ๊ฐ์ด์ง๋ง,var
๋ฌธ ์์ฒด์ ์๋ฃ ๊ฐ์undefined
๋ค. (๋ช ์ธ์ ์ ํ์์.)- ๊ทธ๋ฌ๋ ์ฝ์ ์ฐฝ์ด ๋ด์ด์ค ์๋ฃ ๊ฐ์ ๊ฐ๋ฐ์๊ฐ ๋ด๋ถ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ์๋๋ค. ์๋ฃ ๊ฐ์ ์๊ฐ ํฌ์ฐฉํ ๋ฐฉ๋ฒ์??
- ๊ทธ ์ ์ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฌธ ์๋ฃ ๊ฐ์ ๋ณด์.
- ์๋ฅผ ๋ค์ด, ๋ณดํต์
{}
๋ธ๋ก์ ๋ด๋ถ์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ฌธ/ํํ์์ ์๋ฃ ๊ฐ์ ์์ ์ ์๋ฃ ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
var b;
if (true) {
b = 4 + 38;
}
- ์ฝ์ ์ฐฝ์์ ์คํํ๋ฉด 42๊ฐ ๋์ค๋๋ฐ ๋ธ๋ก ๋ด์ ๋ง์ง๋ง ๋ฌธ
b = 4 + 38
์ ์๋ฃ ๊ฐ์ด 42 ์ด๋ฏ๋กif
๋ธ๋ก์ ์๋ฃ ๊ฐ๋ 42๋ฅผ ๋ฐํํ ๊ฒ์ด๋ค. - ์ฆ, ๋ธ๋ก์ ์๋ฃ ๊ฐ์ ๋ด๋ถ์ ์๋ ๋ง์ง๋ง ๋ฌธ์ ๊ฐ์ ์์์ ์ผ๋ก ๋ฐํํ ๊ฐ์ด๋ค.
- ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋ํ์ง ์๋ ๊ฑด ๋ถ๋ช ํ ๋ฌธ์ ๊ฐ ์๋ค.
var a, b;
a = if(true) {
b = 4 + 38;
}
// Uncaught SyntaxError: Unexpected token 'if'
- ๋ฌธ์ ์๋ฃ ๊ฐ์ ํฌ์ฐฉํ์ฌ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๋ ๊ฑด ์ฌ์ด ๊ตฌ๋ฌธ/๋ฌธ๋ฒ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ค.
- ์๋ฃ ๊ฐ์ ํฌ์ฐฉํ๋ ค๋ฉด ์ด์ฉ ์ ์์ด ์ ํดํจ์ ๋๋ช
์ฌ
eval()
ํจ์๋ฅผ ์ฌ์ฉํ ์๋ฐ์ ์๋ค.
var a, b;
a = eval('if (true) { b = 4 + 38; }');
a; // 42
- ES7 ๋ช
์ธ์๋
do
ํํ์์ด ์ ์๋ ์ํ์ด๋ค.
var a, b;
a = do{
if(true){
b = 4 + 38;
}
};
a; // 42๊ฐ ๋์์ผ ํ์ง๋ง ๋์ค์ง ์์ ์๋ฌ๋ธ..
do{ }
ํํ์์ ๋ธ๋ก ์คํ ํ ๋ธ๋ก ๋ด ๋ง์ง๋ง ๋ฌธ์ ์๋ฃ ๊ฐ์do
ํํ์ ์ ์ฒด์ ์๋ฃ ๊ฐ์ผ๋ก ๋ฐํํ๋ฉฐ ๊ฒฐ๊ตญ ์ด ๊ฐ์ด ๋ณ์ a์ ํ ๋น๋๋ค.eval()
์ ์ ๋ ์ฌ์ฉํ์ง ๋ง์.
๐ ํํ์์ ๋ถ์ ํจ๊ณผโ
- ๋๋ถ๋ถ์ ํํ์์๋ ๋ถ์ ํจ๊ณผ๊ฐ ์๋ค.
var a = 2;
var b = a + 3;
- ํํ์
a + 3
์์ฒด๋ ๊ฐ๋ น a ๊ฐ์ ๋ฐ๊พธ๋ ๋ฑ์ ๋ถ์ ํจ๊ณผ๊ฐ ์ ํ ์๋ค. - ๋จ์ง
b = a + 3
๋ฌธ์์ ๊ฒฐ๊ด๊ฐ 5๊ฐ b์ ํ ๋น๋ ๋ฟ์ด๋ค. - ๋ค์ ํจ์ ํธ์ถ ํํ์์ ๋ถ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง ํํ์์ ์ ํ์ ์ธ ์๋ค.
function foo() {
a = a + 1;
}
var a = 1;
foo(); // undefined. a๋ 2๋ก ๋ณ๊ฒฝ
- ๋ค๋ฅธ ๋ถ์ ํจ๊ณผ๋ฅผ ์ง๋ ํํ์.
var a = 42;
var b = a++;
a; // 43
b; // 42
a++
์ด ํ๋ ์ผ์ ๋ ๊ฐ์ง๋ค.- a์ ํ์ฌ ๊ฐ 42๋ฅผ ๋ฐํํ๊ณ a๊ฐ์ 1๋งํผ ์ฆ๊ฐ์ํจ๋ค.
a++
๋ฅผ ()๋ก ๊ฐ์ธ๋ฉด ํ์ ๋ถ์ ํจ๊ณผ๋ฅผ ์บก์ํํ ์ ์๋ค๊ณ ์ฐฉ๊ฐํ ์ ์์ง๋งa++
ํํ์์์ ๋ถ์ ํจ๊ณผ ๋ฐ์ ์ดํ ์ฌํ๊ฐ๋ ์ ํํ์์ ๋ง๋ค์ด๋ด๋ ๊ฑด ๋ถ๊ฐ๋ฅํ๋ค.
var a = 42;
var b = (a++);
a; // 43
b; // 42
- ๋ฌธ์ ๋์ดํ๋(Statement-Series) ์ฝค๋ง ์ฐ์ฐ์
,
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ๊ฐ๋ฐ ํํ์์ ํ๋์ ๋ฌธ์ผ๋ก ์ฐ๊ฒฐํ ์ ์๋ค.
var a = 42, b;
b = (a++, a);
a; // 43
b; // 43
a++
,a
ํํ์์ ๋ ๋ฒ์งธ a ํํ์์ ์ฒซ ๋ฒ์งธa++
ํํ์์์ ๋ถ์ ํจ๊ณผ๊ฐ ๋ฐ์ํ ์ดํ์ ํ๊ฐํ๋ค. ๊ทธ๋์ b์ ์์ 43์ด๋ค.delete
์ญ์ ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค๋ ์ฐ์ฐ์์ด๋ค.
var obj = {
a: 42
};
obj.a; // 42
delete obj.a; // true
obj.a; // undefined
- ์ด ์ฐ์ฐ์์ ๋ถ์ ํจ๊ณผ๋ ๋ฐ๋ก ํ๋กํผํฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด๋ค.
var a;
a = 42; // 42
a; // 42
a = 42
์์=
์ฐ์ฐ์๋ ๋ถ์ ํจ๊ณผ์ ๋ฌด๊ดํด ๋ณด์ด์ง๋งa = 42
๋ฌธ์ ์คํ ๊ฒฐ๊ณผ๋ ์ด์ ๋ง ํ ๋น๋ ๊ฐ์ด๋ฏ๋ก 42๋ฅผ a์ ํ ๋นํ๋ ์์ฒด๊ฐ ๋ณธ์ง์ ์ผ๋ก ๋ถ์ ํจ๊ณผ์ด๋ค.- ์ด๋ ๊ฒ ํ ๋น ํํ์/๋ฌธ ์คํ ์ ํ ๋น๋ ๊ฐ์ด ์๋ฃ ๊ฐ์ด ๋๋ ์๋ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ ํ ๋น๋ฌธ(Chained Assignment) ์์ ํนํ ์ ์ฉํ๋ค.
var a, b, c;
a = b = c = 42;
- ์ ์์ ๊ฐ์ ๊ฒฝ์ฐ 42๋ฅผ c์ ํ ๋นํ๋ ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค๋ฉฐ, 42๋ฅผ b์ ํ ๋นํ๋ ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค๊ณ , 42๋ฅผ a์ ํ ๋นํ๋ ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํจ๋ค.
function vowels(str) {
var matches;
if(str){
// ๋ชจ๋ ๋ชจ์์ ์ถ์ถํ๋ค.
matches = str.match(/[aeiou]/g);
if(matches){
return matches;
}
}
}
vowels('Hello World'); // ['e', 'o', 'o']
- ํ ๋น ์ฐ์ฐ์์ ๋ถ์ ํจ๊ณผ๋ฅผ ์ ํ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์
if
๋ฌธ์ ํ๋๋ก ๊ฐ๋จํ ํฉ์น ์ ์๋ค.
function vowels(str) {
var matches;
// ๋ชจ๋ ๋ชจ์์ ์ถ์ถํ๋ค.
if(str && (matches = str.match(/[aeiou]/g))){
return matches;
}
}
vowels('Hello World'); // ['e', 'o', 'o']