자바스크립트 기본문법 (변수,상수,데이터타입,연산자,주석처리,템플릿 리터럴)
2. 기본 문법
자바스크립트는 웹 개발에서 가장 많이 사용되는 프로그래밍 언어 중 하나로, 기본 문법을 익히는 것이 매우 중요합니다. 이 장에서는 자바스크립트에서 변수를 선언하고, 데이터를 다루고, 연산을 수행하는 방법 등 기본적인 문법을 다룹니다. 예시와 함께 설명하므로 실습하면서 이해할 수 있습니다.
2.1 변수와 상수 (var, let, const)
자바스크립트에서 변수를 선언하는 방법은 3가지가 있습니다: var
,
let
, const
. 이들은 각각 서로 다른 특성과 용도를
가지고 있습니다. 변수를 선언한다는 것은 데이터를 저장할 공간을 확보하고 그
공간에 값을 할당하는 것을 의미합니다.
2.1.1 var
var
는 자바스크립트의 초기 버전부터 사용되던 변수 선언 방식입니다.
그러나 var
는 몇 가지 문제가 있어 최근에는 잘 사용되지 않으며,
let
과 const
로 대체되고 있습니다.
특히 var
는 함수 범위(function scope)를 따릅니다. 즉,
var
로 선언된 변수는 함수 내부에서만 유효하지만, 함수 밖에서
선언된 경우 전역 범위로 인식됩니다.
또한 var
는 호이스팅(hoisting)이라는 개념에 의해 변수가
선언되기 전에 사용할 수 있는 문제를 가지고 있습니다. 호이스팅은 자바스크립트가
변수 선언을 스코프의 맨 위로 끌어올리는 현상을 의미합니다.
예시:
javascriptfunction exampleVar() {
console.log(myVar); // undefined
var myVar = 10;
console.log(myVar); // 10
}
exampleVar();
위 코드에서 myVar
는 선언 전에 사용되었음에도 불구하고 에러가
발생하지 않으며, 대신 undefined
가 출력됩니다. 이는 자바스크립트가
var myVar
선언을 함수 스코프의 맨 위로 끌어올렸기 때문입니다.
2.1.2 let
let
은 ES6(ECMAScript 2015)에서 도입된 변수 선언 방법으로, 블록
범위(block scope)를 따릅니다. 즉, let
으로 선언된 변수는
{}
로 감싸진 블록 내부에서만 유효합니다. let
은
var
와 달리 호이스팅 문제도 없으며, 같은 스코프 내에서 중복 선언이
허용되지 않습니다.
예시:
javascriptfunction exampleLet() {
let x = 1;
if (true) {
let x = 2; // 다른 블록의 x
console.log(x); // 2
}
console.log(x); // 1
}
exampleLet();
위 코드에서 let x
는 두 번 선언되었지만, 서로 다른 블록 내에 있기
때문에 서로 다른 변수로 인식됩니다.
2.1.3 const
const
는 상수를 선언할 때 사용됩니다. 상수(constant)란 한 번
할당되면 다시 변경할 수 없는 변수를 의미합니다. 상수는 재할당이 불가능하지만,
객체나 배열의 경우 참조 값이 고정될 뿐 객체 내부의 속성은 변경될 수 있습니다.
const
역시 let
과 마찬가지로 블록 범위를 따릅니다.
예시:
javascriptconst PI = 3.14;
console.log(PI); // 3.14
// PI = 3.14159; // Error: Assignment to constant variable
const myArray = [1, 2, 3];
myArray.push(4);
console.log(myArray); // [1, 2, 3, 4]
위 코드에서 PI
는 상수이므로 재할당이 불가능하지만,
myArray
는 배열 객체이므로 배열 내부 값은 변경할 수 있습니다.
2.2 데이터 타입
자바스크립트는 동적 타이핑(dynamically typed)을 지원하는 언어입니다. 즉, 변수의 데이터 타입이 고정되지 않고, 코드가 실행되는 동안 언제든지 변경될 수 있습니다. 자바스크립트의 데이터 타입은 크게 원시 타입(Primitive Types)과 객체 타입(Object Types)으로 나뉩니다.
2.2.1 원시 타입 (Primitive Types)
-
숫자(Number): 자바스크립트에서 숫자는
정수
와소수
구분 없이 모두number
타입으로 처리됩니다.예시:
javascriptlet age = 30; let pi = 3.14159;
-
문자열(String): 문자열은 작은 따옴표(' ') 또는 큰 따옴표(" ")로 감쌉니다. 자바스크립트에서 문자열은 변경 불가능(immutable)한 타입입니다.
예시:
javascriptlet name = "John"; let greeting = 'Hello, world!';
-
불리언(Boolean): 불리언은
true
또는false
값만 가질 수 있습니다. 주로 조건문에서 사용됩니다.예시:
javascriptlet isAdult = true; let hasLicense = false;
-
null:
null
은 "값이 없다"는 것을 의미하는 특별한 데이터 타입입니다. 개발자가 의도적으로 변수에 "비어 있음"을 명시할 때 사용합니다.예시:
javascriptlet emptyValue = null;
-
undefined:
undefined
는 변수가 선언되었지만 값이 할당되지 않은 상태를 나타냅니다. 또한, 함수에서 명시적으로 반환하지 않은 값은undefined
를 반환합니다.예시:
javascriptlet notAssigned; console.log(notAssigned); // undefined
-
심볼(Symbol):
symbol
은 고유하고 변경 불가능한 값입니다. 주로 객체의 고유한 속성 키로 사용됩니다.예시:
javascriptlet sym1 = Symbol("description"); let sym2 = Symbol("description"); console.log(sym1 === sym2); // false
2.2.2 객체 타입 (Object Types)
객체는 키-값 쌍으로 이루어진 데이터 타입입니다. 객체는 자바스크립트의 핵심 요소로, 배열, 함수, Date, RegExp 등의 데이터 구조도 객체입니다.
예시:
javascriptlet person = {
name: "Alice",
age: 25,
isStudent: true
};
console.log(person.name); // Alice
배열도 객체의 일종으로, 데이터를 순서대로 저장하는 리스트입니다.
예시:
javascriptlet fruits = ["apple", "banana", "cherry"];
console.log(fruits[1]); // banana
2.3 연산자 (산술, 비교, 논리 연산자)
연산자는 값을 계산하거나 비교하고, 논리적인 판단을 수행하는 데 사용됩니다. 자바스크립트는 다양한 연산자를 제공하며, 이를 통해 복잡한 로직을 처리할 수 있습니다.
2.3.1 산술 연산자 (Arithmetic Operators)
산술 연산자는 숫자를 계산할 때 사용됩니다.
+
: 더하기-
: 빼기*
: 곱하기/
: 나누기%
: 나머지**
: 거듭제곱 (ES6에서 도입)
예시:
javascriptlet x = 10;
let y = 3;
console.log(x + y); // 13
console.log(x - y); // 7
console.log(x * y); // 30
console.log(x / y); // 3.333...
console.log(x % y); // 1
console.log(x ** y); // 1000 (10의 3제곱)
2.3.2 비교 연산자 (Comparison Operators)
비교 연산자는 두 값을 비교하여 참(true
) 또는
거짓(false
)을 반환합니다.
==
: 동등 (값만 비교)===
: 엄격한 동등 (값과 타입 모두 비교)!=
: 같지 않음!==
: 엄격하게 같지 않음>
: 크다<
: 작다>=
: 크거나 같다<=
: 작거나 같다
예시:
javascriptlet a = 5;
let b = "5";
console.log(a == b); // true (값만 비교)
console.log(a === b); // false (값과 타입을 모두 비교)
console.log(a != b); // false
console.log(a !== b); // true
2.3.3 논리 연산자 (Logical Operators)
논리 연산자는 주로 조건문에서 참과 거짓을 조합하여 복잡한 조건을 만들 때 사용됩니다.
&&
: 논리 AND (두 조건이 모두 참일 때 참)||
: 논리 OR (두 조건 중 하나라도 참이면 참)!
: 논리 NOT (참을 거짓으로, 거짓을 참으로 바꿈)
예시:
javascriptlet isAdult = true;
let hasLicense = false;
console.log(isAdult && hasLicense); // false (둘 다 참이 아니므로)
console.log(isAdult || hasLicense); // true (하나가 참이므로)
console.log(!isAdult); // false (논리 부정)
2.4 주석 처리하기
주석은 코드에 설명을 추가하는 방법입니다. 주석은 실행되지 않으며, 코드를 이해하기 쉽게 만드는데 사용됩니다. 자바스크립트에서 주석은 한 줄 주석과 여러 줄 주석 두 가지 방식이 있습니다.
- 한 줄 주석:
//
를 사용하여 한 줄을 주석 처리합니다.
예시:
javascript// 이 코드는 두 수를 더하는 함수입니다.
function add(a, b) {
return a + b;
}
- 여러 줄 주석:
/* */
를 사용하여 여러 줄을 주석 처리합니다.
예시:
javascript/*
이 함수는 두 수를 더하는 함수입니다.
a와 b는 숫자여야 합니다.
*/
function add(a, b) {
return a + b;
}
주석은 코드를 유지보수하거나, 협업하는 개발자들이 코드의 의도를 쉽게 파악할 수 있도록 도와줍니다.
2.5 템플릿 리터럴 (Template Literals)
템플릿 리터럴은 ES6에서 도입된 기능으로, 문자열을 보다 쉽게 조합하거나 다룰 수 있게 해줍니다. 기존의 문자열 연결 방식보다 간결하고, 가독성도 높습니다.
템플릿 리터럴은 백틱(backtick, `
)을 사용하여 선언하며, 문자열
내부에 변수를 삽입하거나, 여러 줄의 문자열을 쉽게 표현할 수 있습니다.
2.5.1 변수 삽입 (Interpolation)
템플릿 리터럴을 사용하면 ${}
를 통해 문자열 내에 변수나 표현식을
삽입할 수 있습니다.
예시:
javascriptlet name = "Alice";
let age = 25;
let message = `My name is ${name} and I am ${age} years old.`;
console.log(message); // My name is Alice and I am 25 years old.
2.5.2 여러 줄 문자열 (Multiline Strings)
템플릿 리터럴은 여러 줄에 걸쳐 문자열을 작성할 수 있습니다. 기존에는 줄바꿈을
위해 \n
을 사용해야 했지만, 템플릿 리터럴을 사용하면 더 직관적으로
작성할 수 있습니다.
예시:
javascriptlet multiline = `
This is the first line.
This is the second line.
This is the third line.
`;
console.log(multiline);
출력:
arduinoThis is the first line. This is the second line. This is the third line.
템플릿 리터럴을 통해 가독성이 높은 코드를 작성할 수 있으며, 문자열을 동적으로 구성할 때 특히 유용합니다.
댓글 쓰기
0 댓글