์ค์ ์ฝ๋
switch (command) {
...
case "PRINT":
result = calculator.print();
if (result) stdOut.push(result);
stdOut.push(result);
break;
}๋ฌธ์ ๊ฐ ๋๋ ํ ์คํธ์ผ์ด์ค์ ๋์๊ฒฐ๊ณผ
์
๋ ฅ๊ฐ: [โPRINTโ, โPUSH0โ, โPRINTโ, โPOPAโ]
์์ํ๋ ๊ฒฐ๊ณผ๊ฐ: [โEMPTYโ, โ0โ, โEMPTYโ]
์ค์ ๊ฒฐ๊ณผ๊ฐ: [โEMPTYโ, โEMPTYโ]
๋ฌธ์ ์ด์ ๋ถ์
๋๋ ๊ฐ ๋ฉ์๋๋ค์ ๋ฆฌํด๊ฐ์ ๋ํด์ ์๋ฌ๋ ๊ตฌํ ์กฐ๊ฑด์ ์ํด ํน์ ๊ฐ์ ๋ฆฌํดํ์ง ์๋ ์ด์ ๋ฐ๋ก return๊ฐ์ ๋ฃ์ด์ฃผ์ง ์์๋ค. ๊ทธ๋ ๊ฒ ๋ง๋ ๋ฉ์๋๋ฅผ ๋ฐํ์ผ๋ก Switch case๋ฌธ์ ํตํด ๋ฉ์๋๋ฅผ ์คํ์ํค๊ณ ์ฌ๊ธฐ์์ ๋ฆฌํด๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๋์ค์ ์ถ๋ ฅํ ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๋๋ก ๋ง๋ค์๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ ๋ง์ฝ์ 0์ด๋ ๊ฐ์ด ์ค๋ฅ๊ฐ ์๋๋ฐ๋ ์๋ํด์ PUSH0 โ PRINT์ ๊ฐ์ด ๋์์ํฌ ๊ฒฝ์ฐ PRINT๊ฐ ๋ฆฌํดํ๋ ์๋ 0์ด๊ธฐ ๋๋ฌธ์ falsyํ ๊ฐ์ผ๋ก ์ทจ๊ธํ์ฌ if(result)์์ true ์กฐ๊ฑด์ผ๋ก ๊ฐ์ง ๋ชปํด 0์ด ๊ฒฐ๊ณผ๊ฐ ๋ฐฐ์ด์ ์ถ๊ฐ๋์ง ์๋ ํ์์ด ๋ฐ์ํ๋ค.
๋ณด์ ๋ฐฉ๋ฒ ์ค๊ณ
์ด๋ฌํ ์ค๋ฅ๊ฐ ๋๋ ๋ถ๋ถ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฉ์๋๋ฅผ ์คํํ๊ณ ์๋ฌ๋ ๊ตฌํ์กฐ๊ฑด์ ์ํด ํน์ ๊ฐ์ ๋ฆฌํดํ์ง ์๋ ๊ฒฝ์ฐ undefined๊ฐ ๋ฆฌํด๋๋ ์ ์ ๊ณ ๋ คํ์ฌ typeof๋ฅผ ํตํด ํ์์๋ ๋ฆฌํด๊ฐ๋ค๋ง ํํฐ๋งํ๋๋ก ๋ก์ง์ ๋ณ๊ฒฝํ์๋ค.
๋ณด์ํ ์ฝ๋
...
case "PRINT":
result = calculator.print();
if (typeof result !== "undefined") stdOut.push(result);
break;