varํค์๋๋ก ์ ์ธํ ๋ณ์๋ ์ ์ญ์ ์ธ ๋ฒ์๋ก, ์ด๋ฌํ ํน์ฑ์ ํผ๋์ ์ฃผ๋ฉฐ ์ค๋ฅ์ ์์ธ์ด ๋๊ธฐ๋ ํ๋ค. var๋ณ์์ ์ ์ธ์ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ์ฒ๋ฆฌ๋๋๋ฐ, ์ด๋ ๊ณณ์์ ์ ์ธ์ ํ๋ ๋งจ ์์์ ์ ์ธ ํ๋ ๊ฒ๊ณผ ๊ฐ์ด '๋์ด์ฌ๋ ค' ๊ฐ์ ๋์ ํ๋ค.
a = 1; var a; console.log(a); // output 1
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์์์๋ถํฐ ์๋๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ ๊ฒ ๊ฐ์ง๋ง ์ ์์ ์ผ๋ก 1์ด๋ผ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
hosting
๋์ดvar
๋ผ๋ ๋ณ์๋ฅผ ๋๊ณ ์ฌ๋ผ์๊ธฐ ๋๋ฌธ์ด๋ค.
ES6 ์ด์ ์ javascript์์๋
var
ํค์๋๊ฐ ์ ์ผํ ๋ณ์ ์ ์ธ ๋ฐฉ๋ฒ์ด์๋ค.
ES6์ดํ์var, let, const
ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ฐฐํฌ์ฝ๋์๋งvar
ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค.
ํจ์ ๋ ๋ฒจ ์ค์ฝํ (function-Level Scope)๊ฐ ์ ์ฉ๋๋ฉฐ,
var
๋ก ์ ์ธํ ๋ณ์๋ ์ค๋ณตํด์ ์ ์ธ(์ด๊ธฐํ)์ด ๊ฐ๋ฅํ๋ค.
์ด ๊ฒฝ์ฐ, ๋ง์ง๋ง์ ํ ๋น๋ ๊ฐ์ด ๋ณ์์ ์ ์ฉ๋๋๋ฐ
๊ธฐ์กด์ ์ ์ธํด๋ ๋ณ์์ ์กด์ฌ๋ฅผ ๊น๋จน๊ธฐ ์ฝ๊ณ , ๊ฐ์ ์ฌํ ๋นํ๊ฒ ๋๋ ๋ฑ์ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๋ค.var varTest = 25; // (๋ณ์ ์ ์ธ) varTest = 18; // (๋ณ์ ์ฌํ ๋น) var varTest = 30; // (๋ณ์ ์ฌ์ ์ธ) console.log(varTest); // 30
if๋ฌธ ์์
var varTest = 18; // (๋ณ์ varTest ์ ์ธ, ๊ฐ = 18 ํ ๋น) console.log(varTest); // 18 if (true) { var varTest = 25; // ('if ๋ธ๋ญ ๋ด' ๋ณ์ varTest ์ฌ์ ์ธ, ๊ฐ = 25 ํ ๋น) console.log(varTest);// 25 } console.log(varTest); // 25
- if๋ฌธ ์์์ ํจ์ ์ค์ฝํ๊ฐ ์ ์ฉ๋๋
var
์
์ง์ญ๋ณ์ ์ฌ์ ์ธ์ if ๋ธ๋ญ ๋ด์์ ์ฌํ ๋น ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ(Block-Level Scope)๊ฐ ์ ์ฉ๋๋ฉฐ, ๋ธ๋ก ๋ด์ ์ ์ธํ ์ง์ญ๋ณ์๋ ๋ธ๋ก ๋ฐ์ ์ ์ญ๋ณ์์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
let letTest = 25; // (๋ณ์ ์ ์ธ) letTest = 18; // (๋ณ์ ์ฌ ํ ๋น) let letTest = 30; // (Uncaught SyntaxError: Identifier 'age' has already been declared) console.log(age);
if๋ฌธ ์์
let letTest = 10; // (๋ณ์ letTest ์ ์ธ, ๊ฐ = 10 ํ ๋น ) console.log(letTest); // 10 if(true) { let letTest = 100; // ( 'if ๋ธ๋ญ ๋ด' ์ง์ญ๋ณ์ letTest ์ ์ธ, ๊ฐ = 100 ํ ๋น ) console.log(letTest); // 100 } console.log(letTest); // 10
- var์ ๋ฌ๋ฆฌ ๋ธ๋ญ ๋ฐ๊นฅ์
letTest
๊ฐ์ด ๋ณํ์ง ์์๋ค.
if๋ฌธ ๋ด์let
(์ง์ญ๋ณ์)๋ ๋ฐ๊นฅ์let
(์ ์ญ๋ณ์)์ ๋ค๋ฅธ ๋ณ์์ด๊ณ
if๋ฌธ์ด ๋๋๋ ์์ ์์ if๋ฌธ ๋ดlet
์ ์ ํจ๋ฒ์๋ ๋๋๊ฒ ๋๋ ๊ฒ์ด๋ค.
const ์ ์ธ์ Constant(์์) ์ฆ, 'ํญ์ ๊ฐ์ ์'๋ฅผ ๋งํ๋ค.
๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ(Block-Level Scope) ์ ์ฉ, ์ ์ธ๊ณผ ๋์์ ๊ฐ์ ๋์ (์ด๊ธฐํ)ํด์ค์ผ ํ๋ค. ๊ฐ ์ฌํ ๋น, ์ฌ์ ์ธ์ด ๋ถ๊ฐํ๋ค.let
๊ณผ ๊ฐ์ด ์ฌ์ ์ธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.const constTest = 25; // ( ๋ณ์ constTest ์ ์ธ, ๊ฐ = 25 ํ ๋น ) contTest = 18; // ( ์ค๋ฅ ) const constTest = 30; // ( Uncaught SyntaxError: Identifier 'constTest' has already been declared ) console.log(constTest);
if๋ฌธ ์์
const constTest = 30; // (๋ณ์ constTest ์ ์ธ, ๊ฐ = 30 ํ ๋น ) console.log(constTest); // 30 if(true) { const constTest = 300; // ( 'if ๋ธ๋ญ ๋ด' ์ง์ญ๋ณ์ constTest ์ ์ธ, ๊ฐ = 100 ํ ๋น ) console.log(constTest); // 300 } console.log(constTest); // 30
const
๋ก ์ ์ธ ๋ ๋ณ์์ ์ฌ์ ์ธ๊ณผ ์ฌํ ๋น์ ๋ถ๊ฐ๋ฅํ์ง๋ง,
const
์ ํ ๋น ๋ ๊ฐ์ฒด์ ๋ด์ฉ(ํ๋กํผํฐ ์ถ๊ฐ, ์ญ์ , ๊ฐ์ ๋ณํ)์ ๋ณ๊ฒฝํ ์ ์๋ค.const Object = { name1: "coffee", name2: "and", name3: "frim", name4: "DunkinDonuts" }; Object.name3 = "donuts"; // ( const๋ก ์ ์ธ ๋ Object ๋ณ์์ ๊ฐ์ฒด name3์ ๋ด์ฉ ๋ณ๊ฒฝ ) console.log(Object); // ( name1: "coffee", name2: "and", name3: "donuts", name4: "DunkinDonuts" )
javascript
์์ ๋ฌธ์์ด์ ์
๋ ฅํ๋ ๋ฐฉ์์ผ๋ก, ES6 ์ด์ ์๋ var str = 'Hello ES6!'
์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ์ผ๋ ES6์์๋ ๋ฐฑํฑ(Back-tick)์ด๋ผ๋ ๊ธฐํธ (`)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ๋ค.
''
๋ฅผ ์ฌ์ฉํ์ฌ ๊ธด ๋ฌธ์์ด์ ์ ์ธ ์ ์๋์ผ๋ก ๊ฐํ์ด ๋์ง ์์ \n
(line breaker)๋ฅผ ์ค๊ฐ ์ค๊ฐ ์ถ๊ฐํ์ฌ ๋ฌธ์ฅ์ด ๊ธธ์ด์ง ์๋ก +
์ \n
์ ๊ณ์ ์ถ๊ฐํด์ค์ผ ํ๋ค.
var a = 20;
var b = 5;
var c = "javascript";
var str = "์ ๋ " + (a + b) + "์ด์ด๊ณ " + c + "๋ฅผ ๋ฐฐ์ฐ๋ ์ค์
๋๋ค.";
console.log(str); //์ ๋ 25์ด์ด๊ณ javascript๋ฅผ ๋ฐฐ์ฐ๋ ์ค์
๋๋ค.
๋ฌธ์์ด์ ์ ์ธํ ๋์ +
์ \n
์ ์ถ๊ฐํด์ค ํ์ ์์ด ๋ฐฑํฑ์ผ๋ก ๋ฌถ์ด์ฃผ๋ฉด ๋๋ค.
let a = 20;
let b = 5;
let c = "javascript";
let str = `์ ๋ ${a+b}์ด์ด๊ณ ${c}๋ฅผ ๋ฐฐ์ฐ๋ ์ค์
๋๋ค.`;
console.log(str); //์ ๋ 25์ด์ด๊ณ javascript๋ฅผ ๋ฐฐ์ฐ๋ ์ค์
๋๋ค.
const
(์์) ์ต์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ์.let
์ ๋ณ์ ๊ฐ ์ฌํ๋น ์์ ์ฌ์ฉํ์.var
์ฐ๋ ์น๊ตฌ๊ฐ ์๋ค๋ฉด ์๋ ค์ฃผ๋๋ก ํ์.