Search

2장 표현식 & 문

대분류
언어
서적
소분류
JS DeepDive
주요 레퍼런스
https://velog.io/@hustle-dev/%EB%AA%A8%EB%8D%98-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Deep-Dive-15%EC%9E%A5#%EB%B3%80%EC%88%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80
태그
표현식
세미콜론
언어비교
런타임
최종 편집 일시
2024/10/27 15:42
생성 일시
2024/01/24 10:46
13 more properties

식이 평가되어 생성된 결과 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; // 표현식이면서 완전한 문 (표현식인 문)
JavaScript
복사
값이 위치할 수 있는 자리에는 표현식도 위치할 수 있다.
표현식인 문은 값처럼 사용 가능

문 & 토큰

프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.
토큰 : 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
var sum = 1 + 2; // 문 // var, sum, = , 1, +, 2, ; = 토큰
JavaScript
복사
// 변수 선언문 var x; // 할당문 x = 5; // 함수 선언문 function foo() {} // 조건문 if(x>1) { console.log(x); } // 반복문 for(var i = 0; i < 2; i++) { console.log(i); }
JavaScript
복사

세미콜론 ;

문의 종료 (세미콜론 자동 삽입 기능(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
JavaScript
복사

런타임

런타임 --> 코드가 실행되는 시점
런타임에러 --> 사용자가 실행을 시켰을 때 에러

동적 vs 정적 언어

동적 타입 언어 --> 변수 선언시 변수의 타입 정보를 알려 주지 않음
정적 타입 언어 --> 변수 선언시 변수 타입 정보를 알려줌 (c같은거 int a) --> 메모리 절약

절차형 vs 선언형 언어

절차형 --> 지금까지 작성한 프로그래밍 언어
선언형 --> 모던 자바스크립트 환경(리액트)
비동기 --> 데이터를 제외한 나머지 부분을 그리고 나서 데이터가 도착하면 데이터를 그리기 시작함

가독성 > 효율

가독성 측면에서 함수형이 많이 권장
for문은 지양하자.