스코프는 프로그래밍 언어의 기본 개념. 식별자 자신을 참조할 수 있는 유효한 범위 스코프 체인 중첩 함수와 같이 지역 스코프도 중첩될 수 있다. (지역이 곧 함수 몸체를 말하고, 지역은 지역 스코프를 만들기 때문) 모든 스코프는 하나의 계층적 구조로 연결 되어있다. 최상위 스코프는 전역 스코프다. 참조하는 코드의 스코프에서 시작하여 상위 스코ㅡ로 이동하면서 선언된 변수를 검색한다. 스코프 체인은 실행 컨텍스트의 렉시컬 환경을 단방향으로 연결한 것이다. 전역 렉시컬 환경은 코드가 로드되면 곧바로 생성되고 함수의 렉시컬 환경은 함수가 호출되면 곧바로 생성된다. 함수도 식별자에 할당되기 때문에 변수를 검색할 때 사용하는 규칙 보다는 식별자를 검색하는 규칙이 좀 더 적합 함수 레벨 스코프 대부분의 프로그래밍 언..
함수란? 함수는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것. 함수 정의를 통해 생성. 함수 표현식 자바 스크립트의 함수는 객체타입의 값. 즉 일급 객체 일급 객체이므로 함수 리터럴로 생성한 함수 객체를 변수에 할당할 수 있다. 함수 생성 시점과 함수 호이스팅 함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다. (호이스팅) 하지만 함수 표현식으로 정의한 함수는 이전에 호출 불가능. 함수 선언문으로 정의한 함수와 함수 표현식으로 정의한 함수의 생성 시점이 다르기 때문. 변수 선언은 런타임 이전에 실행되어 undefined로 초기화 된다. 함수 표현식의 함수 리터럴은 할당문이 실행되는 시점에 평가되기 때문에 이전에 호출 불가능. 따라서..
어트리뷰트 노드와 attributes 프로퍼티 HTML요소는 여러 개의 어트리뷰트 속성을 가질 수 있다. 모든 어트리뷰트 노드의 참조는 유사 배열 객체이자 이터러블인 NamedNodeMap객체에 담겨져 요소 노도의 attributes 프로퍼티에 저장된다. Element.prototype.attributes 프로퍼티로 취득 할 수 있다. getter만 존재하는 읽기 전용 접근자 프로퍼티이며 NamedNodeMap 객체를 반환한다. HTMl 어트리뷰트 조작 Element.prototype.getAttrigute/setAttribute 메서드를 사용하여 요소노드에서 직접 HTML 어트리뷰트 값을 취득하거나 변경할 수 있다. 이외에 hasAttribute, removeAttribute도 가능. HTML 어트리뷰..
DOM 조작 새로운 노드를 생성하여 DOM에 추가, 혹은 기존 노드 삭제 또는 교체 하는 것으로, 리플로우와 리페인트가 발생한다. innerHTML 프로퍼티는 setter와 getter 모두 존재하는 프로퍼티로 HTML 문자열을 반환. 크로스 사이트 스크립팅(XSS) 공격에 취약하다. 때문에 HTML5를 지원하는 브라우저에서는 동작하지 않는다. 요소를 모두 제거하고 생성하기 때문에 효율적이지 못하다. insertAdjacentHTML innerHTML과 달리 기존 요소를 제거하지 않고 위치를 지정해 새로운 요소를 삽입한다. 첫번 째 인수로 전달할 수 있는 문자열은 아래 네가지다. const $foo = doucument.getElementById("foo") $foo.insertAdjacentHTMl("..