Javascript

Javascript 기초

reasontaek 2021. 8. 16. 00:04

변수 선언 방식

var: function-scoped, 재선언 가능, hosting으로 인해 선언 전에 변수 호출 가능

let: 재할당 가능

const: 재할당 불가능

 

undeclared, undefined, null의 차이

undeclared: 선언되지 않은 변수에 할당 시도

undefined: 선언은 되었지만 할당되지 않음

null: null 값이 명시적으로 할당

 

렉시컬 스코핑과 클로저

렉시컬 스코핑: 스코프는 함수를 호출할 때가 아니라 함수를 어디에 선언하였는지에 따라 결정된다.

클로저: 자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부함수 밖에서 호출되더라도 외부함수의 지역변수에 접근할 수 있는 것 => 자신이 생성될 때의 환경(Lexical Environment)을 기억하는 함수

 

foreach와 map

foreach

- 배열의 요소 반복

- 각 요소에 대해 콜백을 실행

- 값을 반환하지 않음

 

map

- 배열 요소를 반복

- 각 요소에서 함수를 호출하여 결과로 새 배열을 작성하여 각 요소를 새 요소에 매핑

 

차이점

- map은 새로운 배열을 반환

- 결과가 필요하지만 원본 배열을 변경하고 싶지 않으면 map을 사용

- 단순히 배열을 반복한다면 foreach 사용

 

익명 함수를 사용하는 이유

한 번 사용되고 다른 곳에서 사용할 필요가 없는 경우 => 코드가 독립적이고 읽기 쉬움

 

내장 객체와 호스트 객체

내장 객체: ECMAScript 사양에 정의된 javascript 언어의 일부인 객체(String, Math, RegExp, Object, Function)

호스트 객체: Window, XMLHttpRequest

 

  공통점 차이점
.call과 .apply - 함수를 호출하는데 사용

- 첫번 째 매개변수는 this의 값으로 사용
- 쉼표로 구분된 인수를 두번 째 인수로 취함

- 인수의 배열을 두번 째 인수로 취함

 

Function.prototype.bind()

특정 스코프의 값을 사용할 수 있도록 this의 값을 바인딩

 

Method 역할 Payload
GET 모든/특정 리소스를 조회 X
POST 리소스를 생성 O
PUT 리소스 전체를 교체 O
PATCH 리소스 일부를 수정 O
DELETE 모든/특정 리소스를 삭제 X

 

호이스팅

- var 키워드로 선언하거나, 초기화된 변수는 현재 스코프의 최상위까지 옮겨진다.

- 함수 선언은 함수 몸체가 호이스팅이 되는 반면, 변수 형태로 작성된 함수 표현식은 변수 선언만 호이스팅이 된다.

 

==와 ===의 차이

==은 타입 변환이 필요한 경우 타입변환 후 동등 비교

 

  장점 단점
"use strict"; - 실수로 전역 변수를 만드는 것이 불가능

- 암묵적으로 실패한 예외를 throw하지 못하는 할당을 만든다.

- 삭제할 수 없는 속성을 삭제하려고 시도

- 함수의 매개변수 이름은 고유해야 함

- this는 전역 컨텍스트에서 undefined

- 예외를 발생시키는 몇가지 일반적인 코딩을 잡아냄
- function.caller와 function.arguments에 더 이상 접근 불가능

- 서로 다른 엄격한 모드로 작성된 스크립트를 병합하면 문제가 발생할 수도 있음