-
모던 자바스크립트: 동작원리 & 함수 다루기코드잇 부스트 2024. 5. 30. 11:19
모던 자바스크립트란?
JS는 시간이 지나며 유용한 기능이 추가되고 발전하는데 ECMA international에서 이를 관리한다.
새로운 내용이 추가될 때마다 ES1, ES2, ~, 로 출시중이다.
웹 브라우저는 최신버전을 항상 완벽하게 지원하지는 못한다.
따라서 현시점에서 사용하기 적합한 범위 내에서 최신 버전의 표준을 준수하는 스크립트를 모던 자바스크립트라고 부르게 되었다.
자바스크립트의 동작원리
-데이터 타입의 특징과 종류
유연한 데이터 타입: 상황에 따라 타입이 변할 수 있음. (연산 등)
추가된 데이터:
- Symbol: 유일한 값
`const user = Symbol('this is a user');`
이런식으로 사용한다~
어떤 값과 비교해도 false를 반환한다.
- BigInt: 엄청 큰 수
Int로 표현할 수 있는 안전한 수의 범위는 `2**53 - 1` ~ `-(2**53 - 1)`이다.
이 이상을 표현할 때 BigInt를 사용하면 된다.typeof 연산자-typeof 연산자
-불린인 듯 불린 아닌 불린같은 값
조건문의 조건부에서는 불린타입이 아닌 값도 불린형으로 평가된다.
*falsy: `false, null, undefined, NaN, 0, ‘’`-And와 OR의 연산방식
And, Or 연산자는 좌우의 값 중 하나를 선택하여 반환한다.
왼쪽값이 ture면 오른쪽, false면 왼쪽 값을 반환함.
*And가 Or보다 우선순위가 높다!-null 병합연산자
??로 null이나 undefined 값을 가려낼 수 있다.
`const example1 = null ?? 'I';
const example2 = undefined ?? 'love';
const example3 = 'Codeit' ?? 'JavaScript';`-변수와 스코프
var, val은 Hoisting 문제가 있음 (선언문 윗 코드에서 변수를 사용가능한 문제)
또한 변수의 중복 선언 및 함수에서만 스코프를 인식해 지역변수로 사용되는 문제가 있는데,let과 const에서는 코드블록에서도 스코프를 구분함.
함수 다루기
-함수를 만드는 방법
함수 선언: function 함수명 () {}
함수 표현식: const 함수명 = function () ⇒ {}
함수 선언은 호이스팅 문제 및 스코프 문제가 있음.
장단점이 있으니 잘 구분해서 사용하자~-이름이 있는 함수 표현식
-기명 함수 표현식:
함수 내부에서 함수를 호출 할 경우(재귀함수 등) 이름을 명시하여 그 이름을 사용한다.
-즉시 실행 함수 (IIFE)
`(function() {실행부} )();`
함수 부분을 ()로 감싼 뒤 ()를 붙이면 선언과 동시에 실행된다. (외부 재사용 불가)
주로 프로그램 초기화 기능에 많이 활용된다고 한다.
~~재귀함수를 딱 한번만 사용할 때 사용할 수 있겠지만 굳이..?~~-값으로서 함수
함수는 여러 프로퍼티를 갖는 객체이다.
어디에서나 할당되고 사용될 수 있다. (배열 객체 등)
콜백 함수: 파라미터로 들어간 함수
고차 함수: 함수를 리턴하는 함수 `함수명()()`로 즉시 고차함수 호출도 가능-Parameter
함수 선언시 넣는 값은 파라미터
함수 호출 시 넣는 값은 아규먼트
기본값을 넣으면 아규먼트가 전달되지 않은 경우나 undefined인 경우에도 기본값이 사용됨.
-Arguments
함수 내에선 `arguments` 라는 객체를 사용할 수 있다.
호출시 전달한 아규먼트를 이로 접근할 수 있다.
-Rest parameter
`function 함수명(…arg){}` 로 사용
기본적으로 Arguments와 같이 동작하지만 배열 형태로 편하게 사용할 수 있다.
함수 선언시 함수 파라미터 끝에 …arg를 사용하여 나머지 arguments만을 다룰 수 있다.
-Arrow Function
`const 함수명 = () ⇒ {}`
파라미터가 하나일 경우 ()는 생략가능.
{}와 함께 return도 생략 가능.
*arguments 객체가 없음.
-What is this?
객체에서 함수를 사용할 경우 this로 호출한 객체를 지정할 수 있음
*arrow function에서는 this 사용불가
'코드잇 부스트' 카테고리의 다른 글
자바스크립트 객체지향 기본기 (0) 2024.06.03 모던자바스크립트: 문법과 표현 & 유용한 내부 기능 (0) 2024.05.30 프로그래밍과 데이터 in JavaScript (0) 2024.05.23 프로그래밍 핵심 개념 in JavaScript (0) 2024.05.21 자바스크립트 입문 (0) 2024.05.16