๐ ์ฐ์ฐ์ ์ฐ์ ์์
ํ๋์ ํํ์์ ๋ ์ด์์ ์ฐ์ฐ์๊ฐ ์๋ ๊ฒฝ์ฐ, ์คํ ์์๋ ์ฐ์ฐ์์ ์ฐ์ ์์ ( precedence ) ์ ์ํด ๊ฒฐ์ ๋๋ค.
1 + 2 * 2 ๋ผ๋ ์์ด ์์ ๋ ๊ณฑ์ ์ด ๋จผ์ , ๊ทธ ํ์ ๋ง์ ์ด ์ผ์ด๋๋ค.
์ด๋ฐ ๊ฐ๋ ์ด ์ฐ์ฐ์ ์ฐ์ ์์์ด๋ค. ์ฌ๊ธฐ์ ๊ณฑ์ ์ ๋ง์ ๋ณด๋ค ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ์ํ ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ๋ง์์ ๋ค์ง ์๋๋ค๋ฉด, ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ๊ดํธ
: ๋ชจ๋ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ์ํ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ๋ฌด๋ ฅํ์ํจ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์ฐ์ฐ์์ ์ฐ์ ์์๊ฐ ๋งค๊ฒจ์ ธ ์๋ค.
์ฐ์ ์์ ์ซ์๊ฐ ํด์๋ก ๋จผ์ ์คํ๋๋ค. ์์๊ฐ ๊ฐ์ผ๋ฉด ์ผ์ชฝ๋ถํฐ ์์ํด์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฐ์ฐ์ด ์ํ๋๋ค.
์์ | ์ฐ์ฐ์ ์ด๋ฆ | ๊ธฐํธ |
17 | ๋จํญ ๋ง์ | + |
17 | ๋จํญ ๋ถ์ | - |
16 | ์ง์ | ** |
15 | ๊ณฑ์ | * |
15 | ๋๋์ | / |
13 | ๋ง์ | + |
13 | ๋บ์ | - |
3 | ํ ๋น | = |
'๋จํญ ๋ง์ ์ฐ์ฐ์'๋ ์ฐ์ ์์ 17 ๋ก '์ดํญ ๋ง์ ์ฐ์ฐ์' ์ ์ฐ์ ์์ 13 ๋ณด๋ค ๋๋ค.
ํํ์ " +apples + +oranges " ์์ ๋จํญ ๋ง์ ์ฐ์ฐ์๊ฐ ๋ง์ ๋ณด๋ค ๋จผ์ ์ํ๋๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ด ๋๋ฌธ์ด๋ค.
๐ ํ ๋น ์ฐ์ฐ์
๋ฌด์ธ๊ฐ๋ฅผ ํ ๋นํ ๋ ์ฐ์ด๋ = ๋ ์ฐ์ฐ์์ด๋ค.
์ด ์ฐ์ฐ์๋ ํ ๋น ( assignment ) ์ฐ์ฐ์๋ผ๊ณ ๋ถ๋ฆฌ๋๋ฐ, ์ฐ์ ์์๋ 3 ์ผ๋ก ์์ฃผ ๋ฎ๋ค.
x = 2 * 2 + 1 ๊ณผ ๊ฐ์ ํํ์์์ ๊ณ์ฐ์ด ๋จผ์ ์ด๋ค์ง๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ x ์ ํด๋น๋๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ด ๋๋ฌธ์ด๋ค.
let x = 2 * 2 + 1;
alert ( x ); // 5
๐ค ๋ณตํฉ ํ ๋น ์ฐ์ฐ์
๋ณ์์ ์ฐ์ฐ์๋ฅผ ์ ์ฉํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ๋ณ์์ ์ ์ฅํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๊ธด๋ค.
let n = 2;
n = n + 5;
n = n * 2;
+= ์ *= ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์งง์ ๋ฌธ๋ฒ์ผ๋ก ๋์ผํ ์ฐ์ฐ์ ์ํํ ์ ์๋ค.
let n = 2;
n += 5; // n์ 7์ด ๋๋ค. (n = n + 5์ ๋์ผ).
n *= 2; // n์ 14๊ฐ ๋๋ค. (n = n * 2์ ๋์ผ).
alert( n ); // 14
์ด๋ฐ ' ๋ณตํฉ ํ ๋น ' ์ฐ์ฐ์๋ ์ฐ์ ์ฐ์ฐ์์ ๋นํธ ์ฐ์ฐ์์๋ ์ ์ฉํ ์ ์๋ค. /=, -= ๋ฑ์ ์ฐ์ฐ์๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ณตํฉ ํ ๋น ์ฐ์ฐ์์ ์ฐ์ ์์๋ ํ ๋น ์ฐ์ฐ์์ ๋์ผํ๋ค.
๋ฐ๋ผ์ ๋๋ถ๋ถ ๋ค๋ฅธ ์ฐ์ฐ์๊ฐ ์คํ๋ ํ์ ๋ณตํฉ ํ ๋น ์ฐ์ฐ์๊ฐ ์คํ๋๋ค.
let n = 2;
n *= 3 + 5;
alert( n ); // 16 (*=์ ์ฐ์ธก์ด ๋จผ์ ํ๊ฐ๋๋ฏ๋ก, ์ ์์ n *= 8๊ณผ ๋์ผํ๋ค.)
๐ ์ฆ๊ฐ & ๊ฐ์ ์ฐ์ฐ์
์ซ์๋ฅผ ํ๋ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๋ ๊ฒ์ ์์ฃผ ์ฌ์ฉ๋๋ ์ฐ์ฐ์ด๋ค.
๐ค ์ฆ๊ฐ ์ฐ์ฐ์
: ++ ๋ ๋ณ์๋ฅผ 1 ์ฆ๊ฐ์ํจ๋ค.
let counter = 2;
counter++; // counter = counter + 1๊ณผ ๋์ผํ๊ฒ ๋์ํ๋ค. ํ์ง๋ง ์์ ๋ ์งง๋ค.
alert( counter ); // 3
๐ค ๊ฐ์ ์ฐ์ฐ์
: -- ๋ ๋ณ์๋ฅผ 1 ๊ฐ์์ํจ๋ค.
let counter = 2;
counter--; // counter = counter - 1๊ณผ ๋์ผํ๊ฒ ๋์ํ๋ค. ํ์ง๋ง ์์ ๋ ์งง๋ค.
alert( counter ); // 1
โ ์ฆ๊ฐ & ๊ฐ์ ์ฐ์ฐ์๋ ๋ณ์์๋ง ์ธ ์ ์๋ค. 5++ ์ ๊ฐ์ด ๊ฐ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
โ ++ ์ -- ์ฐ์ฐ์๋ ๋ณ์ ์์ด๋ ๋ค์ ์ฌ ์ ์๋ค.
- counter++
: ํผ์ฐ์ฐ์ ๋ค์ ์ฌ ๋๋, ' ํ์ํ ( postfix form ) ' ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์ํ์ ์ฆ๊ฐ & ๊ฐ์ ์ ์ ๊ธฐ์กด ๊ฐ์ ๋ฐํํ๋ค.
- ++counter
: ํผ์ฐ์ฐ์ ์์ ์ฌ ๋๋, ' ์ ์ํ ( prefix form ) ' ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ ์ํ์ ์ฆ๊ฐ & ๊ฐ์ ํ์ ์๋ก์ด ๊ฐ์ ๋ฐํํ๋ค.
ํ์ํ๊ณผ ์ ์ํ์ ํผ์ฐ์ฐ์์ธ counter ์ 1 ๋งํผ ์ฆ๊ฐ์์ผ ์ค๋ค๋ ์ ์์ ๋์ผํ ์ผ์ ํ๋ค.
๋ ํ์ ์ฐจ์ด๋ ++ / -- ์ ๋ฐํ ๊ฐ์ ์ฌ์ฉํ ๋ ๋ํ๋๋ค.
let counter = 1;
let a = ++counter; // (*)
alert(a); // 2
( * ) ๋ก ํ์ํ ์ค์ ์ ์ํ ++counter ๋ counter ๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์๋ก์ด ๊ฐ 2 ๋ฅผ ๋ฐํํ๋ค.
๋ฐ๋ผ์ alert ๋ 2 ๋ฅผ ํ์ํ๋ค.
let counter = 1;
let a = counter++; // (*) ++counter๋ฅผ counter++๋ก ๋ฐ๊ฟ
alert(a); // 1
( * ) ๋ก ํ์ํ ์ค์ ํ์ํ counter++ ๋ counter ๋ฅผ ์ฆ๊ฐ์ํค๊ธด ํ์ง๋ง, ์ฆ๊ฐ ์ ์ ๊ธฐ์กด ๊ฐ์ ๋ฐํํ๋ค.
๋ฐ๋ผ์ alert ๋ 1 ์ ํ์ํ๋ค.
< ์ฆ๊ฐ & ๊ฐ์ ์ฐ์ฐ์ ๋ด์ฉ ์ ๋ฆฌ >
โ ๋ฐํ ๊ฐ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ์ ์ํ๊ณผ ํ์ํ์ ์ฐจ์ด๊ฐ ์๋ค.
let counter = 0;
counter++;
++counter;
alert( counter ); // 2, ์ ๋ ๋ผ์ธ์ ๋์ผํ ์ฐ์ฐ์ ์ํํ๋ค.
// ๋ฐํ๊ฐ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ 1์ฉ ๋ํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
โ ๊ฐ์ ์ฆ๊ฐ์ํค๊ณ ๋ ํ, ์ฆ๊ฐํ ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ ์ํ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
let counter = 0;
alert( ++counter ); // 1
โ ๊ฐ์ ์ฆ๊ฐ์ํค์ง๋ง, ์ฆ๊ฐ ์ ์ ๊ธฐ์กด๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ํ์ํ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
let counter = 0;
alert( counter++ ); // 0
โ ๋ค๋ฅธ ์ฐ์ฐ์ ์ฌ์ด์ ์ฆ๊ฐ & ๊ฐ์ ์ฐ์ฐ์
++ / -- ์ฐ์ฐ์๋ฅผ ํํ์ ์ค๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
์ด๋, ์ฆ๊ฐ & ๊ฐ์ ์ฐ์ฐ์์ ์ฐ์ ์์๋ ๋ค๋ฅธ ๋๋ถ๋ถ์ ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ๋๊ธฐ ๋๋ฌธ์, ํ๊ฐ๊ฐ ๋จผ์ ์ด๋ค์ง๋ค.
let counter = 1;
alert( 2 * ++counter ); // 4
let counter = 1;
alert( 2 * counter++ ); // counter++๋ '๊ธฐ์กด'๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ 2๊ฐ ์ถ๋ ฅ๋๋ค.
ํ ์ค์์ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค.
' ์ฝ๋ ํ ์ค์, ํน์ ๋์ ํ๋ ' ์ ๊ด๋ จ๋ ๋ด์ฉ๋ง ์์ฑํ๋๊ฒ ์ข๋ค.
let counter = 1;
alert( 2 * counter );
counter++; // 2
01. ์ฐ์ฐ์ ์ฐ์ ์์ & ํ ๋น & ์ฆ๊ฐ/๊ฐ์ ์ฐ์ฐ์ ์ค๋ช
๊ธฐ๋ณธ ์ฐ์ฐ์์ ์ํ
ko.javascript.info