์‹ค์ˆ˜ ์ฝ”๋“œ

 
    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;