[javascript] 동등/일치 연산자, const, let, var, Hoisting, Arrow Function, Constructor Function

KCH·2022년 2월 16일
1

js

목록 보기
2/3

1. 동등/일치 연산자

var a = 1, b = "1";
a==b // 동등 연산자 => true
a===b // 일치 연산자 => false
  • 동등 연산자 : 값을 비교
  • 일치 연산자 : 값, 타입까지 모두 비교

2. const, let, var

  • const
    • 선언, 초기화, 할당 동시에 진행
    • 블록 스코프
  • let
    • 선언 -> 초기화 -> 할당 순서로 진행
    • 블록 스코프
  • var(이제 사용하지 않음)
    • 선언, 초기화 -> 할당 순서로 진행
    • 함수 스코프
  • function
    • 선언, 초기화, 할당 동시에 진행
  • 함수 스코프: 조건문 안에서 선언해도 밖에서 사용가능함, 함수는 안됨(그래서 함수 스코프)
  • 블록 스코프: 함수, 조건문 안에서 선언하면 밖에서 사용할 수 있음

3. Hoisting

  • 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동
  • 자바스크립트 엔진 동작순서
  • Hoisting은 스코프 단위로 일어남
  • 선언은 호이스팅되지만, 할당은 Hoisting 되지 않음
  • let, const 또한 내부적으로는 호이스팅 되지만 Temporal Dead Zone에 의해 에러가 발생, 변수에 값을 할당하기 전에 사용할 수 없음
    • 함수선언문 해석 -> 변수 초기화 -> 코드실행
      • 라인 위치에 관계없이 어디서든 함수나 변수를 호출가능
console.log(n);	// no error => undefined
var n = 1234;

console.log(n);	// error
let n = 1234;
  • var 선언을 지양함으로써 호이스팅으로 일어나는 실수를 줄일 수 있음
    • Temporal Dead Zone(TDZ): 스코프가 시작되고, 변수 선언을 읽은 후 그 변수가 초기화 되기 전까지의 영역을 말함

4. Arrow Function

const af = () => {
  console.log("Arrow Function Example");
};

// 이 밑으로 모두 같은 함수
const add = (a, b) => {
  return a + b;
}

const add = (a, b) => (
   a + b;
);

const add = (a, b) => a + b;

5. Constructor Function(생성자 함수)

function User(name, age) { 
  // this = {}; // 안써도 자동으로 만들어지는 코드
  this.name = name;
  this.age = age;
  this.getUser = function() {
    console.log("name: " + this.name + "\n" + "age: " + this.age);
  }
  // return this; // 안써도 자동으로 만들어지는 코드
}

let user = new User("go", 23); // 객체가 생성됨
user.getUser(); // => name: "go"
				//	   age: 23
  • 생성자 함수는 첫글자를 대문자로 함
  • new를 꼭 붙여줘야됨(안붙이면 undefined)
profile
dreaming developer

2개의 댓글

comment-user-thumbnail
2022년 2월 19일

열심히 하는 모습 보기 좋아요~

1개의 답글