;
)을 붙임{...}
)로 묶인 0개의 하나 이상의 명령문 그룹, 세미콜론(;
)을 붙이지 않음// 한 줄
/* 여러 줄 */
"key(키)" : "value(값)"
의 형식,
)로 구분되어 할당됨Variables(변수)는 문자열, 숫자 등의 값을 담기 위해 이름을 붙인 상자이며 컴퓨터의 메모리에 일정한 크키의 영역으로 생성된다.
모든 변수에는 다른 변수와 구별하기 위한 이름(식별자)이 있다.
declarators variableName = initialization;
var
, let
, const
=
: 대입, 단일 값이나 표현식의 결과를 변수에 할당변수를 선언하기만 초기화 하지 않았을 경우 정의되지 않았음을 뜻하는 undefined
값이 들어간다.
let one=1, two=2, three=3;
let age; // declaration(선언)
age = 23; // initialization(초기화)
Hoisting은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 import의 선언문을 해당 범위의 맨 위로 끌어 올려진 것 같은 현상을 말한다.
console.log(x); // undefined
var x = 5;
console.log(x); //5
*var
로 선언한 변수는 선언 전에 사용해도 에러가 나지 않음
자세한 설명은 다음 링크 참고: https://developer.mozilla.org/ko/docs/Glossary/Hoisting
function-level scope란 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효하고 함수 외부에서는 유효하지 않다(참조할 수 없다).
let global = "global";
function f() {
let local = "local";
console.log(global); // global
return local;
}
f();
console.log(local); // ReferenceError: local is not defined
block-level scope란 코드 블록(
{…}
)내에서 유효한 스코프를 의미하며, 여기서 “유효하다”는 “참조(접근)할 수 있다”라는 뜻이다.
let
: 지역변수를 선언하며 var
와 유사함Uncaught SyntaxError
가 발생let x = "outer x";
{
let x = "inner x";
let y = "inner y";
console.log(x); // inner x
console.log(y); // inner y
}
console.log(x); // outer x
console.log(y); // ReferenceError: y is not defined
const
: 변화지 않는 변수를 의미하며 상수라고 함const MAX_SIZE = 5
)const origin = { x: 1, y: 2 };
origin.x = 3;
console.log(origin); // {x: 3, y: 2}
$
), 밑줄(_
)-
)을 사용할 수 없음let isMouseDown = true;
)참고문헌,
이소 히로시, 『모던 자바스크립트 입문』, 서재원 역, 길벗, 2019,
https://developer.mozilla.org/ko/docs/Glossary/Property/JavaScript,
https://ko.javascript.info/variables#ref-27,
https://poiemaweb.com/js-scope#3-function-level-scope