목록FrontEnd/Javascript (25)
동그란 도그린
15-1장. var 키워드로 선언한 변수의 문제점var 키워드로 선언한 변수는 중복 선언 가능함var x = 1;var y = 1;// 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작var x = 100;// 초기화문이 없는 변수 선언문은 무시됨var y;console.log(x); // 100console.log(y); // 1 var 키워드의 스코프var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프(변수가 유효한 범위)로 인정⇒ 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨⇒ 전역 변수를 남발할 가능성을 높인다var i = 1;// i는 전역 변수, 이미 선언된 i가 있으므로 중복 선언됨for(va..
14-1장. 변수의 생명 주기전역 변수의 무분별한 사용은 위험함 ⇒ 전역 변수를 반드시 사용해야 할 이유가 있는 게 아니라면 지역 변수를 사용해야 함 지역 변수의 생명 주기변수는 생성되고 소멸되는 생성 주기가 있음전역 변수의 생명 주기 : 어플리케이션의 생명 주기와 같음함수 내부에서 선언된 지역 변수의 생명 주기 : 함수가 호출되면 생성되고 함수가 종료하면 소멸됨 변수의 선언은 코드가 한 줄씩 순차적으로 실행되는 시점인 런타임에 실행되는 것 X, 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행 O함수 내부에서 선언한 변수 ⇒ 함수가 호출된 직후에 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행됨함수 내부에서 선언된 지역 변수⇒ 함수가 호출되어 실행되는 ..
13-1장. 스코프란?스코프란?모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정됨⇒ 이를 ‘스코프’라고 함‘스코프’는 식별자가 유효한 범위를 말함프로그래밍 언어에서는 스코프(유효 범위)를 통해 식별자인 변수 이름의 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 함 ⇒ ‘스코프’는 네임스페이스임var 키워드로 선언한 변수는 같은 스코프 내에서 중복 선언이 허용됨 ⇒ 의도치 않게 변수 값이 재할당되어 변경되는 부작용을 발생시킴let이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하지 않음function foo() { var x = 1; var x = 2; // 변수값이 2..
📍 함수 자바스크립트의 함수는 객체 타입의 값 자바스크립트는 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성 후 그 식별자에 객체를 할당 ⇒ 함수는 함수 이름이 아닌 함수 객체를 가리키는 식별자로 호출 함수 정의 방식 함수 선언문 function add (x,y) { return x+y; } 함수 표현식 var add = function (x,y) { return x+y; }; Function 생성자 함수 var add = new Function (’x’, ‘y’ ‘return x+y’); 화살표 함수 (ES6) var add = (x, y) ⇒ x+y; 함수 리터럴 function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성 함수 이름 생략 가능 (익명 함수) // ..
📍 원시 타입 변경 불가능한 값 (읽기 전용 값) 원시 값을 변수에 할당하면 변수에는 실제 값이 저장됨 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달됨 (값에 의한 전달) 원시 값을 할당한 변수에 새로운 원시 값을 재할당하면, 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리킴 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없음 문자열 문자열은 0개 이상의 문자로 이루어진 집합 1개의 문자는 2바이트의 메모리 공간에 저장됨 문자열은 유사 배열 객체이자 이터러블이므로 배열과 유사하게 각 문자에 접근 가능 🔅 유사 배열 객체 : 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고, length 프로퍼티를..
📍 객체 자바스크립트는 객체 기반의 프로그래밍 언어 객체는 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등) 원시 값은 변경 불가능한 값, 객체 값은 변경 가능한 값 객체는 0개 이상의 프로퍼티로 구성된 집합 프로퍼티 프로퍼티는 키와 값으로 구성 모든 값은 프로퍼티가 될 수 있음 프로퍼티 값이 함수이면, 이를 메서드라고 부름 객체는 프로퍼티와 메서드로 구성된 집합체 프로퍼티 : 객체의 상태 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작 📍 객체 리터럴에 의한 객체 생성 자바스크립트는 프로토타입 기반 객체지향 언어로, 다양한 객체 생성 방법 지원 객체 리터럴 Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 객체 리터럴 중괄호 내에 0개 이상의 프로퍼티 ..
📍 타입 변환 타입 변환이란? 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것 명시적 타입 변환(타입 캐스팅) 개발자가 의도적으로 타입을 변환하는 것 암묵적 타입 변환(타입 강제 변환) 개발자의 의도와는 관계없이 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것 기존 변수 값을 재할당하여 변경하는 것은 아님 때로는 명시적 타입 변환보다 가독성 측면에서 더 좋을 수 있음 📍 암묵적 타입 변환 문자열 타입으로 변환 템플릿 리터럴의 표현식 삽입은 표현식의 평가 결과를 문자열 타입으로 암묵적 타입 변환함 `1 + 1 = ${1+1}` // => "1 + 1 = 2" // 숫자 타입 0 + '' // => "0" // 불리언 타입 true + '' // => "true" // null 타입..
📍 블록문 코드 블록 / 블록이라고 부름 0개 이상의 문을 중괄호로 묶은 것 언제나 문의 종료를 의미하는 자체 종결성 가짐 ⇒ 블록문의 끝에 세미콜론을 붙이지 X 📍 조건문 if … else 문 if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 불리언 값으로 타입 변환됨 만약 코드 블록 내의 문이 하나뿐이면 중괄호 생략 가능 switch문 default 문은 선택사항 break 문 : 코드 블록에서 탈출하는 역할 🔅 폴스루(fall through) : 평가 결과와 일치하는 case 문으로 실행 흐름이 이동하여 문을 실행한 후 switch 문을 탈출하지 않고 switch 문이 끝날 때까지 이후의 모든 문을 실행하는 경우 📍 반복문 3가지의 반복문 : for문, whi..