Javascript 124

[js 딥다이브] 15장 let, const 키워드와 블록 레벨 스코프

15.1 var 키워드로 선언한 변수의 문제점 15.1.1 변수 중복 선언 허용 var로 선언한 변수는 중복 선언이 가능 중복 시 의도치 않게 먼저 선언된 변수의 값이 변경되는 부작용이 발생됨 var x = 1; var x = 405; console.log(x); // 405 15.1.2 함수 레벨 스코프 var로 선언한 변수는 함수의 코드 블록만을 지역 스코프로 인정 var로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨(if, for 등) var x = 1; if(true) { var x = 10; } console.log(x); // 10 15.1.3 변수 호이스팅 var로 선언한 변수는 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작함. 변수 선언문 이전에 ..

[js 딥다이브] 14장 전역 변수의 문제점

14.1 변수의 생명 주기 14.1.1 지역 변수의 생명 주기 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료되면 소멸함. 지역 변수는 함수가 호출된 직후에 선언되고 undefined로 초기화되고, 함수 문들이 순차적으로 실행되면서 변수 할당문이 실행될때 값이 할당된다. 함수가 종료되면 지역변수도 소멸되어 생명주기가 종료된다. 호이스팅은 스코프 단위로 동작함 14.1.2 전역 변수의 생명 주기 전역 변수의 생명 주기는 전역 객체와 같다. 브라우저 환경에서 전역 객체는 window이므로 전역 변수의 생명주기는 전역 객체인 window와 동일함. 전역 객체 코드가 실행되기 이전 JS엔진에 의해 어떠한 객체보다도 먼저 생성되는 특수한 객체. 브라우저에서는 window객체를 의미함. no..

[js 딥다이브] 13장 스코프

13.1 스코프란 스코프 : 식별자가 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위 JS엔진이 식별자를 검색할때 사용하는 규칙이라고도 할 수 있음 13.2 스코프의 종류 구분 설명 스코프 변수 전역 코드의 가장 바깥 영역 전역 스코프 전역 변수 지역 함수 몸체 내부 지역 스코프 지역 변수 13.2.1 전역과 전역 스코프 전역이란 코드의 가장 바깥 영역을 이야기함. 전역에 변수를 선언하면 전역 스코프를 갖는 전역 변수가 됨. 전역 변수는 어디서든지 참조할 수 있음. 13.2.2 지역과 지역 스코프 지역이란 함수 몸체 내부를 말함. 지역에 변수를 선언하면 지역 스코프를 갖는 지역 변수가 됨. 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효함. 13.3 스코프 체인..

[js 딥다이브] 12장 함수

12.1 함수란? 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 매개변수 : 함수 내부로 입력을 전달받는 변수 인수 : 입력 반환값 : 출력 함수는 함수 정의를 통해 생성함 함수 호출 : 함수의 실행을 명시적으로 지시 // 함수 정의 function add(x, y) { return x+ y; } // 함수 호출 var result = add(1, 2); console.log(result); // 귀요미~ 아니고 3 🤣 12.2 함수를 사용하는 이유 코드의 재사용 코드의 재사용은 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높임 함수 이름은 자신의 역할을 잘 설명해야함. 잘 붙인 함수명은 코드의 가독성을 향상시킴. 12.3 함수 리터럴 JS의 함수는 객체 타..

[js 딥다이브] 11장 원시값과 객체의 비교

원시 값은 변경 불가능한 값 객체는 변경 가능한 값 원시 값을 변수에 할당하면 변수에는 실제 값이 저장됨. 객체를 변수에 할당하면 변수에는 참조값이 할당됨. 값에 의한 전달 : 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달됨. 참조에 의한 전달 : 객체를 가르키는 변수를 다른 변수에 할당하면 참조 값이 복사되어 전달됨. 11.1 원시값 11.1.1 변경 불가능한 값 원시값이 변경 불가능한 건 변수가 아니라 값이 변경 불가능하단 의미임. (메모리에 위치한 값) 변수는 언제든지 재할당을 통해 변수 값을 교체할 수 있음(다른 메모리에 저장 / 4장 참고) 상수는 재할당이 금지된 변수 (단 한번만 할당이 허용됨) 11.1.2 문자열과 불변성 문자열은 0개 이상의 문자로 이루어진 집합을 말..

