DEEPDIVE
[JS] DeepDive(12) 함수
함수는 자바스크립트에서 가장 중요한 핵심 개념 중 하나이다. 자바스크립트의 핵심 개념들인 스코프,실행컨텍스트,클로저,생성자 함수에 의한 객체 새성 ,메서드 this , 프로토타입,모듈화 등등 모두 함수와 직간접적으로 관련이 있기 때문에 자바스크립트를 정확히 이해하고 사용하기 위해서는 함수에 대한 이해가 필수이다. 사실 프로그래밍 언어의 함수의 기본개념은 수학과 크게 다르지 않다. function add(x,y) { return x + y; } add(2,5) 함수에 대한 문법은 크게 설명하고 넘어가지는 않을 것 같다! 함수는 필요할 때 여러번 호출할 수 있고 몇번이고 호출할 수 있으므로 코드의 재사용 측면에서 아주 유용하다. 함수를 사용하지 않고 같은 코드를 중복해서 사용하면 그 코드를 반복해서 적어야 ..
[JS] DeepDive(11) 원시 값과 객체의 비교
이전 "데이터 타입" 에 대해서 공부했었듯이 JS에서 제공하는 데이터 타입은 원시타입과 객체 타입으로 나누어져 있다. 이 두 타입을 비교하면서 한번 알아보자. 원시타입과 객체 타입은 크게 세가지 측면에서 다르다. 1. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값이다. 2. 원시값을 변수에 할당하면 변수에는 실제 값이 저장되지만 객체를 변수에 저장하면 변수에는 참조값이 저장된다. 3. 원시값을 갖는 변수를 다른 변수에 할당하면 값에의한 전달 즉 깊은복사가 진행되지만 객체를 가리키는 변수를 할당하면 참조에 의한 전달 즉 얕은 복사가 진행되게 된다. 원시 값 원시 값은 변경 불가능한 값이다. 한번 생성된 원시값은 읽기 전용이란 말이다. 여..
[JS] DeepDive(10) 객체 리터럴
자바스크립트는 객체 기반의 프로그래밍 언어이다. JS를 구성하는 거의 모든 것이 객체인데, 실제로 원시값을 제외한 나머지 값들은 모두 객체이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며 key와 value로 구성되어 있다. var person = { name: "정민규", //프로퍼티 age : "26", //프로퍼티 }; 특히 JS의 함수는 일급 객체이므로 값으로 취급할 수 있다. 함수를 프로퍼티 값으로 사용할 수 있다는 말이며 해당 경우 일반 함수와 구분하기 위해서 메서드 라고 칭한다. var counter = { num: 0, increase: function() { this.num++; } }; 위 코드에서 increase가 메서드가 된다. JS에서 함수와 객체는 밀접한 관계를 가진다. 함수..
[JS] DeepDive(9) 타입 변환과 단축 평가
타입 변환 자바스크립트의 모든 값에는 타입이 존재하며 개발자의 의도 혹은 JS엔진에 의해서 타입이 변환되곤 한다. 개발자의 의도에 따라 타입이 변환되는걸 명시적 타입변환이라하며 JS 엔진이 변하게 해주는 걸 암묵적 타입 변환이라고 한다. var str = x + "" //암묵적 형 변환 JS에서는 빈 문자열을 더하면 자동으로 문자열로 변하는 특성이 있는데 이러한 암묵적 형 변환을 잘 이해하고 있는 개발자라면 (10).toString() 보다 10 + '' 코드가 더 간결해 보일 수 있다. 중요한건 코드를 예측할 수 있어야한다는 것이다. 동료의 코드를 정확히 이해할 수 있기 위해서라도 타입변환에 대해서 자세하게 알아보자. 문자열 타입 변환 각 타입들이 방금 살펴본 + "" 을 적용하였을때 어떤 식으로 변환..
[JS] DeepDive(8) 제어문
제어문이란 조건에 따라서 코드블록을 실행하거나 반복실행하는 문을 말한다. 제어문을 활용하면 코드의 실행흐름을 위에서부터 아래로 내려가는 자연스러운 흐름을 인의적으로 바꿀 수 있기 때문에 제어문의 남용은 코드의 가독성을 해치게 된다. 따라서 이후에 forEach,map,filter과 같은 고차함수로 제어문의 사용을 덜 쓰는 방향이 좋다. 사실 이번 장은 대부분 아는 내용이라 핵심만 짚고 넘어가도록 할 것 같다. ( JS 문법 글에서 자세히 적어두었다 ) 블록문 이전에 잠깐 설명했던 블록문은 0개 이상의 문을 중괄호로 묶은 것으로 코드블록 혹은 블록이라고 부른다. 조건문 주어진 조건에 따라 코드블록을 실행하게 된다. if...else if .... else 문이 일반적이다. if(조건식1){ // 참 실행문..
[JS] DeepDive(5) 표현식과 문
값 이전시간에 변수에 대해 설명하면서 값이란 용어가 많이 나왔다. 그렇다면 값에 대한 정확한 정의는 무엇일까? 값이란 식이 평가되어 생성된 결과를 의미한다. 평가 ? 식을 해석해서 값을 생성하거나 참조하는 것 조금 쉽게 생각해보자. 10 + 20; //30 위 식이 진행되면 10+20이 아닌 그 결과인 30이 저장된다. 이게바로 값이다. 4장에서 모든 값은 메모리에 2진수 형태로 저장된다고 했다. 그렇다면 2진수를 숫자인지 문자인지 확인하는 방법이 필요하다. 값을 생성하는 방법중 가장 기본적인 방법인 리터럴에 대해 알아보자. 리터럴 사람이 이해할 수 있는 문자 또는 약속된 기호를 값을 생성하는 표기법 자바스크립트에는 위와 같은 리터럴이 존재한다. JS엔진은 런타임에 리터럴을 평가해 값을 생성한다. 표현식..