var ๋ณ์์ด๋ฆ = ๊ฐ;
var name = "๊น์์จ";
๊น์์จ์ name์ด๋ผ๋ ๋ณ์์ ํ ๋น๋ ๊ฐ
๋ณ์ ์ด๋ฆ์ ์ํ๋ ๋๋ก ์ ํ ์ ์์ง๋ง ๋ค์ ๋ช๊ฐ์ง ์ฌํญ์ ์ฃผ์ํด์ผํ๋ค.
1) ํ ํ์ผ์์ ๊ฐ์ ๋ณ์ ์ด๋ฆ์ ์ค๋ณตํด์ ์ฌ์ฉํ ์ ์๋ค.
2) ๋ณ์์ด๋ฆ, ํจ์์ด๋ฆ, ์ฐ์ฐ์ ๋ชจ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค.(myName ๊ณผ MyName์ ๋ค๋ฅด๋ค.)
3) ๋ณ์ ์ด๋ฆ์ ์ ํ ๋ ์ฒซ๋ฒ์จฐ ๋ฌธ์๋ ๋ฐ๋์ ๊ธ์๋ ๋ฐ์ค(_), ๋ฌ๋ฌ๊ธฐํธ($)์ค ํ๋์ด๋ค.
4) ๋๋ฒ์จฐ ๋ฌธ์๋ถํฐ๋ ๊ธ์, ๋ฐ์ค ๋ฌ๋ฌ, ์ซ์ ์ค์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
5) ๋ณ์์ด๋ฆ, ํจ์์ด๋ฆ, ๋ฑ camelCase ๋ฐฉ์์ผ๋ก ์ฌ์ฉ
๋ณ์๋ช ์ ์ ์ง์ผ๋ฉด ๋์ค์ ๋ณด๋๋ผ๋ ์์ ์ ์ฝ๋๋ฅผ ๋์ฑ ์ฝ๊ฒ ์ดํดํ ์ ์๊ณ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ค์ด๊ฐ ๋ฆฌ์์ค๋ฅผ ์ค์ผ ์ ์์ด ๊ฐ๋ฐ์ ํจ์จ์ด ๋์์ง๋ค. ๋ฐ๋ผ์ ๋ชจํธํ์ง ์๊ณ , ๋ณ์๋ช ๋ง์ผ๋ก๋ ์๋ฏธ๊ฐ ์ถ์ธก ๊ฐ๋ฅํ๊ฒ ์ง๋๋ค.
์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์ ์ ์ธ์ var๋ฅผ ํตํด์๋ง ๊ฐ๋ฅํ๋๋ฐ, ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉด์ let๊ณผ const๋ผ๋ ํค์๋๊ฐ ์๋กญ๊ฒ ์๊ฒผ๋ค.
์ฌ์ฉ๋ฒ์ var์ ๊ฐ์ง๋ง let ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์ ๊ฐ์ ์์ ํ ์ ์๊ณ , const ํค์๋๋ฅผ ์ฌ์ฉํ ๋ณ์๋ ์์ ํ ์ ์๋ค.
๋ณ์์ ๊ฐ์ ํ ๋นํ๊ณ ์์ํ ์์ ํ ์ผ์ด ์์ผ๋ฉด const๋ฅผ ์ฌ์ฉํ๊ณ , ๋ณ์ ๊ฐ์ด ํ๋ฒ์ด๋ผ๋ ์์ ๋ ์์ ์ด๋ผ๋ฉด let์ ์ฌ์ฉํ๋ค.(๋๊ฐ ๊ตฌ๋ถํ ํ์ ์์ด var๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง ์ต์ ๋ฒ์ ์ ๋ง๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ๊ตฌ๋ถํ๋ค.)
์ด๋ฏธ ํ๋ฒ ์ ์ธํ ๋ณ์๋ฅผ ์์ ํ๊ณ ์ ํ ๋์๋ let์ ๋ค์ ์ฌ์ฉํ์ง ์๋๋ค. let์ ์ฒ์ ๋ณ์๋ฅผ ์๋ก ์์ฑํ ๋๋ฉด ์ฌ์ฉ๋๋ค.
#์ฒ์์ const๋ก ์ ์ธํ๋ค๋ฉด ์์ ๋ถ๊ฐ๋ฅ
let name = "๊น์์จ";
name = "๊น์ง์ ";
let name;
name = "๊น์์จ";
function ํจ์์ด๋ฆ(){
let hi = "์๋
ํ์ธ์";
return hi;
}
function ํค์๋๋ก ์์ํ์ฌ ํจ์ ์ด๋ฆ์ ์ง์ด์ฃผ๊ณ ํจ์๋ฅผ ์๋ฆฌ๋ ์๊ดํธ(())๋ฅผ ์ด๊ณ ๋ซ๊ณ , ํจ์์ ์์์ ์๋ฆฌ๋ ์ค๊ดํธ๋ฅผ ์ด์ด์ค๋ค.
์คํํ ์ฝ๋๋ฅผ ์ค๊ดํธ์ ์ค๊ดํธ ์ฌ์ด์ ์์ฑํ๊ณ ํจ์์ body๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ฉฐ ์ด ๋ถ๋ถ์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋์ด์๋ค.(ํจ์ ๋ด๋ถ์ ์๋ ์ฝ๋๋ผ๋ ๊ฒ์ ์๊ธฐ ์ข๊ฒ ํ๊ธฐ ์ํด ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.)
return ํ ๊ฒ์ด ์๋ค๋ฉด ์์ฑํ๊ณ ์ค๊ดํธ๋ฅผ ๋ซ์์ ํจ์์ ์์ฑ์ด ๋๋ฌ์์ ์๋ฆฐ๋ค.
ํจ์ ์ด๋ฆ์ ๋ถ๋ฆฌ์ง ์ ๊น์ง๋ ์์ ์ ์ํ ๋ณ์๊ฐ ์์ฑ๋์ง๋ ์๊ณ ๋์ํ์ง๋ ์๋๋ค.
ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ์ฌ ์คํํ ์ ์๋ค.
ํจ์์ด๋ฆ();
let result = noParameter();
console.log(result);
console.log(noParameter());
function alertSuccess(name){
alert(name + "๋ ๋ก๊ทธ์ธ ์ฑ๊ณต!");
}
alertSuccess("๊น์์จ");
//๋ค์๊ณผ ๊ฐ์ด ํจ์ ๋ด๋ถ์์ ์ธ์๋ก ๋ฐ์ ๋ณ์์ ์๋ก์ด ๊ฐ์ ๋ฃ์ผ๋ฉด ์๋๋ค.
//์ธ์์ ์ค์ ๋ก ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ ๋ ์ง๋ ํธ์ถํ ๋ ๊ฒฐ์ ํ๋ค.
function alertSuccess(name) {
let name = "wecode";
alert(name + "๋ ๋ก๊ทธ์ธ ์ฑ๊ณต!");
}
ํจ์๊ฐ ์ธ๋ถ์์ ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ํจ์ ์ด๋ฆ ์ ์๊ดํธ ์์ ์ น๊ณ ์ด๋ฅผ ๋งค๊ฐ๋ณ์, ์ฆ parameter๋ผ๊ณ ํ๋ฉฐ ์ธ๋ถ๋ก ๋ถํฐ ๋ค์ด์ค๋ ๊ฐ์ ๋ด์ ํจ์ ๋ด๋ถ์์ ์ฌ์ฉํ๋๋ก ํ๋ ๋ณ์์ ์ญํ ์ ํ๋ค.
๊ทธ ์๋ฆฌ์ ๋ค์ด๊ฐ ์ค์ง์ ์ธ ๊ฐ์ argument๋ผ๊ณ ํ๋ค.
//name -> parameter
function getName(name){
return name + "๋";
}
//๊ฐ๋ฐ์ -> argument
let result = getName("๊ฐ๋ฐ์");
console.log(result);
-> ๊ฐ๋ฐ์๋
ํจ์๋ฅผ ์ ์ํ๋ฉด์ ํจ์ ์ ์ธ์์ ๊ดํธ ์์ ์ด๋ค ๋ณ์๋ช ์ ์ฐ๋ฉด ๊ทธ๊ฒ์ ๋งค๊ฐ๋ณ์๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ๊ทธ ์ด๋ฆ์ฒ๋ผ ์ค์ ๋ก ํจ์ ์์ชฝ์์ ๋ณ์์ ๊ฐ์ ์ญํ ์ ํ๊ฒ๋๋ค.
ํจ์๊ฐ ํธ์ถ๋ ๋ ๊ฐ์ ์ ๋ฌ๋ฐ๊ฒ ๋๋ฉด ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ์ ์๋๋ค.
์ด๋ค ํจ์๋ฅผ ํธ์ถํ๋ฉด์ ํธ์ถ๋ฌธ์ ๊ดํธ์์ ์ด๋ค ๊ฐ ๋๋ ๊ฐ์ด ์ ์๋ ๋ณ์๋ฅผ ์ฐ๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ธ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํจ์์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ด๋ ์ํ๋ผ๋ฉด ํธ์ถ์ ์ธ์๋ก ์ ๋ฌํ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋๋ค.
// doubleNumber ํจ์ ์ ์ธ์
function doubleNumber(myNumber) { // <- ํธ์ถ์ ์ ๋ฌ๋ฐ์ ๊ฐ์ myNumber ๋ผ๋ ๋ณ์๋ช
์ผ๋ก ํจ์ ์์ชฝ์์ ์ฌ์ฉ
let myResult = myNumber * 2
return myResult
}
// doubleNumber ํจ์ ํธ์ถ๋ฌธ
doubleNumber(3); // <- doubleNumber๋ฅผ ํธ์ถํ๋ฉด์ ๊ฐ 3์ ์ ๋ฌํ๋ค.
let someNumber = 42
doubleNumber(someNumber); // <- doubleNumber๋ฅผ ํธ์ถํ๋ฉด์ ๊ฐ 42๋ฅผ ์ ๋ฌ
function alertSuccess(month, name) {
alert(month + "์์ ๋น์ฒจ์๋ " + name + "์
๋๋ค.");
}
alertSuccess("3", "๊น๊ฐ๋ฐ");
function getTax(price) {
return price * 0.1;
}
function calculateTotal(price) {
return price + getTax(price);
}
var result = calculateTotal(3500);
#ํจ์๊ฐ ์คํ๋๋ ์์ ์ ํจ์๋ฅผ ํธ์ถํ์ ๊ฒฝ์ฐ์ด๋ค.
console.log(result);
let num = 1;
num ++;
console.log(num);
-> 2
let num = 1;
let newNum = num;
console.log(num);
console.log(newNum);
->2
->1
//์์ ์คํ
์ ํ์ด ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
let num = 1;
let newNum = num;
num++;
//newNumdpeh 2๋ฅผ ํ ๋นํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
let newNum = ++num;
//ํ์ด์ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
let num = 1;
num++;
let newNum = num;
let userName = "๊น์์จ";
alert(userNmae);
ํ ์ค๋ฅผ ์กฐํฉํ ๋๋ + ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉฐ ํ ์คํธ์ ๋ณ์๋ฅผ ์กฐํฉํด์ ์ฌ์ฉํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ซ์์ ํ ์คํธ๋ ์๋ฐ์ดํ๋ก ๊ตฌ๋ถํ๋ค.
string๊ณผ number ํ์ ๋ํ๋ฉด ํญ์ stringํ์ผ๋ก ๋ณํ๋๋ค.
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์๋ก ๋ค๋ฅธ ํ์ ์ธ string๊ณผ number๋ ์๋ก ๋ํ๊ฑฐ๋ ๋บ ์ ์์ง๋ง javascript์์๋ ์ค๋ฅ๋ฅผ ๋ด์ง ์๊ณ ๋ํ๊ฒ ๋๋ค.
์ด๋ฐ์ ์ด ์ ์ฐํจ๊ณผ ๋์์ ์๋ฌ๋ฅผ ๋ผ ์ฌ์ง๊ฐ ์๋ ๋ถ๋ถ์ด๋ค.
let answer = 3 + 3;
if (answer > 5){
alert("5๋ณด๋ค ํฐ ์ซ์");
}
answer๋ผ๋ ๋ณ์์ 3+3 ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ์ด ์ ์ฅ๋๋ค.
if ์ฐ์ธก () ๊ดํธ ์์ ์กฐ๊ฑด์ด ๋ง์ผ๋ชจ {} ๊ดํธ ์์ ์๋ ์ฝ๋๊ฐ ์คํ๋๋ค.
let answer = 3+3;
if (answer > 5){
alert("5๋ณด๋ค ํฐ ์ซ์");
} else{
alert("5๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ซ์");
}
if (answer > 15) {
alert("15๋ณด๋ค ํฐ ์ซ์!");
} else if (answer > 10) {
alert("10๋ณด๋ค ํฐ ์ซ์!");
} else if (answer > 5) {
alert("5๋ณด๋ค ํฐ ์ซ์!");
} else {
alert("5๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ซ์!");
}
=== ๋ ๊ฐ๊ณผ ํ์ ์ด ๊ฐ์์ง๋ฅผ ๋น๊ตํ๋ equality operator(๋๋ฑ ๋น๊ต ์ฐ์ฐ์)์ด๋ค.
string ๋ผ๋ฆฌ ๋น๊ตํ ์๋ ์๊ณ , ์ซ์์ string์ ๋น๊ตํ ์ ๋ ์์ผ๋ฉฐ ๋๋ฑ ๋น๊ต ๋ฟ๋ง ์๋๋ผ ๋ ํฌ๊ฑฐ๋ ์์ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค.
๋น๊ต์ฐ์ฐ์๊ฐ ์์ ๊ฒฝ์ฐ ๋น๊ต์ฐ์ฐ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์ค๋ฅธ์ชฝ ๋๋ ์ ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๋ค.
!== ๋ ๊ฐ์ง ์์์ ๋น๊ตํ๋ค.
==๋ ๋๋ฑ ๋น๊ต์ฐ์ฐ์๋ก ===๋ณด๋ค ๋น๊ต์ ๋์จํ ๋น๊ต์ฐ์ฐ์์ด๋ค.
if (3=="3"){
return true;
}
-> true
if ("3" === 3) {
return false;
}
-> false
const answer = prompt("์ด๋์ฌ์ธ์?");
if (answer === "์ ๋ฆ" || answer === "๊ฐ๋จ" || answer === "์ญ์ผ") {
alert("๊ฐ๊น์ฐ์๋ค์!");
} else if (answer === "์์ง๋ก") {
alert("์กฐ๊ธ ๋ฉ๋ฆฌ ์ฌ์๋ค์.");
} else {
alert("๊ฑฐ๊ธด ์ด๋์ธ๊ฐ์?");
}
const hobby = prompt("์ทจ๋ฏธ๊ฐ ๋ฌด์์ธ๊ฐ์?");
const morning = prompt("์์นจํ ์ธ๊ฐ์ธ๊ฐ์?");
if (hobby === "์ถ๊ตฌ" && morning === "๋ค") {
alert("์กฐ๊ธฐ์ถ๊ตฌํ๋ฅผ ์ถ์ฒํฉ๋๋ค.");
} else {
alert("๋ฌด์จ ๋์๋ฆฌ๊ฐ ์ข์์ง ์๊ฐํด๋ณผ๊ฒ์.");
}
var ๋ณ์๋ช
= [];
let anything = ["๋์ ", 1987, ["ํ๋", "๋", 3]];
์์๋ string number, array์ ํํ๋ก ๋ชจ๋ ์กด์ฌ ๊ฐ๋ฅํ๋ค.
๋ฐฐ์ด์ ์์๋ ์์๋ฅผ ๊ฐ๊ณ ์๊ณ , index๋ 1์ด ์๋ 0๋ถํฐ ์์ํ๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
๋ฐฐ์ด์ด๋ฆ[index]
๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ ๋ฐฐ์ด์ด๋ฆ.length ๋ฅผ ์ฌ์ฉํ๋ค.
์ต๋, ์ต์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด Math ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
var numbers = [ 19, 1, 3, 37, 8 ];
Math.max.apply(null, numbers); // 37
Math.min.apply(null, numbers); // 1
apply ๋ฉ์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด์๋ ๋ฉ์๋์ด๋ค. ์ฒซ๋ฒ์งธ ์ธ์๋ก this๋ก ์ฌ์ฉ๋ ๊ฒ์ฒด, ๋๋ฒ์งธ ์ธ์๋ก ํจ์์ ์ ๋ฌ๋ ์ธ์์ ์งํฉ์ ๋๊ฒจ์ค๋ค.
Math.max ๋ ์๋ ์ธ์๋ก ๋ ์ซ์๋ฅผ ๋ฐ์์ ๋ ์ค ํฐ ๊ฐ์ ๋ฐํํ๋๋ฐ, apply ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์๋ก ๋ฐฐ์ด์ ์ ๋ฌํ ์ ์๊ฒ๋๋ค.
ํ์ง๋ง ๋ฐฐ์ด์ด ํฐ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์๋๋ฐ ๊ทธ๋ด ๊ฒฝ์ฐ reduce ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
var numbers = [ 19, 1, 3, 37, 8 ];
//์ต๋๊ฐ
var max = numbers.reduce( function (prev, cur) {
return prev > cur ? prev:cur;
});
//์ต์๊ฐ
var min = numbers.reduce( function (prev, cur) {
return prev > cur ? cur:prev;
});
reduce ํจ์๋ ๋ฐฐ์ด์ ์์๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ํ๋ฉฐ ์ค์ฌ๋๊ฐ๋ฉฐ, ์ต์ข ์ ์ผ๋ก๋ ๋จ ํ๋ใ ข ์์๋ง์ด ๋จ๊ฒ๋๋ค.
๊ฐ์ ์ค์ฌ๋๊ฐ๋ ๊ธฐ์ค์ reduce ๋ฉ์๋์ ์ฒซ๋ฒ์งธ ์ธ์์ธ ์ฝ๋ฐฑํจ์๋ก ๊ฒฐ์ ๋๋ฉฐ ์ด๊ธฐ๊ฐ์ ๋๋ฒ์งธ ์ธ์์ ์ ํ ํด์ค ์ ์๋๋ฐ ์ด๋ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
์ฝ๋ฐฑํจ์์์ ๋ค์ ๋ ๊ฐ์ ์ธ์ prev์ cur๊ฐ ์ ๋ฌ๋์๋ค. ๋ณธ๋ ์ด ์ฝ๋ฐฑํจ์๋ 4๊ฐ์ ์ธ์๋ฅผ ์ทจํ์ง๋ง ๋๊ฐ๋ ์๋ต๊ฐ๋ฅํ๋ค. ์ฌ๊ธฐ์ prev๋ ๋์ ๊ฐ์ด๋ค. ์ฝ๋ฐฑ์ ๋ฐํ๊ฐ์ ๊ณ์ํด์ ์ด ์ธ์์ ์ ์ฅํ๋ค. ๋ํ cur์ ํ์ฌ ๊ณ์ฐ๋๊ณ ์๋ ๋ฐฐ์ด ์์์ด๋ค.
๋์ ๊ฐ prev๋ cur ์ด์ ์ ๋ฐฐ์ด ์์ ์ค ์ต๋๊ฐ์ ์ ์ฅํ๊ณ ์๋๋ฐ, ์ด๋ฅผ cur๊ณผ ๋น๊ตํ์ฌ ํฐ ๊ฐ์ ๋ฐํํ๋ค๋ ์๋ฏธ์ธ ๊ฒ์ด๋ค. ์ด๋ฐ์์ผ๋ก ๊ฐ๋จํ ์ต๋, ์ต์๊ฐ์ ๊ตฌํ ์ ์๋ค.
cities[0] = "์์ธ"; // ["์์ธ"]
cities[1] = "๋์ "; // ["์์ธ", "๋์ "]
cities[2] = "๋๊ตฌ"; // ["์์ธ", "๋์ ", "๋๊ตฌ"]
cities[5] = "์ ์ฃผ๋";
-> ["์์ธ", "๋์ ", "๋๊ตฌ", undefined, undefined, "์ ์ฃผ๋"]
let cities = [];
cities.push("๊ฒฝ์ฃผ", "์ ์ฃผ");
cities.unshift("์ธ์ฒ");
cities.pop();
console.log(cities)
for (๋ฐ๋ณต์กฐ๊ฑด) {
//๋ฐ๋ณต์กฐ๊ฑด์ด ๋ง์ผ๋ฉด ์คํํ ์ฝ๋
}
let count = 1;
//0๋ถํฐ 5๊น์ง 1์ฉ ์ฆ๊ฐ์ํค๋ฉฐ for๋ฌธ์ ์คํํ๋ค.(์์๊ฐ, ๋๊ฐ, ์ฆ๊ฐ๊ฐ)
for (let i = 0; i <= 5; i++) {
count = count + 1;
}
//for๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ
const home = "๋์ ";
let cities = ["์์ธ", "๋์ ", "๋๊ตฌ", "๋ถ์ฐ", "๊ด์ฃผ", "์ ์ฃผ๋"];
for (let i = 0; i < cities.length; i++) {
if (cities[i] === home) {
console.log("์, "+ cities[i] +" ์ฌ์๋๊ตฐ์");
}
}
๋ค์ 6๊ฐ์ง์ ๋ฐ์ดํฐ ํ์ ์ด ์๋ค.
1) undefined
2) null
3) boolean (true/false)
4) ์ซ์
5) ๋ฌธ์์ด
6) ๊ฐ์ฒด (object)
typeof ์ฐ์ฐ์๋ฅผ ์ ์ฉํ๋ฉด ๋ค์ ๋ฌธ์์ด ์ค ํ๋๋ฅผ ๋ฐํํ๋ค.
1) "undefined": ์ ์๋์ง ์์ ๋ณ์
2) "boolean"
3) "string"
4) "number"
5) "object": ํจ์๋ฅผ ์ ์ธํ ๊ฐ์ฒด ๋๋ "object"
6) "function"
let msg = "message";
console.log(typeof msg);
console.log(typeof 100);
let msg;
console.log(msg === undefined); //true
true / false ๋๊ฐ์ง ๊ฐ์ด์์ผ๋ฉฐ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ด voolean์ผ๋ก ๋ณํ๋๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
true๋ก ๋ณํ๋๋ ๊ฐ
1) ๋ฌธ์์ด: ๋น์ด ์์ง ์์ ๋ชจ๋ ๋ฌธ์์ด
2) ์ซ์: 0์ด ์๋ ๋ชจ๋ ์ซ์
3) ๊ฐ์ฒด: ๋ชจ๋ ๊ฐ์ฒด ({}, [] ๋ชจ๋ ํฌํจ)
false๋ก ๋ณํ๋๋ ๊ฐ
1) ๋ฌธ์์ด: "" (๋น๋ฌธ์์ด)
2) ์ซ์: 0, NaN
3) ๊ฐ์ฒด: null
4) undefined
let lastName = 'Yeri Kim';
let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();
console.log(lastName);
console.log(upperLastName);
console.log(lowerLastName);
->
Yeri Kim
YERI KIM
yeri kim
if (phoneNumber.length !== 10 && phoneNumber.length !== 11) {
alert("ํฐ ๋ฒํธ ์ ๋๋ก ์
๋ ฅํ์
จ๋์?");
}
let name = prompt("์ฑํจ์ ์
๋ ฅํด์ฃผ์ธ์");
if (name.length === 2) {
alert("์ธ์์ด์๊ตฐ์! ์ด๋ฆ์ด ์ด์๋ค์.");
} else if (name.length === 1) {
alert("์ ๋๋ก ์
๋ ฅํ์
จ๋์?");
} else if (name.length === 3) {
alert("๋ฉ์ง ์ด๋ฆ์
๋๋ค.");
}
//"ํ๋ก๋๋ฐ" ์ด๋ผ๋ ์คํ๋ฅผ "ํ๋ก๊ทธ๋๋ฐ" ์ด๋ผ๊ณ ๋ฐ๊พธ์ด ์ฃผ๋ ์ฝ๋
let info = "JavaScript๋ ํ๋ก๋๋ฐ ์ธ์ด์ด๋ค.";
let firstChar = info.indexOf("ํ๋ก๋๋ฐ");
console.log(info, firstChar);
if (firstChar !== -1) {
info = info.slice(0, firstChar) + "ํ๋ก๊ทธ๋๋ฐ" + info.slice(firstChar+4, info.length);
}
console.log(info);
slice(์๋ฆด ์์์์น, ์๋ฆด ๋์์น)
์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ํน์ง ์ค ํ๋๊ฐ ๋ฐ์ดํฐ ํ์ ์ ์ ๊ฒฝ์ฐ์ง ์๋ ์ ์ด๋ค. ํ์ ์ฒดํฌ๊ฐ ์ฝ๋ค๋ ๊ฒ์ ๋ค๋ฅธ ์ธ์ด๋ณด๋ค ํธํ ์ ์์ง๋ง ์ฝ๋๋ฅผ ์๋ชป์ง๋ฉด ์ค๋ฅ๊ฐ ๋ ๊ฐ๋ฅ์ฑ๋ ์๋ค.
์๋ฐ๋ c์ธ์ด ๋ฑ์์๋ ๋ณ์์ ์ด๋ค ๊ฐ์ ํ ๋นํด์ ๋ณ์์ ํ์ ์ด ํ์ ๋๋ฉด ๊ทธ ํ์ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ ํ ๋นํ ์ ์์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฅํ๋ค.
์ซ์์ ๋ฌธ์์ด์ ๋ง์ ๋ ๊ฐ๋ฅํ๋ฉฐ ํ๋๋ผ๋ string์ด ์์ผ๋ฉด ๋ฌธ์์ด๋ก์ ํฉ์ณ์ค๋ค.(-๋ ๋ถ๊ฐ๋ฅ)
string์ - ๋ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ์์ชฝ์ ๊ฐ์ ๋ชจ๋ ์ซ์๋ก ๋ณํํด์ ๊ณ์ฐํด์ค๋ค.
Number ํจ์๋ฅผ ์ฌ์ฉํ์ฌ String์์ Number๋ก ์ ํํ ์ ์๋ค.(Numberํจ์ ๋ง๊ณ parseInt, parseFloat๋ ์๋ค.)
var birthYearInput = "2000";
console.log(typeof birthYearInput);
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear);
parseInt("1.901");
parseFloat("1.901");
Number("1.901");
parseInt("200") + 1;
var numberAsNumber = "1234";
var numberAsString = numberAsNumber - 0;
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
var numberAsNumber = 1234;
var numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
or
var numberAsNumber = 1234;
var numberAsString = 1234 + "";
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
๋ ์ง์ ์๊ฐ์ ์ ์ฅํ๊ณ ๋ณด์ฌ์ค ๋ ๋ ์ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
๋ ์ง ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ฉด ์ฝ๊ฒ ์๊ฐ๊ณผ ๋ ์ง๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ, ๋ ์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ ๋ค์๊ณผ๊ฐ์ด new ์ฐ์ฐ์ ๋ค์์ Date ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ค.
var rightNow = new Date();
console.log(rightNow);
-> 2019-02-18T00:45:06.562Z
๋ธ๋ผ์ฐ์ ๋ง๋ค ํํํ๋ ๋ฒ์ด์ง๋ง console.log๋ก ์ฐํ ํํ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ข์ ํํ์ผ ๋ฟ ์ค์ ๋ก ์ฝ๋ฉํ ๋๋ ์ด ํํ์ ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ด๋ฆ๊ฒ ํํ๋์๋์ง๋ ์ค์ํ์ง ์๋ค.
GMT์ด๋ Greenwhich Mean Time์ ์ค์๋ง์ด๋ฉฐ ์ปดํจํฐ ์ธ์ด์์๋ GMT ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์๋ ค์ค๋ค. GMT๋ ๊ธฐ์ค์ด ๋๋ ์๊ฐ์ด๋ฉฐ ์ ์ฌ์ง์ GMT ๊ธฐ์ค์ผ๋ก 6์๊ฐ์ด ๋น ๋ฅด๋ค๋ ๊ฒ์ด๋ค.
ํ๊ตญ : GMT+0900 (ํ๊ตญ ํ์ค์)
์) 2์ 18์ผ ์์์ผ 19:45
//์๊ฐ์ด ํ๋ฅธ๋ค๊ณ ํด์ rightNow ์ ๋ด๊ธด ์๊ฐ ๊ฐ์ด ๋ณํ์ง ์์ผ๋ฉด ์ฒซ๋ฒ์งธ ์ค์ด ์คํ๋๋ ์๊ฐ์ ํ์ฌ ์๊ฐ์ด ๋ด๊ธด๋ค.
let rightNow = new Date();
let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1; //getMonth ํจ์๋ก ๊ฐ์ ๋ฐ์ ๋ ํ์ฌ ๋ฌ๋ณด๋ค 1 ์์ ๊ฐ์ด ๋ฐํ๋๋ค.
let date = rightNow.getDate();
let day = rightNow.getDay();
let currentHour = rightNow.getHours();
let currentMin = rightNow.getMinutes()
let rightNow = new Date();
let time = rightNow.getTime();
getTime ๋ฉ์๋๋ก ๋ ์ง์ ๋ฐ๋ฆฌ์ด ํํ์ ๋ฐํํ ์ ์์ผ๋ฉฐ ์ค๋ ์ง๊ธ์ ์๊ฐ์ด ๋ฐ๋ฆฌ์ด๋ก ํํ๋๋ค.(๊ธฐ์ค์ด ๋๋ ์ผ์๋ 1970๋ 1์ 1์ผ์ด๋ค.)
getTime ํจ์๋ก ๋ฐํ๋ ์ซ์๋ก ๋น๊ต ์ฐ์ฐ์ ํตํด ์ธ์ ๊ฐ ๋ ๊ณผ๊ฑฐ์ธ์ง ํ๋จํ ์ ์๋ค.
let date1 = new Date('December 17, 2019 03:24:00');
let date2 = new Date('2019-12-17T03:24:00');
let date3 = new Date(2019, 5, 1);
//๋ฐ์ฌ๋ฆผ
console.log(Math.round(2.5));
console.log(Math.round(2.49));
console.log(Math.round(2));
console.log(Math.round(2.82))
//์ฌ๋ฆผ
console.log(Math.ceil(2.5));
console.log(Math.ceil(2.49));
console.log(Math.ceil(2));
console.log(Math.ceil(2.82));
//๋ด๋ฆผ
console.log(Math.floor(2.5));
console.log(Math.floor(2.49));
console.log(Math.floor(2));
console.log(Math.floor(2.82));
var randomNumber = Math.random();
console.log(randomNumber);
var randomNumber = Math.random();\
//floor() ๋ ์ฃผ์ด์ง ์ซ์์ ๊ฐ๊ฑฐ๋ ๋ ์์ ์ ์ ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํํ๋ค.
console.log(Math.floor(randomNumber*10));
randomNumber*10 ์ ๊ฐ์ 1์ ์๋ฆฌ์์ ์์ฒญ ๊ธด ์์์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์์ง๋ง, ์์์๋ฆฌ๋ ๋ค ๋ฒ๋ฆฌ๋๋ก ๋ด๋ฆผ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ 0~10 ์ฌ์ด์ ๋๋ค ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์ต๋๊ฐ์ ์ง์ ํ๊ธฐ ์ํด์๋ Math.random() ์ต๋๊ฐ, ์ต์๊ฐ์ ์ง์ ํ๊ธฐ ์ํด์๋ (Math.random() (์ต๋๊ฐ-์ต์๊ฐ)) + ์ต์๊ฐ ์ผ๋ก ์ฌ์ฉํ๋ค.
์ํ๊ฐ์ ํฌํจํ๋ค๋ฉด (Math.random() * (์ต๋๊ฐ-์ต์๊ฐ+1)) + ์ต์๊ฐ ๋ก ์ฌ์ฉ
์ต์๊ฐ์ ๋ํ๊ธฐ ๊ธฐํธ๋ก ์ํ๋ ์ต์๊ฐ์ ๋ํด์ฃผ๋๋ฐ ์ต๋๊ฐ๊ณผ ๋ฌ๋ฆฌ ์ต์๊ฐ์ ๋ํ๊ธฐ๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์ต๋๊ฐ๋ ๋์์ ๋ณํ๊ฒ๋๋ค. ๋ฐ๋ผ์ ์ต์๊ฐ์ ์ง์ ํ ๋์๋ ์ต๋๊ฐ์๋ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ์ ํ ํ๋ค.
var ๊ฐ์ฒด์ด๋ฆ = {
property์ด๋ฆ1 : property๊ฐ,
property์ด๋ฆ2 : property๊ฐ
};
let plan1 = {
name: "Basic",
price: 3.99,
space: 100,
transfer: 1000,
pages: 10
};
๊ฐ์ฒด๋ ์ค๊ดํธ๋ก ๊ฐ์ธ์ ธ ์๊ณ , ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ/๊ฐ ์๋ค์ด ์ผํ๋ก ๋ถ๋ฆฌ๋ ๋ชฉ๋ก์ ํํ์ด๋ค. ์ฆ, ๊ฐ์ฒด๋ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ๋ค์ ์งํฉ์ด๋ค.
ํ๋กํผํฐ ์ด๋ฆ์ ์ค๋ณต๋ ์ ์์ผ๋ฉฐ, ํ๋กํผํฐ ์ด๋ฆ๊ณผ ํ๋กํผํฐ ๊ฐ ์ฌ์ด์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ๋ค.
ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ ๋๋ ์ผํ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉฐ, ํ๋กํผํฐ ๊ฐ์๋ ์ด๋ ํ์ ์ด๋ ๊ฐ๋ฅํ๋ค.(string, number, array, object, function..)
ํด๋น ๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ๊ณ ์ถ์ ๋๋ ๊ฐ์ฒด์ด๋ฆ.ํ๋กํผํฐ์ด๋ฆ ์ด๋ ๊ฐ์ฒด์ด๋ฆ['ํ๋กํผํผํฐ์ด๋ฆ'] ์ผ๋ก ์ ๊ทผํ๋ค.
let plan1 = {
name: "Basic"
};
console.log(plan1.name);
console.log(plan1["name"]);
let plan1 = {
name: "Basic"
};
let propertyName = "name";
console.log(plan1[propertyName]);
let myObj = {
property1: "hello",
property2: [1,2,3,4,5],
property3: {
childproperty: "haha"
}
};
let name = "property";
console.log(myObj[name+"1"]);
console.log(myObj[name+"2"]);
console.log(myObj[name+"3"]);
console.log(myObj[name+"3"]["child"+name]);
console.log(myObj.property1);
console.log(myObj.property2);
console.log(myObj.property3);
console.log(myObj.property3.childproperty);
->
hello
[ 1, 2, 3, 4, 5 ]
{ childproperty: 'haha' }
haha
hello
[ 1, 2, 3, 4, 5 ]
{ childproperty: 'haha' }
haha
let name = "property1";
myObj[name] = ["hi", "hello"];
console.log(myObj);
console.log(myObj.property1[0]);
myObj.property3.siblingproperty = [3, 6, 9];
console.log(myObj);
let objData = {
name: 50,
address: {
email: "gaebal@gmail.com",
home: "์์ํฌ ์ ๋ฆ2ํธ์ "
},
books: {
year: [2019, 2018, 2006],
info: [{
name: "JS Guide",
price: 9000
}, {
name: "HTML Guide",
price: 19000,
author: "Kim, gae bal"
}]
}
};
let bookName = objData.books.info[1].name;
console.log(bookName);
์๋ฐ์คํฌ๋ฆฝํธ์์ scope๋ ๋ณ์๊ฐ ์ด๋๊น์ง ์ฐ์ผ ์ ์๋์ง์ ๋ฒ์๋ฅผ ์๋ฏธํ๋ค.
์ด๋ค ๋ณ์๋ ์ฌ๊ธฐ์ ๊ธฐ์ ์ธ ์ ์๋ ๋ฐ๋ฉด์, ์ด๋ค ๋ณ์๋ ํน์ ํจ์ ๋ด์์๋ง ์ธ ์ ์๋ค.
์ค๊ดํธ({}, curly brace)๋ก ๊ฐ์ธ์ง ๊ฒ์ ์๋ฏธํ๋ค.
function,for๋ฌธ, if๋ฌธ์ ๋ด๋ถ๋ ํ๋์ block์ด๋ค.
function hi() {
return 'i am block';
}
for (let i = 0; i < 10; i++) {
count++;
}
if (i === 1) {
let j = 'one';
console.log(j);
}
๋ธ๋ก ๋ด๋ถ์์ ๋ณ์๊ฐ ์ ์๋๋ฉด ๋ณ์๋ ์ค๋ก์ง ๋ธ๋ก ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์๋ค.
๋ธ๋ก ๋ด๋ถ์์ ์ ์๋ ๋ณ์๋ ์ง์ญ๋ณ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
scope๋ ๋ณ์๊ฐ ์ ์ธ๋๊ณ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ด๋ค. Scope ์ธ๋ถ(๋ธ๋ก ๋ฐ) ์์๋ ํน์ ์ค์ฝํ์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
๋ธ๋ก ๋ฐ์ธ global scope์์ ๋ง๋ ๋ณ์๋ฅผ global variable(์ ์ญ ๋ณ์)๋ผ๊ณ ํ๋ค.
const color = 'red';
console.log(color);
function returnColor() {
console.log(color);
return color;
}
console.log(returnColor());
global ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ํด๋น ํ๋ก๊ทธ๋จ์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ global namespace๋ฅผ ๊ฐ๋๋ค. namespace๋ ๋ณ์์ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์์ด๋ค.(scope๋ผ๊ณ ๋ ํ๋ฉฐ ํนํ ๋ณ์ ์ด๋ฆ์ ์ด์ผ๊ธฐ ํ ๋๋ namespace๋ผ๊ณ ๋ ํ๋ค.)
global ๋ณ์๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ๊ณ์ ์ด์์์ง๋ง ๋ณ์๊ฐ์ด ๊ณ์ ๋ณํ๋ค๋ฉด ํด๋น ๋ณ์๋ฅผ ํธ๋ํน ํ๊ธฐ๋ ์ด๋ ต๊ณ ์ด๋์์ ์ ํ์ํ์ง ์๋ ค๋ฉด ์ด๋์์ let, const ๋ก ์ ์ธํ๋์ง ์ฐพ์๋์์ผ ํ๋ค.
//scope์ ์ค์ผ
const satellite = 'The Moon';
const galaxy = 'The Milky Way';
let stars = 'North Star';
const callMyNightSky = () => {
stars = 'Sirius';
return 'Night Sky: ' + satellite + ', ' + stars + ', ' + galaxy;
};
console.log(callMyNightSky());
console.log(stars);
๊ธ๋ก๋ฒ ๋ณ์๊ฐ ์ฌ๊ธฐ์ ๊ธฐ์ ์์ ๋๋ฉด ์๋ผ๊ธฐ ๋๋ฌธ์ ๋ณ์๋ค์ block scope์ผ๋ก ์ต๋ํ ๋๋ ๋์ผ ํ๋ค.
์ฝ๋๊ฐ ๋ธ๋ก์ผ๋ก ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ์ฌ๋ผ๊ฐ๋ฉฐ ์ฝ๋๊ฐ ํ์คํ์ค ์ญ ๋์ด๋๊ฒ์ด ์๋๋ผ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋ณ๋ก ๋ธ๋ก์ ๋๋๋ฉด ์ฝ๋๊ฐ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค.
๋์ค์ ์ฝ๋๋ฅผ ์์ ํ ์ผ์ด ์์ ๋ ์ฝ๋๋ฅผ ์ค๋๋ง์ ๋ณด๋๋ผ๋ ์ ๋๋์ด ์์ผ๋ฉด ์ ์ง๋ณด์๊ฐ ์ฌ์ด์ง๋ฉฐ ํ๋ก๊ทธ๋จ์ด ๋๋ ๋ ๊น์ง ๋ณ์๊ฐ ์ด์์๋ ๊ฒ์ด ์๋๋ผ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ๋ ๋๋ค.
์ฆ, ๊ธ๋ก๋ณ ๋ณ์๋ ์ฐ์ง ์๋๋ก ๋ ธ๋ ฅํด์ผํ๊ณ , ์ต๋ํ ๋ธ๋ก ๋ด์์ let, const๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์๋ก ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์๋ก์ด ๋ธ๋ก์์ ๋ณ์๋ฅผ ์ธ๋๋ ํญ์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํด์ผ ํ๋ค.
function logSkyColor() {
const dusk = true;
let myColor = 'blue';
if (dusk) {
let myColor = 'pink';
console.log(myColor); // pink
}
console.log(myColor); // blue
}
console.log(myColor); // ์๋ฌ!!
ํด๋์ค๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ์ด๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋, ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑํ๊ณ , ๊ฐ์ฒด๋ค ๊ฐ์ ์๋ก ์ํธ์์ฉํ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด์งํฅ ์ค์ฌ์ ์๋ ์ธ์ด๋ ์๋์ง๋ง, ํ๋ก๊ทธ๋๋ฐ์ ์์ด์ class, ๊ฐ์ฒด, ๊ฐ์ฒด์งํฅ์ ํญ์ ์ค์ํ ์ฃผ์ ์ด๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฒด๋ { num: 1 } ์ ๋ฐ์ดํฐ ํ์ ์ ๋งํ๋ ๊ฒ์ ์๋๋ฉฐ ๋ง ๊ทธ๋๋ก ์ฌ๋ฌผ์ ๋ปํ๋ค.
ํ์ง๋ง ํด๋์ค๋ ๊ฒฐ๊ตญ { num: 1 } ์ฒ๋ผ ์๊ธด ๊ฐ์ฒด๋ฅผ ์ ์ค๊ณํ๊ธฐ ์ํ ํ์ ๋ง๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋์ ๊ฐ์ฒด๋ ํน์ ๋ก์ง์ ๊ฐ๊ณ ์๋ ํ๋(๋ฉ์๋)๊ณผ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ(๋ฉค๋ฒ ๋ณ์)๋ฅผ ๊ฐ๋๋ค.
์ํ๋ ๊ตฌ์กฐ์ ๊ฐ์ฒด ํ์ ์ง๋๊ณ , ๋น์ทํ ๋ชจ์์ ๊ฐ์ฒด๋ฅผ ๊ณต์ฅ์ฒ๋ผ ์ฐ์ด๋ผ ์ ์์ผ๋ฉฐ, ๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ๋ง๋ค์ด ์ฌ์ฉํด๋ ์ข์ง๋ง ํฐ ๊ท๋ฌ์ ๊ฐ์ฒด์ด๊ฑฐ๋ ๋น์ทํ ๋ชจ์์ ๊ฐ์ฒด๋ฅผ ๊ณ์ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด class๋ผ๋ ์ค๊ณ๋๋ฅผ ํตํด ๋ง๋ค ์ ์๋ค.
let ray = {
name: 'Ray',
price: 2000000,
getName: function() {
return this.name;
},
getPrice: function() {
return this.price;
},
applyDiscount: function(discount) {
return this.price * discount;
}
}
const rayPriceByFunction = ray.getPrice();
console.log('ํจ์๋ก ์ ๊ทผ => ' +rayPriceByFunction);
๊ฐ์ฒด์ ์ค๊ณ๋์ธ ํด๋์ค๋ ๋ฌธ๋ฒ์ด ๋น์ทํ์ง๋ง ๋์ ๊ฐ๋ฅ ํฐ ์ฐจ์ด๋ constructor๋ผ๋ ์์ฑ์ ํจ์์ด๋ค.
์๋์ ๊ฐ์ด ํด๋์ค๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ์ธ์คํด์คํ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
const morning = new Car('Morning', 2000000);
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
}
}
Car๋ class์ด๋ฆ์ผ๋ก ํญ์ ๋๋ฌธ์๋ก ์์ํ๊ณ , CamelCase๋ก ์์ฑํด์ผ ํ๋ค.
Car class์ instance๋ฅผ ์์ฑํ ๋๋ง๋ค constructor๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
constructor()๋ฉ์๋๋ name, price 2๊ฐ์ argument(์ธ์)๋ฅผ ๋ฐ๋๋ค.
constructor()๋ฉ์๋์ this ํค์๋๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, class์ ์คํ๋ฒ์(context)์์ this๋ ํด๋น instance๋ฅผ ์๋ฏธํ๋ค.
constructor()์์ ์ธ์๋ก ๋์ด์ค๋ name๊ณผ price๋ฅผ ์ฌ์ฉํด Car instance์ name, price ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ค.
์ด๋ ๊ฒ ํด๋์ค ๋ด์์ name, price์ ๊ฐ์ด ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ๊ฐ์ด์ class๋ด์ ์ปจํ ์คํธ์์ ์ด๋ ๊ณณ์์๋ ์ฌ์ฉํ ์ ์๋ ๋ณ์๋ฅผ '๋ฉค๋ฒ ๋ณ์'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฉค๋ฒ ๋ณ์๋ 'this' ํค์๋๋ก ์ ๊ทผํ๋ค.
const morning = new Car('Morning', 20000000);
์ธ์คํด์ค๋ ํด๋์ค ์ด๋ฆ์ new๋ฅผ ๋ถ์ฌ์ ์์ฑํ๋ค.
ํด๋์ค ์ด๋ฆ ์ฐ์ธก์ () ๊ดํธ๋ฅผ ์ด๊ณ ๋ซ๊ณ , ๋ด๋ถ์๋ constructor์์ ํ์ํ ์ ๋ณด๋ฅผ ์ธ์๋ก ๋๊ฒจ์ค๋ค.
Carํด๋์ค์ instance๋ฅผ morning์ด๋ผ๋ ๋ณ์์ ์ ์ฅํ๋ค.
Car ํด๋์ค์ ์๋ก์ด instance๋ฅผ ์์ฑํ๋ ค๋ฉด new ํค์๋๊ฐ ํ์ํ๋ค. newํค์๋๋ constructor() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋ก์ด instance๋ฅผ return ํด์ค๋ค.
'Morning'์ด๋ผ๋ String๊ณผ 2000000์ด๋ผ๋ Number๋ฅผ Car ์์ฑ์์ ๋๊ฒจ์ฃผ์๊ณ , name, price ํ๋กํผํฐ์ ๊ฐ์์ ๊ฐ์ด ํ ๋น๋๋ค.
const spaceship = new Car('์ฐ์ฃผ์ ', 25000000);
console.log(spaceship);
console.log(spaceship.name);
console.log(spaceship.price);
console.log(spaceship.applyDiscount(0.5));
๋ฉ์๋๋ ํจ์์ด์ง๋ง ๊ฐ์ฒด๊ฐ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ๊ณ ์๋ ๊ฒ์ ๋ฉ์๋๋ผ ๋ถ๋ฅธ๋ค.
ํด๋์ค์ ๋ฉ์๋๋ ๊ฐ์ฒด์ ๋ฌธ๋ฒ๊ณผ ๊ฐ์. ๋ค๋ง ๊ฐ์ฒด๋ ํ๋กํผํฐ๋ง๋ค ์ฝค๋ง๋ก ๊ตฌ๋ถํด์ค์ผ ํ์ง๋ง ํด๋์ค๋ ๊ทธ๋ ์ง ์๋ค.
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
this.department = "์ ๋ฆ์ง์ ";
}
applyDiscount(discount) {
return this.price * discount;
}
changeDepartment(departmentName) {
this.department = departmentName;
}
}
//hello ๋ณ์์ ๋น ๊ฐ์ฒด ํ ๋น
let hello = {};
๊ฐ์ฒด๋ ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ๋ชจ์์ด๋ฉฐ ๋ฐ๋๋ก ์์๊ฐ ์๋ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด์ด๋ค.
๊ฐ์ฒด๋ ํค-๊ฐ ์์ผ๋ก๋ ๋ฐ์ดํฐ์ ๋ชจ์์ผ๋ก ์์๊ฐ ๋ค๋ฐ๋์ด๋ ์๋ฌด ์๊ด์ด ์๋ค. ๋ฐฐ์ด์ฒ๋ผ ์์๋๋ก ์ธ๋ฑ์ค๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ ํค๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ด๋ค.
ํค๋ property name์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ๊ฐ์ property value๋ผ๊ณ ํ๋ค.
let example = {
'name' = '๊น๊ฐ๋ฐ',
'age' = 20
}
ํค๋ ํน์ ๊ฐ์ ๊ฐ๊ณ ์๋ ๋ณ์ ๊ฐ์ ์ญํ ์ ํ๋ฉฐ, ํด๋น ํค๋ก ํ๋กํผํฐ์ ์ด๋ค ๊ฐ์ด ์ ์ฅ๋์๋์ง ์ ์ ์๋ค.
ํค์ ๊ฐ์๋ ํ ์คํธ, ์ซ์ ๋ฟ ์๋๋ผ ํจ์, ๊ฐ์ฒด๋ ๋ฃ์ ์ ์๋ค.
let difficult = {
'my name': 'boong',
color: 'silver',
ํค: 'ํ๊ธ์ธ ํค๋ ๋ฐ์ดํ๊ฐ ์์ด๋ ๋๋๊ตฐ!!',
'!ํค': '๋๋ํ ์๋ ํค๋ ๋ฐ์ดํ๊ฐ ํ์ํ๊ตฐ',
$special: '$๋ ์์ด๋ ๋๋๊ตฐ'
};
๊ฐ์ฒด์ ํค์๋ ์คํ์ด์ค, ํ๊ธ, ํน์๋ฌธ์ ๋ฑ์ด ๋ค์ด๊ฐ ์ ์๋ค.(๋ณ์๋ฅผ ์ ์ธํ ๋๋ ๋ถ๊ฐ๋ฅ)
color์ค ๊ฐ์ด ํค์ ํน์๋ฌธ์๊ฐ ์์ผ๋ฉด ๋ฐ์ดํ๋ฅผ ์๋ตํ๊ณ ์ธ ์ ์๋ค.
let difficult = {
'my name': 'boong',
color: 'silver',
ํค: 'ํ๊ธ์ธ ํค๋ ๋ฐ์ดํ๊ฐ ์์ด๋ ๋๋๊ตฐ!!',
'!ํค': '๋๋ํ ์๋ ํค๋ ๋ฐ์ดํ๊ฐ ํ์ํ๊ตฐ',
$special: '$๋ ์์ด๋ ๋๋๊ตฐ'
};
console.log(difficult.color);
dot์ ํค๋ก ๋ฐ๋ก ์ ๊ทผํ ๋ ์ฌ์ฉํ๋๋ฐ, ํค๋ง ์๊ณ ์์ผ๋ฉด dot์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์ ์ผ ํธํ๋ค. dot์ผ๋ก ์ ๊ทผํ ๋๋ ๋ฐ์ดํ ์์ด ํค๋ฅผ ๋ฐ๋ก ์จ์ค์ผํ๋ค.
๋๊ดํธ๋ก ์ ๊ทผํ๋ ค๋ฉด ํค ์ด๋ฆ์ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ ์์ฑํด์ค์ผ ํ๋ฉฐ, ์คํ์ด์ค๊ฐ ํฌํจ๋ ์นด๋ ๋๊ดํธ๋ก ์ ๊ทผํ๋ค.
console.log(difficult['color']);
//์คํ์ด์ค ํฌํจ์ ๋๊ดํธ๋ก ์ ๊ทผํ๋ค.
console.log(difficult.my name);
console.log(difficult['my name']);
//์ซ์๋ก ๋ ํค๋ ๋๊ดํธ๋ก ์ ๊ทผํ๋ค.
console.log(difficult.33);
console.log(difficult['33']);
๋ณ์์ ํค ์ด๋ฆ์ด ์ ์ฅ๋์ด ์์ผ๋ฉด ๋ณ์๋ก๋ ํ๋กํผํฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
dot์ผ๋ก ์ ๊ทผํ๋ค๋ ๋ป์ ์ค์ ํค ์ด๋ฆ์ ์ฌ์ฉํ ๋ ์ด๋ฏ๋ก ๋ณ์๋ก๋ ๋ถ๊ฐ๋ฅํ๋ค. ๋ณ์๋ก ์ ๊ทผ์์๋ ํญ์ ๋๊ดํธ๋ก ์ ๊ทผํด์ผ ํ๋ค.
let name = 'ํค';
//๊ฐ๋ฅ
console.log(difficult[name]);
//๋ถ๊ฐ๋ฅ
console.log(difficult.name);
difficult[name] = '๊ฐ ๋ฐ๊พผ๋ค';
console.log(difficult[name]);
difficult.color = '์๊น';
console.log(difficult.color);
console.log('์์ฑ์ : ' + difficult.new);
difficult.new = '์๋ก ์ถ๊ฐ๋ ํ๋กํผํฐ';
console.log('์์ฑํ: ' + difficult.new)
console.log(difficult.newProperty);
difficult.realNewProperty = '์ถ๊ฐ ๋๋ค';
const mutableObj = {
name: '๊ฐ์ฒด'
};
mutableObj = {
name: '์์ '
}
mutableObj.name = '์์ ';
mutableObj.type = 'Object ํ์
';
console.log();
console ๋ ๊ฐ์ฒด์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก global ๊ฐ์ฒด์ด๋ค.
console ๋ค์์ dot์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ ๊ทผํ๊ณ log๋ผ๋ ํค์ ๊ฐ์ ํจ์์ด๋ค.(log๋ console์ด๋ผ๋ ๊ฐ์ฒด์ ๋ฉ์๋์ด๋ค.)
//๊ฐ์ฒด์ ๋ฉ์๋ ์ ์
let methodObj = {
do: function() {
console.log('๋ฉ์๋ ์ ์๋ ์ด๋ ๊ฒ');
}
}
methodObj.do();
let nestedObj = {
type: {
year: '2019',
'comment-type': [{
name: 'simple'
}]
}
//simple์ ์ถ๋ ฅํ๊ธฐ ์ํด
console.log(nestedObj.type['comment-type'][0].name);
๊ฐ์ฒด๋ฅผ ๋ณ์์ ์ ์ฅํ๋ฉด ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์ฒด๊ฐ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ reference๊ฐ ์ ์ฅ๋๋ค.
ํ ์คํธ๋ ๋ณ์์ ์ ์ฅํ๋ฉด ํ ์คํธ ์์ฒด๊ฐ ์ ์ฅ๋๋ค. ๊ทธ๋์ ๊ฐ์ ํ ์คํธ์ด๋ฉด ์๋ก ๊ฐ์ด ๊ฐ์ผ๋ฏ๋ก true์ด๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์ฒด๋ ์๊ธด ๋ชจ์์ด ๊ฐ์๋ false๋ผ๊ณ ์ถ๋ ฅ๋๋ค.
const hiObj = {
name: '์๋
'
};
const helloObj = {
name: '์๋
'
};
console.log('๊ฐ์ฒด๋น๊ต =>', hiObj === helloObj);
//๋์ ๋ณด์ด๋ ๋ฐ์ดํฐ๋ ๊ฐ์ง๋ง ๊ฐ๊ณ ์๋ ์ง์ง ๊ฐ์ ๋ค๋ฅด๋ค.
console.log('๊ฐ์ฒด๋น๊ต =>', hiObj === helloObj);
console.log('๊ฐ์ฒด๊ฐ๋น๊ต =>', hiObj.name === helloObj.name);
๊ทธ๋์ ๊ฐ์ฒด๋ฅผ ๋ด์ ๋ณ์๋ฅผ ๋น๊ตํ๋ฉด ์๋ก ๊ฐ์ง ์๋ค๊ณ ๋์จ๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฒด ๋ด๋ถ์ ํ๋กํผํฐ ๊ฐ์ด ํ ์คํธ์ผ ๊ฒฝ์ฐ ํ ์คํธ๋ฅผ ๋น๊ตํ๊ฒ ๋์ด ์๋ก ๊ฐ์ / ๋ค๋ฆ ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ค.
const mutableObj = {
name: '๊ฐ์ฒด'
};
mutableObj = {
name: '์์ '
}
mutableObj.name = '์์ ๋ฉ๋๋ค!';
const๋ก ์ ์ธ๋ ๋ณ์๋ ์ ๋ ๊ฐ์ด ๋ฐ๋ ์์๋ค. ๊ทธ๋์ mutableObj์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ฉด ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์์ ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋๋ค.
ํ์ง๋ง ํ๋กํผํฐ๋ฅผ ์ ๊ทผํด์ ์์ ํ ์ ์๋ค. mutableObj๊ฐ ์ ์ฅ๋ reference๊ฐ ๋ฐ๋๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด ๋ด๋ถ์ ํ๋กํผํฐ ๊ฐ์ด ์์ ๋๋ ๊ฒ์ด๋ผ ์์ ๋๋ค.
//ES5
function() {}
//ES6
() => {}
์ด๋ฆ์ด ์๋ ํจ์์ ๊ธฐ๋ณธ์ ์ธ ํํ์ผ๋ก ES6์์ ๋ function์ด๋ผ๋ ํค์๋๊ฐ ๋น ์ง๊ณ ์๊ดํธ๋ง ๋จ๊ณ => (arrow)๊ฐ ์ถ๊ฐ๋์๋ค.
์ด๋ฆ์ด ์๋ ํจ์๋ฅผ ๋ง๋ค ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉฐ ํ์ถํ ๋๋ ๋๋ค ๊ฐ๋ค.
//ES5
function getName() {}
//ES6
const getName = () => {}
getName()
//ES5
//Function Declaration
function getName() {}
//ES5
//Function Expression
const getName = function() {}
//ES5
const getName = function(name) {}
//ES6
const getName = (name) => {}
const getName = name => {}
//ES5
const getName = function(name, age) {}
//ES6
const getName = (name, age) => {}
//ES5
function getName(name) {
return name;
}
//ES6
const hi = name => { return name };
const hi = name => name;
//ES5
function getFullName(first, family) {
return first + family;
}
//ES6
const hi = (first, family) => { return first + family };
const hi = (first, family) => first + family;
const name = '๊น๊ฐ๋ฐ';
const name = `๊น๊ฐ๋ฐ`;
const name = '๊น๊ฐ๋ฐ';
//ES5
const hi = '์๋
ํ์ธ์. ์ ๋ ' + name + ' ์
๋๋ค.';
//ES6
const hi = `์๋
ํ์ธ์. ์ ๋ ${name} ์
๋๋ค.`;
let detail = '์์ธํ\n'+'๋ณด์์ผ\n'+'์ด์๋ค';
console.log(detail);
let detail = `์์ธํ
๋ณด์์ผ
์ด์๋ค
๋ด์ฝ๋..`;
console.log(detail);
string์์ ํน์ string์ ์ฐพ๊ธฐ ์ํด indexOf๋ฅผ ์ฌ์ฉํ์ง๋ง ์๋์ 3๊ฐ์ง ๋ฉ์๋๊ฐ ์ถ๊ฐ๋์๋ค.
1) startsWith
2) endsWith
3) includes
const email = 'yealee.kim87@gmail.com';
console.log(email.startsWith('ye'));
console.log(email.endsWith('com'));
console.log(email.includes('@gmail'));
- ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋จ
Local Storage: ํด๋น ๋๋ฉ์ธ์ ์๊ตฌ ์ ์ฅํ๊ณ ์ถ์ ๋
Session Storage: ํด๋น ๋๋ฉ์ธ์, ํ ์ธ์ ์์๋ง ์ ์ฅํ๊ณ ์ถ์ ๋. ์ฐฝ์ ๋ซ์ผ๋ฉด ์ ๋ณด๊ฐ ๋ ๋ผ๊ฐ
Cookie: ํด๋น ๋๋ฉ์ธ์ ๋ ์ง๋ฅผ ์ค์ ํ๊ณ ๊ทธ ๋๊น์ง๋ง ์ ์ฅํ๊ณ ์ถ์ ๋
document.cookie
map ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํด์ฃผ๋๋ฐ, callback ํจ์์์ return ํ ๊ฐ์ผ๋ก ๋งค ์์๋ฅผ ์์ ํด์ค๋ค.
map ๋ฉ์๋์ return ๊ฐ์ ์์ ๋ ๊ฐ์ผ๋ก ๋ค์ ์์ฑ๋ ๋ฐฐ์ด์ด๋ค.
const arr = [1, 2, 3];
const squares = arr.map(x => x * x);
//map ํจ์์์ ์ธ์๋ก ๋์ด๊ฐ ํจ์๋ฅผ ์๋๋๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
const squares = arr.map(function (x) {
return x * x;
});
Array ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ ๊ฐฏ์ ๋งํผ ๋ฐ๋ณตํ๋ฉฐ, ๋ฐ๋ณตํ ๋๋ง๋ค ์คํํ ํจ์๋ฅผ parameter๋ก ์ ๋ฌํ๋ค. ๊ทธ๋ฌ๋ฉด ์ด callback ํจ์์์ array์ ์์๋ฅผ ์ธ์(x)๋ก ๋ฐ๋๋ค.
ํด๋น ์์๋ฅผ ์์ ํ๊ณ ์ถ์๋๋ก ๋ก์ง์ ๊ตฌํํ๊ณ returnํด์ฃผ๋ฉด, ํด๋น index์ ์์๊ฐ return ๋ ๊ฐ์ผ๋ก ์นํ๋๋ค.
for ๋์ ์ฌ์ฉํ๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก map๊ณผ์ ์ฐจ์ด๋ forEach ํจ์ ์์ฒด๊ฐ return ํ๋ ๊ฒ๋ ์๋ฌด๊ฒ๋ ์๋ค. ๊ทธ๋ฅ forEack ํจ์๋ฅผ ํ์ถํ๊ณ ์ถ์ ๋ return ํ๋ค.
map์ ์์๊ฐ ์์ ๋ ์๋ก์ด ๋ฐฐ์ด์ด return ๋์๋ค๋ฉด forEach๋ ๋จ์ง for๋ฌธ ๋์ ์ฌ์ฉํ๋ ๋ฐ๋ณต method์ด๋ค.
let startWithNames = [];
let names = ['a', 'ab', 'cbb', 'ada'];
names.forEach(el => {
if (el.startsWith('a')) {
startWithNames.push(el);
}
});
let hasC = false;
let arr = ['a', 'b', 'c', 'd'];
arr.forEach(el => {
if (el === 'c') {
hasC = true;
return;
}
});
forEach๋ ํจ์์ด๋ฏ๋ก ์ค๊ฐ์ ๋ฐ๋ณต๋ฌธ์ ํ์ถํ๊ณ ์ถ์ผ๋ฉด return;์ ํด์ค๋ค.
๋ง์ฝ forEach์์ ํ์ฌ index๋ฅผ ์๊ณ ์ถ์ผ๋ฉด ๋๋ฒ์งธ ์ธ์๋ก ๋ฐ์ ์ ์๋ค.
let idxOfC = -1;
let arr = ['a', 'b', 'c', 'd'];
arr.forEach((el, idx) => {
if (el === 'c') {
idxOfC = idx;
return;
}
});
const information = {
name: '๊น๊ฐ๋ฐ'
}
const verb = 'developes'
const project = 'facebook'
information[verb] = project // [A]
information.developes = 'facebook' // [B]
A์ ๊ฐ์ด ํ ๋น์ด ๊ฐ๋ฅํ๋ค. B์ ๋ฐฉ์์ผ๋ก๋ ํ ๋น์ด ๊ฐ๋ฅํ ์๋ ์๊ฒ ์ง๋ง, ์ด ๊ฒฝ์ฐ ํค์ ๊ฐ์ ํญ์ ์ ํด์ ธ ์๊ฒ ๋๋ค.
ํ์ง๋ง A์ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ณ์ verb์ project๊ฐ ๊ฐ์ง๋ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ํค์ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๋๊ฒ ๊ฐ๋ฅํด์ง๋ค.
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
const keys = Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
for (let i = 0; i < keys.length; i++) {
const key = keys[i] // ๊ฐ๊ฐ์ ํค
const value = obj[key] // ๊ฐ๊ฐ์ ํค์ ํด๋นํ๋ ๊ฐ๊ฐ์ ๊ฐ
console.log(value)
}
์๋ก์ด ES6 ๋ฌธ๋ฒ์์๋ Object.keys ์ธ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก Object์์ฑ์์ ๋ฉ์๋์ธ Object.values, Object.entries ์ ๊ฐ์ ์๋งคํ๋ค์ด ์ถ๊ฐ๋์๋ค.
Object.values ๋ ๊ฐ์ฒด์ ํค๊ฐ ์๋ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค.
Object.entries ๋ ๊ฐ์ฒด์ ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด 2์ง๋ฆฌ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ง, ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค.
๊ฐ ๋ฐฐ์ด์์ ์ธ๋ฑ์ค [0]์ ๊ฐ์ ๊ฐ๊ฐ์ ํค๋ฅผ, ์ธ๋ฑ์ค [1]์ ๊ฐ์ ํด๋น ํค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]
const entries = Object.entries(obj)
/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/
๋ฐ๋ณต๋ฌธ์ธ for์ ๊ฐ์ ์ข ๋ฅ์ ๋ฌธ๋ฒ์ด์ง๋ง ๊ฐ์ฒด์ ๋ฐฐ์ด์ ์ํด ํน๋ณํ ์กด์ฌํ๋ ES6์์ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์ํ ์ธ์๋ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด์ ์ํํ ๋๋ ์ ์ฉํ๋ฐ, ๋ฐฐ์ด์ ๋ํ for๋ฌธ ์ ์ธ์ ์ฐ๋
" (let i = 0; i < arr.length; i ++) " ์ด๋ฐ ๋ฌธ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ถ์ฝํ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
i๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๊ณ , ๋ฐฐ์ด์ ๊ธธ์ด์ ๋น๊ตํ๊ณ , i๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ ๋ฑ์ ์ฝ๋๋ฅผ ์๋ตํ ์ ์๊ฒ ๋ง๋ ES6 ๋ฌธ๋ฒ์ด๋ค..
์ด for-in ๋ฌธ์ ์ธ๋ฑ์ค์ ๊ฐ์ผ๋ก ๋ฌด์์ ํ ๋นํ๊ณ , ๋ฐ๋ณต๋ฌธ์ด ๋ช๋ฒ ๋์์ผ ํ ์ง๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง ๋ด๋ถ์์ ์๋์ผ๋ก ๊ฒฐ์ ํ๊ฒ ๋๋ค.
for-in๋ฌธ์ ๋ฐฐ์ด ๋ฟ ์๋๋ผ ๊ฐ์ฒด์์๋ ์๋ํ๋๋ฐ
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
for (let key in obj) {
const value = obj[key]
console.log(key)
console.log(value)
}
์๋ฐ์คํฌ๋ฆฝํธ๋ html์ ์๋ ๋ชจ๋ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ (DOM ํํ์)๊ฐ์ฒด๋ก ๋ง๋ค์ด์ค๋ค.(๊ฐ์ฒด๋ ๋ง์ ํค๋ฅผ ๊ฐ๊ณ ์๋ค.)
ํ์ด์ง์์ ์ ํํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๋๋ค.
//HTML ์์ title ์ด๋ผ๋ id๋ฅผ ๊ฐ๊ณ ์๋ ํ๊ทธ๋ฅผ ์ ํํ๋ค.
const title = document.getElementById("title");
//ํ๊ทธ ์์ ๋ฌธ์์ด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋๋ค.
title.innerHTML = "Hi! From JS";
title.style.color = "red";
console.log()
console.dir()
document.title = "hello";
//idfh ckwrl
const title = document.querySelector("#title");
title.innerHTML = "Hi! From JS";
function handleResize(){
console.log("i have been resized")
}
// ํจ์๋ฅผ ๋ฐ๋ก ํธ์ถํ์ง ์๊ณ ํ์ํ ๋ ํธ์ถํ๊ฒ ํ๋ค.
window.addEventListener("resize", handleResize())
//์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ํธ์ถ๋๋ค.
function handleResize(event){
console.log(event);
}
window.addEventListener("resize", handleResize())
const title = document.querySelector("#title");
function handleClick(){
title.style.color = "red";
}
title.addEventListener("click", handleClick);
//prompt๋ ์ ์ฌ์ฉํ์ง ์๋๋ค.
const age = prompt("how old are you?")
if(age>18){
console.log("you can't drink");
}else{
console.log("you can't");
}
const base_color = "#34495e";
const other_color = "#7fgc8d"
function handleClick(){
const currentColor = title.style.color;
if (currentColor === base_color){
title.style.color = other_color;
} else {
title.style.color = base_color;
}
}
function init(){
title.style.color = base_color;
title.addEventListener("click", handleClick);
}
init();
[Ref]
https://kim-solshar.tistory.com/59
https://www.w3schools.com/jsref/jsref_obj_string.asp
https://www.w3schools.com/jsref/jsref_slice_string.asp
https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-math-random-%EB%B2%94%EC%9C%84-%EC%9E%90%EB%A6%BF%EC%88%98/
https://www.w3schools.com/js/js_math.asp
https://velog.io/@dongwon2/TypeScript%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EC%A0%84%EC%97%90-%EC%9D%B4%EC%A0%95%EB%8F%84%EB%8A%94-%ED%95%B4%EC%A4%98%EC%95%BC%EC%A7%80
http://www.songtory.com/post/001001/1/264
https://www.w3schools.com/js/js_switch.asp
https://www.robinwieruch.de/javascript-map-array/
https://javascript.info/string