[js 딥다이브] 10장 객체 리터럴

10.1 객체란? 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조임. 원시 타입의 값은 변경 불가능한 값이지만, 객체는 변경 가능한 값이다. var person = { name: 'Girl', // 프로퍼티 age: 16 // age 프로퍼티키, 16 프로퍼티값 }; 10.2 객체 리터럴에 의한 객체 생성 JS의 객체 생성 방법 객체 리터럴 (가장 일반적인 방법) Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 객체 리터럴은 중괄호 {}안에 0개 이상의 프로퍼티를 정의함. 변수가 할당되는 시점에 JS엔진은 객체 리터럴을 해석해 객체를 생성함. 중괄호 내에 프로퍼티를 정의하지 않으면 빈 객체가 생성됨. 객체 리터럴의 중괄호는 코드 블록이 아님 주..

[js 딥다이브] 09장 타입변환과 단축평가

9.1 타입 변환이란? 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입변환 또는 타입 캐스팅이라고 함. 개발자의 의도와 상관없이 표현식을 평가하는 도중에 JS 엔진에 의해 암묵적으로 타입이 자동으로 변환되는 경우를 암묵적 타입 변환 또는 타입 강제 변환이라고 함. 9.2 암묵적 타입 변환 JS엔진은 가급적 에러를 발생시키지 않도록 암묵적 타입 변환을 통해 표현식을 평가함 암묵적 타입 변환이 발생하면 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동변환. 9.2.1 문자열 타입으로 변환 + 연산자는 피연산자 중 하나 이상이 문자열일때 문자열 연결 연산자로 동작함. 문자열 연결 연산자는 문자열 값을 만드는 것이기 때문에 문자열이 아닌 것을 문자열로 암묵적 타입변환함. '10' + 2..

[js 딥다이브] 08장 제어문

8.1 블록문 0개 이상의 문을 중괄호로 묶은 것으로 코드 블록 또는 블록이라 부르기도 함. js는 블록문을 하나의 실행 단위로 취급함. 단독 사용이 가능하나 제어문이나 함수를 정의할때 사용하는 것이 일반적 // 블록문 { var foo = 10; } // 제어문 var x = 1; if (x < 10) { x++; } // 함수 선언문 function sum(a, b) { return a + b; } 8.2 조건문 8.2.1 if else 문 if (조건식) { // 조건식이 참이면 실행 } else if (조건식2) { // 조건식2가 참이면 실행 } else { //조건식이 거짓이면 실행 } 8.2.2 switch 문 switch (표현식) { case 표현식1: switch 문의 표현식과 표현식1..

[js 딥다이브] 07장 연산자

연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자라 함. 피연산자는 값으로 평가될 수 있는 표현식이여야함. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식임. // 산술 연산자 5 * 4 // 20 // 문자열 연결 연산자 'My name is ' + 'Lee' // 'My name is Lee' // 할당 연산자 color = 'red' // 'red' // 비교 연산자 3 > 5 // false // 논리 연산자 true && false // false // 타입 연산자 typeof 'Hi' // string 7.1 산술 연산자 수학적 계산을 수행해 새로운 숫자값..

[js 딥다이브] 06장 데이터 타입

JS(ES6)는 7개의 데이터 타입을 제공하고, 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다. 구분 데이터타입 표기 설명 원시타입 숫자 타입 number 숫자. 정수와 실수의 구분 없이 하나의 숫자 타입만 존재 문자열 타입 string 문자열 불리언 타입 boolean 논리적 참과 거짓 undefined 타입 undefined var 키워드로 선언된 변수에 암묵적으로 할당하는 값 null 타입 null 값이 없다는 것을 의도적으로 명시할때 사용하는 값 심벌 타입 symbol ES6에서 추가된 7번째 타입 객체 타입 object, funtion, array, map 객체, 함수, 배열 등 숫자 1과 문자열 '1’은 비슷해보이지만 전혀 다른 값임. 명확한 의도에 따라 타입을 정하고 쓰자...

728x90