๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

JavaScript168

[JavaScript] scope, scope chain ๐ŸŽˆ ์Šค์ฝ”ํ”„(scope) ์‹๋ณ„์ž์— ๋Œ€ํ•œ ์œ ํšจ๋ฒ”์œ„. ex) ์–ด๋–ค ๊ฒฝ๊ณ„ A์˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” A์˜ ์™ธ๋ถ€๋ฟ ์•„๋‹ˆ๋ผ A์˜ ๋‚ด๋ถ€์—์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, A์˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์˜ค์ง A์˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. scope์˜ ๊ฐœ๋…์€ ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์— ์กด์žฌํ•œ๋‹ค. ๋‹ค๋งŒ ES5๊นŒ์ง€์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํŠน์ดํ•˜๊ฒŒ๋„ ์ „์—ญ๊ณต๊ฐ„์„ ์ œ์™ธํ•˜๋ฉด ์˜ค์ง ํ•จ์ˆ˜์— ์˜ํ•ด์„œ๋งŒ scope๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๐ŸŽˆ ์Šค์ฝ”ํ”„ ์ฒด์ธ(scope chain) scope๋ฅผ ์•ˆ์—์„œ๋ถ€ํ„ฐ ๋ฐ”๊นฅ์œผ๋กœ ์ฐจ๋ก€๋กœ ๊ฒ€์ƒ‰ํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ ์—ฌ๋Ÿฌ scope์—์„œ ๋™์ผํ•œ ์‹๋ณ„์ž๋ฅผ ์„ ์–ธํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด scope chain ์ƒ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ๊ฒฌ๋œ ์‹๋ณ„์ž์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค. ์Šค์ฝ”ํ”„ ์ฒด์ธ ์˜ˆ์ œ var a = 1; var outer = function () { var inner = f.. 2021. 10. 29.
[JavaScript] ์ „์—ญ ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜ ๐ŸŽˆ ์ „์—ญ ๋ณ€์ˆ˜(Global Variable) ์ „์—ญ ๊ณต๊ฐ„์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜. ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋กœ, ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜. ์ „์—ญ ์ปจํ…์ŠคํŠธ์— ๋‹ด๊ธด ๋ณ€์ˆ˜. ์•ˆ์ „ํ•œ ์ฝ”๋“œ ๊ตฌ์„ฑ์„ ์œ„ํ•ด ๊ฐ€๊ธ‰์  ์ „์—ญ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์€ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๐ŸŽˆ ์ง€์—ญ ๋ณ€์ˆ˜(Local Variable) ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜. ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜. ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋งŒ๋“ค์–ด์ง€๊ณ  ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•˜๋Š” ๋ณ€์ˆ˜. 2021. 10. 29.
[Vue.js] ์„ ์–ธ ์ˆœ์„œ index.js Vue.component('todo-item', { template: 'ํ• ์ผ ํ•ญ๋ชฉ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.' }) var app = new Vue({ // ์œ„์— Vue.component๋ž‘ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ํ™”๋ฉด์— ์ถœ๋ ฅ์ด ์•ˆ๋œ๋‹ค! el: '#app' }) index.html 2021. 10. 25.
[Vue.js] vue-router๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• 1. import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from '../components/Home.vue' import About from '../components/About.vue' Vue.use(VueRouter); const routes = [ { path: "/home", name: "Home", component: Home }, { path: "/about", name: "About", component: About }, ]; const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }) export default router.. 2021. 10. 25.
[Vue.js] vue-router ์ด๋ž€? โ„๏ธ vue-router ๋ž€? ๋ผ์šฐํŒ…์„ ๊ฐ„๋‹จํžˆ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ vue-router๋Š” SPA๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ์„ค์น˜ ๋ฐฉ๋ฒ• ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ terminal์— ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. npm install vue-router ์„ค์น˜๋ฅผ ํ•˜๋ฉด package.json์˜ dependencies์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ์ƒˆ๋กœ ์ƒ๊ธด๋‹ค. router์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” src ํด๋” ์•„๋ž˜์— 'router'๋ผ๋Š” ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์— index.js๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์ž๊ณ  ํ•œ ๊ฒƒ์€ ์•ฝ์†์ด๋ผ๊ณ  ํ•œ๋‹ค. src/router/index.js import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from '../componen.. 2021. 10. 25.
[JavaScript] call, apply, bind ๐Ÿฉ call ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ์ฃผ์ฒด์ธ ํ•จ์ˆ˜๋ฅผ ์ฆ‰์‹œ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ช…๋ น Function.prototype.call(thisArg[, arg1[, arg2[, ...]]]) ์ด๋•Œ call ๋ฉ”์„œ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ this๋กœ ๋ฐ”์ธ๋”ฉํ•˜๊ณ , ์ดํ›„์˜ ์ธ์ž๋“ค์„ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ๊ทธ๋ƒฅ ์‹คํ–‰ํ•˜๋ฉด this๋Š” ์ „์—ญ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ call ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž„์˜์˜ ๊ฐ์ฒด๋ฅผ this๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. // call ๋ฉ”์„œ๋“œ-1 var func = function (a, b, c) { console.log(this, a, b, c); }; func(1, 2, 3); // Window{ ... } 1 2 3 func.call({ x: 1 }, 4, 5, 6); // { x: 1 } 4 5 6 // call ๋ฉ”์„œ.. 2021. 10. 23.
๋ฐ˜์‘ํ˜•