웹개발/javascript

[Javascript] let, const, var, 데이터타입

쌀쌀 2024. 1. 16. 12:02

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