본문 바로가기

javascript20

scope ES5까지는 global scope와 function scope만 사용되었다. scope란 변수의 사용범위이다. 변수를 선언하면 어떤 범위에서 사용할 수 있는가에 대한 규칙이다. global scope 부분에서 선언한 것이라면 해당 파일 어디에서든 사용할 수 있다. function scope부분에서 선언한 것이라면 해당 function 안에서는 어디서든 사용할 수 있다. 아래의 코드에서 b는 코드 어디에서든 사용 가능하다. 여기서 어디에서든 이라는 것은 작업하는 js파일 어느 줄에서든 사용가능하다는 뜻이다. c는 fun 함수 안이라면 어디서든 사용 가능하다. fun(){ ~~ } 에서 ~~ 부분 어디든 가능하다. var b = 1; function fun(){ var c = 2; ...end } ...e.. 2020. 6. 29.
rest, spread const slime = { name: '슬라임', attribute: 'cute', color: 'red'};이 있다고 하자. name 속성을 비구조화 할당하고 나머지는 others에 저장하려면 어떻게 할까? const { name, ...other } = slime; slime속성에 추가로 height: 180을 가지는 객체 tall_slime를 만들려면 어떻게 할까? const tall_slime = { ...slime, height: 180}; const numbers = [0,1,2,3,4];이 있다고 하자. 0,1을 one,two 변수에 담고 나머지는 others에 저장하려면 어떻게 할까? const [one, two, ...others] = numbers; numbers가 두번 반복하는 [0.. 2020. 6. 28.
비구조화 할당(구조분해 할당) ES6에서 도입된 문법이다. 호환성을 위해 사용하기 위해 babel과 같은 추가 작업이 필요하다. 배열 [1,2,3,4,5]에서 1,2를 a,b에 한번에 할당하고 싶다면 어떻게 해야할까? const [a, b] = [1,2,3,4,5]; 와 같이 사용하면 된다. { name: 'bob', age: 15, height: 170}이 있을 때 age의 값을 age 변수에 담으려면 어떻게 해야할까? const {age} = { name: 'bob', age: 15, height: 170}; 주의할 것은 속성 이름을 일치시켜줘야한다. age 변수말고 my_age에 담으려면 어떻게 해야할까? const {age: my_age} = { name: 'bob', age: 15, height: 170}; 혹시 없을 경우를.. 2020. 6. 28.
클래스 클래스는 IE에서 지원하지 않는다. 간단하게 살펴보고 넘어가자. 객체 생성자와 프로토타입에 함수를 등록할 때 편하다. Animal 클래스를 만들고 객체를 만들려면? class Animal { constructor(type, name, sound) { this.type = type; this.name = name; this.sound = sound; } say() { console.log(this.sound); } }; const dog = new Animal("개", "멍멍이", "멍멍"); dog.say(); say가 prototype에 자동으로 등록됨. Dog 클래스를 만들려면? class Dog extends Animal { constructor(name, sound) { super("개", nam.. 2020. 6. 27.