자바스크립트엔 여덟 가지 자료형이 있습니다.
이 중 일곱 개는 오직 하나의 데이터(문자열, 숫자 등)만 담을 수 있어 '원시형(primitive type)'이라 부릅니다.
Reference 타입이라고도 하며, Object 클래스 뿐만 아니라, 배열과 함수, 사용자 정의 클래스, ES6에서는 Map, Set, WeakMap, WeakSet 등도 추가
- 차이점
기본형에는 바로 값을 그대로 할당한다는 것이고
참조형에는 값이 저장된 주소값을 할당(참조)한다는 것
변수란 메모리 주소(Memory address)에 접근하기 위해 사람이 이해할 수 있는 언어로 지정한 식별자(identifier)
var 변수명 = 기본값
변수명 = 기본값
var example; //변수 (example)의 선언
example : 1; //example에 정수값 할당
'값' 은 프로그램에 의해 조작될 수 있는 대상
var example = 'Hello'; //example변수에 문자열 리터럴 'Hello' 값으로 할당
// 숫자 리터럴
12.34
12345
// 문자열 리터럴
'Hi'
"Welcome"
// 불리언 리터럴
true
false
// null 리터럴
null
// undefined 리터럴
undefined
// 객체 리터럴
{ name: 'Tom', gender: 'male' }
{ name: 'Jerry', gender: 'female' }
// 배열 리터럴
[ 1, 2, 3 ]
// 정규표현식 리터럴
/ab+c/
// 함수 리터럴
function() {}
🫥 자바스크립트는 C나 Java외는 다르게 변수를 선언 시 데이터 타입을 미리 지정하지 않고, 변수에 할당된 값의 타입에 의해 동적으로 변수의 타입이 결정. 이를 동적 타이핑이라 하며 자바스크립트가 다른 프로그래밍 언어와 구별되는 특징 중 하나이다.
// 1byte 정수형: -128 ~ 127
char c;
// 4byte 정수형: -2,124,483,648 ~ 2,124,483,647
int num;
// 산술 연산자
var area = 3 * 4; // 12
// 문자열 연결 연산자
var str = 'Nice to ' + 'meet you'; // "Nice to meet you"
// 할당 연산자
var animal = 'dog'; // "dog"
// 비교 연산자
var foo = 7 > 5; // true
// 논리 연산자
var bar = (5 > 3) && (2 < 4); // true (and연산 둘다 충족해야 true)
// 타입 연산자
var type = typeof 'study'; // "string" 문자열로 이루어짐
// 인스턴스 생성 연산자
var today = new Date(); //날짜 생성
피연산자의 타입은 반드시 일치할 필요는 없다. 이때 자바스크립트는 암묵적 타입 강제 변환을 통해 연산을 수행한다.
암묵적 타입 변환이 발생하면 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동 변환한다.
var foo = 1 + '10'; // '110'
/*예제의 + 연산자는 피연산자 중 하나 이상이 문자열이므로 문자열 연결 연산자로 동작, 문자열 연결 연산자의 역할은 문자열 값을 만든다*/
var bar = 1 * '10'; // 10
var ex = 3 * 'hi' //NaN
/*자바스크립트 엔진은 산술 연산자 표현식을 평가하기 위해 산술 연산자의 피연산자 중에서 숫자 타입이 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다. 이때 피연산자를 숫자 타입으로 변환할 수 없는 경우는 산술 연산을 수행할 수 없으므로 NaN을 반환한다.*/
⭐️ 주석
// 는 한줄주석
/* */ 는 여러줄 주석
자바스크립트에서 특정한 목적을 위해 사용하는 단어
프로그램을 작성할 때, 변수명, 함수명 등 이름으로 사용할 수 없는 단어
이미 자바스크립트에서 쓰임이 정해져있는 키워드.
// 함수
function example(x, y) {
return x + y;
}
// if 문
if(x > 0) {
// do something
}
// for 문
for (var i = 0; i < 10; i++) {
// do something
}
값(리터럴), 변수, 객체의 프로퍼티, 배열의 요소, 함수 호출, 메소드 호출, 피연산자와 연산자의 조합은 모두 표현식이며 하나의 값으로 평가(Evaluation)된다.
// 표현식
1 // 1
1 * 10 // 10
1 * 10 > 10 // false
(10 * 10 > 10) && (3 * 10 < 100) // true
어떤 작업을 수행하기 위해 필요한 문(statement)들의 집합을 정의한 코드 블록이다. 함수는 이름과 매개변수를 갖으며 필요한 때에 호출하여 코드 블록에 담긴 문들을 일괄적으로 실행할 수 있다.
// 함수의 정의(함수 선언문)
function square(number) {
return number * number;
}
// 함수의 호출
square(2); // 4
square(3); // 9
square(4); // 16
함수는 호출에 의해 실행되는데 한번만 호출할 수 있는 것이 아니라 여러번 호출할 수 있다.