본문 바로가기
언어

JavaScript specials (JavaScript)

by adawn 2025. 3. 15.

출처 : https://javascript.info/javascript-specials

 

JavaScript specials

 

javascript.info

 

JavaScript의 특수 사항들

 

이 장에서는 지금까지 배운 javaScript의 기능들을 간략하게 되짚어 보며 , 특히 미묘한 부분들에 주의을 기울임.

 

코드 구조 (Code structure)

문장(statement) 구분

문장은 세미콜론(;) 으로 구분함 :

 

alert('Hello'); alert('World');

 

보통 줄바꿈 역시 구분자로 취급되어 다음과 같이 사용할 수 있음 :

 

alert('Hello')
alert('World')

 

이를 자동 세미콜론 삽입(automatic semicolon insertion)이라고 부름

 

다만 , 자동 삽입이 항상 올바르게 동작하는 것은 아니며 , 예를 들어 :

 

alert("There will be an error after this message")

[1, 2].forEach(alert)

 

위와 같이 작성하면 오류가 발생할 수 도 있음. 

대부분의 코딩 스타일 가이드에서는 각 문장 끝에 세미콜론을 붙일 것을 권장함. 

 

코드 블록

중괄호 {...}로 묶인 코드 블록이나 반복문 같은 구문 뒤에는 세미콜론이 필요하지 않음 : 

 

function f() {
  // 함수 선언문 뒤에는 세미콜론이 필요 없음
}

for(;;) {
  // 반복문 뒤에는 세미콜론이 필요 없음
}

 

만약 불필요하게 추가된 세미콜론이 있다 하더라도 , 이는 오류가 아니라 무시됨.

 

엄격 모드(strict mode)

모던 JavaScript의 모든 기능을 온전히 사용하기 위해서는 스크립트의 맨 위에 "use strict";를 선언해야 함.

 

'use strict';

...

 

 

이 지시문은 스크립트의 최상단이나 함수 본문의 시작 부분에 위치해야 함.

"use strict"가 없더라도 코드는 작동하지만 , 일부 기능들이 구식 "호환 모드" 방식으로 동작함.

일반적으로는 모던한 동작 방식을 선호함.

앞으로 공부할 클래스와 같은 일부 최신 기능들은 암묵적으로 엄격 모드를 활성화함.

 

변수(variables)

변수는 다음 키워드를 사용하여 선언할 수 있음.

 

let 

const (상수 , 변경 불가)

var (구식 문법; 나중에 다름)

 

변수 이름은 다음을 포함할 수 있음 :

문자와 숫자 (단 , 첫 글자는 숫자가 될 수 없음)

$와 _는 일반 문자와 동일하게 사용됨.

비라틴 문자나 한자 등도 사용할 수 있으나 보통 사용하지는 않음.

 

변수는 동적 타입을 가지며 , 어떤 값도 저장할 수 있음 :

 

let x = 5;
x = "John";

 

JavaScript에는 총 8가지 데이터 타입이 있음 : 

1. number : 부동 소수점 및 정수를 모두 표현

2.bigint: 임의의 길이의 정수

3.string: 문자열

4.boolean: 논리값 (true/false)

5.null: 단 하나의 값 null을 가지며 "비어 있음" 또는 "존재하지 않음"을 의미 

6.undefined: 단 하나의 값 undefined를 가지며 "할당되지 않음" 을 의미

7.object 및 symbol: 복잡한 데이터 구조와 고유 식별자(아직 배우진 않았음)

 

typeof 연산자는 값의 타입을 반환함. 단 두 가지 예외가 있음 :

 

typeof null == "object"(언어상의 오류)

typeof function(){} == "function" (함수는 특별하게 취급됨)

 

상호작용(Interaction)

우리는 브라우저를 작업 환경으로 사용하므로 기본 UI 함수들은 다음과 같음 :

 

prompt(question , [default])

질문을 던지고 , 방문자가 입력한 값을 반환하며 , 취소하면 null을 반환함.

 

confirm(question)

질문을 던져 "확인" 또는 "취소" 중 하나를 선택하게 하며, 그 결과를 true/false로 반환함.

 

alert(message)

메시지를 출력함.

 

이 모든 함수들은 모달 방식으로 작동하며 방문자가 응답할때 까지 코드 실행 을 중지시키고 페이지와의 상호 작용을 막음

 

예시 :

 

let userName = prompt("Your name?", "Alice");
let isTeaWanted = confirm("Do you want some tea?");

alert( "Visitor: " + userName ); // 예: Alice
alert( "Tea wanted: " + isTeaWanted ); // 예: true

 

연산자 ( Operators)

 JavaScript는 다음과 같은 연산자들을 지원함 : 

 

1.산술 연산자 (Arithmetical)

일반 연산자 : * , + , - , / 

나머지 연산자 : % 

거듭제곱 연산자 : ** 

 

참고 : 이항 + 연산자는 문자열을 연결함. 

만약 한 피연산자가 문자열이라면 , 다른 피 연산자도 문자열로 변환됨. :

 

