JS - Obj, Scope / TIL - 4

주지홍·2022년 1월 1일
0

TIL

목록 보기
5/25
post-thumbnail

Object

규칙

  • property 이름은 중복될 수 없다.
  • property이름과 property값 사이에 : (콜론)으로 구분한다.
  • property를 추가할 때는 , (쉼표)를 붙여준다.
  • property 값에는 어느 type이나 가능하다(string, number, array, object, function..)
let plan1 = {
  name: "basic",
  price: 3.99,
  space: 100,
  transfer: 1000,
  pages: 10
};

console.log(plan1.name); // 'basic'
console.log(plan1.price); // 3.99

console.log(plan1['name']); // 'basic'
console.log(plan1['price']); // 3.99

let propertyName = "name";
console.log(plan1[propertyName]); // 'basic'

문제 2 : 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]]

function getData(salesArr,reviewArr,likeArr){
  let sumSales = 0;
  let sumReviews = 0;
  let sumLikes = 0;
  
  for (let i = 0; i < salesArr.length; i++) {
    sumSales += salesArr[i][1];
  }
  for (let i = 0; i < reviewArr.length; i++) {
    sumReviews += reviewArr[i][1];
  }
  for (let i = 0; i < likeArr.length; i++) {
    sumLikes += likeArr[i][1];
  }
  let objData = {};
  objData.sumAmount = sumSales;
  objData.sumReview = sumReviews;
  objData.sumLike = sumLikes;
  return objData;
}

문제의 뜻을 이해하면 쉬운문제이다.

결국 문제는 객체안에 각각의 판매량, 리뷰수, 좋아요수를 모두 더한 값을 넣어주는 문제이다. 처음 변수들을 설정하고 값을 0으로 설정한 후 각각의 배열 속 값들을 더해주면 해결!


Scope

scope은 변수가 선언되고 사용할 수 있는 공간.

scope 외부(block밖)에서는 특정 scope의 변수에 접근불가.

block밖인 global scope에서 만든 변수를 global variable(전역변수)라고 한다.

코드 어디서든 접근 가능해서 변수값을 확인가능

좋은 Scoping 습관

  • 타이트한 scope(tightly scoping)의 변수는 코드 품질을 올려준다.
  • 코드가 block 으로 명확하게 구분되기 때문에 코드 가독성이 올라간다.
  • 코드가 한줄 한줄 쭉 나열된 것이 아니라 각각의 기능별로 block을 나누면 코드가 이해하기 쉬워짐.
  • 나중에 코드를 수정할 일이 있을 때, 코드를 오랜만에 보더라도 잘 나뉘어 있어서 유지보수가 쉬워짐.
  • 프로그램이 끝날때까지 변수가 살아있는 것이 아니라서(block이 끝나면 local 변수의 삶이 끝나서) 메모리 절약도 됨.

용어정리

scope
변수의 사용이 가능한 범위 (변수가 쓰일 수 있는)

Block
{}로 둘러쌓인 코드의 묶음
if, for 문에 안의 코드들 이라고 생각하자.

global scope
블록 안, 밖, 프로그램 어디에서나 변수에 대한 접근, 사용이 가능한 범위

global variable
블록 밖에 선언된 변수, global scope에 선언된 변수로
프로그램 어디에서나 사용이 가능한 변수

block scope
해당 블록 안에서만 변수에 대한 접근, 사용이 가능한 범위
즉 블록 자체가 변수에 접근.

local variable
블록 안에 선언된 변수
해당 블록 안에서만 사용이 가능한 변수

global namespace
변수를 선언하면 주어진 공간인데
프로그램 어디에서나 변수의 이름을 사용할 수 있는 공간을 가짐.

scope pollution
전역변수 남발할때 생기는 문제
변수를 불러올때 값 오류가 생기니 주의

참고자료

W3C - Scope

MDN - Scope
profile
오늘도 내일도 끊임없는 싸움

0개의 댓글