JavaScript15 JavaScript | 함수 선언문 vs. 함수 리터럴 함수 선언문 vs 함수 리터럴 함수 선언문과 함수 리터럴은 형태가 동일하다. 그러면 자바스크립트는 어떻게 해석하는가? 문맥에 따라 함수 선언문이여야 하는지, 함수 리터럴이여야 하는지를 판단한다. 아래 예제를 보자. // 함수 리터럴 var add = function add(x, y) { return x + y; } // 함수 호출 console.log(add(2, 5)); // 7 위에서 function add를 함수 선언문이라고 가정하면, 할당 연산자에 의해서 변수에 값이 할당될 수 있어야 한다. 즉 함수 선언문은 값으로 평가될 수 있어야 한다. 하지만 함수 선언문은 표현식이 아닌 문, 즉 값으로 평가될 수 없으므로 해당 자리에는 함수 선언문이 올 수 없다. 따라서 값으로 평가될 수 있는 함수 리터럴이.. 2021. 9. 14. JavaScript 수업 | [deep dive] 10~ 안물어본다!! 위의 메모리 구조를 사용하고 있을지 모른다. Heap, Call stack 안나온다. 모른다. V8엔진이나, 스파이더 몽키,.. 엔진마다 다르다. 하지만 표준은 아니다. (ECMAScript) 원시값들은 내부적으로 객체 프로퍼티에 저장된다. Heap은 논리적인 개념임... 객체를 상태로 가지고 있을 경우 불변성을 유지해야한다. push, pop, shift, unshift 사용해서는 안된다! 원시값을 담은 변수는 수정하면 주소값이 바뀜. 객체를 담은 변수는 수정해도 주소값은 그대로임. 따라서 객체가 변경되었는지 확인할 방법이 없음 그래서 요즘엔 객체를 불변값으로 사용하려고 하고있다. Number.isNaN, isNaN Number.isNaN: NaN일때만 true isNaN: 숫자로 변환한.. 2021. 9. 13. JavaScript 예습 | [deep dive] 13 ~ 15장 13장 스코프 13.1 스코프란? 스코프 scope (유효범위) 스코프는 식별자가 유효한 범위를 말한다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정된다. 이를 스코프라고 한다. 스코프는 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이다. 식별자 결정 identiflier resolution var x = "global"; function foo() { var x = "local"; console.log(x); // local return x; } foo(); console.log(x); // global 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에 어떤 변수를 참조해야 할 것인지를 결정해야한.. 2021. 9. 12. JavaScript 예습 | [deep dive] 10 ~ 12장 10장 객체 리터럴 10.1 객체란? Object 자바스크립트는 객체기반의 프로그래밍 언어다. 자바스크립트를 구성하는 거의 모든 것이 객체다. (함수, 배열, 정규 표현식 ...) 원시 타입 객체 타입 단 하나의 값만 나타냄. 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다. 원시 타입의 값(원시 값)은 변경 불가능한 값 immutable value 객체는 변경 가능한 값 mutable value 객체는 0개 이상의 프로퍼티로 구성된 집합이다. 프로퍼티 구성요소 키 key 값 value 여기서 특별하게, 값이 함수인 경우 프로퍼티 대신 메서드 method 라고 부른다. 프로퍼티 : 객체의 상태를 나타내는 값 (data) 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(beh.. 2021. 9. 9. 이전 1 2 3 4 다음