-
320x100
์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ
https://ko.javascript.info/first-steps์๊ฒฉ ๋ชจ๋
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ถ๊ฐ๋ง ํ๋ ์์ผ๋ก ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํํผํ์ต๋๋ค.
- ๊ทธ๋ฐ๋ฐ ES5(2009)์์ ๊ธฐ์กด ๊ธฐ๋ฅ ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋์๋๋ฐ์, ํน์๋ ์ถ์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์ด ์๋ก์ด ๊ธฐ๋ฅ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ ์ํ์ ๋๋ค.
- ์๋กญ๊ฒ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ์ฐ๊ณ ์ถ๋ค๋ฉด,
use strict
๋ผ๊ณ ์ธ์ณ์ฃผ์ธ์. ๊ทธ๋ผ '์๊ฒฉ ๋ชจ๋'๊ฐ ๋ฉ๋๋ค. - ์ด ์ฃผ๋ฌธ์ ์ฃผ๋ก ์คํฌ๋ฆฝํธ ์ต์๋จ์์ ์ธ์นฉ๋๋ค. ๊ทธ๋์ผ ์คํฌ๋ฆฝํธ ์ ์ฒด๊ฐ ์๊ฒฉ ๋ชจ๋๋ก ์ ์ฉ๋๋๊น์.
- ๋ง์ฝ ํด๋์ค์ ๋ชจ๋์ ์ฌ์ฉํด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ค๋ฉด ์ด๋ฏธ ์๊ฒฉ๋ชจ๋๊ฐ ์ ์ฉ๋ ๊ฑฐ๋ ๋ค๋ฆ ์์ด์ ๊ตณ์ด ์ ์ง ์์๋ ๋ฉ๋๋ค.
๊ธฐ๋ณธ ์ฐ์ฐ์์ ์ํ
- %(๋๋จธ์ง ์ฐ์ฐ์): x % b ๋ x๋ฅผ b๋ก ๋๋๊ณ ๊ทธ ๋๋จธ์ง๋ฅผ ์ ์๋ก ๋ฐํํฉ๋๋ค.
- **(๊ฑฐ๋ญ์ ๊ณฑ ์ฐ์ฐ์): x ** b๋ x๋ฅผ b๋ฒ ๊ณฑํ ๊ฐ์ ๋ฐํํฉ๋๋ค. (2**3 = 8) ๋จ, ์ด๋ ES7์์ ์ถ๊ฐ๋ ์คํ์ ๋๋ค.
- ์ดํญ ์ฐ์ฐ์(+)์ ํจ๊ป ์ฐ์ธ ํผ์ฐ์ฐ์ ์ค ๋ฌธ์์ด์ด ์์ผ๋ฉด ๋ฌธ์์ด๋ก ๋ณํ๋ฉ๋๋ค.
alert( 2+2+'1' ) //๊ฒฐ๊ณผ: '41'
- ๋ง์
์ฐ์ฐ์(+)๊ฐ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ซ์ํ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
alert( +"" ); //๊ฒฐ๊ณผ: 0
let a=5; let b=1; alert( +a + +b ); //๊ฒฐ๊ณผ: 6
- ++/--๋ ํผ์ฐ์ฐ์์ ์๋ค ์ด๋์๋ ์์นํ ์ ์์ต๋๋ค. ์ ์ํ์ ์ฆ๊ฐ/๊ฐ์ ํ ์๋ก์ด ๊ฐ์ ๋ฐํํ๊ณ , ํ์ํ์ ์ฆ๊ฐ/๊ฐ์ ์ ๊ธฐ์กด๊ฐ์ ๋ฐํํฉ๋๋ค.
let counter = 1; let a = ++counter; alert(a); //๊ฒฐ๊ณผ: 2
let counter = 1; let a = counter++; alert(a); //๊ฒฐ๊ณผ: 1
- ๋ฐ๋ผ์ ๊ฐ์ ์ฆ๊ฐ์ํค๊ณ ์ฆ๊ฐํ ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ ์ํ์, ๊ฐ์ ์ฆ๊ฐ์ํค๋ ๊ธฐ์กด ๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ํ์ํ์ ์ฌ์ฉํฉ๋๋ค.
๋น๊ต ์ฐ์ฐ์
- ๋ฌธ์์ด ๋น๊ต: JS๋ ๋์๋ฌธ์๋ฅผ ๋ฐ์ ธ ๋น๊ตํฉ๋๋ค. "A"์ "a" ์ค "a"๊ฐ ๋ ํฌ๋ค๊ณ ํ๋จํ๋ฉฐ, ์ด๋ JS ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ์ธ์ฝ๋ฉ ํ์ธ ์ ๋์ฝ๋์์ ์๋ฌธ์๊ฐ ๋ ํฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋น๊ตํ๋ ค๋ ๊ฐ์ ์๋ฃํ์ด ๋ค๋ฅด๋ฉด ๊ด๋ํ์ JS๋ ์ด๋ค์ ์ซ์ํ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค.
alert( '2' > 1 ); //๊ฒฐ๊ณผ: true
- null๊ณผ undefined๋ ===๋ฅผ ์ฌ์ฉํ๋ฉด false, ==๋ฅผ ์ฌ์ฉํ๋ฉด true๊ฐ ๋ฐํ๋ฉ๋๋ค.
null === undefined //๊ฒฐ๊ณผ: false
null == undefined //๊ฒฐ๊ณผ: true
- ๋ง์ฝ ์ฐ์ ์ฐ์ฐ์๋ ๊ธฐํ ๋น๊ต ์ฐ์ฐ์(<, > ๋ฑ)์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ซ์ํ์ผ๋ก ๋ณํ๋๋๋ฐ, null์ 0, undefined๋ NaN์ด ๋ฉ๋๋ค. ๋จ, ๋๋ฑ ์ฐ์ฐ์(==)๋ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ผ ๋ ํ ๋ณํ์ ํ์ง ์์ต๋๋ค.
null == 0 //๊ฒฐ๊ณผ: false
๋ ผ๋ฆฌ ์ฐ์ฐ์
- OR (||)
- ์ธ์ ์ค ํ๋๋ผ๋ true๋ผ๋ฉด true๋ฅผ ๋ฐํ. ๊ทธ๋ ์ง ์๋ค๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
if (1 || 0) {}; //๊ฒฐ๊ณผ: true
- OR ์ฐ์ฐ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ผ์ชฝ๋ถํฐ ์์ํด ์์๋๋ก ํ๊ฐํฉ๋๋ค. ์ด๋, ํผ์ฐ์ฐ์๋ฅผ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ๋๋ฐ ๊ทธ ๊ฐ์ด true๋ฉด ์ฐ์ฐ์ ๋ฉ์ถ๊ณ ๋ณํ ์ ์๋ ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ํ๊ฐํ ํ์๋ false๋ผ๋ฉด ๋ง์ง๋ง ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํฉ๋๋ค.
alert(null || 0 || 1); //๊ฒฐ๊ณผ: 1 (1์ truthy์)
alert(undefined || null || 0); //๊ฒฐ๊ณผ: 0 (๋ชจ๋ falsy์)
- ์ธ์ ์ค ํ๋๋ผ๋ true๋ผ๋ฉด true๋ฅผ ๋ฐํ. ๊ทธ๋ ์ง ์๋ค๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
- AND (&&)
- ํผ์ฐ์ฐ์ ๋ชจ๋๊ฐ ์ฐธ์ผ ๋ true๋ฅผ ๋ฐํ. ๊ทธ๋ ์ง ์๋ค๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
if (1 && 0) {}; //๊ฒฐ๊ณผ: false
- AND ์ฐ์ฐ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ผ์ชฝ๋ถํฐ ์์ํด ์์๋๋ก ํ๊ฐํฉ๋๋ค. ์ด ๊ณผ์ ์ OR ์ฐ์ฐ์์ ์ ์ฌํ๋ฉฐ, ๋ณํ๋ ๊ฐ์ด false๋ฉด ์ฐ์ฐ์ ๋ฉ์ถ๊ณ ๋ณํ ์ ์๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
alert( 1 && null && 5 ); //๊ฒฐ๊ณผ: null
alert( 1 && 2 && 3 ); //๊ฒฐ๊ณผ: 3
- ํผ์ฐ์ฐ์ ๋ชจ๋๊ฐ ์ฐธ์ผ ๋ true๋ฅผ ๋ฐํ. ๊ทธ๋ ์ง ์๋ค๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
- NOT (!)
- ํผ์ฐ์ฐ์๋ฅผ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ ๋ค ๊ทธ ๊ฐ์ ์ญ์ ๋ฐํํฉ๋๋ค.
alert ( !true ); //๊ฒฐ๊ณผ: flase
- NOT์ ์ฐ๋ฌ์ ๋ ๊ฐ ์ฌ์ฉ(!!)ํ๋ฉด ๊ฐ์ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ ๋ด์ฅ ํจ์์ธ Boolean์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
alert ( !!"non-empty string" ); //๊ฒฐ๊ณผ: true
alert ( Boolean(null) ); //๊ฒฐ๊ณผ: false
- ํผ์ฐ์ฐ์๋ฅผ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ ๋ค ๊ทธ ๊ฐ์ ์ญ์ ๋ฐํํฉ๋๋ค.
์์
[1] ` alert( alert(1) || 2 || alert(3) ); ` ์ ๊ฒฐ๊ณผ๋?
- ๋ต: ์ผ๋ฟ ์ฐฝ์ 1, 2๊ฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
- ๋จผ์ alert(1)์ ํ๊ฐํฉ๋๋ค. ์ด๋ ์ฒซ ๋ฒ์งธ ์ผ๋ฟ ์ฐฝ์ 1์ด ์ถ๋ ฅ๋์ฃ .
- alert() ๋ฉ์๋๋ undefined๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ falsy ์ด๋ฏ๋ก OR ์ฐ์ฐ์๋ ๋ค์ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํฉ๋๋ค.
- ๋ค์์ผ๋ก ํ๊ฐ๋๋ 2๋ truthy์ด๋ฏ๋ก ์คํ์ด ๋ฉ์ถ๊ณ 2๊ฐ ๋ฐํ๋ฉ๋๋ค. ๋ฐํ๋ 2๋ ๋ฐ๊นฅ์ชฝ alert() ๋ฉ์๋์ ํผ์ฐ์ฐ์๊ฐ ๋์ด ์ผ๋ฟ ์ฐฝ์ 2๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
- ํ๊ฐ๊ฐ alert(3)๊น์ง ์งํ๋์ง ์์ผ๋ฏ๋ก 3์ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
[2] `alert( alert(1) && alert(2) ); `์ ๊ฒฐ๊ณผ๋?
- ๋ต: ์ผ๋ฟ ์ฐฝ์ 1, undefined๊ฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
- ๋จผ์ alert(1)์ ํ๊ฐํฉ๋๋ค. ์ด๋ ์ฒซ ๋ฒ์งธ ์ผ๋ฟ ์ฐฝ์ 1์ด ์ถ๋ ฅ๋์ฃ .
- alert() ๋ฉ์๋๋ undefined๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ falsy ์ด๋ฏ๋ก AND ์ฐ์ฐ์๋ ํ๊ฐ๋ฅผ ๋ฉ์ถฅ๋๋ค.
- ๋ฐํ๋ undefined๋ ๋ฐ๊นฅ์ชฝ alert() ๋ฉ์๋์ ํผ์ฐ์ฐ์๊ฐ ๋์ด ์ผ๋ฟ ์ฐฝ์ undefined๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
[3] `alert( null || 2 && 3 || 4 );`์ ๊ฒฐ๊ณผ๋? โ๏ธ
- ๋ต: ์ผ๋ฟ ์ฐฝ์ 3์ด ์ถ๋ ฅ๋ฉ๋๋ค.
- &&์ ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก ์ฐ์ 2 && 3์ด ์คํ๋ฉ๋๋ค. ๋ ๋ค truthy์ด๋ฏ๋ก 3์ด ๋ฐํ๋ฉ๋๋ค.
- ๋จผ์ null์ ํ๊ฐํฉ๋๋ค. ์ด๋ falsy์ด๋ฏ๋ก OR์ฐ์ฐ์๋ ๋ค์ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํฉ๋๋ค.
- ์ดํ 3์ ํ๊ฐํฉ๋๋ค. ์ด๋ truthy์ด๋ฏ๋ก OR์ฐ์ฐ์๋ ํ๊ฐ๋ฅผ ๋ฉ์ถฅ๋๋ค.
- ๋ฐํ๋ 3์ ๋ฐ๊นฅ์ชฝ alert() ๋ฉ์๋์ ํผ์ฐ์ฐ์๊ฐ ๋์ด ์ผ๋ฟ ์ฐฝ์ 3์ด ์ถ๋ ฅ๋ฉ๋๋ค.
null ๋ณํฉ ์ฐ์ฐ์ '??'
- ES2020(ES11)์ ์ถ๊ฐ๋ ์คํ์
๋๋ค.
??๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํผ์ฐ์ฐ์ ์ค ๊ทธ ๊ฐ์ด 'ํ์ ๋' ๋ณ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. (=๊ฐ์ด null ๋๋ undefined๊ฐ ์๋ ๋ณ์)
ex) a ?? b ํ๊ฐ ์, a๊ฐ null ๋๋ undefined๊ฐ ์๋๋ผ๋ฉด a. ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ b - ๋ฐ๋ผ์ ์๋ ๋ ์ฝ๋๋ ๋์ผํ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
[1]let name = ( realName !== null && realName !== undefined ) ? realName : nickName;
[2]let name = realName ?? nickName
์ผ๋ก ์ค์ฌ์ ํํํ ์ ์์ต๋๋ค. - ์ด๋ || ์ฐ์ฐ์์ ์ ์ฌํ์ง๋ง ์ฐจ์ด์ ์ด ์์ต๋๋ค. ||๋ ์ฒซ ๋ฒ์งธ truthy์ ๊ฐ์ ๋ฐํํ๊ณ , ??๋ ์ฒซ ๋ฒ์งธ truthy์ '์ ์๋' ๊ฐ์ ๋ฐํํฉ๋๋ค.
let height = 0;
let myHeight = height || 180; //๊ฒฐ๊ณผ: 180
let yourHeight = height ?? 180; //๊ฒฐ๊ณผ: 0
- height || 180์ 0์ falsy ๊ฐ์ผ๋ก ํ๋จํ์ฌ ์ด๋ฅผ null์ด๋ undefined์ ๋์ผํ๊ฒ ์ทจ๊ธํฉ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ truthy๋ 180์ด ๋ฉ๋๋ค.
- ํ์ง๋ง height ?? 180์ height๊ฐ ์ ํํ๊ฒ null์ด๋ undefined์ผ ๋๋ง์ falsy๋ผ๊ณ ํ๋จํฉ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ truthy๋ height์ด๋ฉฐ ์ฌ๊ธฐ์ ์ ์๋ 0์ด ๋ฉ๋๋ค.
- ์ด๋ฌํ ํน์ง ๋๋ฌธ์ 0์ด ํ ๋น๋ ์ ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋๋ ??๊ฐ ์ ํฉํฉ๋๋ค.
- ํ์ฌ JS์์๋ ์์ ์ฑ ๊ด๋ จ ์ด์ ๋๋ฌธ์ ??๋ฅผ ||๋ &&์ ํจ๊ป ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ์ ์ฝ์ด ๊ฑธ๋ ค ์์ต๋๋ค. ๋จ, ๊ดํธ๋ก ๋ฌถ์ผ๋ฉด ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ๋ณต๋ฌธ
- while
- ์กฐ๊ฑด์ด truhty์ธ ๋์ ๋ฐ๋ณต๋ฌธ ๋ณธ๋ฌธ ๋ด์ฉ์ ๋ฐ๋ณตํฉ๋๋ค.
- ๋ฐ๋ณต๋ฌธ ๋ณธ๋ฌธ์ด ํ ๋ฒ ์คํ๋๋ ๊ฒ์ iteration์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
let i = 0; while (i < 3) { alert( i ); // 0, 1, 2๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. i++; }
- do..while
- condition์ด ๋ณธ๋ฌธ ๋ค์์ ๋์ค๋ ํํ๋ก, ๋ณธ๋ฌธ์ด '์ต์ํ ํ ๋ฒ ์ด์ ์คํ๋์ด์ผ'ํ ๋ ์ฌ์ฉํฉ๋๋ค.
let i = 0; do { alert( i ); // 0, 1, 2๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. i++; } while (i < 3);โ
- condition์ด ๋ณธ๋ฌธ ๋ค์์ ๋์ค๋ ํํ๋ก, ๋ณธ๋ฌธ์ด '์ต์ํ ํ ๋ฒ ์ด์ ์คํ๋์ด์ผ'ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- for
- begin; condition; step;์ผ๋ก ์ด๋ค์ง ๋ฐ๋ณต๋ฌธ์
๋๋ค.
for (begin; condition; step) { // ... ๋ฐ๋ณต๋ฌธ ๋ณธ๋ฌธ ... }
- ์ธ๋ฏธ์ฝ๋ก `;` ๋ง ๋จ๊ธฐ๊ณ ๋ถํ์ํ ๋ด์ฉ์ ์๋ตํ ์๋ ์์ต๋๋ค.
let i = 0; for (; i < 3; i++) { alert( i ); }
- begin; condition; step;์ผ๋ก ์ด๋ค์ง ๋ฐ๋ณต๋ฌธ์
๋๋ค.
- ๋ฐ๋ณต๋ฌธ ๋น ์ ธ๋์ค๊ธฐ
- `break`๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํฉ๋๋ค.
- ๋ณธ๋ฌธ ๊ฐ์ด๋ฐ๋ ๋ณธ๋ฌธ ์ฌ๋ฌ ๊ณณ์์ ์กฐ๊ฑด์ ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ, '๋ฌดํ ๋ฐ๋ณต๋ฌธ + break' ์กฐํฉ์ ์ฌ์ฉํ๋ฉด ์ข์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์์ผ ํ๋ค๋ฉด, ๋จ์ํ break ์ ์ธ๋ง์ผ๋ก ๋ถ์กฑํฉ๋๋ค. ์ด๋ด ๋๋ `{๋ผ๋ฒจ์ด๋ฆ}:`์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ณต๋ฌธ ์์ ์๋ณ์๋ฅผ ๋ถ์ด๊ณ , ํด๋น ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฃ์ํฌ ์ ์์ต๋๋ค.
outer: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { let input = prompt(`(${i},${j})์ ๊ฐ`, ''); if (!input) break outer; // ์ฌ์ฉ์๊ฐ ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ฑฐ๋ Cancel ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ ๋ฐ๋ณต๋ฌธ ๋ชจ๋๋ฅผ ๋น ์ ธ๋์ต๋๋ค. } } alert('์๋ฃ!');โ
- ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๊ธฐ
- `continue`๋ ์ ์ฒด ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ์ง ์๊ณ , ํ์ฌ ์คํ ์ค์ธ ์ดํฐ๋ ์ด์ ๋ง ์ข ๋ฃ์ํจ ๋ค ๋ค์ ์ดํฐ๋ ์ด์ ์ผ๋ก ๋์ด๊ฐ๋๋ก ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ํ์๋ง ์ถ๋ ฅ์ํค๊ณ ์ถ์ ๊ฒฝ์ฐ,
for (let i=0; i<10; i++) { if (i % 2) { alert(i); } }โ
์์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ง๋ง, continue๋ฅผ ์ธ ์๋ ์์ต๋๋ค.
for (let i=0; i<10; i++) { if (i % 2 ==) continue; }โ
์์
[1] ์๋ ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋?
let i = 0; while (i++ < 5) alert( i );
- ๋ต: ์ผ๋ฟ ์ฐฝ์ 1,2,3,4,5๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
- ++๊ฐ ๋ค์ ๋์ค๋ ๊ฒฝ์ฐ๋ ๊ฐ์ ์ฆ๊ฐํ๋ ๊ธฐ์กด๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ๋น๊ต๋ (0<5)๊ฐ ๋๋ฉฐ ์ด๋ ์ฐธ์ ๋๋ค. ํํธ, alert()๋ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ณ๊ฐ์ด๋ฏ๋ก ์ด๋ฏธ ์ฆ๊ฐํด์ ๋์ด์จ i๋ฅผ ๋ฐ๊ณ 1์ ์ถ๋ ฅํฉ๋๋ค.
[2] ์๋ ๋ ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋ ๋์ผํ ๊น์?
//1 for (let i = 0; i < 5; i++) alert( i ); //2 for (let i = 0; i < 5; ++i) alert( i );
- ๋ต: ๋์ผํ๊ฒ 0,1,2,3,4๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- ์๋ํ๋ฉด i++๋ ++i๋ ์กฐ๊ฑด ํ์ธ๊ณผ ๋ณ๊ฐ์ ๊ตฌ๋ฌธ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. for๋ฌธ์ ๊ทธ์ ์ฆ๊ฐ๋ i๋ฅผ ์กฐ๊ฑด ํ์ธ์ ์ฌ์ฉํ ๋ฟ์ ๋๋ค. ๋ฐ๋ผ์ ์ฆ๊ฐ ์ฐ์ฐ์๊ฐ ๋ฐํํ ๊ฐ์ ์ด๋์๋ ์ฐ์ด์ง ์์ต๋๋ค.
[3] ์ฌ์ฉ์๊ฐ 100๋ณด๋ค ํฐ ์ซ์๋ฅผ ์ ๋ ฅํ ๋๊น์ง ํ๋กฌํํธ ์ฐฝ์ ๋์ฐ๊ณ , ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ฑฐ๋ ์ทจ์ํ ๊ฒฝ์ฐ ํ๋กฌํํธ ์ฐฝ์ ์ทจ์ํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์ธ์.
- ๋ต:
let num; do { num = prompt("100์ ์ด๊ณผํ๋ ์ซ์๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.", 0); } while (num <= 100 && numโ
- num์ด null์ธ ๊ฒฝ์ฐ num <= 100์ true๊ฐ ๋๋ฏ๋ก ๋ ๋ฒ์งธ ์กฐ๊ฑด์ด ์์ผ๋ฉด ์ทจ์ ๋ฒํผ์ ๋๋ฌ๋ ๋ฐ๋ณต๋ฌธ์ด ๊ณ์ํด์ ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ์กฐ๊ฑด์ ๋ชจ๋ ํ์ธํด์ผ ํฉ๋๋ค.
ํจ์
- ๋งค๊ฐ๋ณ์
- ๋งค๊ฐ๋ณ์์ ์ธ์๋ ๋ค๋ฆ
๋๋ค!
- (1) ๋งค๊ฐ๋ณ์/ํ๋ผ๋ฏธํฐ(parameter): ํจ์๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ๋ค๊ณ ์ง์ ํ๋ ๊ฐ
๐ ์ ์ฅ์ ์ํด ๋ง๋ จํด๋๋ ์์ - (2) ์ธ์/์ธ์(arguments): ํจ์๋ฅผ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๋ก ๋๊ธฐ๋ ๊ฐ
๐ ์ค์ ๋ก ์ ์ฅํ ์ฌ๋
- (1) ๋งค๊ฐ๋ณ์/ํ๋ผ๋ฏธํฐ(parameter): ํจ์๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ๋ค๊ณ ์ง์ ํ๋ ๊ฐ
- ํจ์๋ ๋ณต์ฌ๋ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ณ์์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ฆ, ํจ์์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ ๋ณต์ฌ๋ ํ ํจ์์ ์ง์ญ๋ณ์๊ฐ ๋ฉ๋๋ค.
- ํจ์๋ ์ธ๋ถ ๋ณ์์ ์ ๊ทผํ ์ ์์ง๋ง, ๋ฐ๊นฅ์์ ํจ์ ๋ด๋ถ์ ์ง์ญ๋ณ์์๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
let num = 22; add = (x, y) => { return x + y; } //(x,y)๋ ๋งค๊ฐ๋ณ์ add(num,2); //(num,2)๋ ์ธ์โ
- ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ๊ทธ ๊ฐ์ `undefined`๊ฐ ๋ฉ๋๋ค.
- ํจ์๋ฅผ ์ ์ํ ๋ ๋งค๊ฐ ๋ณ์ ์ค๋ฅธ์ชฝ์ `=`์ ๋ถ์ฌ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
someFunc = () => { return 'hello' }; showMsg = (name, msg = someFunc()) => { alert(name+' says '+msg); }; showMsg('nana'); //๊ฒฐ๊ณผ: 'nana says hello'โ
- ๋๋ ์ ์ธ๋ถ ๋์ , ํจ์ ์คํ ๋์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์๋ ์์ต๋๋ค.
showMsg = (text) => { text = text || 'Hey!'; ... }โ
- ๋งค๊ฐ๋ณ์์ ์ธ์๋ ๋ค๋ฆ
๋๋ค!
- ๋ฆฌํด
- ํจ์๋ ๋ฌด์กฐ๊ฑด ๋ญ๊ฐ๋ฅผ ๋๋ ค์ค๋๋ค. (๋ค! ํญ์ ๋ฌด์ธ๊ฐ๋ฅผ ์ธ์! ๐ฉ)
- return๋ฌธ์ด ์๊ฑฐ๋ return ์ง์์๋ง ์๋ ๊ฒฝ์ฐ๋ผ๋ undefined๋ฅผ ๋ฐํํฉ๋๋ค.
(์ฆ, return; === return undefined;์ธ ๊ฑฐ์ฃ )
- ํจ์ ์ด๋ฆ์ง๊ธฐ
- ํจ์ ์ด๋ฆ์ ๋๊ฐ ๋์ฌ๋ก ์ง์ต๋๋ค. ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํจ์๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์ ์ ์์ด์ผ ํฉ๋๋ค.
- get: ๊ฐ ๋ฐํ
- calc: ๊ณ์ฐ
- create: ์์ฑ
- check: ํ์ธ ํ ๋ถ๋ฆฐ๊ฐ ๋ฐํ
- show: ๋ฌด์ธ๊ฐ๋ฅผ ํ์ํจ
- ํจ์๋ ๋์ ํ๋๋ง ๋ด๋นํด์ผ ํฉ๋๋ค. ์ฆ, ์ด๋ฆ์ ์ธ๊ธ๋ ๋์๋ง ์ํํด์ผ ํฉ๋๋ค.
- ex) getAge() ํจ์๋ ๋์ด๋ฅผ ์ป์ด์ค๊ธฐ๋ง ํด์ผ ํฉ๋๋ค. alert()๋ก ์ถ๋ ฅํด์ฃผ๋ ๋์์ ๋ค๋ฅธ ํจ์๊ฐ ํด์ผ ํฉ๋๋ค.
- ex) createForm() ํจ์๋ form ์์ฑ ํ ๋ฐํํ๊ธฐ๋ง ํด์ผ ํฉ๋๋ค. form์ ๋ฌธ์์ ์ถ๋ ฅํ๋ ๋์์ ๋ค๋ฅธ ํจ์๊ฐ ํด์ผ ํฉ๋๋ค.
- ํจ์๋ ์ฃผ์์ด ์์ด๋ ๊ทธ ์กด์ฌ ์์ฒด๊ฐ ๋ฌด์จ ์ญํ ์ ํ๋์ง ์ค๋ช ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฝ๋๋ฅผ ๋ถ๋ฆฌํด ์์ฑํ๋ฉด ๋ ๋์ ์ฝ๋ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค.
- ํจ์ ์ด๋ฆ์ ๋๊ฐ ๋์ฌ๋ก ์ง์ต๋๋ค. ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํจ์๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์ ์ ์์ด์ผ ํฉ๋๋ค.
- ํจ์ ํํ์ vs. ํจ์ ์ ์ธ๋ฌธ
- ํจ์ ์ ์ธ๋ฌธ์ ๋
์์ ์ธ ๊ตฌ๋ฌธ ํํ๋ก ์กด์ฌํฉ๋๋ค.
function sum(a, b) { return a + b; }โ
- ํจ์ ํํ์์ ๊ตฌ๋ฌธ ๊ตฌ์ฑ(syntax construct) ๋ด๋ถ์ ์์ฑ๋ฉ๋๋ค. ์ด๋ ์ค์ ์คํ ํ๋ฆ์ด ํด๋น ํจ์์ ๋๋ฌํ์ ๋ ํจ์๋ฅผ ์์ฑํฉ๋๋ค.
let sum = function(a, b) { return a + b; };โ
- ๋ฐ๋ผ์ ํจ์ ์ ์ธ๋ฌธ์ ์ ์ ์ ์ ํธ์ถํ ์ ์์ต๋๋ค. ์๋๋ฉด JS๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ , ์ ์ญ์ ์ ์ธ๋ ํจ์ ์ ์ธ๋ฌธ์ ์ฐพ์ ํด๋น ํจ์๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋ํ '์๊ฒฉ ๋ชจ๋'๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด, ํจ์ ์ ์ธ๋ฌธ์ผ๋ก ์ ์ธ๋ ์ฝ๋๋ ๋ธ๋ก ๋ด์์๋ง ์ ํจํ๊ณ , ๋ธ๋ก ๋ฐ(์ค๊ดํธ ๋ฐ)์์๋ ํธ์ถํ ์ ์์ต๋๋ค.
- ํจ์ ์ ์ธ๋ฌธ์ ๋
์์ ์ธ ๊ตฌ๋ฌธ ํํ๋ก ์กด์ฌํฉ๋๋ค.
+++
prompt()
- ํ์ธ์ ๋๋ฅด๋ฉด ํด๋น ๊ฐ(๋ฌธ์์ด)์ ๋ฐํ
- ์ทจ์๋ฅผ ๋๋ฅด๋ฉด null์ ๋ฐํ
- ์๋ฌด ๊ฒ๋ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๋น ๋ฌธ์์ด์ ๋ฐํ
confirm()
- ํ์ธ์ ๋๋ฅด๋ฉด true๋ฅผ ๋ฐํ
- ์ทจ์๋ฅผ ๋๋ฅด๋ฉด false๋ฅผ ๋ฐํ728x90'๐ฟ > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CRA(create-react-app) ํ๊ฒฝ์์ ์ ๋๊ฒฝ๋ก / ์ ์ญ Sass ์ฌ์ฉํ๊ธฐ (0) 2022.03.16 2021๋ ํ๊ณ (0) 2021.12.29 ๋๊ธ