16장 프로퍼티 어트리뷰트 16-1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메더스다. ECMAScript 사양에 등장하는 이중 대괄호([[...]])로 감싼 이름들이 내부 슬롯과 내부 메서드다. 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우, proto를 통해 간접적으로 접근할 수 있다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // 에러 // 단, 일부 ..
15장 let, const 키워드와 블록 레벨 스코프 15-1 var 키워드로 선언한 변수의 문제점 변수 중복 선언 허용 var 키워드로 선언한 변수는 중복 선언이 가능하다. var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드..
14장 전역 변수의 문제점 14-1 변수의 생명주기 지역변수의 생명 주기 변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. function foo() { var x = 'local'; console.log(x); // local return x; } foo(); console.log(x) // ReferenceError 지역 변수 x는 foo 함수가 호출되기 이전까지는 생성되지 않는다. foo 함수를 호출하지 않으면 함수 내부의 변수 선언문이 실행되지 않기 때문이다. 변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행된다. 하지만 이것은 전역 변수에 한정된 것이다. foo 함수 호출 x 변수의 선언문 실행 -> undefined로 초기화 함수..
12장 함수 12-1 함수란? 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수 내부로 입력을 전달받는 변수를 매개 변수, 입력을 인수, 출력을 반환값이라 한다. 함수는 함수 정의를 통해 생성한다. 함수는 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 실행된다. 이를 함수 호출이라 한다. //함수 정의 function add(x, y) { return x + y; } //함수 호출 var result = add(2, 5); // 함수 add에 인수 2, 5를 전달하면서 호출하면 반환값 7을 반환한다. console.log(result); // 7 12-2 함수를 사용하는 이유 함수는 몇 번이든 호출할 수 있으므로 코드의 재사용..
13장 스코프 13-1 스코프란? 변수는 자신이 선언된 위치에 의해 자신이 유효한 범위, 즉 다른 코드가 변수 자신을 참조할 수 있는 범위가 결정된다. 변수뿐만 아니라 모든 식별자가 그렇다. 다시 말해, 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. var x = "global"; function foo() { var x = "local"; console.log(x); // 1 } foo(); console.log(x); // 2 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지를 결정해야 한다. 이를 식별자 결정이라 한다. 자바스크립트 엔진은 ..
11장 원시 값과 객체의 비교 -원시타입과 객체 타입의 차이점- 원시 값 객체 값 변경 불가능항 값 변수에 할당하면 변수에는 실제 값이 저장 변수에 할당하면 변수에는 참조 값이 저장 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달 변수를 다른 변수에 할당하면 참조 값이 복사 11-1 원시 값 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이고, 값은 변수에 저장된 데이터로서 표현식이 평가되어 생성된 결과를 말한다. // const 키워드를 사용해 선언한 변수는 재할당이 금지된다. 상수는 재할당이 금지된 변수 일 뿐이다. const o = {}; // const 키워드를 사용해 선언한 변..
10장 객체 리터럴 10-1 객체란? 자바스크립트는 객체 기반의 프로그래밍 언어 원시 값은 변경 불가능한 값 이지만 객체는 변경 가능한 값이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 키와 값으로 구성 된다.자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 이처럼 객체는 프로퍼티와 메서드로 구성된 집합체이다. 프로퍼티 : 객체의 상태를 나타내는 값 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작 var person = { // 프로퍼티 name : 'Lee', age..
1주차 04.변수 4-1. 변수란 무엇인가? 왜 필요한가? 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 메모리 셀 하나의 크기는 1바이트(8비트)이며, 컴퓨터는 메모리 셀의 크기, 즉 1바이트 단위로 데이터를 저장하거나 읽어들인다. 컴퓨터는 모든 데이터를 2진수로 처리한다. 따라서 메모리에 저장되는 데이터는 데이터의 종류(숫자, 텍스트, 이미지, 동영상 등)와 상관없이 모두 2진수로 제공된다. 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수라는 메커니즘을 제공한다. 변수 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 값의 위치를 가리키는 상징적인 이름이다. var re..
📕문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. ※ 제한조건 N의 범위 : 100,000,000 이하의 자연수 💻나의 풀이 function solution(n) { var answer = 0; var m = String(n); for (let i = 0; i < m.length; i++){ answer += parseInt(m[i]); } // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다. console.log('Hello Javascript') return answer; }