이끌든지 따르든지 비키든지

Software Development/JavaScript

[JavaScript] 자바스크립트의 이해

SeongHo5 2023. 9. 11. 14:38

JavaScript는

초창기에는 웹 페이지 내에서 동적 표현을 담당했지만, 최근 Node.js라는 자바스크립트 런타임이 등장하며, 프론트엔드는 물론 백엔드 영역까지 아우르는 웹 프로그래밍 언어의 표준으로 자리를 잡고 있다.


자바스크립트의 특징

1. 동적 & 약타입 언어

자바스크립트는 실행 시 데이터 타입을 결정하는 동적 언어이면서, 다른 데이터 타입간에 형 변환이 상대적으로 자유로운 약 타입 언어이다. 문법도 타 언어에 비해 비교적 간단하고, 유연하게 코드를 작성할 수 있어 코드 작성 효율이 높다.

 

// 정적 & 강 타입 언어인 Java
int num1 = 10;
String str = "Hello";

int result = num1 + str; // 결과 : 컴파일 에러
// 동적 & 약 타입 언어인 JavaScript
var num1 = 10;
var str = "Hello";

var result = num1 + str; // 결과: "10Hello"

 

비교적 느슨한 형 검사 덕분에 자바스크립트는 불가능한 문자열 + 정수 연산을 처리할 수 있다.

 

// 예제 2
var num = 10;
var str = "20";

var result = num + str; // 결과: "1020"

 

다만, 느슨한 형 검사로 인해 의도했던 것과 다른 결과를 출력할 수도 있으니 위와 같은 경우에는 명시적인 형 변환 작업 등을 수행해야 한다.

 

var num = 10;
var str = "20";

// 문자열 "20"을 숫자로 변환하여 더하기
var result = num + Number(str);  // 결과: 30

2. 일급 함수 (First - Class Function)

자바스크립트는 함수를 일급 함수로 취급하는데, 이는 함수를 변수처럼 처리해 다른 함수에 매개변수로 전달하거나, 변수에 할당하거나, 함수의 리턴값으로도 사용될 수 있음을 말한다.

 

하나씩 설명하자면,

 

2-1. 변수에 할당 가능

const myFunction = function() {
    console.log('Hello, world!');
};

myFunction이라는 불변형 변수에 함수를 할당할 수 있다.

 

2-2. 다른 함수의 매개변수로 전달 가능

function greet(name) {
    return 'Hello, ' + name;
}

function processGreeting(name) {
    const greetingMessage = greet(name);
    return greetingMessage;
}

const result = processGreeting('Alice');
console.log(result);  // 출력 : 'Hello, Alice'

greet(name)의 리턴값인 'Hello, Alice'를 processGreeting 함수에 전달할 수 있다.

 

2-3. 함수의 리턴값으로 사용 가능

function createGreeter() {
    return function(name) {
        console.log('Hello, ' + name);
    };
}

const greetFunction = createGreeter();
greetFunction('Bob');  // 'Hello, Bob'

 

Javascript는 위와 같은 특성을 활용해 함수형 프로그래밍을 지원하고, 고차 함수를 작성할 수 있다.