브렌던 아이크(Brendan Eich) : 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어, 즉 자바스크립트를 개발자바스크립트의 파생 버전인 JScript 등장브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈
프로그래밍 언어에서 값을 저장하고 참조하는 메커니즘으로, 값의 위치를 가리키는 상징적인 이름이다.변수는 컴파일러나 인터프리터에 의해 값이 저장된 메모리 주소로 치환되어 실행된다. 따라서 개발자가 직접 메모리 주소를 통해 값에 접근할 필요가 없고, 변수를 통해 안전하게
식이 평가되어 생성된 결과모든 값은 데이터 타입을 가짐메모리에 2진수로 저장사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등), 약속된 기호("", ., \[], {}, // 등)를 사용해 값을 생성하는 표기법이다.자바스크립트 엔진은 코드가 실행되는 시점인
자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.원시 타입과 객체 타입으로 분류할 수 있다.하나의 숫자 타입만 존재모두 실수로 처리2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않으므로, 이 값들을 참조하면 모두 10진수로 해석된다.정수로 표현
2개의 피연산자를 산술 연산피연산자의 값 변경X, 새로운 값 생성1개의 피연산자를 산술 연산전위 증가/감소 연산자 : 먼저 피연산자의 값을 증가/감소시킨 후, 다른 연산 수행후위 증가/감소 연산자 : 먼저 다른 연산 수행 후, 피연산자의 값을 증가/감소좌항, 우항의 피
조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다.0개 이상의 문을 중괄호{}로 묶은 것하나의 실행 단위로 취급조건식의 평가 결과에 따라 실행할 코드 블록을 결정조건식은 불리언 값으로 평가될 수 있는 표현식주어진 표현식 평가 => 그 값과 일치하는 표현식을
타입 변환 명시적 타입 변환 (타입 캐스팅) : 개발자가 의도적으로 값의 타입을 변환 암묵적 타입 변환 (타입 강제 변환) : 자바스크립트 엔진에 의해 암묵적으로 타입 변환 암묵적 타입 변환 문자열 타입으로 변환 + 연산자 => 피연산자 중 하나 이상 문자열일
다양한 타입의 값 (원시 값 or 다른 객체) 을 하나의 단위로 구성한 복합적인 자료구조변경 가능한 값 (mutable value)프로퍼티 : 객체의 상태를 나타내는 값 (data)메소드 : 프로퍼티를 참조/조작할 수 있는 동작중괄호{} 안에 0개 이상의 프로퍼티를 정
한 번 생성된 원시 값은 변경 불가변수 재할당 => 원시 값 변경 X, 새로운 메모리 공간 확보 후 값 할당 (메모리 공간 주소 변경)자바스크립트의 문자열은 원시 타입의 값문자열의 일부 문자 변경 불가변수에 원시 값을 갖는 변수를 할당 => 원시 값이 복사되어 전달됨s
일급 객체 (값의 성질을 갖는 객체) 일반 객체와 달리 호출 가능 함수 객체만의 고유한 프로퍼티를 가짐 함수 사용하는 이유 동일한 작업을 반복 수행해야할 때 코드 재사용 유지보수의 편의성 코드의 신뢰성을 높임 함수 리터럴 function 키워드, 함수명, 매개변
모든 식별자는 자신이 선언된 위치에 의해 유효 범위가 결정된다.이러한 식별자의 유효 범위를 스코프라고 한다.식별자는 유일해야하므로 중복될 수 없으나, 스코프를 통해 식별자인 변수명의 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 한다.전역에서 선언됨어디서든지 참조
전역 변수의 무분별한 사용은 위험하다.전역 변수를 반드시 사용해야할 이유가 없다면 지역 변수를 사용해야한다.함수의 생명 주기와 일치함수가 종료되어도 누군가 스코프를 참조하고 있다면 스코프는 해제되지 않고 생존함var 로 선언한 전역 변수 => 전역 객체의 생명 주기와
변수 중복 선언 허용 => 먼저 선언된 변수 값이 의도치 않게 변경될 수 있음함수 레벨 스코프 => 함수 외부에서 선언 시 전역 변수가 되므로 전역 변수를 남발할 가능성↑변수 호이스팅 => 변수 선언문 이전에 참조 가능하므로 프로그램의 흐름과 맞지 않고 가독성이 떨어짐
내부 슬롯 & 내부 메소드 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메소드(pseudo method)이다. 자바스크립트 엔진의 내부 로직 => 개발자가 직접적으로 접근
생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라고 한다.자바스크립트는 Object 생성자 함수 이외에도 String, Number, Boolean, Function, Array, Date, Reg
무명의 리터럴로 생성 가능 (런타임에 생성 가능)변수나 자료구조(객체, 배열 등)에 저장 가능함수의 매개변수에 전달 가능함수의 반환값으로 사용 가능자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체다.하지만 함수 객체는 일반 객체와 달리 호출할 수 있다는 차이
자바스크립트 언어의 문법을 좀 더 엄격히 적용오류 발생 가능성이 높은 코드에 대해 명시적인 에러를 발생시킴ESLint와 같은 린트 도구를 사용하면 strict mode보다 더욱 강력한 효과를 얻을 수 있다.린트 도구 정적 분석 기능을 통해 소스코드를 실행하기 전에 소
ECMAScript 사양에 정의된 객체애플리케이션 전역의 공통 기능을 제공자바스크립트 실행 환경과 관계없이 언제나 사용 가능전역 객체의 프로퍼티로서 제공됨 => 별도의 선언 없이 전역 변수처럼 참조자바스크립트 실행 환경에서 추가로 제공하는 객체브라우저 환경 : DOM,
소스코드의 타입 전역 코드 전역에 존재하는 소스코드 전역 스코프 생성 => 전역 변수 관리 전역 코드가 평가되면 전역 실행 컨텍스트 생성됨 함수 코드 함수 내부에 존재하는 소스코드 지역 스코프 생성 => 지역 변수, 매개변수, arguments 객체 관리 함수
클로저는 자바스크립트 고유의 개념이 아니므로 클로저의 정의가 ECMAScript 사양에 등장하지 않는다. MDN에서는 클로저에 대해 다음과 같이 정의하고 있다. "클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다." 렉시컬 스코프 자바스크립트 엔진은 함수