
데이터 타입은 프로그래밍 언어에서 사용할 수 있는 여러 가지 형태의 데이터를 분류한 것입니다. 이는 숫자, 문자열, 불리언 등을 포함하며, 이들 각각의 데이터 타입은 특정 연산이나 처리를 위해 사용됩니다.
number (숫자형)string (문자열)boolean (논리값)undifinednullsymbol object (객체)array (배열)funtion (함수)자바스크립트에서 원시 타입은 값 자체를 직접 메모리에 저장하는 기본적인 데이터 타입입니다. 이 값은 한 번 설정하면 변경할 수 없습니다. 이를 불변성(Immutability)이라고 합니다. 값이 생성되면, 그 값을 변경할 수 없으며, 값이 바뀌는 것처럼 보이는 경우 실제로는 새로운 값을 생성하는 것입니다. 메모리에 직접 저장되므로 참조 타입보다 처리 속도가 빠릅니다.
Infinity, -Infinity, NaN 등을 특수 숫자 값으로 취급합니다. Infinity는 어떤 수보다도 큰 특수 값으로, 어떤 수를 0으로 나누려고 하거나 너무 큰 값을 계산할 때 반환됩니다. -Infinity는 Infinity의 반대값입니다. NaN(Not a Number)은 계산 중에 오류가 발생했음을 나타내는 값으로, 숫자가 아닌 값을 숫자로 변환하려고 할 때 반환됩니다.PEMDAS - 수학에서 우선 순위를 결정하는 규칙을 나타내는 약자입니다. 괄호(Parentheses), 지수(Exponents), 곱셈과 나눗셈(Multiplication and Division), 덧셈과 뺄셈(Addition and Subtraction) 순으로 연산을 수행해야 한다는 것을 의미합니다.// 숫자형 변수 선언 및 초기화
let num1 = 42; // 정수
let num2 = 3.14; // 부동 소수점 숫자
// 덧셈 연산
let sum = num1 + num2;
console.log("덧셈 결과:", sum); // 출력: 45.14
// 곱셈 연산
let product = num1 * num2;
console.log("곱셈 결과:", product); // 출력: 131.88
// 나눗셈 연산
let quotient = num1 / num2;
console.log("나눗셈 결과:", quotient); // 출력: 13.414...
// 정수 나눗셈
let integerDivision = Math.floor(num1 / num2);
console.log("정수 나눗셈 결과:", integerDivision); // 출력: 13
// 제곱 연산
let square = Math.pow(num1, 2);
console.log("제곱 결과:", square); // 출력: 1764
// 곱셈을 먼저 계산
let num3 = 3 + 1 * 9;
console.log(num3); // 출력: 12
// 괄호안에 내용을 먼저 계산
let num4 = (3 + 1) * 9;
console.log(num4); // 출력: 36
문자열은 작은따옴표(''), 큰따옴표(""), 백 틱( )으로 둘러싸인 문자의 집합을 의미한다.
// 문자열 변수 선언 및 초기화
let str1 = "Hello"; // 작은 따옴표로 감싸진 문자열
let str2 = "world"; // 큰 따옴표로 감싸진 문자열
let str3 = "John";
// 템플릿 리터럴 사용
let greeting = `Hello, ${name}!`; // 출력 Hello, John!
// 백틱으로 감싸진 문자열
// ${} 기호를 사용하여 변수나 표현식을 삽입할 수 있습니다.
// 문자열 연결(Concatenation)
let greeting2 = str1 + ", " + str2 + "!";
console.log("인사말:", greeting2); // 출력: Hello, world!
// 문자열 길이(Length)
let length = str1.length;
console.log("문자열 길이:", length); // 출력: 5
// 문자열 일부 추출(Slice)
let part = str2.slice(0, 3);
console.log("일부 문자열:", part); // 출력: wor
// 0부터 3 직전까지의 부분 문자열을 가져옵니다.
// 문자열 대체(Replace)
let replaced = str1.replace("Hello", "Hi");
console.log("문자열 대체:", replaced); // 출력: Hi
// (대체할 대상 문자열, 대체될 새로운 문자열)
// 문자열 검색(Search)
let position = str2.indexOf("world");
console.log("문자열 위치:", position); // 출력: 0 (첫 번째 위치부터 검색하여 "world"를 찾음)
문자열 양쪽 끝의 공백을 제거합니다.
let str5 = " Hello, world! ";
console.log(str5.trim()); // "Hello, world!"
문자열을 대문자로 변환하여 반환합니다.
let msg = "leave me alone right now i hate you plz";
let result2 = msg.toUpperCase();
console.log(result2); // LEAVE ME ALONE RIGHT NOW I HATE YOU PLZ
문자열을 소문자로 변환하여 반환합니다.
let msg = "HELLO WORLD";
let result2 = msg.toLowerCase();
console.log(result2); // hello world
문자열에서 특정 문자열이 처음 나타나는 위치의 인덱스를 반환합니다.
let msg = "haha that is so funny!";
// 문자열에서 "h"의 인덱스 위치를 콘솔에 출력합니다. 결과는 0입니다.
console.log(msg.indexOf("h")); // 0
// 문자열에서 "!"의 인덱스 위치를 콘솔에 출력합니다. 결과는 21입니다.
console.log(msg.indexOf("!")); // 21
// 문자열에서 "$"의 인덱스 위치를 콘솔에 출력합니다. "$" 문자가 없으므로 결과는 -1입니다.
console.log(msg.indexOf("$")); // -1
// 문자열에서 "is"의 인덱스 위치를 콘솔에 출력합니다. 결과는 10입니다.
console.log(msg.indexOf("is")); // 10
문자열의 일부분을 추출하여 새로운 문자열을 반환합니다.
let msg = "haha that is so funny!";
// 문자열의 6번째 문자부터 끝까지 출력합니다. ("that is so funny!")
console.log(msg.slice(5));
// 문자열의 6번째 문자부터 9번째 문자까지 출력합니다. ("that")
console.log(msg.slice(5, 9));
// 문자열의 6번째 문자부터 10번째 문자까지 출력합니다. ("that ")
console.log(msg.slice(5, 10));
// 문자열의 11번째 문자부터 12번째 문자까지 출력합니다. ("is")
console.log(msg.slice(10, 12));
// 문자열의 뒤에서 6번째 문자부터 끝까지 출력합니다.
console.log(msg.slice(-6));
문자열에서 특정 문자열 또는 정규 표현식과 일치하는 부분을 다른 문자열로 대체할 때 사용됩니다.
let msg = "haha that is so funny!";
// 문자열에서 "haha"를 찾아 "lololololo"로 대체하고, 그 결과를 콘솔에 출력합니다.
console.log(msg.replace("haha", "lololololo"));
문자열을 주어진 횟수만큼 반복하여 결합한 새로운 문자열을 반환합니다.
let msg = "안녕하세요";
// 안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요
console.log(msg.repeat(5));
// 불리언 변수 선언 및 초기화
let isRaining = true; // 비가 오고 있는지 여부를 나타내는 변수
// 조건문을 사용하여 불리언 값에 따른 처리
if (isRaining) {
console.log("우산을 가져가세요."); // 출력: 우산을 가져가세요.
} else {
console.log("우산은 필요 없어요.");
}
// 불리언 값을 반환하는 함수 정의
function isEven(number) {
return number % 2 === 0; // 짝수이면 true, 홀수이면 false 반환
}
// 함수 호출 및 결과 출력
console.log("10은 짝수인가요?", isEven(10)); // 출력: true
console.log("7은 짝수인가요?", isEven(7)); // 출력: false
// 변수 선언만 하고 값을 할당하지 않은 경우
let x;
console.log("변수 x의 값:", x); // 출력: undefined
// 함수에서 반환값을 지정하지 않은 경우
function greet(name) {
console.log("Hello, " + name);
}
let message = greet("Alice"); // 함수는 Hello, Alice를 출력하고, 반환값이 없으므로 message는 undefined가 됨
console.log("함수의 반환값:", message); // 출력: undefined
// 객체에서 존재하지 않는 속성에 접근한 경우
let person = {
name: "John",
age: 30,
};
console.log("직업:", person.job); // 출력: undefined
// 배열에서 존재하지 않는 요소에 접근한 경우
let colors = ["red", "green", "blue"];
console.log("세 번째 색상:", colors[2]); // 출력: blue
console.log("네 번째 색상:", colors[3]); // 출력: undefined
// 변수에 명시적으로 null 할당
let user = null;
console.log("사용자 정보:", user); // 출력: null
// 객체 속성에 null 할당
let person = {
name: "John",
age: 30,
job: null,
};
console.log("직업:", person.job); // 출력: null
// 함수의 반환값으로 null 반환
function findUser(id) {
if (id === 123) {
return { id: 123, name: "Alice" };
} else {
return null; // 사용자를 찾을 수 없을 때 null 반환
}
}
let foundUser = findUser(456);
if (foundUser === null) {
console.log("사용자를 찾을 수 없습니다."); // 출력: 사용자를 찾을 수 없습니다.
} else {
console.log("사용자 정보:", foundUser); // 출력되지 않음
}
// 심볼 key는 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키
var key = Symbol("key");
console.log(typeof key); // symbol
var obj = {};
obj[key] = "value";
console.log(obj[key]); // value
자바스크립트에서 참조 타입은 값이 메모리에 직접 저장되는 것이 아니라, 그 값을 저장하는 메모리 위치를 참조하는 데이터 타입입니다. 참조 타입의 변수는 메모리 위치를 참조하므로, 원시 타입과는 다르게 값을 변경할 수 있습니다. 이를 가변성(Mutability)이라고 합니다. 객체, 배열, 함수 등이 이에 해당하며, 메모리에 직접 저장되는 원시 타입에 비해 처리 속도가 느립니다.
key : value 쌍으로 구성된 데이터 집합이나 복잡한 개체(entity)를 저장할 수 있습니다.{…}를 이용해 만들 수 있습니다. 중괄호 안에는 키(key): 값(value) 쌍으로 구성된 프로퍼티(property) 를 여러 개 넣을 수 있는데, key엔 문자형, value엔 모든 자료형이 허용됩니다.// 객체 생성
let person = {
name: "John", // 문자열 속성
age: 30, // 숫자 속성
isStudent: false, // 불리언 속성
address: {
// 중첩된 객체
city: "New York",
zipCode: "10001",
},
hobbies: ["reading", "traveling", "photography"], // 배열 속성
};
// 객체 속성에 접근
console.log("이름:", person.name); // 출력: John
console.log("나이:", person.age); // 출력: 30
console.log("학생 여부:", person.isStudent); // 출력: false
console.log("도시:", person.address.city); // 출력: New York
console.log("취미:", person.hobbies[0]); // 출력: reading
// 객체 속성 추가 및 수정
person.gender = "male"; // 속성 추가
person.age = 31; // 속성 수정
console.log("성별:", person.gender); // 출력: male
console.log("나이:", person.age); // 출력: 31
// 배열 생성
let colors = ["red", "green", "blue", "yellow"];
// 배열 요소에 접근
console.log("첫 번째 색상:", colors[0]); // 출력: red
console.log("세 번째 색상:", colors[2]); // 출력: blue
// 배열 길이
console.log("배열 길이:", colors.length); // 출력: 4
// 배열 순회
console.log("모든 색상:");
for (let i = 0; i < colors.length; i++) {
console.log(colors[i]);
}
// 출력:
// red
// green
// blue
// yellow
// 배열 요소 추가
colors.push("orange");
console.log("새로운 색상 추가 후:", colors);
// 출력: ["red", "green", "blue", "yellow", "orange"]
// 배열 요소 제거
let removedColor = colors.pop();
console.log("마지막 색상 제거 후:", colors); // 출력: ["red", "green", "blue", "yellow"]
console.log("제거된 색상:", removedColor); // 출력: orange
// 함수 정의
function greet(name) {
console.log("Hello, " + name + "!");
}
// 함수 호출
greet("Alice"); // 출력: Hello, Alice!
greet("Bob"); // 출력: Hello, Bob!