TIL :: JavaScript / replit. 21~24
β21. λ μ§μ μκ°
- νμκ°μ μ ν λ μ§μ μκ°,
- κΈμ μμ±ν μκ°
- ν΄λν°μ νμ¬ μκ° λ±...
λ μ§μ μκ°μ μ μ₯νκ³ λ³΄μ¬μ€ λ λ μ§ κ°μ²΄λ₯Ό μ¬μ©ν©λλ€.
λ μ§ κ°μ²΄λ₯Ό μμ±ν λ : new μ°μ°μ λ€μμ Date μμ±μλ₯Ό μλλ€.
- new Date()
var rightNow = new Date();
console.log(rightNow);
//2019-02-18T00:45:06.562Z
μ) 2μ 18μΌ μμμΌ 19:45
Date κ°μ²΄λ‘ νμ¬ μκ°μ κ°μ Έμ¨ ν, Date κ°μ²΄κ° κ°κ³ μλ ν¨μλ‘ κ° λ μ§, μκ°μ κ°μ κ°μ Έμ¬ μ μμ΅λλ€.
let rightNow = new Date();
let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1;
let date = rightNow.getDate();
let day = rightNow.getDay();
let currentHour = rightNow.getHours();
let currentMin = rightNow.getMinutes();
console.log(year)
console.log(month)
console.log(date)
console.log(day)
console.log(currentHour)
console.log(currentMin)
β οΈ μ£Όμ
getMonth λ©μλλ, νμ¬ λ¬λ³΄λ€ 1 μμ κ°μ λ°ν νλ―λ‘ μ£Όμν΄μ£ΌμΈμ.
λν 1μ΄, 1μ΄ μκ°μ΄ νλ₯Έλ€κ³ ν΄μ rightNow λ΄κΈ΄ μκ° κ°μ΄ λ³νμ§ μλ건 μμκ² μ£ ?
μμ μ½λ 1λ²μ§Έ μ€μ΄ μ€νλλ μκ°μ νμ¬ μκ°μ΄ λ΄κΈ°λ κ² μ λλ€.
β getTime
let rightNow = new Date();
let time = rightNow.getTime();
getTime λ©μλλ‘ λ μ§μ λ°λ¦¬μ΄ ννμ λ°νν μ μμ΅λλ€.
1564563605026 μ΄λΌλ μ«μκ° λ°νλμμ΅λλ€.
μλ§ μ¬λ¬λΆλ€μ΄ λ³΄κ³ μλ μ«μμ λ€λ₯Ό κ²μ λλ€.
μ°Έκ³ λ‘, κΈ°μ€μ΄ λλ μΌμλ 1970λ 1μ 1μΌμ λλ€.
1970λ 1μ 1μΌλ‘λΆν° 1564563605026 λ°λ¦¬μ΄κ° μ§λ¬λ€λ μλ―Έμ λλ€.
λ§μ½ 10λΆ λ€μ λ€μ μλ‘ new Date() λ₯Ό νΈμΆνλ©΄, μκ°μ΄ μ‘°κΈ νλ μΌλ μμ 1564563605026 보λ€λ ν° μ«μκ° λμ¬ κ²μ λλ€.
μ΄λ κ² getTime λ©μλλ‘ λ°νλ μ«μλ‘ λΉκ΅μ°μ°μ ν΅ν΄ μΈμ κ° λ κ³Όκ±°μΈμ§ νλ¨ν μ μμ΅λλ€.
κ°μ΄ λ μμΌλ©΄ κ³Όκ±°μ λλ€.
β νΉμ λ μ§μ Date
νΉμ λ μ§λ₯Ό λ§€κ° λ³μ λ‘ λ겨주면, ν΄λΉ λ μ§μ Dateλ₯Ό λ°ν λ°μ μ μμ΅λλ€.
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);
λ―Έκ΅μ λΉλ‘―ν΄ μ μΈκ³ λλΆλΆμ λλΌλ€μ΄ μμΌμ κΈ°μ€μΌλ‘ λμ΄λ₯Ό κ³μ° ν©λλ€. μ½κ² λ§ν΄ λ―Έκ΅μ νμ΄λμλ§μ 0μ΄μ΄κ³ μμΌμ μ§λμΌ λΉλ‘μ ν μ΄μ΄ λ©λλ€. λ°λ©΄μ νκ΅μ νμ΄λμλ§μ 1μ΄μ΄κ³ μ°λκ° λ°λ λλ§λ€ ν μ΄μ© λ¨Ήμ΅λλ€.
μλ₯Ό λ€μ΄ λ―Έκ΅μμλ 1995λ 9μ 12μΌμ νμ΄λ¬μΌλ©΄ 1995λ 9μ 12μΌμλ 0μ΄μ΄κ³
1996λ 9μ 12μΌμ΄ λμΌ 1μ΄μ΄ λ©λλ€. κ·Έμ λΉν΄ νκ΅μμλ 1995λ 9μ 12μΌμ νμ΄λμλ§μ 1μ΄μ΄κ³ 1996λ 1μ 1μΌμ 2μ΄μ΄ λ©λλ€.
1μ΄ μ°¨μ΄λ ν¬κ² μκ°νλ μ°λ¦¬λλΌ κ³ μ μ λ¬Ένμ λΉλ‘―ν κ³μ°λ²μ΄ μλκ° μΆμΈ‘ν΄ λ΄ λλ€. λ―Έκ΅μ΄λ λ€λ₯Έ λλΌκ° μ¬μ©νλ λμ΄ κ³μ°λ²μ μ°λ¦¬λλΌμμλ λ§ λμ΄ λΌκ³ νμ£ .
Assignment
λ―Έκ΅μ λΉλ‘―ν΄ μ μΈκ³ λλΆλΆμ λλΌλ€μ΄ μμΌμ κΈ°μ€μΌλ‘ λμ΄λ₯Ό κ³μ° ν©λλ€. μ½κ² λ§ν΄ λ―Έκ΅μ νμ΄λμλ§μ 0μ΄μ΄κ³ μμΌμ μ§λμΌ λΉλ‘μ ν μ΄μ΄ λ©λλ€. λ°λ©΄μ νκ΅μ νμ΄λμλ§μ 1μ΄μ΄κ³ μ°λκ° λ°λ λλ§λ€ ν μ΄μ© λ¨Ήμ΅λλ€. μλ₯Ό λ€μ΄ λ―Έκ΅μμλ 1995λ 9μ 12μΌμ νμ΄λ¬μΌλ©΄ 1995λ 9μ 12μΌμλ 0μ΄μ΄κ³ 1996λ 9μ 12μΌμ΄ λμΌ 1μ΄μ΄ λ©λλ€. κ·Έμ λΉν΄ νκ΅μμλ 1995λ 9μ 12μΌμ νμ΄λμλ§μ 1μ΄μ΄κ³ 1996λ 1μ 1μΌμ 2μ΄μ΄ λ©λλ€. 1μ΄ μ°¨μ΄λ ν¬κ² μκ°νλ μ°λ¦¬λλΌ κ³ μ μ λ¬Ένμ λΉλ‘―ν κ³μ°λ²μ΄ μλκ° μΆμΈ‘ν΄ λ΄ λλ€. λ―Έκ΅μ΄λ λ€λ₯Έ λλΌκ° μ¬μ©νλ λμ΄ κ³μ°λ²μ μ°λ¦¬λλΌμμλ λ§ λμ΄ λΌκ³ νμ£ .
μμ λ§ν λ§μΌλ‘ κ³μ°ν λμ΄λ₯Ό ꡬνλ ν¨μμΈ getWesternAge ν¨μλ₯Ό ꡬνν΄ λ΄ μλ€.
- μ΄ ν¨μλ birthday λΌλ μΈμλ₯Ό λ°μ΅λλ€.
- μ΄ birthday λ Date κ°μ²΄ μ λλ€. birthday λΌλ μΈμλ₯Ό λ£μμ λ, νμ¬λ₯Ό κΈ°μ€μΌλ‘ λ§μΌλ‘ κ³μ°ν λμ΄λ₯Ό λ¦¬ν΄ ν΄μ£ΌμΈμ.
- birthday λ stringμ΄ μλ Date κ°μ²΄λΌλ κ±Έ λͺ μ¬νμΈμ :)
- μλ₯Ό λ€μ΄, μ€λμ΄ 2020λ 7μ 21μΌμ΄κ³ , birthday κ°μ΄ λ€μκ³Ό κ°λ€λ©΄:
1990-03-21T00:45:06.562Z
λ¦¬ν΄ κ°μ 30 μ΄ λμ΄μΌ ν©λλ€.
function getWesternAge(birthday) {
let current = new Date();
let year = current.getFullYear();
let month = current.getMonth() + 1;
let date = current.getDay();
let age = year - birthday.getFullYear();
console.log(age);
if (
month < birthday.getMonth() ||
(month === birthday.getMonth() + 1 && date < birthday.getDay())
) {
age -= 1;
}
console.log(age);
return age;
}
β22. Number
μν κ³μ°μ μν΄μλ JavaScriptμμ μ 곡νλ Math κ°μ²΄λ₯Ό μ¬μ©ν©λλ€.
λ€μ μ¬μ΄νΈμμ ν λ² λ΄μ£ΌμΈμ. π Mathκ°μ²΄
μ λκ° κ΅¬νκΈ°, sin, cos, μ κ³±κ·Ό λ±λ±, Math κ°μ²΄μ μνκ³μ° λ©μλκ° λ§μ΄ μλ€μ.
β round, ceil, floor
- round : λ°μ¬λ¦Ό λ©μλ
- ceil : μ¬λ¦Ό λ©μλ
- floor : λ΄λ¦Ό λ©μλ
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));
β λλ€ν¨μ
- Math.random()
var randomNumber = Math.random();
console.log(randomNumber);
0.0000000000000000μμ 0.9999999999999999 μ¬μ΄μ κ°μμ λλ€μλ₯Ό μ 곡
var randomNumber = Math.random();
console.log(Math.floor(randomNumber*10));
randomNumber * 10 μ κ°μ 1μ μ리μμ μμ² κΈ΄ μμμλ¦¬λ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
ex) 9.697009826327621
νμΈν΄ λ³΄μ ¨λμ?
μ΄λ κ² κ΅¬ν ν, μμμ리λ λ€ λ²λ¦¬λλ‘ λ΄λ¦Όν¨μλ₯Ό μ¬μ©νμ¬ 0~10 μ¬μ΄μ λλ€μλ₯Ό ꡬν μ μμ΅λλ€.
μ΄λ° λλ€ν¨μλ λ‘λλ₯Ό λ½κ±°λ, μ΄λ²€νΈ λΉμ²¨μλ₯Ό λ½μ λ μ μ©νκ² μ°μ λλ€.
Assignment
μ΅μ(min), μ΅λκ°(max)μ λ°μ κ·Έ μ¬μ΄μ λλ€μλ₯Ό return νλ ν¨μλ₯Ό ꡬνν΄μ£ΌμΈμ.
- ν¨μλ μ§§μ§λ§, μ΄λ²μλ μνμ λλ₯Ό μ‘°κΈ μ¨μΌ νλ assignment μ λλ€. π
- μμΌλ‘ λλ€ν¨μλ₯Ό μΈ μΌμ΄ μ λ§ λ§μ΅λλ€.
- κ·Έλ°λ° Math.random() μΌλ‘λ λ΄κ° μνλ λ²μμ λλ€μλ₯Ό μ»μ μκ° μμ΅λλ€.
- νμ 0.0000000000000000μμ 0.9999999999999999 μ¬μ΄ κ°λ§ return ν΄μ£ΌκΈ° λλ¬Έμ΄μ£ .
π λμ νμ΄
// Assignment
function getRandomNumber (min, max) {
let random = Math.random()*(max - min) + min;
return random;
}
console.log(getRandomNumber)
μ λ΅
// Assignment
function getRandomNumber (min, max) {
return Math.round(Math.random() * (max - min) +min);
}
β23. Object (κ°μ²΄)
- κ°μ²΄λ {}(μ€κ΄νΈ)λ‘ κ°μΈμ Έ μκ³ ,
- μ½λ‘ μΌλ‘ ꡬλΆλ μ΄λ¦ / κ° μμ λ€μ΄, μΌνλ‘ λΆλ¦¬λ λͺ©λ‘μ ννμ λλ€.
λ€μ λ§νλ©΄ κ°μ²΄λ μ΄λ¦κ³Ό κ°μΌλ‘ ꡬμ±λ νλ‘νΌν°λ€μ μ§ν©μ΄λΌκ³ ν μ μλ€.
μμμ property μ΄λ¦μ 1, 2λ‘ λλμλλ°, νλ‘νΌν° μ΄λ¦μ μ€λ³΅μ΄ λλ©΄ μ λκΈ° λλ¬Έμ μ«μλ₯Ό λ¬λ¦¬ νμμ΅λλ€.
plan1 μ κ°μ²΄λ₯Ό λ§λ€μλ©΄ μλμ κ°μ΅λλ€.
let plan1 = {
name: "Basic",
price: 3.99,
space: 100,
transfer: 1000,
pages: 10
};
μλμ κ·μΉμ μ§μΌ κ°μ²΄λ₯Ό λ§λ€ μ μμ΅λλ€.
- property μ΄λ¦μ μ€λ³΅λ μ μλ€.
- propertyμ΄λ¦κ³Ό propertyκ° μ¬μ΄μ : (μ½λ‘ )μΌλ‘ ꡬλΆνλ€.
- propertyλ₯Ό μΆκ°ν λλ , (μΌν)λ₯Ό λΆμ¬μ€λ€.
- property κ°μλ μ΄λ typeμ΄λ κ°λ₯νλ€(string, number, array, object, function..)
ν΄λΉ κ°μ²΄μ propertyκ°μ μ κ·Όνκ³ μΆμ λλ μλμ κ°μ΅λλ€.
- λ§μΉ¨ν(.) μ°μ°μλ₯Ό μ¬μ©νλ©°, μ κ·Όνλ €λ κ°μ²΄λͺ μ μΌμͺ½μ, νλ‘νΌν° λͺ μ μ€λ₯Έμͺ½μ μμΉν©λλ€.
- λκ΄νΈ([])λ₯Ό μ¬μ©νμ¬, μ κ·Όνλ €λ κ°μ²΄λͺ μ μΌμͺ½μ, νλ‘νΌν° λͺ μ μλ°μ΄ν("")μ ν¨κ» λκ΄νΈ μμ μμ±ν©λλ€.
let plan1 = {
name: "Basic"
};
console.log(plan1.name);
console.log(plan1["name"]);
μλμ μ½λμμ μ΄λ»κ² κ°μ²΄μ νλ‘νΌν°μ μ κ·Όνλμ§ νμΈν΄μ£ΌμΈμ.
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);
μ§μ μ½λλ₯Ό μμ±ν΄μ ν μ€νΈν΄λ³΄κ³ , μ΄ν΄λμ§ μλ κ²μ΄ μμΌλ©΄ μ§λ¬Έν΄μ£ΌμΈμ!
μμ myObj κ°μ²΄λ₯Ό μ μν νμ property κ°μ μμ ν μ μμ΅λλ€.
let name = "property1";
myObj[name] = ["hi", "hello"];
console.log(myObj);
myObjκ°μ²΄μ property1 μ κ°μ μλ ν μ€νΈ μλλ° λ°°μ΄λ‘ λ°κΏλ³΄μμ΅λλ€.
myObj κ° μ΄λ»κ² λ°λμλμ§ κΌ νμΈν΄λ³΄μΈμ.
νΉμ μλ‘μ΄ propertyλ₯Ό μΆκ°ν μλ μμ΅λλ€.
myObj.property3.siblingproperty = [3, 6, 9];
console.log(myObj);
myObj κ° μ΄λ»κ² λ°λμλμ§ κΌ νμΈν΄λ³΄μΈμ!!!!!!!!!
myObj μ property1 κ° λ°°μ΄λ‘ λ°λμλλ°, μ΄ λ°°μ΄μ 첫λ²μ§Έ μμλ₯Ό μ κ·Όνκ³ μΆμΌλ©΄ μλμ κ°μ΄ ν μ μμ΅λλ€.
console.log(myObj.property1[0]);
myObj.property1 λ ["hi", "hello"] μ΄κ³ , index 0μ μ κ·ΌνμμΌλ―λ‘ "hi" κ° λμ¬ κ²μ λλ€.
μλμ κ°μ κ°μ²΄μ ꡬ쑰λ μ λ§ λ§μ΄ μ°μ λλ€.
κ°μ²΄μ κ°μ²΄μ λ°°μ΄μ κ°μ²΄.....?
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"
}]
}
};
objData λΌλ κ°μ²΄μμ name , address , books λΌλ propertyκ° μμ΅λλ€.
books μ λ κ°μ²΄κ° ν λΉ λμλ€μ.
μμ λ°μ΄ν°μμ "HTML Guide" μ μ κ·Όνκ³ μΆμ λλ μλμ κ°μ΄ ν΄μ£Όλ©΄ λ©λλ€.
let bookName = objData.books.info[1].name;
console.log(bookName);
objData.book μ objData κ°μ²΄μ book μ΄λΌλ propertyλͺ μ propertyκ°μ κ°μ ΈμμΌ νλλ°,
ν΄λΉ propertyλͺ μ μ‘΄μ¬νμ§ μμΌλκΉ κ°λ μλ κ²μ΄κ³ κ·Έλμ undefined λΌκ³ λμ΅λλ€.
Assignment
μ΄μ κΉμ§ νμ ¨λ Assignment μλ μ‘°κΈ λ€λ₯Έ μ νμ λλ€. κ·Έ λμμλ νΉμ κ°μ ꡬν΄μ λ¦¬ν΄ νλ€λ©΄, μ΄λ²μλ μΈμλ‘ λ°μ λ°μ΄ν°λ₯Ό μ‘°ν©ν΄μ, ꡬ쑰λ₯Ό λ°κΏμ 리ν΄ν©λλ€.
getData ν¨μλ₯Ό ꡬνν΄μ£ΌμΈμ!
- getData ν¨μλ μΈ κ°μ λ°°μ΄μ μΈμλ‘ λ°μ΅λλ€.
- salesArr : λ μ§λ³ νλ§€λ
- ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]
- reviewArr : λ μ§λ³ 리뷰μ
- ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]
- likeArr : λ μ§λ³ μ’μμμ
- ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]
- salesArr : λ μ§λ³ νλ§€λ
- λ€μ μꡬμ¬νμ μΆ©μ‘±νλ κ°μ²΄λ₯Ό λ§λ€μ΄μ return ν΄μ£ΌμΈμ.
- 리ν΄λλ κ°μ²΄λ μλμ κ°μ΄ 3κ°μ propertyλ₯Ό κ°μ§λλ€.
- sumAmount : μ΄ νλ§€λ
- sumReview : μ΄ λ¦¬λ·°κ°μ
- sumLike : μ΄ μ’μμμ
function getData(salesArr, reviewArr, likeArr) {
let sumAmount = 0;
let sumReview = 0;
let sumLike = 0;
for(let i = 0; i < salesArr.length; i++) {
sumAmount += salesArr[i][1];
}
for(let i = 0; i < reviewArr.length; i++) {
sumReview += reviewArr[i][1];
}
for(let i = 0; i < likeArr.length; i++) {
sumLike += likeArr[i][1];
}
const objData = {
sumAmount: sumAmount,
sumReview: sumReview,
sumLike: sumLike,
};
return objData;
}
β24. Scope
scopeμ JavaScriptμ λ¬Έλ²μ΄ μλλλ€.
JavaScriptμμ scopeμ΄λ, 'λ³μκ° μ΄λκΉμ§ μ°μΌ μ μλμ§'μ λ²μλ₯Ό μλ―Έν©λλ€.
β Block
blockμ΄λ μ€κ΄νΈ({} , curly brace)λ‘ κ°μΈμ§ κ²μ blockμ΄λΌκ³ ν©λλ€.
function μ λ΄λΆλ νλμ blockμ λλ€.
function hi() {
return 'i am block';
}
for λ¬Έλ νλμ blockμ΄κ³ μ
for (let i = 0; i < 10; i++) {
count++;
}
if λ¬Έμ {} λ νλμ blockμ λλ€.
if (i === 1) {
let j = 'one';
console.log(j);
}
{} (block)λ΄λΆμμ λ³μκ° μ μλλ©΄ λ³μλ μ€λ‘μ§ {} (block)λ΄λΆμμλ§ μ¬μ©ν μ μμ΅λλ€.
{} (block)λ΄λΆμμ μ μλ λ³μλ local(μ§μ) λ³μλΌκ³ λΆλ¦ λλ€.
function getResult() {
let result = 10;
return result;
}
// μλ°μ€ν¬λ¦½νΈ μλ¬!
// getResult λ΄λΆμ scopeμ μ κ·Όν μ μλ€
console.log(result);
console.log(result) μμ getResult λ΄λΆμ μ κ·Όμ΄ λΆκ°λ₯νκΈ° λλ¬Έμ result λΌλ λ³μμ μ‘΄μ¬λ₯Ό μμ§ λͺ»ν©λλ€.
result λΌλ λ³μλ getResult ν¨μμ {} (block)μμλ§ μ¬μ©ν μ μμ΅λλ€.
β Global(μ μ) Scope
scopeμ λ³μκ° μ μΈλκ³ μ¬μ©ν μ μλ 곡κ°μ λλ€.
scope μΈλΆ(blockλ°)μμλ νΉμ scopeμ λ³μμ μ κ·Όν μκ° μμ΅λλ€.
blockλ°μΈ global scopeμμ λ§λ λ³μλ₯Ό global variable(μ μλ³μ)λΌκ³ ν©λλ€.
μ½λ μ΄λμλ μ κ·Ό κ°λ₯ν΄μ λ³μκ°μ νμΈν μ μμ΅λλ€.
const color = 'red';
console.log(color);
function returnColor() {
console.log(color);
return color;
}
console.log(returnColor());
returnColor ν¨μ λ΄μμ, returnColor ν¨μ λ°μ μλ color λΌλ λ³μλ₯Ό return ν΄μ£Όμμ΅λλ€.
color λΌλ λ³μλ global λ³μμ΄κΈ° λλ¬Έμ returnColor ν¨μμ blockμμλ μ κ·Όμ΄ κ°λ₯ν΄μ 'red' λ₯Ό λ°ννκ²μ λλ€.
β Scopeμ μ€μΌ
global λ³μλ₯Ό μ°λ©΄ μ¬κΈ° μ κΈ°μ μ κ·ΌνκΈ° μ¬μμ μ’λ€κ³ μκ°ν μ μμ§λ§, λ무 λ¨μ©νλ©΄ νλ‘κ·Έλ¨μ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμ΅λλ€.
global λ³μλ₯Ό μ μΈνλ©΄, ν΄λΉνλ‘κ·Έλ¨μ μ΄λμμλ μ¬μ©ν μ μλ global namespaceλ₯Ό κ°μ΅λλ€.
namespaceλΌλ κ²μ λ³μ μ΄λ¦μ μ¬μ©ν μ μλ λ²μλΌλ λ»μ λλ€. scopeμ΄λΌκ³ λ νκ³ νΉν λ³μμ΄λ¦μ μκΈ°ν λλ namespaceλΌκ³ λ ν©λλ€.
global λ³μλ νλ‘κ·Έλ¨μ΄ μ’ λ£λ λκΉμ§ κ³μ μ΄μμμ΅λλ€. μ΄ λ§μ local λ³μλ {} - blockμ΄ λλλ©΄ λ μ΄μ λ³μκ° μ΄μμμ§ μκ³ μΈ μ μλ€λ λ§μ λλ€.
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);
- stars μ΄λΌλ global λ³μκ° μμ΅λλ€.
- callMyNightSky ν¨μμμ μλ‘μ΄ λ³μλ₯Ό μ μΈνκ³ μΆμλλ° κΉλΉ‘νκ³ let ν€μλλ₯Ό μμ±νμ§ μμμ΅λλ€.
- callMyNightSky μ νΈμΆνλ©΄ stars λ³μμ "Sirius" μ΄ ν λΉλ©λλ€.
- global λ³μμλ stars μ μν₯μ΄ κ°μ΅λλ€!
- λ€λ₯Έ ν¨μμμ global λ³μμΈ stars μ μ¬μ©νκ³ μΆμλ° κ°μ΄ μμ λ "Sirius" μΌλ‘ μ¬μ©νκ² λ©λλ€.
μμΌλ‘ ν¨μκ° λͺ μκ° μμμ§λ λͺ¨λ₯΄λ μν©μμ μ λ κ² global λ³μλ₯Ό λ¨μ© νλ€κ°λ μ΄λμ μ΄λ»κ² κ°μ΄ μμ λ μ§ μ μ μμ΄μ§λλ€.
β μ’μ Scoping μ΅κ΄
μμ κ°μ΄ global λ³μκ° μ¬κΈ°μ κΈ°μ μμ λλ©΄ μλκΈ° λλ¬Έμ λ³μλ€μ block scopeμΌλ‘ μ΅λν λλ λμΌ ν©λλ€.
- νμ΄νΈν scope(tightly scoping)μ λ³μλ μ½λ νμ§μ μ¬λ €μ€λλ€!
- μ½λκ° block μΌλ‘ λͺ ννκ² κ΅¬λΆλκΈ° λλ¬Έμ μ½λ κ°λ μ±μ΄ μ¬λΌκ°λλ€.
- μ½λκ° νμ€ νμ€ μ λμ΄λ κ²μ΄ μλλΌ κ°κ°μ κΈ°λ₯λ³λ‘ blockμ λλλ©΄ μ½λκ° μ΄ν΄νκΈ° μ¬μμ§λλ€.
- λμ€μ μ½λλ₯Ό μμ ν μΌμ΄ μμ λ, μ½λλ₯Ό μ€λλ§μ 보λλΌλ μ λλμ΄ μμ΄μ μ μ§λ³΄μκ° μ¬μμ§λλ€.
- νλ‘κ·Έλ¨μ΄ λλ λκΉμ§ λ³μκ° μ΄μμλ κ²μ΄ μλλΌμ(blockμ΄ λλλ©΄ local λ³μμ μΆμ΄ λλμ) λ©λͺ¨λ¦¬ μ μ½λ λ©λλ€.
μ¦, νλ§λλ‘ μμ½νλ©΄ global λ³μλ μ°μ§ μλλ‘ λ Έλ ₯ν΄μΌ νκ³ , μ΅λν {} λ΄μμ let, const μ μ¬μ©νμ¬ λ³μλ₯Ό μλ‘ λ§λ€μ΄μ μ°μλ λ§μ λλ€.
μ΄μ λ§μ§λ§ μμ μ λλ€!
μ΄λ²μλ if λ¬Έμ {} μ block scopeμ λ³΄κ² μ΅λλ€.
function logSkyColor() {
const dusk = true;
let myColor = 'blue';
if (dusk) {
let myColor = 'pink';
console.log(myColor); // pink
}
console.log(myColor); // blue
}
console.log(myColor); // μλ¬!!
- if λ¬Έμ {} μ μ½λ blockμ μ¬μ©νμμ΅λλ€. μ¬κΈ°μ myColor λΌλ λ³μλ₯Ό let μΌλ‘ μ μΈνμμ΅λλ€.
- if λ¬Έ λ΄μμλ "pink" λΌκ³ ν λΉ νμκ³ , if λ¬Έ λ°μμλ "blue" λΌκ³ ν λΉν κ²μ μ£Όλͺ©ν΄μ£ΌμΈμ.
μ¬μ€ μ΄ μ½λλ function μ block, scope, if λ¬Έμ block, scopeμΌλ‘, λͺ¨λ block μ μ μ¬μ© νμλλ°λ scope namespaceκ° μ€μΌλ κ²μ λλ€. μλνλ©΄ κ°μ μ΄λ¦μ λ³μλ₯Ό μ¬μ©νκΈ° λλ¬Έμ λλ€.
μ΄λ κ² μλ‘μ΄ blockμμ λ³μλ₯Ό μΈ λλ νμ λ€λ₯Έ μ΄λ¦μΌλ‘ λ³μλ₯Ό μ μΈν΄μΌνλ€λ κ²μ μμ§ λ§μμ£ΌμΈμ.