JavaScript: with, debugger

    JavaScript: with, debugger

    2018, Mar 20    

    ์ฐธ๊ณ ํ•œ ๊ธ€

    with

    ์ฃผ๋กœ ๊นŠ์ด ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹์„ ์ƒ๋žตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๋‹ค๋งŒ ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. David Flanagan์€ ์ตœ์ ํ™”๊ฐ€ ํž˜๋“ค๊ณ  ์ฝ”๋“œ ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ ํ•œ๋‹ค. MDN์€ โ€œํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•˜๊ณ  ํ˜ธํ™˜์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ๋น„๊ถŒ์žฅโ€ํ•œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์—„๊ฒฉ ๋ชจ๋“œ(strict mode)์—์„  ์‚ฌ์šฉ์กฐ์ฐจ ๋ถˆ๊ฐ€ํ•˜๋‹ˆ ์‹ค์ œ ์“ธ ์ผ์€ ์—†์–ด ๋ณด์ธ๋‹ค.

    var obj = {};
    obj.inner = {};
    obj.inner.number = 1234;
    
    with (obj.inner) {
      console.debug(number); // 1234
    }
    

    debugger

    ๋””๋ฒ„๊ฑฐ์˜ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ์—ญํ• ์„ ํ•˜๋Š” ํ‚ค์›Œ๋“œ. ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๋ฉด debugger ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋Š” ์ง€์ ์— ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. ๋‹จ ์‹ค์ œ ์ž‘๋™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌํ˜„์ฒด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ €์—์„  ํฌ๋กฌ51, ํŒŒํญ47, IE11, ์—ฃ์ง€์—์„œ ์ •์ƒ ์ž‘๋™ํ•˜๋Š”๊ฑธ ํ™•์ธํ•จ.

    ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ด์–ด๋†“๊ณ  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž:

    var str = 'debugger test';
    function fn() {
      debugger;
      return str;
    }
    fn();