alert( '1' + 2 ); // '12' (문자열)
alert( 1 + '2' ); // '12' (문자열)

 

2.대입 연산자(Assignments)

단순 대입 : a = b

복합 대입 : a *=2 등

 

3.비트 연산자(Bitwise)

비트 연산자들은 최소 32비트 정수에서 비트 단위로 동작함.

 

4.조건 연산자(Conditional)

세 개의 매개변수를 받는 유일한 연산자 : cond? resultA : resultB

-> cond 가 참이면 resultA를 , 아니면 resultB를 반환함.

 

5.논리 연산자(Logical operators)

논리 AND ( && ) 와 논리 OR ( || ) :

단락 평가를 수행하며 , 평가가 멈춘 값을 반환함 ( 반드시 true/false가 아닐수 있음)

 

논리 NOT( ! )

피연산자를 불리언으로 변환한 후 반대 값을 반환함.

 

6.Nullish 병합 연산자 ( Nullish coalescing operator)

연산자 ?? 는 변수 목록 중 정의된 ( 즉 , null 또는 undefined가 아닌) 값을 선택하는 방법을 제공함.

a ?? b는 a가 null/undefined가 아니라면 a를 그렇지 않으면 b를 반환함.

 

7.비교 연산자 (Comparisons)

동등 연산자 ( == ) : 

서로 다른 타입의 값일 경우 숫자로 변환하여 비교함 ( 단 , null 과 undefined는 서로 같으며 , 다른 값과는 같지 않음)

 

예를 들어 : 

 

alert( 0 == false ); // true
alert( 0 == '' ); // true

 

다른 비교들도 숫자로 변환하여 비교함.

 

엄격 동등 연산자 ( ===) :

타입 변환 없이 비교하므로 , 서로 다른 타입이면 항상 다르다고 판단함.

null과 undefined는 특별하게 취급하여 서로는 == 로 같지만 다른 값관느 같지 않음.

대소 비교는 문자열의 경우 한 글자씩 비교하며 다른 타입은 숫자로 변환하여 비교함.

 

8.기타 연산자

 

쉼표 연산자 등 몇가지 연산자들이 있음.

 

반복문 (Loops)

3가지의 반복문을 배움 :

 

while 

 

while (condition) {
  ...
}

 

do...while

 

do {
  ...
} while (condition);

 

for

 

for(let i = 0; i < 10; i++) {
  ...
}

 

for( let ...)로 선언된 변수는 반복문 내부에서만 유효함.

단 let을 생략하고 기존 변수를 사용할수도 있음.

 

break와 continue 지시문을 사용하면 전체 반복문 또는 현재 반복만 건너 뛸 수 있음.

중첩 반복문에서는 레이블(label)을 사용하여 바깥쪽 반복문을 종료할 수 있음.

 

나중에 객체를 다루기 위한 다른 종류의 반복문도 배울 예정

 

switch 구문 (The "switch" construct)

switch 구문은 여러 if 조건문을 대체할 수 있으며 , 비교에는 엄격 동등 연산자 ( ===)를 사용함.

 

예시 : 

 

let age = prompt('Your age?', 18);

switch (age) {
  case 18:
    alert("Won't work"); // prompt의 결과는 숫자가 아니라 문자열임
    break;

  case "18":
    alert("This works!");
    break;

  default:
    alert("Any value not equal to one above");
}

 

함수 (Functions)

우리는 JavaScript에서 함수를 생성하는 법 3가지를 배움 

 

1. 함수 선언 (Function Declaration)

코드의 주 흐름에서 함수가 선언됨.

 

function sum(a, b) {
  let result = a + b;
  return result;
}

 

2. 함수 표현식 (Function Expression)

표현식의 일부로 함수가 생성됨.

 

let sum = function(a, b) {
  let result = a + b;
  return result;
};

 

3. 화살표 함수 (Arrow functions)

한 줄짜리 표현식 형태 : 

 

let sum = (a, b) => a + b;

 

여러 줄의 코드 블록을 사용하는 경우 ( 중괄호 사용 시 return 필요) : 

 

let sum = (a, b) => {
  // ...
  return a + b;
}

 

인수가 없는 경우 : 

 

let sayHi = () => alert("Hello");

 

 

인수가 하나인 경우 , 괄호 생략 가능 : 

 

let double = n => n * 2;

 

함수 내부에는 매개변수 목록이나 본문에서 선언된 지역 변수들이 있을 수 있으며 , 이들은 함수 내부에서만 유효함. 

매개변수는 기본값을 가질 수 있으며 , 함수는 항상 무언가를 반환함. 

만약 return문이 없다면 결과는 undefined가 됨.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'언어' 카테고리의 다른 글

C++의 세계  (0) 2025.05.22
Debugging in the browser (JavaScript)  (0) 2025.03.15
Arrow functions, the basics (JavaScript)  (0) 2025.03.14
Function expressions (JavaScript)  (0) 2025.03.14
Functions (JavaScript)  (0) 2025.03.14