언어

언어/JavaScript Deepdive

11장 : 전역 변수 문제점

변수의 생명 주기 지역 변수의 생명 주기 지역 변수의 생명주기는 함수의 생명주기와 일치 전역 변수의 생명 주기 var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치 클라이언트(브라우저)의 전역객체: window 서버사이드의 전역객체: global 전역 변수의 문제점 암묵적 결합 모든 코드가 전역 변수를 참조하고 변경할 수 있는 것 긴 생명 주기 메모리 리소스를 오랜 기간 소비하고 변수의 상태를 변경할 수 있는 기간과 기회가 많아짐 스코프 체인 상에서 종점에 존재 전역 변수의 검색 속도가 가장 느림 네임스페이스 오염 JS는 파일이 분리되었다 하더라도 하나의 전역스코프를 공유하여 동일한 이름의 전역 변수나 함수가 같은 스코프 내에 존재할 시 예상치 못한 결과를 일으킴 전역 변수의 사용을..

언어/JavaScript Deepdive

10장 : 스코프

스코프 선언된 변수에 대해서 접근할 수 있는 ****유효한 범위 식별자를 검색할 때 사용되는 규칙 스코프 = 식별자의 유효범위 == 상속 호이스팅 스코프 단위로 동작되고, 스코프의 선두로 끌어 올려진 것 처럼 동작하는 자바스크립트의 고유의 특징 계층적 구조 하위 스코프는 상위 스코프에 접근 가능 상위 스코프는 하위 스코프에 접근 불가 /** * 하위 스코프 => 상위 스코프를 접근하는 경우 */ const ScopeComponent = () => { // 상위 스코프 const userId = "Honey"; const fn_controlScope = () => { // 하위 스코프 console.log("상위 스코프 접근 가능", userId); }; return ( ) } /** * 상위 스코프 =>..

언어/JavaScript Deepdive

9장 : 함수

함수란? 문으로 구현하고 코드 블록을 감싸서 하나의 실행 단위로 정의한 것 함수정의를 통해 생성하고 함수 호출을 통해 실행 구조 : function isFunction(매개변수) {return 반환값}; isFunction(인수); 매개변수 : 내부로 입력을 전달받는 변수 인수/전달인자 : 입력 반환값 : 출력 isFunction(매개변수)에서 (매개변수)는 함수 호출 연산자 함수를 사용하는 이유 코드의 재사용 유지보수의 편의성 코드의 신뢰성 코드의 가독성 함수 리터럴 객체 타입의 값 - 호출 가능한 객체 function 키워드, 함수 이름, 매개변수 목록, 함수 몸체 함수 이름 : 함수 몸체 내에서만 참조할 수 있는 식별자 함수 정의 함수 선언문 함수 리터럴과 형태 동일 리터럴은 함수 이름을 생략할 수..

언어/JavaScript Deepdive

8장 : 원시 / 객체 비교

원시타입 변경 불가능한 값 (변경X, 삭제 및 생성) 변수가 아닌 값에 대한 진술 - 언제든 재할당으로 변수값을 변경할 수 있다. → 상수는 할당이 한번만 허용되어 값 변경 X 변수 재할당 시, 참조하던 메모리 공간 주소를 변경 후 새로운 메모리 공간에 재할당 한 원시 값 저장. (불변성) 문자열과 불변성 문자열은 유사 배열 객체이면서도 이터러블하여 배열과 유사하게 문자에 접근 가능 문자열은 원시 값이라 일부 문자를 변경하려고 해도 반영 X 예기치 못한 변경으로부터 자유로움 --> 데이터의 신뢰성 보장 변수에 새로운 문자열을 재할당하는 것은 가능 값에 의한 전달 재할당을 할 때 변수가 아닌 값이 이동한다. var score = 80; var copy = score; console.log(score, co..

언어/JavaScript Deepdive

7장 : 객체

객체(인스턴스) 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조 원시타입은 수동적인 값, 객체는 능동적인 값 객체는 0개 이상의 프로퍼티(property)로 구성된 집합 JS 함수는 일급 객체로 값으로 취급 프로퍼티 & 메서드 var count = { num: 0, // 프로퍼티 increase: function() { // 메서드 this.num++; } }; num:0 : num은 프로퍼티 키, 0은 프로퍼티 값이다. increase : 객체안에 있는 함수 객체 리터럴에 의한 객체 생성 JS 객체 생성방법 객체 리터럴 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 객체 값을 생성하기 위한 표기법 Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6)..

언어/JavaScript Deepdive

6장 타입 변환

타입 변환 개발자가 의도적으로 값의 타입을 변환시키는 것 암묵적 타입 변환 또는 타입 강제 변환 의도 없이 표현식을 평가하는 도중 JS엔진에 의해 암묵적으로 타입이 자동변환 되는 것 기존의 원시 값을 직접 변경하는 것이 아닌 새로운 원시 값을 생성하여 단 한 번 사용하고 버린다. 암묵적 타입 변환 문자열 타입으로 변환 + 연산자는 피 연산자 중 하나 이상이 문자열 이면 문자열 연결 연산자로 동작 템플릿 리터럴의 표현식 삽입또한 평가 결과를 문자열 타입으로 암묵적 타입 변환 숫자 타입으로 변환 -, *, /와 같은 산술 연산자는 피 연산자 중, 숫자 타입이 아닌 피연산자를 숫자타입으로 암묵적 타입 변환 숫자 타입으로 변환할 수 없는 경우 : 산술 연산 수행이 불가능하여 표현식의 평가 결과가 NaN 비교 연..

언어/JavaScript Deepdive

5장 : 제어문

블록문 ( {block} ) 0개 이상의 문을 {}중괄호로 묶은 것 자체 종결성을 갖기 때문에 ;세미콜론을 붙이지 않는다. 조건문 ( if, switch) if...else if...else문의 else if의 경우 여러 번 사용 가능 만약 코드 블록 내의 문이 하나라면 중괄호 생략이 가능 대부분의 if...else문은 삼항 조건 연산자로 변경 가능 삼항 조건 연산자는 값처럼 사용할 수 있어서 유용하지만 조건에 따른 실행내용이 많을 경우, 가독성을 위해 if...else문을 사용 권장 switch 문 if...else 문의 조건식은 불리언 값으로 평가 되어야하지만 switch 문은 불리언 값 보다 문자열 혹은 숫자인 값 다수 반복문 ( for, while, do~while ) for for는 처음 부분에..

언어/JavaScript Deepdive

4장 : 연산자

연산자 연산자: 피연산자를 연산하여 새로운 값을 만드는 역할 연산의 대상: 피연산자(값으로 표현될 수 있는 표현식) 연산자 종류 : 산술, 할당, 비교, 논리, 타입 지수 연산 산술 연산자 새로운 숫자 값을 만들며 불가능한경우 NaN을 반환 이항 산술 연산자 ( +, -, *, /, % ) 2개의 피연산자 사용. 부수효과 X(피연산자의 값이 바뀌지 않고 언제나 새로운 값을 만듦) 부수효과 : 피연산자의 값(Value)에도 영향을 주는 효과 종류: +, -, *, /, % 단항 산술 연산자 ( ++, -- / +, - ) 1개의 피연산자 사용. 부수효과 있는 것도 있고 없는 것도 있음 종류 ++, --(이 둘은 부수효과 O --> 피연산자를 증가시키거나 감소시킴), 암묵적 할당 ++,-- 안티패턴 --> ..

MellowHoney
'언어' 카테고리의 글 목록 (5 Page)