2022. 8. 24. 01:17ㆍFE/JavaScript
값
값은 식이 평가되어 생성된 결과를 말한다.
평가란 식을 해석해서 값을 생성하거나 참조하는 것을 말한다.
모든 값은 데이터 타입을 가지고 메모리에 2진수 비트의 나열로 저장된다.
값을 연산을 통해 생성할 수 있지만 기본적으로 리터럴을 사용하는 것이다.
리터럴
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
3
3은 숫자 리터럴로 자바스크립트 엔진은 이를 평가해서 숫자 값 3을 생성한다.
리터럴을 사용하면 다양한 종류의 데이터 타입 값을 생성할 수 있다.
정수 리터럴
100
부동소수점 리터럴
10.5
2진수 리터럴
0b로 시작
8진수 리터럴
0o로 시작
16진수 리터럴
0x로 시작
문자열 리터럴
' ', " "로 감싸진 데이터
불리언 리터럴
true, false
null 리터럴
null
undefined 리터럴
undefined
객체 리터럴
{key : value}
배열 리터럴
[e1, e2, e3]
함수 리터럴
function() { }
정규 표현식 리터럴
/[A-Z]+/g
표현식 (expression)
값으로 평가될 수 있는 문이다.
표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
// 리터럴 표현식
10
'Hello'
// 식별자 표현식 (이미 선언됨)
sum
person.name
arr[1]
// 연산자 표현식
10 + 20
sum = 10
sum !== 10
// 함수,메서드 호출 표현식 (이미 선언됨)
square()
person.getName()
문 (statement)
문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
문의 집합으로 이루어진 것이 프로그램이고 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다.
문은 여러 개의 토큰으로 구성된다.
※ 토큰
문법적인 의미를 가지고 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표 등 특수 기호는 문법적인 의미를 가지고 더 이상 나눌 수 없는 코드의 기본 요소이다.
문은 명령문이라고도 부르고 선언문, 할당문, 조건문, 반복문 등이 있다.
// 변수 선언문
var x;
// 할당문
x = 100;
// 함수 선언문
function foo () {}
// 조건문
if (x > 1) {console.log(x);}
// 반복문
for (var i = 0; i<2; i++) {console.log(i);}
세미콜론과 세미콜론 자동 삽입 기능
세미콜론은 문의 종료를 나타낸다.
자바스크립트 엔진은 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 명령문을 실행한다.
따라서 문이 끝날 때는 세미콜론을 붙여야한다.
0 개 이상의 문을 중괄호로 묶은 코드 블록 { } 뒤에는 세미콜론을 붙이지 않는다.
이러한 코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문이다.
문의 끝에 붙이는 세미콜론은 옵션으로 생략이 가능하다.
자바스크립트 엔진이 소스코드를 해석할 때 문의 끝이라고 예측되는 시점에 세미콜론을 자동으로 붙여주는 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문이다.
자동 삽입 기능 동작이 개발자의 예측과 일치하지 않는 경우도 있기 때문에 붙이는게 더 좋은 것 같다.
표현식인 문과 표현식이 아닌 문
var x; // 명령문
1 + 2 // 표현식
x = 1 + 2; // 명령문이면서 표현식
할당문은 자체가 표현식이다.
표현식이기 때문에 값처럼 사용할 수 있다.
var x;
console.log(x = 100);
※ 완료값
크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 언제나 undefined를 출력한다.
이를 완료 값이라 한다.
완료 값은 표현식의 평가 결과가 아니다. 따라서 다른 값과 같이 변수에 할당할 수 없고 참조할 수도 없다.
'FE > JavaScript' 카테고리의 다른 글
[JavaScript] 연산자 (0) | 2022.09.09 |
---|---|
[Java Script] 데이터 타입 (0) | 2022.08.24 |
[Java Script] 변수 (0) | 2022.08.23 |
[Javascript] 자바스크립트 실행환경 (0) | 2022.08.23 |
[Javascript] 자바스크립트란 (0) | 2022.08.23 |