카테고리 없음

poiemaweb 10~11강 복습

sunnykim91 2019. 9. 16. 00:03

원시 값과 객체의 비교

 

 

원시타입의 값은 변경 불가능한 값이다.

 

상수와 변경 불가능한 값은 다르다. 

  상수는 재할당이 금지된 변수

  변수는 언제든지 재할당을 통해서 변수값을 변경할 수 있지만, 상수는 단 한번만 할당이 허용된다.

 

 

문자열의 일부 문자를 변경해도 에러는 발생ㅎ하지 않지만, 반영은 되지않는다, 즉 원시값이기 때문에 read-only이다.

 

 

값에 의한 전달 (pass by value)

var foo = 10;

// 변수 bar에는 변수 foo의 값 10이 복사되어 할당된다.
var bar = foo;

console.log(foo, bar);    // 10  10
console.log(foo === bar); // true

// 변수 foo와 변수 bar의 값은 다른 메모리 공간에 저장된 별개의 값이다.
// 따라서 변수 foo의 값을 변경하여도 변수 bar의 값에는 어떠한 영향도 주지 않는다.
foo = 100;

console.log(foo, bar);    // 100  10
console.log(foo === bar); // false

 

자바스크립트 엔진은 객체의 프로퍼티 값의 위치를 메모리에 저장하기 위해 해시 함수 기반의 유사 딕셔너리 구조를 사용한다.

 

얕은 복사 vs 깊은 복사

참조값을 복사하는 것을 얕은 복사

원시값처럼 객체 자체를 복사하여 다시생성하는것을 깊은 복사

 

참조에 의한 전달(pass by reference)

여러개의 식별자가 하나의 객체를 공유할 때 생기는 부작용

var person = {
  name: 'Lee'
};

// 참조 값을 복사
var copy = person;

원본의 참조 값을 복사해서 copy에게 전달이 됨.

그럼 같은 참조값을 가지므로 동일한 객체를 가리킨다는 말이된다. 그래서 공유하게되면서 서로에게 영향을 끼칠 수 있다.

 

 

 

함수

함수 사용 이유

코드의 재사용

유지보수의  편의성을 높이고 실수를 줄여 코드의 신뢰성을 높임

가독성이 좋아짐

 

함수 정의 방법 4가지

함수 선언문

  함수 이름을 생략 할 수 없다.

  함수는 함수 이름으로 호출하는 것이 아니라 함수 개첼르 가리키는 변수로 호출한다.

  

함수 표현식

  **자바스크립트의 함수는 일급 객체이다.

  **일급 객체란 값처럼 변수에 할당할 수도 있고, 프로퍼티의 값이 될 수 있고 배열의 요소가 될 수 있다.

  함수 이름이 생략 가능

 

함수 선언문은 함수 선언문 이전에 호출 가능 / 함수 표현식은 표현식 이전에 호출 불가 

 

함수 호이스팅은 선언 단계, 초기화 단계, 할당 단계까지 동시에 진행된다.

 

Function 생성자 함수

  생성자 함수란 객체를 생성하는 함수를 말한다. 

  

 

화살표 함수

  this 바인딩 방식이 다르고, 프로토타입 프로퍼티가 없으며 arguments 객체를 생성하지 않는다.

 

 함수형 프로그래밍은 결국 순수 함수를 통해 부수 효과(Side effect)를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높이려는 노력의 한 방법

 

 

즉시 실행 함수

(function () {
  // ...
}());

 

콜백함수

함수 배개변수에 함수를 전달

비동기 처리를 위해 사용하는 일반적인 패턴으로 이벤트 처리나 Ajax통신에 사용된다.

 

 

반응형