[JS_오답노트]_var

hanseungjune·2022년 5월 30일
0

JavaScript

목록 보기
29/87
post-thumbnail

일단 필기!

//변수선언
var myVariable;
myVariable = 'codeit';

var myVariable2 = 'codeit';

//중복선언허용
var myVariable = 'codeit';
console.log(myVariable);    //codeit
var myVariable3 = 'Codeit!';
console.log(myVariable3);    //Codeit!

//함수 스코프
{
  let x1 = 3;
}

function myFunction() {
  let y1 = 4;
}

console.log(x1);   //Uncaught ReferenceError: x is not defined
console.log(y1);   //Uncaught ReferenceError: x is not defined

{
  var x2 = 3;
}

function myFunction() {
  var y2 = 4;
}

console.log(x2);    //3
console.log(y2);    //Uncaught ReferenceError: x is not defined

//끌어올림 (Hoisting)
console.log(myVariable4);   //Uncaught ReferenceError: x is not defined
let myVariable4;

console.log(myVariable5);    //undefined
var myVariable5;

console.log(myVariable);    //undefined
var myVariable = 2;
console.log(myVariable);    //2

sayHi();      //hi

function sayHi() {
  console.log('hi');
}

요약

선언을 아예 재선언이 가능함.( 혼란 야기 )

중복 선언 가능 ( 혼란 야기 )

함수의 {} 안에 있을 때를 제외하고, 나머지 {} 안에서 선언될 때는 전역으로 적용된다.

let은 블록스코프라서 {} 안에 있으면 꼼짝못하지~~~

var은 호이스팅이 가능하다. 그래서 먼저 콘솔 출력을 작성하고, 이 후에 선언해도 undefined 가 나온다.
let은 이런 경우에 에러가 발생

그리고 선언과 동시에 var 에 값을 넣어줄 때, 호이스팅이 선언을 전역변수로 사용하는 것이지 값까지 전역으로 사용 가능 한 것은 아니다.

소감

그냥 let 써라.

profile
필요하다면 공부하는 개발자, 한승준

0개의 댓글