개념을 파악하는 데 있어서 용어의 정확한 이해와 설명이 필수적입니다. 핵심적인 개념 중 하나는 바로 '값'입니다. 값이란, 식(표현식)이 평가되어 생성된 결과를 지칭합니다. 이때 '평가'는 식을 해석하여 값을 생성하거나 참조하는 과정을 의미합니다.
예를 들어, 10 + 20
이라는 식은 평가 과정을 거쳐 30
이라는 결과 값을 생성합니다. 이 과정을 우리는 "10 + 20이 평가되어 30을 생성한다"고 표현합니다.
모든 값은 데이터 타입을 가지며, 이 데이터 타입에 따라 메모리 상에서 다양한 방식으로 해석됩니다. 데이터는 메모리에 2진수 형태로 저장되지만, 저장된 데이터를 어떻게 해석할지는 그 데이터의 타입에 의해 결정됩니다.
변수에 관해서는, 변수를 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 혹은 그 메모리 공간을 식별하기 위한 이름으로 정의할 수 있습니다. 따라서, 변수에 할당되는 것은 바로 '값'입니다.
// 예를 들면, sum이라는 변수에 10 + 20 이라는 표현식이 평가되어 나온 30이라는 값이 할당됩니다.
var sum = 10 + 20;
위 예제에서 볼 수 있듯이, 변수 sum
에 할당되는 것은 10 + 20
이라는 식 자체가 아니라, 이 식이 평가되어 나온 30
이라는 결과 값입니다. 즉, 변수 이름 sum
에 할당되는 것은 값 30
입니다.
이처럼 '값'과 '평가'라는 개념은 프로그래밍을 이해하고 사용하는 데 있어 기본적이면서도 중요한 개념입니다. 변수에 값을 할당하는 과정을 통해 프로그램은 다양한 데이터를 처리하고, 그 결과를 우리에게 제공하게 됩니다. 이 과정의 이해는 더 효과적이고 효율적인 코드 작성으로 이어지며, 프로그래밍의 깊이를 더할 수 있습니다.
값은 다양한 방법으로 생성할 수 있는데 가장 기본적인 것은 리터럴 이다.
리터럴과 표현식
프로그래밍에서 데이터를 표현하는 방법에는 여러 가지가 있습니다. 가장 기본적인 방법 중 하나는 리터럴
과 표현식
을 사용하는 것입니다. 이 두 용어는 서로 밀접하게 관련되어 있으며, 코드를 통해 값을 생성하고 참조하는 데 필수적입니다.
리터럴
리터럴은 프로그래머가 코드에 직접 값을 표기하는 방식을 말합니다. 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기법입니다.
리터럴 종류 | 설명 | 예시 |
---|---|---|
숫자 리터럴 | 직접적으로 숫자 값을 코드에 표기하는 것 | 10, 20, 3000 |
문자열 리터럴 | 텍스트를 코드에 표기하는 것 | "Hello World", '안녕하세요' |
불리언 리터럴 | true와 false 값을 표기하는 것 | true, false |
객체 리터럴 | 중괄호 {} 안에 키-값 쌍으로 객체를 표현하는 것 | {name: "Kim", age: 30} |
배열 리터럴 | 대괄호 [] 안에 값을 콤마로 구분하여 나열하여 배열을 표현하는 것 | [1, 2, 3, 4, 5] |
함수 리터럴 | function 키워드로 함수를 정의하는 것 | function() { return true; } |
리터럴을 사용함으로써, 프로그래머는 애플리케이션에 필요한 데이터를 명확하고 간결하게 표현할 수 있습니다.
표현식
표현식은 코드가 실행되어 값으로 평가되는 문입니다. 즉, 표현식은 평가되면 새로운 값을 생성하거나 기존 값을 참조합니다. 모든 리터럴은 값으로 평가될 수 있기 때문에 리터럴 역시 표현식의 일종입니다.
예를 들어, 50 + 50
은 리터럴과 연산자로 이루어져 있지만, 평가되어 숫자 값 100
을 생성하기 때문에 표현식입니다. 변수 이름 score
를 참조하면, 식별자 참조는 직접 값을 생성하지 않지만 값으로 평가되기 때문에 역시 표현식입니다.
// 숫자 표현식
5
// 문자열 표현식
"Hello World"
// 논리 표현식
true
// 변수 표현식
let x = 5;
x
// 연산 표현식
5 + 5
// 함수 호출 표현식
function example() { return "Hello World"; }
example()
이처럼 값으로 평가될 수 있는 모든 것은 표현식입니다. 표현식은 프로그래밍에서 데이터를 다루고 로직을 구성하는 데 필수적인 역할을 합니다. 따라서, 표현식은 프로그램 내에서 값처럼 사용될 수 있습니다.
문과 표현식의 구분
프로그래밍에서 코드를 짤 때 '문(statement)'과 '표현식(expression)'을 구분할 줄 안다면, 이는 버그를 줄이고 코드의 품질을 높이는 데 큰 도움이 된다. 여기서 '문'이란 프로그램을 구성하는 기본 단위이며, 실행할 수 있는 최소한의 독립적인 코드 덩어리다.
문은 토큰으로 구성되어 있는데, '토큰'은 문법적인 의미를 가지며, 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
문의 예시
문은 프로그래밍에서 수행되는 작업을 나타내며, 다양한 형태가 있다. 예를 들어, 변수 선언, 할당, 함수 선언 및 호출, 조건문, 반복문 등이 모두 문의 범주에 들어간다.
// 변수 선언문
var x;
// 값 할당문
x = 5;
// 함수 선언문
function hello() {
console.log('Hello, world!');
}
// 함수 호출문
hello();
// 조건문
if (x > 0) {
console.log('x is positive.');
}
// 반복문
for(var i = 0; i < 5; i++) {
console.log(i);
}
이처럼 각각의 문은 특정한 동작을 수행한다. 프로그램의 흐름을 구성하고 제어하는 데 중요한 역할을 한다.
표현식인 문 vs 표현식이 아닌 문
모든 표현식은 문이 될 수 있지만, 모든 문이 표현식은 아니다. 표현식은 값으로 평가될 수 있는 코드 조각이며, 표현식인 문은 그 결과로 값이 생성되는 문이다. 반면, 표현식이 아닌 문은 값을 생성하거나 반환하지 않으며, 프로그램의 흐름을 제어하는 데 사용된다.
표현식이 아닌 문을 값처럼 사용할 수 있는지 확인하는 한 가지 방법은 변수에 할당해 보는 것이다. 예를 들어:
// 표현식이 아닌 문은 값처럼 사용될 수 없다.
var foo = var x; // SyntaxError: Unexpected token var
이 예제에서 var x;
는 값으로 사용될 수 없기 때문에, 표현식이 아닌 문임을 알 수 있다.
문과 표현식을 명확히 구분하는 능력은 코드를 더 잘 이해하고, 의도한 대로 동작하도록 만드는 데 중요하다. 표현식과 표현식이 아닌 문을 적절히 활용하여 코드의 가독성과 유지보수성을 높여보자.
'Javascript' 카테고리의 다른 글
자바스크립트 연산자에 대하여 (0) | 2024.04.09 |
---|---|
자바스크립트 데이터 타입은 뭐가 있지? (0) | 2024.04.09 |
자바스크립트의 변수의 동작원리 (0) | 2024.04.09 |
mouseenter / mouseover 차이 (2) | 2022.09.05 |
search() / match() / charAt() (7) | 2022.08.22 |