변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
변수를 사용하려면 반드시 선언이 필요하다.
변수를 선언할 때는 var, let, const 라는 예약어(약속어)를 사용한다.
변수를 선언한 다음에는 변수에 값을 할당할 수 있다.
console.log(a); // undefined
var a; // 변수 선언
a = 80; // 값의 할당
a = 90; // 값의 재할당
console.log(a); // 90 <-- 값을 재할당 했기때문에
값을 재할당 할 때에는 var, let 은 재할당이 가능하고 const 는 재할당이 안되니 주의하자
또한, 변수선언과 값의할당을 다음과 같이 하나의 문으로 단축 표현할 수도 있다.
console.log(a); // undefined
var a = 90; // 변수선언과 값의할당
console.log(a); // 90
식별자는 변수를 식별할 수 있는 이름이다.
식별자로 값을 구별해서 식별한다는 것은 식별자가 기억하고 있는 메모리 주소를 통해 메모리 공간에 저장된 값에 접근할 수 있다는 의미이다. 즉, 식별자는 메모리 주소에 붙인 이름이라고 할 수 있다.
아래 식별자는 명명 규칙에 위배되므로 변수 이름으로 사용할 수 없다.
var first-name; // _ 언더바만 가능
var 1st; // 숫자로 시작 불가
var var; // 예약어 사용 불가
코드의 가독성을 높이기 위해 변수 이름은 변수의 존재 목적을 쉽게 이해할 수 있도록 의미를 명확히 표현하는것이 좋다.
var a; // a변수가 의미하는 것을 알 수 없다.
var score; // score변수는 점수를 의미하는것을 알 수 있다.
네이밍컨벤션은 하나 이상의 영어 단어로 구성된 식별자를 만들 때 가독성 좋게 단어는 한눈에 구분하기 위래 규정한 명명 규칙이다.
// 카멜 케이스 ( camelCase ) : 대부분 카멜케이스 사용, 일반적으로 변수나 함수의 이름에 사용
var firstName;
// 파스칼 케이스 ( PascalCase ) : 생성자함수, 클래스의 이름
var FirstName;
// 스네이크 케이스 ( snake_case )
var first_name;
// 헝가리언 케이스 ( typeHungarianCase )
var strFirstName;
값 : 표현식이 평가되어 생성된 결과
var sum = 10 + 20; // 변수에 10 + 20 이 평가되어 생성된 숫자 값 30이 할당된다.
리터럴 : 사람이 이해 할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
3 // 숫자리터럴 3
'Hello' // 문자열 리터럴
true // 불리언 리터럴
[1, 2, 3] // 배열 리터럴
function(){} // 함수 리터럴
문 : 값이 아닌, 프로그램을 구성하는 기본 단위이자 최소 실행단위
var sum = 10 + 20; // 이것 자체가 문
표현식 : 값으로 평가될 수 있는 문이다. 즉, 표현식이 평가되면 새로운값을 생성하거나 기존 값을 참조한다.
var sum = 10 + 20; // 10 + 20 이 평가되어 값 30 을 생성하므로 표현식이다.
sum; // --> 30 식별자 참조는 값을 생성하지는 않지만 값으로 평가되므로 표현식이다.
정수와 실수 구분없이 하나의 숫자 타입만 존재
ex) 10, 3.14322342, -20
문자열 타입은 텍스트 데이터를 나타내는 데 사용한다.
문자열은 작은따옴표 ( ' ' ), 큰따옴표( " " ) 또는 벡틱(``
)으로 감싼다.
자바스크립트에서 가장 일반적인 표기법은 작은 따옴표를 사용하는 것이다.
회사 상황에 맞춰 표기하면 될 것 같다.
ex) '문자열' "문자열"
불리언 타입의 값은 논리적 참( true ) 과 거짓( false ) 뿐이다.
var a = true;
console.log(a); // true
undefined은 var 키워드로 선언된 변수에 암묵적으로 할당되는 값이다.
var a;
console.log(a); // undefined
위 코드처럼 변수가 선언 되었을 때, 값이 할당이 안되있으면 undefined이 반환된다.
이처럼 undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.
null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
--> 의도적 부재
var foo = 'Lee';
foo = null; // 의도적 명시
심벌타입은 ES6에서 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심벌값은 다른값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 키를 만들기 위해 사용된다.
심벌은 Symbol
함수를 호출해 생성하며, 이때 생성된 심벌값은 외부에 노출되지 않는다.
자바스크립트에서 원시 자료형이 아닌 모든 것은 객체타입이다.
객체타입은 기존에 고정된 크기의 보관함이 아니며, 변수에 할당할 때에 값이 아닌 주소를 저장한다.
동적으로 크기가 변하는 데이터를 보관하기위해 변수가 아닌 다른곳에 데이터를 저장하고 변수에는 그 주소만 할당한다.
배열([])과 객체({}), 함수(function(){})가 대표적이다.
순서보장 o , index로 접근 , [ ] 로 표기
Array : [0,1,2,3,4]
순서보장 x , key로 접근 , { } 로 표기
Object {name : “Hanamon”, age : 16}
function a(b){c}
a : 함수 이름
b : 함수에 전달 할 인수의 이름
c : 함수 본문을 구성할 명령문
유용한 정보 감사합니다.