
자바스크립트 변수 네이밍 규칙에 대하여 정리해보자 !
자바스크립트에서 사용하는 변수에는 var,let,const 가 있다.
각 변수 선언 방식에는 범위(Scope), 재할당 가능 여부, 호이스팅(Hoisting) 등의 차이가 있다.
변수를 선언하기도 전에 값이 저장이 가능하다. 아래의 코드로 예시를 들어보겠다.
console.log(name) // undefined
var name ='DongEun';
console.log(name) // ReferenceError 출력
let name = 'DongEun';
위와 같이 난타나는 이유는 호이스팅(Hoisting)으로 인해 변수 선언이 최상단으로 올라가기 때문이다.
반면 let을 사용하면 호이스팅은 발생하지만 초기화되지 않은 상태(TDZ, Temporal Dead Zone)에 있기 때문에 ReferenceError 가 발생한다.
이처럼 var는 예상하지 못한 동작을 유발할 수 있기 때문에 사용을 지양하는 것이 좋다.호이스팅(Hoisting)에 대해서는 나중에 다시 다뤄 보도록 하겠다.
블록 스코프(Block Scope)를 무시한다.
{
var name = 'DoongEun';
}
console.log(name) // DongEun"
{
let name = 'DongEun';
}
console.log(name) // ReferenceError: name is not defined
var로 선언한 변수는 블록 스코프를 따르지 않고 함수 스코프를 따른다.
즉, {}(중괄호) 내부에서 선언해도 해당 블록을 벗어나 접근 가능하므로 예상치 못한 값이 출력될 수 있다.
반면 let을 사용하면 블록 스코프가 적용되어 {} 내부에서만 변수를 사용할 수 있어 보다 안전한 코드 작성이 가능하다.
앞서 설명한 두 가지 이유(호이스팅으로 인한 예상치 못한 동작, 블록 스코프 무시)로 인해 현대적인 자바스크립트 개발에서는 var를 사용하지 않는 것이 일반적이다.
ES6를 사용하는 환경인데도 불구하고, var로 변수를 선언한다면 혼줄을 ...
let name = "Dongeun";
console.log(name); // "Dongeun"
name = "DongEunLee"; // 재할당 가능
console.log(name); // "DongEunLee"
let name = "Foo"; // SyntaxError (중복 선언 불가)
{
let currentYear = 2025;
console.log(currentYear); // 2025 (블록 내부에서 접근 가능)
}
console.log(currentYear); // ReferenceError (블록 외부에서 접근 불가능)
const TEST_NUMBER = 3;
console.log(TEST_NUMBER) // 3
TEST_NUMBER = 10; // TypeError 재할당 불가
const user = { name: "Foo", age: 25 };
// 객체의 속성 변경 가능
user.age = 30;
console.log(user); // { name: "Foo", age: 30 }
// user = { name: "Bar" }; // TypeError (객체 자체 재할당 불가능)
let name, _name, $name; ✅
let 1stUser = "foo"; ❌ Error 발생
let let = "test"; ❌ Error 발생
let const = "helloConst"; ❌ Error 발생
let my-name = "Dongeun"; // ❌ 연산자로 해석된다
네이밍 컨벤션(Naming Convention)이란 코드에서 변수, 함수, 클래스 등의 이름을 정하는 일관된 규칙을 의미한다.
일관된 네이밍 규칙을 따르면 가독성, 유지보수성, 협업 효율성이 향상된다.
camelCase (자바스크립트에서 기본적으로 사용)이번 주제로 포스팅하는 이유 중 하나가 camelCase가 권장되고 뒤에 설명할 SnakeCase는 비권장한다는 것을 보고 SnakeCase보다 camelCase 사용을 지향하기위해서이다.
let userName = "Dongeun"; // 변수
function getUserData() {...} // 함수
class UserAccount {} // 클래스
function CreateUser() {} // 생성자 함수 (잘 사용되지 않음)
const MAX_VALUE = 100;
const API_URL = "https://api.example.com";
let user_name = "dong_eun"; // JS에서는 사용을 권장하지 않는다.