시작 전에
VScode에서 Extension인
를 설치하자.
밑에 클릭하면 바로 페이지를 볼 수 있다.
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>Hello</p>
<script>
var A = 1;
console.log(A); //화면이 아닌 콘솔창에서 출력된다.
</script>
</body>
</html>
위처럼 html파일에 script까지 한꺼번에 넣을 수 있지만, 스크립트 파일 자체도 분리가 가능하다.
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>Hello</p>
<script src="script.js"></script>
</body>
</html>
var A = 1;
console.log(A);
var | let(ES6) | const(ES6) |
---|---|---|
중복 선언과 재할당이 가능하다. | 중복 선언은 불가하며 재할당은 가능하다. | 중복 선언과 재할당 둘다 불가하다. |
function example() {
if (true) {
var x = 5;
}
console.log(x); // 5
}
// 재할당 문제
var greeting = 'hello';
console.log(greeting); //hello
var greeting = 'hi';
console.log(greeting); //hi
greeting = 'how are you?';
console.log(greeting); //how are you?
if (true) {
let y = 10;
}
// console.log(y); // ReferenceError
let greeting = 'hello';
console.log(greeting); //hello
let greeting = 'hi';
console.log(greeting) //Uncaught SyntaxError: Identifier 'greeting' has already been declared
greeting = 'how are you';
console.log(greeting); //how are you
const z = 20;
// z = 30; // TypeError
const obj = { name: "ChatGPT" };
obj.name = "OpenAI"; // 가능
const greeting = 'hello';
console.log(greeting); //hello
const greeting = 'hi';
console.log(greeting);
//Uncaught SyntaxError: Identifier 'greeting' has already been
greeting = 'how are you?';
console.log(greeting);
//Uncaught TypeError: Assignment to constant variable
현대의 자바스크립트 코드에서는 var보다 let과 const를 더 선호하는 경향이 있다. const는 값을 한 번만 할당할 수 있는 변수를 정의할 때 사용되며, 그 외의 경우에는 let을 사용하는 것이 좋다.
var의 주요 문제점들은 다음과 같다.
console.log(name); // undefined
var name = "ChatGPT";
var name = "ChatGPT";
var name = "OpenAI"; // 문제 없이 재선언됨
이러한 문제점들로 인해, ES6(ES2015)에서는 블록 레벨 스코프를 지원하는 let과 const가 도입되었고, 이 두 키워드는 var의 대안으로 권장되기 시작했다. let과 const를 사용하면 위에서 언급한 var의 문제점들을 대부분 피할 수 있기 때문에, 현대의 자바스크립트 개발에서는 var보다 let과 const를 더 선호하게 되었다.