let, const,var
let
let => es6부터 추가된 문법
let 명령문은 블록 스코프의 범위를 가지는 지역변수를 선언하며, 선언과 동시에 임의의 값으로 초기화할 수도 있다.
let x = 1;
if( x === 1 ){
let x = 2
console.log(x) //2
}
console.log(x) //1
block scope
ES6부터 let과 const가 도입되었는데,
이 두 키워드는 javascript에서 block scope를 제공한다.
{
let name = "ssal
console.log(name)
}
console.log(name) //error
블럭 밖에서 블럭 내부에 대한 접근이 불가능함
let vs var
var let 차이
1. var는 hoisting(선언이 끌어올려지는 것)에 의해 선언 전에 값을 넣어도 결과값이 나온다.
age = 4;
var age;
console.log(age) //4
name = "ssal"
let name
console.log(name) //error
2. let과 달리 var는 블록 스코프 안에 작성해도 외부에서 출력할 수 있다.
{
age = 4;
var age;
}
console.log(age) //4
{
let name;
name = "ssal";
}
console.log(name) //error
그러니까 var는 쓰지 마세요.
const
const는 블록 범위의 상수를 선언한다. 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없다.
const number = 42;
try {
number = 99;
} catch (err) {
console.log(err);
// Expected output: TypeError: invalid assignment to const 'number'
// (Note: the exact output may be browser-dependent)
}
console.log(number);
// Expected output: 42
데이터타입
Primitive values
number, string, boolean, null, undefined, symbol
1. number
const count = 117; //number type
const infinity = 1/0; //infinity
const negativeinfinity = -1/0; //-infinity
const nAn = 'not a number' / 2; //NaN
const bigInt = 12112321321321321321323123213n
console.log(`value: ${bigInt}, type : ${typeof bigInt}`)
// type : bigInt
2. string
const char = 'c';
const brendan = 'brendan'
const greeting = 'hello' + brendan;
console.log(`value : $(greeting), type ${typeof greeting}`);
//type : string
3. boolean
false: 0, null, undefined, NaN, ''
true : any other value
const canRead = true;
const test = 3<1
4. null vs undefined
let nothing = null <-명시적 할당
let x; <- 변수가 선언되었으나 값이 정의되지 않은 상태
5. symbol
ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다.
const symbol1 = Symbol('id')
const symbol2 = Symbol('id)
const.log(symbol1 === symbol2) //false
객체 타입
자바스크립트는 객체(object) 기반의 스크립트 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체이다. 원시타입을 제외한 나머지 값들(함수, 배열, 정규표현식 등)은 모두 객체이다.
var emptyObject = {};
console.log(typeof emptyObject); // object
var person = {
name: 'Lee',
gender: 'male',
sayHello: function () {
console.log('Hi! My name is ' + this.name);
}
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", gender: "male", sayHello: ƒ}
person.sayHello(); // Hi! My name is Lee
'웹개발 > javascript' 카테고리의 다른 글
[javascript] json-server (0) | 2024.02.19 |
---|---|
[javascript] 정규표현식 정리 및 연습, 예제 사이트 (0) | 2024.01.15 |
[javascript] reduce 함수 사용법, 응용 (0) | 2024.01.12 |
[Javascript] 함수형 프로그래밍의 정의 및 순수 함수 (1) | 2024.01.11 |
[javascript] 콜백함수와 동기/비동기 처리 (2) | 2024.01.09 |