즉시 실행 함수 (IIFE, Immediately-Invoked Function Expression) 즉시 실행하여야하지만 전역 스코프(Global Scope)를 오염시키지 않으려고 할때 사용한다. 함수 리터럴을 ( )로 감싼 뒤 바로 실행하는 형태가 일반적이며 기명도 가능하고 익명도 가능하다. ( )로 감싸주는 이유는 자바스크립트는 function(){ } 키워드를 사용할 경우 파서가 선언문으로 인지한다. 선언문은 해석기에서 실행 후 사라지기에 값으로 존재하지 않는다. 때문에 "함수 표현식"을 통해 명시적으로 나타내줘야한다. ( )를 붙이는 것 외에도 연산자를 앞에 붙일 경우에도 즉시 실행된다. -function(a, b){ return console.log(a + b) })(1,2) // 3 // 즉..
var va let va const var 함수 스코프 함수 스코프의 최상단으로 호이스팅 선언 후 할당없이 호출하면 undefined (선언과 동시에 undefined로 초기화되기 때문) strict mode가 아닐때, 글로벌 스코프에서 선언 시 글로벌 객체에 바인딩 재선언 가능 재할당 가능 let 블록 스코프 블록 스코프의 최상단으로 호이스팅 선언 후 할당없이 호출하면 ReferenceError (이것을 TDZ(Temporal Dead Zone)이라함, 선언은 했지만 참고할 수 없는 사각지대) strict mode가 아닐때, 글로벌 스코프에서 선언해도 글로벌 객체에 바인딩되지 않음 재선언 불가능 재할당 가능 const 블록 스코프 블록 스코프의 최상단으로 호이스팅 선언 후 할당없이 호출하면 Refere..
this javascript의 this 키워드는 다른 언어와는 조금 다르게 동작한다. 실행컨텍스트(EC, Execution Context)가 생성될때마다 this의 바인딩이 일어나며 우선순위가 있다. 대부분은 함수를 호출한 방법에 의해 this가 결정된다. 따라서 함수의 호출때마다 다를수도 있다. 1. new 는 해당객체 2. call, apply, bind 같은 명시적 바인딩일 경우 인자로 전달된 객체 3. 객체의 메소드로 호출한 경우 해당 객체 4. 그외 엄격모드는 undefined로 초기화 됨 (엄격, 비엄격에 차이가 있다) 5. 글로벌에서 일반 브라우저는 window, 노드는 global 전역 문맥 전역 실행 문맥에서의 this는 엄격모드 여부에 관계없이 전역 객체를 참조합니다. // 브라우저 전..

User-Agent Client Hints의 도입, UA 프리징을 대비하라 클라이언트 입장의 User-Agent Client Hints 유저의 많은 정보를 담고 있기 때문에 개인정보 침해가 우려, UA를 점진적 삭제할 예정이라고 예전에 포스팅 했었다. 당장에 무엇을 수정해야하는지, 언제 해야하는지 몰라서 고민하던 중에 네이버 개발블로그에서 작업한 내용에 대한 포스팅했더라. UA 프리징으로 달라지는 점 속성 값 고정 navigator.userAgent navigator.appVersion navigator.platform navigator.productSub navigator.vendor 크롬에서 안드로이드를 제외한 모든 운영체제는 윈도우10 동기방식으로 OS이름, OS버전, 모델명을 알 수 있음 비동기 ..