JS 61

20장. strict mode

20.1 strict mode란? function foo(){ x=10; } foo(); console.log(x); 변수의 선언이 없기때문에 ReferenceError가 발생할 것 같지만 JS엔진이 전역객체에 x프로퍼티를 동적으로 생성하여(암묵전 전역)10을 출력, 이는 오류의 원인이 될 수 있음 이런 현상의 방지를 위한 strict mode로 명시적인 에러를 발생시킴, 또는 ESLint 사용(문법적오류, 잠재적오류, 오류 원인 리포팅) 20.2 strict mode의 적용 //1. 전역의 선두 'use strict'; function foo(){ //2. 함수 몸체의 선두 'use strict'; x=10;//ReferenceError : x is not defined } foo(); 20.3 전역에..

18장. 함수와 일급 객체

18.1 일급 객체 일급객체의 조건 1. 무명의 리터럴로 생성 가능(런타임에 생성 가능) 2. 변수나 자료구조(객체, 배열 등)에 저장 가능 3. 함수의 매개변수에 전달 가능 4. 함수의 반환값으로 사용가능 //1. 무명의 리터럴로 생성가능 //2. 변수에 저장가능 //런타임(할당단계)에 함수 리터럴이 평가되어 함수객체가 생성되고 변수에 할당됨 const increase = function(num){ return ++num; } const decrease = function(num){ return --num; } //2. 객체에 저장가능 const auxs = {increase, decrease}; //3. 함수의 매개변수에 전달가능 //4. 함수의 반환값으로 사용가능 function makeCounte..

15장. let, const 키워드와 블록레벨 스코프

15.1 var 키워드로 선언한 변수의 문제점 15.1.1 변수 중복 선언 허용 var x = 1; var y = 1; var x = 100;//중복선언허용, var 키워드가 없는 것처럼 동작(재할당) var y;//무시됨 console.log(x);//100 console.log(y);//1 15.1.2 함수 레벨 스코프 : 함수의 코드블록만을 지역 스코프로 인정 var x = 1; if(true){ var x = 10;//중복선언, 전역변수 } console.log(x);//10 var i = 10; for(var i=0; i

11장. 원시값과 객체의 비교

원시 타입(변경 불가능한 값, immutable value) 객체(참조) 타입(변경 가능한 값, mutable value) 변수(메모리 공간)에 실제값 저장 변수(메모리 공간)에 참조값 저장 값에 의한 전달(원시 값 복사) 참조에 의한 전달(참조 값 복사) 11.1 원시값 11.1.1 변경 불가능한 값 : 읽기 전용값, 데이터의 신뢰성 보장 //const 키워드를 사용해 선언한 변수는 재할당이 금지됨,, 상수는 재할당이 금지된 변수 const o = {}; //const 키워드를 사용해 선언한 변수에 할당한 원시값(상수)은 변경할 수 없음 //하지만 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경할 수 있음 o.a = 1; console.log(o);//{a: 1} 변수에 할당된 원시값이 변..

7장. 연산자

7.1 산술 연산자 - 이항 산술 연산자 : 2개의 피연산자를 산술연산하여 숫자값을 만듦(ex. +, -, *, /, %) - 단항 산술 연산자 : 1개의 피연산자를 산술연산하여 숫자값을 만듦 (ex. ++, --, +, -) var = 5, result; //선할당 후증가_후위 연산자 result = x++; console.log(result, x);//5, 6 //선증가 후할당_전위 연산자 result = ++x; console.log(result, x); //7, 7 //선할당 후감소_후위 연산자 result = x--; console.log(result, x);//7, 6 //선감소 후할당_전위 연산자 result = --x; console.log(result, x); 5, 5 JS의 암묵적 타입..

6장. 데이터 타입

6.1 숫자 타입 : 모든 수를 실수로 처리하며 배정밀도 64비트 부동소수점 형식을 따름 *배정밀도 64비트 부동소수점 console.log(1 === 1.0);//true var bubary = 0b01000001;//2진수 var octal = 0o101;//8진수 var hex = 0x41;//16진수 console.log(binary);//65 console.log(octal);//65 console.log(hex);//65 console.log(binary === octal);//true console.log(octal === hex);//true Infinity : 양의 무한대 -Infinity : 음의 무한대 NaN : 산술 연산 불가 (nan(x), Nan(x)..) 6.2 문자열 타입 :..

5장. 표현식과 문

값 : 식이 평가되어 생성된 결과 * 모든 값은 데이터 타입을 가지며 메모리에 2진수 비트의 나열로 저장됨 ex. 0100 0001 = 65 or A 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 표현식 : 값으로 평가될 수 있는 문, 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조함, 숫자값으로 평가되는 표현식은 숫자값 대신 사용가능 //리터럴 표현식 10 'Hello' //식별자 표현식 sum person.name arr[1] //연산자 표현식 10 + 20 sum = 10 //함수, 메서드 호출 표현식 square(); person.getName() 문 : 프로그램을 구성하는 기본단위이자 최소 실행단위 토큰 : 문법적인 의미를 가지며 문법적으로 더이상..

4장. 변수

변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 그 메모리 공간을 식별하기 위해 붙인 이름 //변수는 하나의 값 저장을 위한 메커니즘이나 배열과 객체 같은 자료구조를 사용하면 여러개의 값을 그룹화해서 사용가능 var userId = 1; var userName = 'Lee'; //객체 var user = { id:1, name: 'Lee'} //배열 var users = [ {id: 1, name: 'Lee'}, {id: 2, name: 'Kim'} ]; 식별자 : 변수이름, 어떤 값을 구별해서 식별할 수 있는 고유한 이름, 식별자는 값이 아닌 메모리 주소를 기억함 변수선언 : 변수를 생성하는 것, 값을 저장하기 위한 메모리 공간을 확보하고 변수이름과 확보된 메모리 공간의 주소를 연결하여 ..

브라우저 작동원리 이해하기 - js엔진 + web API

브라우저 작동원리 브라우저 - HTML, 이미지, 폰트 등 사용자가 선택한 자원을 전송, 표현하는 소프트웨어 ex)크롬, 엣지, 사파리, 파이어폭스 등 - 웹표준을 따르는 HTML과 CSS로 구성됨 * 웹표준 : 표준이 없어 파편화가 심했기에 2019년 W3C와 WHATWG에서 웹표준 지정 브라우저의 기본구조 통신 ① 사용자가 주소표시줄에 주소 입력 ⓐ UI 스레드가 검색어인지 url인지 확인하여 파싱 ② 사용자가 [ENTER]입력 ⓑ UI 스레드가 네트워크 호출, 네트워크 스레드 요청처리, 응답이 HTML이라면 응답결과를 렌더러 프로세스에 전달 *스레드 : 프로세스에서 실행하는 프로그램 중 일부를 실행하는 역할 * 프로세스 : 어플리케이션을 실행할 프로그램 ⓒ HTML 데이터 수신 : 렌더러 프로세스의..

20강 - strict mode

20.1 strict mode란? function foo(){ x = 10; } foo(); console.log(x); JS엔진은 변수 x가 선언된 위치를 찾기위해 스코프 체인을 통해 검색(foo함수 스코프 -> 전역 스코프) 변수의 선언이 존재하지않으므로 ReferenceError를 예상하나 JS엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성하여 전역변수처럼 사용하도록 함(암묵적 전역, implicit global) -> 오류 발생의 원인이 될수있므로 var, let, const를 필수적으로 사용! 실수 방지를 위해 ES5부터 strict mode(엄격모드) 추가 : 오류발생 가능성이 있거나 JS엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러 발생 ESLint는 정적 분..

반응형