JavaScript
-
-
전역변수JavaScript 2021. 12. 18. 13:52
변수의 생명주기 # 지역 변수의 생명주기 변수는 선언에 의해 생성되고 할당을 통해 값을 얻는다. 생성되고 소멸되는 생명주기(life cycle)가 있다. function foo() { var x = 'local'; console.log(x); // local return x; } foo(); console.log(x); // ReferenceError : x is not defined; 지역 변수 x는 foo 함수가 호출되기 이전까지는 생성되지 않는다. foo 함수를 호출하지 않으면 함수 내부의 변수 선언문이 실행되지 않기 때문이다. 변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행된다. 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행된다. 하지만 위의 말은 전역 변수에 한정된 것이다...
-
스코프JavaScript 2021. 12. 17. 23:45
스코프(scope 유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 스코프는 변수 그리고 함수와 깊은 관련이 있다. 변수는 자신이 선언된 위치에 의해 자신이 유요한 번위, 즉 다른 코드가 변수 자신을 참조할 수 있는 번위가 결정된다. 변수뿐만 아니라 모든 식별자가 그렇다. 다시 말해, 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉 스코프는 식별자가 유요한 범위를 의미한다. 다음 코드가 어떻게 동작할지 생각해 보자 var x = 'global'; function foo() { var x = 'local'; console.log(x); // 1 ..
-
함수 표현식JavaScript 2021. 12. 16. 22:21
자바스크립트의 함수는 객체 타입의 값이다. 자바스크립트의 함수는 값처럼 변수에 할당할 수도 있고 프로퍼티 값이 될 수도 있으며 배열의 요소가 될 수도 있다. 이처럼 값의 성질을 갖는 객체를 일급 객체라 한다. 자바스크립트의 함수는 일급 객체다 함수가 일급 객체라는 것은 함수를 값처럼 자유롭게 사용할 수 있다는 의미다. 함수는 일급 객체이므로 함수 리터럴로 생성한 함수 객체를 변수에 할당할 수 있다. 이러한 함수 정의 방식을 함수 표현식(function expression)이라 한다. // 함수 표현식 var add = function(x, y) { return x + y; }; # 함수 생성 시점과 함수 호이스팅 // 함수 참조 console.dir(add); // f add(x, y) console.d..
-
함수(2)JavaScript 2021. 10. 22. 22:33
#함수 생성 시점과 함수 호이스팅 // 함수 참조 console.dir(add); // f add(x, y) console.dir(sub); // undefined // 함수 호출 console.log(add(2, 5)) // 7 console.log(sub(2, 5)) // TypeError : sub is not a function // 함수 선언문 function add(x, y) { return x + y; } // 함수 표현식 var sub = funtion (x, y) { return x - y; }; 위와 같이 함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다. 그러나 함수 표현식으로 정의한 함수는 함수 표현식 이전에 호출할 수 없다. 이는 함수 선언문으로 정의한 함수와 함수..
-
함수(1)JavaScript 2021. 10. 21. 00:18
# 함수란? 함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 자바스크립트의 핵심 개념인 스코프, 실핸 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화 등이 모두 함수와 깊은 관련이 있다. 함수는 자바스크립트를 정확하게 이해하고 사용하기 위한 핵심중의 핵심이다. 수학의 함수는 "입력(input)을 받아 출력(output)"을 내보내는 일련의 과정이다. 예를 들어, f(x, y) = x + y 라는 함수를 정의하고 이 함수에 두 개의 입력 2, 5를 전달하면 함수는 정의된 일련의 과정, 즉 x + y를 실행하여 7을 출력한다. 함수는 마치 재료를 투입받아 제품을 생산하는 기계와 같다. 프로그래밍 언어의 함수도 수학의 함수와 같은 개념이다. 예제) // f(x, ..
-
원시 값과 객체의 비교JavaScript 2021. 9. 1. 14:11
자바스크립트가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefine, 심벌, 객체 타입)은 크게 원시 타입(primitive type)과 객체 타입(object/reference type)으로 구분할 수 있다. 그렇다면 데이터 타입을 원시 타입과 객체 타입으로 구분하는 이유는 무엇일까? 원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이다. 이에 비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값(mutable value)이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장된..
-
객체 리터럴JavaScript 2021. 7. 27. 22:41
# 객체란? 자바스크립트는 객체(object) 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 원시 타입은 단 하나의 값만 나타내지만 객체 타입(object/reference type)은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조(data structure)다. 또한 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값, 즉 객체는 변경 가능한 값(mutable value)이다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있..