05장 표현식과 문
값 : 식(표현식)이 평가되어 생성된 결과
리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
표현식: 값으로 평가될 수 있는 문.
표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함.
const score= 10+10;
score; // <= 100이라는 값으로 표현할 수 있으므로 식별자 참조또한 표현식이다.
문 : 프로그램을 구성하는 기본 단위이자 최소 실행 단위. = 명령문
문은 여러 토큰으로 구성
토큰: 문법적 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
표현식은 전부 문이며, 문 중에는 표현식인 문과 표현식이 아닌 문이 있다.
변수에 할당가능한 문은 표현식인 문이다.
var foo = var x; //에러
// 변수 선언문(var x)은 변수에 할당(var foo)할 수 없고 값으로 평가될 수 없기 때문에
//변수 선언문은 표현식이 아닌 문이다.
var y ;
console.log(y=10); //10
// 할당문(y=10)은 표현식인 문이다.
크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 언제나 undefined 를 출력하며 이를 완료값이라 한다. 완료값은 표현식의 평가 결과가 아니다.
표현식이 아닌 대표적인 문
- 변수 선언문
- 조건문
var lee ; //변수 선언문
if (true){} //조건문
06장 데이터 타입
7개 타입
- 원시 타입 : undefined, null, symbol, string, number, boolean
- 객체 타입 : object(함수,객체,배열 등)
숫자 타입
- js 에서는 독특하게 하나의 숫자 타입만 존재
-> 2지누,8진수 등의 데이터 타입을 제공하지 않기 때문에 이들을 참조하면 모두 10진수로 해석됨.
- 숫자 타입은 모두 실수 처리됨.
- Infinity, -Infinity, NaN 등의 특별한 값도 표현 가능
var binary = 0b01000001; //2진수
var hex = 0x41; // 16진수
console.log(binary); //65
console.log(hex); // 65
console.log(hex === binary); //true
console.log(1 === 1.0); //true
문자열 타입
- js의 문자열은 원시타입이며 변경 불가능한 값.
undefined 타입
- 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값
"선언"과 "정의"
정의: 어떤 대상을 명확하게 규정하는 것
undefined= 정의되지 않은
변수는 "선언한다" ,함수는 "정의한다"
null 타입
- 개발자가 변수에 값이 없다는 것을 의도적으로 명시할 때 사용
- 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null 반환하기도 함.
변수에 null을 할당한다 = 변수가 이전에 참조했던 값을 더이상 참조하지 않겠다
var element = document.querySelector(".myClass");
console.log(element); //null
심벌 타입
- 변경 불가능하고 다른 값과 중복되지 않는 유일무이한 값.
- 객체의 유일한 프로퍼티 키를 만들때 사용.
자바스크립트는 동적 타입 언어.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라고 한다.
동적 타입 언어의 유연함으로 생기는 버그 발생을 줄이기 위해
- - 변수는 꼭 필요한 경우만 제한적으로 사용하자!
- - 변수의 유효 범위(스코프)를 최대한 좁게 만들자!
- - 전역 변수는 최대한 사용하지 말자!
- - 변수보다는 상수를 사용해 값의 변경을 막자!
- - 변수 이름을 의미있게 짓자!
'독서' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 15장~17장 (0) | 2024.02.23 |
---|---|
[모던 자바스크립트 Deep Dive] 11장~14장 (0) | 2024.02.12 |
[모던 자바스크립트 Deep Dive] 09,10장 (1) | 2024.02.04 |
[모던 자바스크립트 Deep Dive] 07장 연산자,08장 제어문 (0) | 2024.02.02 |
[모던 자바스크립트 Deep Dive] 04 장 변수 (0) | 2023.10.10 |