๋ด๊ฐ Crockford๋ฅผ ์ค๋ํ ์ ์์๋ ๊ฒ ์ค ํ๋๋ case statement fallthrough๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋๋ค.
ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๊ด์ฐฎ์ต๋๋ค.
์ค์์น(foo){
์ฌ๋ก 1:
์ฌ๋ก 2:
๋ฌด์์ธ๊ฐ();
}
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์๋๋๋ค:
์ค์์น(foo){
์ฌ๋ก 1:
doSomethingFirst();
์ฌ๋ก 2:
๋ฌด์์ธ๊ฐ();
}
์ด์ ์ ํดํนํ JSLint ๋ฒ์ ์์ ๋๋ ๋น์ ์ด ๋์ด์ง๋ ค๋ ์๋๋ฅผ ๋ํ๋ด๋ /_falls through_/ ์ฃผ์์ ํ์ธํ์ต๋๋ค.
์ค์์น(foo){
์ฌ๋ก 1:
doSomethingFirst();
/_๋จ์ด์ง๋ค_/
์ฌ๋ก 2:
๋ฌด์์ธ๊ฐ();
}
JSHint์ ์ด๊ฒ์ด ํฌํจ๋๊ธฐ๋ฅผ ์ ๋ง ์ํฉ๋๋ค. JSLint์์ ์ค๋ซ๋์ ๊ณ ํต์ ๊ฒช์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ํ #11์์ โ JSHint์๋ default
๋๊น์ง ๊ฐ์์ ํ์ฉํ๋ ์ต์
์ด ์์ด์ผ ํฉ๋๋ค.
์๋ํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ฅผ ๋ฌด์ํ๋ ๋ณ๋์ ์ต์ ์ ์ถ๊ฐํ์ง ์์์ต๋๋ค. ๋์ , ๋๋ ๋์ด์ง๋ ๊ฒ์ด ์๋์ ์ด๋ผ๋ ๋ช ์์ ์ธ ์ฝ๋ฉํธ์ ํจ๊ป ๋น์ ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฌ์ฉํ์ต๋๋ค.
์ค์์น(foo) { ์ฌ๋ก 1: dosmth(); /*๋ */ ์ฌ๋ก 2: dosmth(); }
๊ด๋ จ ์ปค๋ฐ: 4a72da1.
๊ต์ฅํฉ๋๋ค, ๊ฐ์ฌํฉ๋๋ค!
IIRC์ Crockford๋ ์์ ์ ์ฑ ์์ ์ผ์ด์ค ํด์ค๋ฃจ๋ฅผ ์ซ์ดํ๋ ์ด์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธํ์ต๋๋ค. ์ด์ผ๊ธฐ๋ ์ฌ๋ฏธ์๊ณ ๋ค์ ๋ธํ ๋น์ถ์ฒ์ ๋๋ค.
์ด์ ๋ํด ๋
ผํ์ ํด์ ๋ฏธ์ํ์ง๋ง ๋ธ๋ก ๋์ throw๊ฐ ์๋ case
์ ๋ํด ๊ฒฝ๊ณ ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค. /* falls through */
์ฃผ์์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ ์ ์์ง๋ง ์ฃผ์์ ์ด์ ๊ฒฝ์ฐ, ์ฃผ์ ๋ฐ ๋ค์ ์ฌ์ด์ ๊ณต๋ฐฑ ์ด์ธ์ ๋ค๋ฅธ ์์์ ์ํด "๋ฐฉํด"๋ฉ๋๋ค(๊ฒฐ๊ตญ ๊ฒฝ๊ณ ๊ฐ ํธ๋ฆฌ๊ฑฐ๋๋ค๋ ์๋ฏธ์์). ๊ทธ๋์ ๋๊ธ์ด ์ ๊ฑฐ๊ธฐ์ ์๋์ง์กฐ์ฐจ ์ธ๊ธํ ์ ์์ต๋๋ค.
/* falls through */
๋์ ์ฃผ์ break;
๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์
๋๋ค. ๋ฌธ์์ ์ถ๊ฐํ์ญ์์ค.
/* falls through */
์ ์ ์ค์ ์ถ๊ฐ ์ฃผ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
ํ๊ฒฌ. ๋ฌธ์์ /*falls through*/
๋ฅผ ์ถ๊ฐํ์ธ์.
๋ํ ๋ค์์ ๋ํ ์ง์์ ์ถ๊ฐํ์ญ์์ค.
case 'none':
default:
๊ธฐ์ ์ ์ผ๋ก 'none'
๋์๋ฌธ์๋ ํ์ํ์ง ์์ง๋ง ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ฌ์ค๋๋ค.
๋ฌธ์์ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด +1์ ๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ ์ผ๋ก, ๋๋ ์ต๊ทผ์ "fall through" ์ฌ๋ก๊ฐ ๋ง์ด ๋๋ ์ํฉ์ ๋ฐ๊ฒฌํ์ต๋๋ค. localStorage์์ ์ฝ์ ๋ฒ์ ๋ฐ์ดํฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ๋ ๋ฐ ์ด๊ฒ์ ์ฌ์ฉํ์ต๋๋ค. ์ :
function migrate( version, data ) {
switch( version ) {
case 1 :
data.new1 = data.old; // convert data from version 1 to version 2
delete data.old;
case 2 :
data.new2 = data.new1; // convert data from version 2 to version 3
delete data.new1;
}
return data; // return data in version 3 format
}
๋ฐ์ดํฐ ํ์์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ด์ ๋ฒ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ฝ๋๋ฅผ ์ ์ง ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ ํน์ ๋ฒ์ ์ ์ต์ ๋ฒ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋ชจ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ ์ฉ๋ฉ๋๋ค.
.jshintrc
๊ฐ์ฒด ํค๋ฅผ ์ฐพ๋ ์ฌ๋๋ค์ ์ํด:
"-W086": true, //allow fall-through
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
.jshintrc
๊ฐ์ฒด ํค๋ฅผ ์ฐพ๋ ์ฌ๋๋ค์ ์ํด: