**
값은 메모리에 저장된 데이터 그 자체 이며 모든 값은 항상 특정한 데이터 타입을 가집니다.
흔히 말하는 integer, string, long 등은 데이터 타입입니다.
int 100을 예로 들면 integer타입 값 100이라고 이야기 할 수 있습니다.
(데이터 타입은 메모리에 저장된 값을 해석하는 파서라고 볼 수 있습니다.)
평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미합니다.
즉 10 + 20 은 수식으로 평가되어 숫자 30이란 값을 생성합니다.
평가에는 우선 순위가 있습니다.
20 + (10 * 30) 이 경우 10 * 30이 20 + ()보다 우선 됩니다.
평가는 데이터 타입에 따라 값이 달라집니다.
10 + "20" 은 string값으로 평가되어 "1020"의 값을 가집니다.
평가는 조건문에 따라 필요할때만 평가가 됩니다.
표현식은 자바스크립트에서 가장 기본적인 요소 중 하나입니다.
모든 자바스크립트 코드 로직은 표현식의 평가를 기반으로 동작합니다.
// 숫자 리터럴
42;
// 문자열 리터럴
"Hello, world!";
// 불리언 리터럴
true;
// 배열 리터럴
[1, 2, 3];
// 객체 리터럴
{ name: "Alice", age: 25 };
// 변수 참조
let sum = 50;
sum; // 변수 sum을 참조
// 객체의 속성 참조
let person = { name: "Bob", age: 30 };
person.name; // 객체 person의 name 속성
// 배열의 요소 참조
let arr = [10, 20, 30];
arr[1]; // 배열 arr의 두 번째 요소, 결과는 20
// 산술 연산
10 + 20; // 덧셈, 결과는 30
10 * 3; // 곱셈, 결과는 30
// 비교 연산
10 > 5; // 결과는 true
sum === 50; // 결과는 true
// 논리 연산
true && false; // 결과는 false
10 < 20 || false; // 결과는 true
// 할당 연산
let result;
result = 10; // 변수 result에 10 할당
// 함수 호출
function square(x) {
return x * x;
}
square(5); // 결과는 25
// 객체 메서드 호출
let person = {
name: "Alice",
greet() {
return `Hello, ${this.name}`;
},
};
person.greet(); // 결과는 "Hello, Alice"
이제 문에 대해서 알아봅시다.
문은 컴퓨터에게 수행할 작업을 지시하며 , 프로그램의 실행 흐름을 제어합니다.
자바스크립트는 문의 집합으로 구성되며, 실행문은 정해진 순서대로 실행됩니다.
토큰은 문법적으로 더 쪼갤 수 없는 코드의 기본 요소입니다.
문은 여러개의 토큰으로 구성됩니다.
let x = 10;
// let 변수 선언 토큰
// x 식별자 토큰
//= 할당 연산자 토큰
//10 숫자 리터럴
//; 구분자
문은 역할에 따라 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있습니다.
// 선언문
// 변수 선언문
let x;
// 함수 선언문
function greet() {
console.log("Hello, world!");
}
// 클래스 선언문
class Person {
constructor(name) {
this.name = name;
}
}
//할당 문
x = 10; // 할당문 (변수 x에 값 10을 저장)
// 표현식을 활용한 할당
let y = x + 5; // x + 5의 결과(15)를 y에 할당
//조건문
let x = 10;
// 단일 조건문
if (x > 5) {
console.log("x는 5보다 큽니다");
}
// 조건 분기
if (x > 10) {
console.log("x는 10보다 큽니다");
} else {
console.log("x는 10 이하입니다");
}
// 여러 조건 분기
if (x > 15) {
console.log("x는 15보다 큽니다");
} else if (x > 5) {
console.log("x는 5보다 크고 15 이하거나 같습니다");
} else {
console.log("x는 5 이하거나 같습니다");
}
// 반복문
// for 반복문
for (let i = 0; i < 5; i++) {
console.log(i); // 0, 1, 2, 3, 4 출력
}
// while 반복문
let count = 0;
while (count < 3) {
console.log(count);
count++;
}
// do-while 반복문
let n = 0;
do {
console.log(n);
n++;
} while (n < 2);
// 제어문
// break 문
for (let i = 0; i < 10; i++) {
if (i === 5) break; // i가 5이면 반복문 종료
console.log(i);
}
// continue 문
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) continue; // 짝수는 건너뜀
console.log(i); // 홀수만 출력
}
// return 문
function square(x) {
return x * x; // 함수 실행 종료 후 결과 반환
}
console.log(square(4)); // 16 출력
Javasciprt는 문의 끝을 나타내는 (;)을 굳이 작성하지 않아도, 자동 삽입 기능을 통해 암묵적으로 추가합니다. 이는 의도지 않는 오류를 불러오기 때문에 동작 원리를 이해해야 합니다.
let x = 5
let y = 5
console.log(x + y)
// 줄 바꿈이 있는 경우 문이 끝났다고 생각하여 모든 문에 ;가 자동적으로 붙습니다.
let x = 5 [x, y] = [1,2]
// 문법 오류 방지의 차원에서 문에 ;가 붙습니다.
var foo() {
console.log('foo hi')
}
//{} 블록 자체가 종결성을 가지는 구조이기 때문에 , 코드 블록이 종료 된 뒤에는 세미콜론이 추가되지 않습니다.