Underscore: ๋ฐ”๋ฒจ์„ ํ•  ์ˆ˜ ์—†๋‹ค

์— ๋งŒ๋“  2017๋…„ 01์›” 05์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jashkenas/underscore

๋‚˜๋Š” Babel์„ ์‚ฌ์šฉํ•˜์—ฌ underscore.min์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. gulp๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ๋ณ‘ํ•ฉํ•œ ๋‹ค์Œ babel๋กœ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://babeljs.io/repl/# ?babili=false&evaluate=true&lineWrap=false&presets=es2015

์˜ค๋ฅธ์ชฝ ํŒจ๋„ ํ•˜๋‹จ์— "u is undefined" ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

duplicate

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

"์ •์˜๋˜์ง€ ์•Š์€ ์†์„ฑ '_'์„(๋ฅผ) ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ, ์ด๋Š” ๋‹ค๋ฅด์ง€๋งŒ ์—ญ์‹œ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฒ„์ „์˜ Underscore๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ๋งˆ์Šคํ„ฐ์—์„œ ์ˆ˜์ •๋œ https://github.com/jashkenas/underscore/pull/2153 ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์˜์‹ฌ๋˜์ง€๋งŒ ์•„์ง ํฌํ•จ๋œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ์˜ Underscore ๋ฒ„์ „(https://github.com/jashkenas/underscore/blob/master/underscore.js)์œผ๋กœ ์‹œ๋„ํ•ด ๋ณด๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ๋ฌด์—‡์„ ์ฐพ์•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

"์ •์˜๋˜์ง€ ์•Š์€ ์†์„ฑ '_'์„(๋ฅผ) ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ, ์ด๋Š” ๋‹ค๋ฅด์ง€๋งŒ ์—ญ์‹œ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฒ„์ „์˜ Underscore๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ๋งˆ์Šคํ„ฐ์—์„œ ์ˆ˜์ •๋œ https://github.com/jashkenas/underscore/pull/2153 ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์˜์‹ฌ๋˜์ง€๋งŒ ์•„์ง ํฌํ•จ๋œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ์˜ Underscore ๋ฒ„์ „(https://github.com/jashkenas/underscore/blob/master/underscore.js)์œผ๋กœ ์‹œ๋„ํ•ด ๋ณด๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ๋ฌด์—‡์„ ์ฐพ์•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์ตœ์‹  ๋ฒ„์ „์ธ 1.8.3์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ "require" ๋ฉ”์†Œ๋“œ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ถ•์†Œ๋˜์ง€ ์•Š์€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. node.js/io.js, browserify/webpack ๋“ฑ๊ณผ ๊ฐ™์€ commonjs ํ™˜๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

exports ์˜ ์˜ค๋ฅ˜๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? Babel ์›น์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์ŠคํŒŒ์ผํ•  ๋•Œ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ์ฝ”๋“œ๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. Underscore๋Š” exports ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ ๋…ธ๋“œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ exports ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ๋จผ์ € ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ "์˜ค๋ฅ˜"๋Š” Babel์ด ๋„์›€์ด ๋˜๊ธฐ ์œ„ํ•ด ๋„ˆ๋ฌด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์กฐ์‚ฌํ•œ ํ›„ ์ˆ˜์ •ํ•จ

๋ฐฉ๊ธˆ ์•Œ์•„์ฑ˜์Šต๋‹ˆ๋‹ค... Underscore์˜ ์‹ค์ œ ๋งˆ์ง€๋ง‰ ์ค„์€ this ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

}.call(this));

๊ทธ๋Ÿฌ๋‚˜ Babel์—์„œ ๋นŒ๋“œํ•œ ํ›„ ๋งˆ์ง€๋ง‰ ์ค„์€ undefined ๋ฅผ ์ „๋‹ฌํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

}.call(undefined));

ES6 ๋ชจ๋“ˆ์—์„œ this ๋Š” undefined ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์‹ค์ œ ECMA ์‚ฌ์–‘์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Œ). ๊ทธ๋ž˜์„œ Babel์ด ์ž๋™์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

StackOverflow: babel์ด 'this'๋ฅผ 'undefined'๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ•

Babel์˜ ์˜จ๋ผ์ธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์Šคํฌ๋ฆฐ์ƒท:

screen shot 2017-02-26 at 9 56 47 pm

๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ ๋‹ค์Œ ์ปค๋ฐ‹ ์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๊ณต์‹ ๋ฆด๋ฆฌ์Šค๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „ 1.8.3 ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