전체 글

0부터 시작하는 필중입니다.
변수의 생명 주기 변수는 이전에 배운 스코프에 따라 생명주기가 결정됩니다. 만약 전역스코프에서 선언되었다면 코드가 끝날 때까지가 생명주기이겠고, 지역스코프에서 선언되었다면 코드블록이 끝날 때까지가 생명주기입니다. var x = 'global'; // ----------- // | function goo() { // ----| | var x = 'local';// 지역스코프 | consol.log(x); // | | return x; // ----| | } // | // 전역스코프 foo(); // | console.log(x); // ------------- 전역 변수의 문제점 암묵적 결합 전역변수는 코드 전체에서 사용하기 위해 선언을 하게 되는데 그렇게 하다보니 지역변수 속에서 의도치 않게 값이 변경될..
스코프란? 스코프는 사전적인 의미로 범위를 말합니다. 어떤 변수 혹은 값이 제 역할을 할 수 있는 범위를 말하는 것입니다. 우리가 코드를 작성할 때 들여쓰기로 각 영역을 보기 좋게 구분하는 것도 일종의 범위를 보기 위함인데요. const foo = 123 const bar = 'go!' function start(x, y) { return x+y; } 이제 조금 더 자세히 알아보겠습니다. 스코프의 종류 전역스코프와 지역스코프 두가지가 존재합니다. 전역스코프는 코드 전체에서 참조할 수 있는 범위(변수)를 말합니다. 지역스코프는 마치 상자 속 세상처럼 밖에서는 참조할 수 없고 그 안에서만 참조할 수 있는 범위(변수)를 말합니다. 그래서 우리는 전역변수를 함수 속에서도 참조할 수 있으며, 조건문밖에서도 참조할..
함수란? 함수는 입력을 받아 출력을 내보내는 일련의 과정을 의미합니다. 즉 일정한 로직을 코드로 구현하고, 코드상에서는 블록으로 닫아 실행단위로 구분한 것을 말합니다. 함수으 구성요소는 다음과 같습니다. function add (x, y) { return x+y; } add(2, 5); add는 함수의이름을 뜻하고, x와 y는 매개변수를 의미합니다. 그리고 함수가 실행되고 return 키워드를 통해 값을 반환하게 되지요. 함수를 실행할 때 들어가는 2, 5를 인수라고 합니다. 함수를 사용하는 이유 함수는 실행단위로 묶은 코드 블록입니다. 따라서 언제든 원하는 기능을 정의하고 그대로 인수만 바꿔 적용하면 보다 코드를 간결하게 유지할 수 있습니다. 재사용성이 좋다고 할 수 있겠네요. 함수 리터럴 함수도 역시..
원시값 우리는 지난 시간에서 원시값은 변하지 않는 불변의 값이라고 배웠습니다. 자바스크립트에서 변수에 원시값을 할당을 하게 된다면 원시값에 해당하는 메모리를 확보하고 그곳에 원시값을 저장한 뒤 변수에는 메리의 주소를 연결시키겠죠. ... 1000 주소 ... x = 1000 (주소) ... x라는 변수에 1000 값을 할당하려면 1000에 해당하는 메모리를 확보한 뒤 이 메모리의 주소를 변수에 연결하는 것입니다. 하지만 자바스크립트에서는 값을 재할당 할 수가 있는데 이는 어떻게 가능할까요? ... 1000 주소 60 주소 ... x= 60 (주소) ... 이렇게 새로운 메모리를 확보하고 다시 주소를 변수에 연결하는 것입니다. 이렇게 우리는 이해하고 넘어가면 되겠습니다. 그럼 또 다른 상황을 예제로 살펴보..
객체란? 원시타입의 값, 즉 원시 타입값은 변경 불가능한 값입니다. 하지만 객체타입의 값은 변경 가능한 값입니다. var foo = { //프로퍼티 입니다. name : 'jin', gender : 'male' //메소드 입니다. sum : function () { this.name + this.gender; } } 객체리터럴에 의한 생성 객체 리터럴은 중괄호 내에 0개 이상의 프로퍼티를 정의합니다. 변수에 할당되는 시점에 자바스크립트 엔진은 객체 리터럴을 해석해 객체를 생성합니다. const bar = {} 프로퍼티 객체는 프로퍼티의 집합이고, 프로퍼티는 키와 값으로 구성됩니다. 이전에 사용했던 예제를 다시 사용해보겠습니다. var foo = { //프로퍼티 입니다. name : 'jin', gende..
생환 8월 7일부터 2주간 과제를 진행했다. 과제를 받고 진행하기 전엔 구상을 하면 재밌겠다고 들떠 있었다. (내 앞날에 펼쳐질 밤샘도 모른채...) 그래서 우선 과제를 진행하기에 앞서 구상을 먼저 했다. 컨셉을 잡고 어떤 기능들을 넣을건지 고민했고, 그리고 나서 작업을 진행했다. 하지만 생각보다 js에 대해 무지했음을 알게 되었다. 클래스, 모듈 사용법, 라이브러리, 순수함수 등 내가 그동안 이해했다고 생각하고 넘어간 부분을 과제에 적용해보려고 하는 순간 정말 어이없게도 턱! 하고 막혔다. 클래스 모듈로 사용하려면 내가 앞으로 사용할 기능들을 기본 함수의 형태로만 남기고 적절하게 사용만 하면 되지만... 이게 말처럼 쉽게 코드로 작성되기가 어려웠다. 아마 강의를 듣고 코드를 따라치는 것만으로는 부족 하..
박필중
필중이의 0과1의 세계