[F-Lab 모각코 챌린지 - 47일차] - 함수 비교(function, arrow, new Function), 알고리즘

Big One·2023년 6월 26일
0

F-Lab

목록 보기
20/69

화살표 함수(Arrow function)

화살표 함수는 기존 함수( function ) 과 비교했을 경우 사용법이 간단하게 축소되었다.

생략된만큼 기능도 제한적이여서 모든 일반함수를 대체할 수 있는것은 아니다(모든 곳에서 사용 가능 x)

다른 점을 살펴보도록 하자

this가 없다.

화살표 함수는 this 자체가 없다. 따라서 화살표 함수 내에서 this를 출력하게 된다면 스코프체인상 가장 가까운 this가 출력되게 된다. 함수내부에서의 this 바인딩을 고려하지 않아도 된다.

이전까지는 ES5 에서는 bind 메서드를 사용하여 this를 바인딩 시키는 함수를 만들었고, 이전에는 call / apply 메서드를 사용하여 this를 바인딩 시켰다. 이러한 불편함을 해소시켜주었다.

생성자함수로 생성 불가

function 같은경우는 new 연산자를 통해 생성자로 함수를 호출할 수 있었다. 하지만 화살표 함수는 new 연산자 사용이 불가하다.

arguments 객체가 없다.

들어온 인자들의 정보가 담인 arguments 객체가 없다. 일반 함수에서는 arguments[0] 이런식으로 접근이 가능했다. 참고로 arguments 는 유사배열객체임!

선언식으로 쓸 수 없다.

표현식으로만 사용가능하며 익명이기 때문에 너무 당연한 소리여서 더 이상의 설명은 생략한다.

call, apply, bind 메서드 사용할 수 없다.

말 그대로 사용 불가.

yield 사용할 수 없다.

말 그대로 사용 불가

prototype 속성이 없다.

Function

new Function 은 생성자로서 호출하는 것이다. 구문분석 차이로인해 일반함수나 arrow 함수를 사용하는 것이 좋다. 그리고 4바이트를 줄일 수 있으므로 사용하게되면 new 연산자를 제외한 Function 으로 사용한다. 기능은 같다.

참고할 점

생성된 함수의 지역변수와 전역 변수만 접근이 가능하다. 즉, A 함수 내부에서 const B = new Function () 을 사용하게되면 B 에서의 지역변수와 전역변수만 사용되고 A 함수 지역변수는 접근이 불가하다. 클로저를 만들지 않음!

전역에서만 생성이 가능함.

Object.prototype.constructor

인스턴스의 프로토타입을 만든 Object 함수의 참조를 반환한다.

모든 객체는 자신의 prototype으로부터 constructor 속성을 상속한다.

학습할 키워드

yield

prototype

알고리즘 일지

1. Sum of two lowest positive integers

Create a function that returns the sum of the two lowest positive numbers given an array of minimum 4 positive integers. No floats or non-positive integers will be passed.

For example, when an array is passed like [19, 5, 42, 2, 77], the output should be 7.

[10, 343445353, 3453445, 3453545353453] should return 3453455.

내 풀이

function sumTwoSmallestNumbers(numbers) {  
  //Code here
  numbers.sort((a, b) => a-b);
  return numbers[0] + numbers[1];
}

다른 풀이

function sumTwoSmallestNumbers(numbers) {  
  var [ a, b ] = numbers.sort((a, b) => a - b)
  return a + b
}

오.. 디스트럭팅 처리해서 반환활 값을 받아버리는 경우도 있군 .. 근데 맨 앞에 숫자가 자동으로 되나 ..? 이거 확인해봐야할 듯 ! 그건 그렇고 내 풀이가 공간복잡도로만 보면 더 좋음 ㅎㅁㅎ

profile
이번생은 개발자

0개의 댓글