for문, Object

soncl_97·6일 전
0

TIL

목록 보기
5/6

for문

for문은 조건을 반복해서 실행시켜주는 함수이다. 예를 들어,

let result = 0;

for (i = 0; i < 11; i++) {
	result = result + i
}
console.log(result); >> 55

이 함수는 1부터 10까지 더해주는 함수이다. for문은 괄호 안에 조건만큼 반복하는데 i가 1부터 10까지 순차적으로 반복되고 그 값이 왼쪽에 있는 result에 할당되어 55가 나오는 것이다.

아래는 고전했던 for문 예제...!

function MinElement(arr) {
  if (arr.length === 0) {
    return 0; //배열이 비어있으면 0을 리턴
  };
  
  let smallest = arr[0]
  for (let i = 0; i < arr.length; i++) {
     if (arr[i] >= smallest) {
        smallest = smallest; //arr[0]이 가장 작은 수일 때,
    } else if (arr[i] < smallest) {
        smallest = arr[i]; //다른 수가 더 작은 수 일 때,
    }
  }
 return smallest;
}
console.log(MinElement(arr));

for문을 보면 배열의 길이만큼 반복한다. 만약 arr[0]이 가장 작은 숫자가 아니라면 arr[i]가 smallest에 할당되고 arr[i]가 할당된 smallest보다 더 작은 요소가 나오면 그 값이 다시 smallest에 할당되어 가장 작은 숫자를 리턴할 것이다.
이 예제를 풀때 마지막 smallest = arr[i] 부분에서 arr[i] = smallest 라고 적어 1시간 동안 고민했다. 이런 간단한 부분에서 1시간이나 소모하다니... 다시 한번 얘기하지만 오른쪽에 적어야 smallest에 할당된다!

Object

property 접근

object는 dot notation과 braket notation 두 가지 방법으로 property에 접근할 수 있다고 포스팅한 적이 있다. 이 내용을 처음 접하는 사람이라면 왜 두 가지 방법이 있는지, 두 방식의 차이점이 무엇인지 궁금할 것이다.
dot notation과 braket notation 두 가지 모두 property에 접근한다는 것은 비슷하지만 차이점이 있다.

let myPizza = {
   pizza: '고구마',
   price: 18000,
   size: 'large',
   side: '스파게티'
};

let name = 'pizza'; //pizza는 myPizza라는 객체의 키값
console.log(myPizza[name]);
>> result: 고구마 //변수에 property name이 저장되어 있으면 접근 가능

console.log(myPizza.name);
>>undefined //myPizza라는 객체에 키값으로 name이 없으면 안됨

dot notation은 객체에 키 name: 'pizza'가 저장되어 있지 않으면 name으로 접근할 수가 없다. 하지만 braket notation은 변수명에 키값이 저장되어 있으면 변수명으로도 property에 접근할 수 있다! 그렇기 때문에 변수에 접근할 때에는 braket notation을 쓰는 것이 좋다.

Method

객체에 함수가 저장되어 있을 때, 그것을 method라고 한다.

let right = {
   do: function() {
   console.log('정답');
   }
}

right.do(); //호출하는 방법
>> result: '정답'

right.do()와 비슷하게 생긴 console.log()도 마찬가지로 객체에 함수가 담겨있는 method다.

reference로 저장되는 객체

다음 코드를 보면,

let city = '서울';
let myCity = '서울';
console.log(city === myCity);
>>true

let cityObj = {
   name: '서울'
};
let myCityObj = {
   naem: '서울'
};
console.log(cityObj === myCityObj);
>>false

변수에 할당된 값이 텍스트 자체로 저장되기 때문에 city === myCity 는 true이다. 그런데 객체는 안에 들어있는 property가 동일한데도 false가 나온다. 그 이유는 객체의 데이터가 담긴 어떤 메모리의 reference를 저장하기 때문이다. 즉, cityObj가 저장된 메모리 주소와 myCityObj의 메모리 주소가 다르기 때문에 그 둘은 false가 나오는 것이다.

0개의 댓글