728x90
반응형
값
- 식이 평가되어 생성된 결과 Value
- 10 + 10; //30
초기화
- 개발자가 명시적으로 처음 값을 할당하는 것
- JS엔진은 선언문이 실행이 되면 암묵적으로 undefined로 할당
리터럴
- 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 - 생겨 먹은 대로 불리는거
- 숫자 리터럴 3
표현식 == 값
- 값으로 평가될 수 있는 문 (선언문X)
- 표현식이 평가 되면 새로운 값을 참조하거나 기존 값을 참조
// 리터럴 표현식
10
'Hello'
// 식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.name
arr[1]
// 연산자 표현식
10 + 20
sum = 10
sum !== 10
// 함수/메서드 호출 표현식(선언이 이미 존재한다고 가정)
square()
person.getName()
var x; // 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다. (표현식이 아닌문)
x = 1 + 2; // 표현식이면서 완전한 문 (표현식인 문)
값이 위치할 수 있는 자리에는 표현식도 위치할 수 있다.
표현식인 문은 값처럼 사용 가능
문 & 토큰
- 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.
- 토큰 : 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
var sum = 1 + 2; // 문
// var, sum, = , 1, +, 2, ; = 토큰
// 변수 선언문
var x;
// 할당문
x = 5;
// 함수 선언문
function foo() {}
// 조건문
if(x>1) { console.log(x); }
// 반복문
for(var i = 0; i < 2; i++) { console.log(i); }
세미콜론 ;
- 문의 종료 (세미콜론 자동 삽입 기능(ASI))
- 하지만 예측과 일치하지 않는 경우가 있어 세미콜론 사용(수동이나 포매터(Prettier 등))을 권장
function foo () {
return
{}
// ASI의 동작 결과 => return; {};
// 개발자의 예측 => return {};
}
console.log(foo()); // undefined
var bar = function () {}
(function() {})();
// ASI의 동작 결과 => var bar = function () {}(function() {})();
// 개발자의 예측 => var bar = function () {}; (function() {})();
// TypeError: (intermediate value)(...) is not a function
런타임
- 런타임 --> 코드가 실행되는 시점
- 런타임에러 --> 사용자가 실행을 시켰을 때 에러
동적 vs 정적 언어
- 동적 타입 언어 --> 변수 선언시 변수의 타입 정보를 알려 주지 않음
- 정적 타입 언어 --> 변수 선언시 변수 타입 정보를 알려줌 (c같은거 int a) --> 메모리 절약
절차형 vs 선언형 언어
- 절차형 --> 지금까지 작성한 프로그래밍 언어
- 선언형 --> 모던 자바스크립트 환경(리액트)
- 비동기 --> 데이터를 제외한 나머지 부분을 그리고 나서 데이터가 도착하면 데이터를 그리기 시작함
가독성 > 효율
- 가독성 측면에서 함수형이 많이 권장
- for문은 지양하자.
반응형
'언어 > JavaScript Deepdive' 카테고리의 다른 글
5장 : 제어문 (0) | 2024.03.31 |
---|---|
4장 : 연산자 (0) | 2024.03.31 |
3장 : 데이터 타입 (0) | 2024.03.31 |
1장 : 변수 & 식별자 (0) | 2024.03.31 |
0장 : 개발자 도구 & JavaScript (0) | 2024.03.31 |