목록전체 글 (118)
all is well!!
👀 스코프? 1. 스코프는 식별자가 유효한 범위로 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 두개의 변수x는 같은 이름을 가지고 있지만 식별자 결정으로 위치에 따라 참조할 수 있는 유효 범위가 다르다. 맨위의 x는 전역 스코프로 어디서든 참조할 수 있다. 하지만 함수안의 x는 함수 내부에서만 참조할 수 있다. 그래서 함수안의 콘솔x는 local을 반환하고 함수 바깥의 콘솔x는 global을 반환한다. var x= 'global'; function foo(){ var x = 'local'; console.log(x)// 1 } foo(); console.log(x); //2 2. 스코프 내에서 식..
함수형 프로그래밍은 불변성을 지향하는 프로그래밍 패러다임으로 아래 3가지를 목표로 한다. 1. 조건문과 반복문을 제거해 복잡성을 해결하고 변수 사용을 억제 2. 변수 사용을 억제 3. 생명주기를 최소화해서 상태 변경을 피해 오류를 최소화 👀 즉시 실행 함수 1. 즉시 실행 함수는 함수 정의와 동시에 즉시 호출된다. (function (){ var a = 3; var b = 5; return a * b; }()); 2. 단 한번만 호출되고 다시 호출할 수 없다. 3. 익명 함수(이름없는 함수)를 사용하는 것이 일반적이다. 4. 기명 즉시 실행 함수(이름있는 함수)도 사용하능 하지만 그룹 연산자()안의 기명 함수는 함수 리터럴로 평가되고 함수 이름은 함수 몸체에서만 참조할 수 있기 때문에 다시 호출할 수..
👀 프로그래밍 함수? 1. 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것. 2. 입력을 받아서 출력을 내보내는 구조. 매개변수 : 함수 내부로 입력을 전달받는 변수 인수 : 입력 반환값 : 출력 3. 함수는 값이고 여러개 존재할 수 있어서 구별하기 위해 식별자인 함수 이름을 사용한다. 4. 함수 정의를 통해 생성 5. 함수 호출을 통해 인수를 매개변수로 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 한다. //함수 정의 function add(x, y){ return x+y; } //함수 호출 var result = add(2,5); //함수 add에 인수 2, 5를 전달하면서 호출하면 반환값 7을 반환한다. 👀 함수를 사용하는 이유? 1. 몇 번이든 호출..
👀 원시 값 🟣 변경 불가능한 값 1. 원시 타입의 값은 변경 불가능한 값. 2. 읽기 전용 값으로 어떤 일이 있어도 변경할 수 없다. 3. 데이터 신뢰성을 보장한다. 헷갈리면 안되는 점! 원시 값 자체를 변경할 수 없는거지 변수는 언제든 재할당을 통해 변수값을 변경 할 수 있다. 상수도 재할당이 금지된 변수일 뿐이지 변경 불가능한 값을 동일하게 생각하면 안된다! 원시값을 할당한 변수에 새로운 원시 값을 재할당하면 새로운 메모리 공간을 확보해 재할당한 원시 값을 저장한다. 변수는 재할당한 원시값을 가리키고 참조하던 메모리 공간의 주소가 재할당한 곳으로 바뀐다. 값의 이런 특성을 불변성이라고 한다. 불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법은 없다! 🟣 문자..
👀 객체 ? JS를 구성하는 원시값을 제외한 거의 모든것(함수, 배열, 정규 표현식 등)이 객체다. 이렇게 객체의 집합으로 프로그램을 표현하려는 프로그래밍을 객체지향 프로그래밍! 그래서 JS = 객체지향 원시 타입 1. 단 하나의 값만 나타낸다. 2. 원시 타입의 값은 변경 불가능하다. 객체 1. 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조. 2. 객체는 값 변경이 가능하다. 객체는 0개 이상의 프로퍼티로 구성된 집합. 프로퍼티는 키(key)와 값(value)로 구성된다. var person = { name : 'Lee', // 프로퍼티 age : 20 // 프로퍼티 }; // 프로퍼티 키 : 프로퍼티 값 JS에서는 모든값이 프로퍼티 값으로 들어갈 수 있는데, 프로퍼티 값으로 함수가 들..