1. 원시 타입 (Primitive Types)
원시 타입은 불변의 값으로, 값 자체가 변수에 저장됩니다.
Number Type
// Number 타입은 64비트 부동 소수점 형식으로 숫자를 저장합니다.
let x = 0.1 + 0.2;
console.log(x); // 출력: 0.30000000000000004, 부동소수점 연산의 예
// 특수 숫자 값
console.log(1 / 0); // Infinity
console.log("not a number" / 2); // NaN, Not a Number
BigInt Type
// BigInt는 아주 큰 정수를 다룰 수 있습니다.
const hugeNumber = BigInt(9007199254740991);
console.log(hugeNumber + 1n); // 9007199254740992n
*String Type
표기법 : 쌍따옴표,백팃(``)
백팃 (ES6) 이후부터 사용 가능
문자열 처리 기능 제공(줄바꿈허용,표현식 삽입)
// 문자열은 불변(immutable)하며, UTF-16 형식으로 인코딩됩니다.
let greeting = `Hello, ${"World"}`;
console.log(greeting); // 출력: Hello, World
Boolean Type
// Boolean 타입은 true 또는 false 값을 가질 수 있습니다.
let isJavaScriptFun = true;
console.log(isJavaScriptFun); // 출력: true
Undefined Type
// 변수가 선언되었으나 값이 할당되지 않은 상태
let thisIsUndefined;
console.log(thisIsUndefined); // 출력: undefined
Null Type
// null은 의도적으로 "값 없음"을 표현할 때 사용합니다.
let emptyValue = null;
console.log(emptyValue); // 출력: null
Symbol Type
// Symbol은 유일무이한 값을 생성할 때 사용합니다.
let symbol1 = Symbol('id');
let symbol2 = Symbol('id');
console.log(symbol1 === symbol2); // 출력: false, 각 심볼은 고유함
*2. 객체 타입 (Object Types)
객체 타입은 참조를 통해 메모리에 저장되며, 속성과 메소드를 포함할 수 있습니다
// 객체는 여러 속성을 포함할 수 있으며, 속성 값으로 함수도 포함될 수 있습니다 (메소드).
let person = {
name: "John",
age: 30,
greet: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
console.log(person.name); // 출력: John
person.greet(); // 출력: Hello, my name is John
// 객체는 변경 가능(mutable)하여 속성을 추가, 수정, 삭제할 수 있습니다.
person.age = 31; // 나이 수정
console.log(person.age); // 출력: 31
delete person.age; // 나이 속성 삭제
console.log(person.age); // 출력: undefined
이러한 예제들은 JavaScript의 다양한 데이터 타입을 사용하는 방법을 보여줍니다. 원시 타입은 값이 변하지 않는 반면, 객체 타입은 속성이 변경 가능하고 메모리에서는 참조를 통해 관리됩니다.
3. 연산자
1. 단항 연산자
단항 연산자는 하나의 피연산자만을 사용합니다.
// typeof 연산자: 피연산자의 타입을 문자열로 반환합니다.
let type = typeof "Hello";
console.log(type); // "string"
// delete 연산자: 객체의 속성을 삭제합니다.
let obj = { name: "John", age: 30 };
delete obj.age;
console.log(obj); // { name: "John" }
2. 산술 연산자
단항 산술 연산자
// 전위 증가 연산자: 값을 증가시키고 업데이트된 값을 반환합니다.
let a = 5;
console.log(++a); // 6
// 후위 감소 연산자: 값을 감소시키고 감소 전의 값을 반환합니다.
let b = 5;
console.log(b--); // 5
console.log(b); // 4
이항 산술 연산자
// % 연산자: 나눗셈의 나머지를 반환합니다.
let remainder = 7 % 3;
console.log(remainder); // 1
*3. 관계 연산자
// in 연산자: 속성이 객체 안에 존재하면 true 반환합니다.
let car = { make: "Toyota", model: "Camry" };
console.log("make" in car); // true
// instanceof 연산자: 객체가 특정 클래스의 인스턴스인 경우 true 반환합니다.
let date = new Date();
console.log(date instanceof Date); // true
4. 비교 연산자
// == 연산자: 값이 같으면 true 반환합니다.
console.log(1 == "1"); // true
// === 연산자: 값과 타입이 모두 같으면 true 반환합니다.
console.log(1 === "1"); // false
*4. 함수 및 일급 객체
함수 선언 및 호출 방법
// 함수 선언문
function greet() {
console.log("Hello!");
}
greet(); // "Hello!"
// 함수 표현식
const square = function(x) {
return x * x;
};
console.log(square(4)); // 16
// 화살표 함수
const add = (a, b) => a + b;
console.log(add(3, 4)); // 7
*즉시 실행 함수 표현식 (IIFE)
(function() {
console.log("Immediately Invoked Function Expression (IIFE)");
})();
재귀 함수
// 간단한 재귀 함수 예제: 팩토리얼 계산
function factorial(n) {
if (n === 0) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120
*콜백 함수
// 콜백 함수 사용 예: 배열의 각 요소에 대해 함수 실행
function processArray(arr, callback) {
for (let element of arr) {
callback(element);
}
}
processArray([1, 2, 3], element => console.log(element * 2));
'클라우딩 어플리케이션 엔지니어링 TIL > 4주차' 카테고리의 다른 글
[파트07] 언어가 갖고 있는 매커니즘 (0) | 2024.05.02 |
---|---|
[파트06]데이터처리 > 객체와빌트인객체 (0) | 2024.05.02 |
[파트05] 데이터 처리 (0) | 2024.04.30 |
[파트2] JavaScript 입문 (0) | 2024.04.29 |