koans 총정리

KoEunseo·2022년 7월 13일
0

javascript

목록 보기
9/32

type

1 + '1' = '11' //1. 숫자 + 문자 = 문자열로 나열
12 - '1' = 11 // 2. 숫자 - 문자 = 숫자로서 계산
1 + true = 2 //3. true는 1, false는 0으로 계산
'1' + true = '1true' //4. 문자+true는 문자열로 나열
true + false = 1
  • : 문자열과 숫자를 + 로 연산하면 문자열로서 나열
  • : 문자열과 숫자를 -로 연산하면 숫자로서 계산

primitive data type

객체가 아니면서 메서드를 가지지 않는 데이터
string, number, bigint, boolean, undefined, symbol, (null)

원시자료형은 immutable하다!
새로운 값으로 재할당은 가능!
원시자료형을 변수에 할당할 경우 값을 복붙
원시자료형을 함수의 전달인자로 전달한 경우, 값 복사

스택에 원시 자료형의 데이터가 저장된다.

reference data type

원시자료형이 아닌 것은 참조자료형이다.
배열([])과 객체({}), 함수(function(){}
참조자료형은 값이 아닌 주소가 할당된다.
힙에 참조자료형의 데이터가 저장된다.

참조자료형을 변수에 할당할 경우 주소가 저장


let & const

const는 재할당되지 않는다.
const로 선언된 배열이나 객체에 새로운 요소나 속성을 변경할수있다.

scope

호이스팅?
코드가 실행되기 전에 변수선언/함수선언이 해당 스코프의 최상단에 선언함
함수선언식은 호이스팅
함수표현식은 호이스팅이 되지 않음!

lexical scope

closure

내부(inner) 함수가 외부(outer) 함수의 지역 변수에 접근가능함

function factories
namespacing private variables/functions

arrow function

const add = (x, y) => {
 return x + y;
}

const add = (x, y) => x + y //리턴생략

const add = (x, y) => (x + y) //소괄호 ok!

const add = x => x + 1 //파라미터가 하나일 경우

const add = x => { //화살표함수로 클로저 사용
 return y => {
  return x + y
 }
}

array

Array.isArray로 확인
typeof로 확인시 object로 반환된다

  • arr.slice는 arr의 값을 복사하여 새로운 배열을 리턴

object

Object.keys().length 로 크기 확인
Object.assign({}, obj) 두 요소를 합친다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this
this는 method를 호출하는 시점에 결정된다.
화살표함수는 자신의 this가 없다.
화살표함수에서 this는 자신을 감싼 lexical content(정적범위)
'나'를 갖고있는 요소 자체를 말한다.

https://www.digitalocean.com/community/tutorials/copying-objects-in-javascript
|| shallow copy & deep copy(재귀함수이용, 각각 주소까지 복사)
https://medium.com/watcha/%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%99%80-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8B%AC%EB%8F%84%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%95%BC%EA%B8%B0-2f7d797e008a

spread

빈 배열에 spread사용시 아무것도 전달되지 않음
배열 뿐 아니라 객체도 병합
함수의 전달인자를 배열로 다룰 수 있음

  • rest파라미터는 항상 배열임

지정된 매개변수 이상의 매개변수가 들어오면 무시한다.
지정된 매개변수보다 매개변수가 덜 들어오면 undefined

arguments는 유사배열이 됨. 유사배열은 배열 메서드를 쓸 수 없다.

Array.from() 유사배열을 배열으로 만들어줌

[ ...arr1, ...arr2]; === arr1.concat(arr2);

destructuring

배열을 분해
rest, spread 함께 사용
할당하기 전 왼쪽에는 rest문법 이후에 쉼표가 올 수 없다.

const [first, ...middle, last] = array //불가능함
const person = {
 name: name;
}
const person = { //key와 value가 같은경우 생략가능함
 name;
}
  • key와 value가 같은경우 생략가능하다.
  • 객체의 키를 브라켓 안에 넣어서 객체 이름으로 재할당 해주면 키만 호출해도 값을 불러올 수 있다.
const student = { name: '박해커', major: '물리학과' }
const { name } = student //name만 입력해도 박해커가 호출됨
  • 객체에서 키가 같은 값이 있는 경우 덮어쓴다.
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글