본문 바로가기

JavaScript21

[자바스크립트] use strict [use strict란]- 코드를 검사할 때 엄격하게 함 : 컴파일 단계에서 오류, 아래 엄격하게 제한되는 부분들이 있음 => 코딩 실수를 잡아내서 예외 발생시킴 - ECMAScript5 문법 - 선언 컨텍스트에 따라 적용범위가 다름 : 스크립트 전체 코드나 함수에 적용시킬 수 있음, 블록( { … } )문에는 적용X => 선언하는 방법은 : “use strict”; 로 선언 - strict mode를 지원하지않는 브라우저의 경우 : 값이 할당되지않은 변수(undefined)로 간주해서 컴파일 에러나지않음 [use strict를 사용함으로서](1) var나 let, const 변수를 선언하는 키워드없이 변수 선언이 안됨 : 암묵적인 전역변수 선언 (2) 같은 이름으로된 함수 파라미터 선언 불가 (3) e.. 2017. 7. 13.
[node.js] 모듈과 미들웨어 개념 [모듈과 미들웨어란]- 모듈 : 기본적으로 제공하는 기능 뿐 아니라 추가적으로 기능을 사용할 때 가져다 쓸 수 있는 라이브러리1) 내장 모듈 : nodejs에서 제공하는 모듈2) 확장 모듈 : nodejs 사용자들이 만들어낸 모듈 - 미들웨어 : 구조 내에서 중간 처리를 위한 함수(함수들의 꾸러미가 모듈)1) express 프레임워크에서 사용할 수 있는 중간 처리 목적의 소프트웨어 : 기본적인 express 구조 내에서 처리 목적으로 사용2) 요청에 대한 응답을 완수하기 전까지 중간중간 다양한 일을 처리할 수 있음3) 미들웨어 함수 생명주기 : request - response 응답을 주기로 종료 4) 미들웨어 함수 우선순위 : 먼저 로드되는 미들웨어 함수가 먼저 실행됨(코드 순서 중요) 12345678.. 2017. 5. 23.
[자바스크립트] 잠깐 쉬어가기 : 자바스크립트 특징 [자바스크립트 특징]1) 스크립트 언어 - 자바스크립트는 웹페이지 동작을 역동적으로 만들기위해 만들어짐- 다시 말하자면 프로그래밍 언어와 같이 쓸 수 있도록 만들어진 언어- 간결하게 코딩하는 것이 특징 2) 프로그래밍 언어- 웹에서 벗어나 독립적으로 하나의 프로그램을 만들 수 있게됨 : 엔진의 속도 향상, nodejs이라는 새로운 환경(런타임 환경) 3) 동적 바인딩, 동적 언어 : 처음에 익히기가 까다로움- 컴파일 시에 자료형, this, 변수 scope 등이 정해지는 것이 아니라 실행 중에 정해지고, 변경됨- 동적이기때문에 갖는 장점과 단점이 있음- 전역 객체(window), 함수 객체(VO 혹은 AO), 실행 컨텍스트, this, scope 정확하게 알고 있어야 예측 가능 4) 표준이 있지만 브라우.. 2017. 5. 18.
[자바스크립트] 함수 내부 동작 [함수 내부동작]- 자바스크립트 엔진의 내부를 살펴보면 함수가 실행스택에 쌓일 때 함수는 객체를 생성함- 객체는 Variable Object(줄여서 VO 라 함)임 - 객체 내부(프로퍼티)는 아래와 같음1) arguments 객체 : 함수로 넘어오는 인자 정보를 담는 객체, 배열은 아니지만 배열과 유사한 형태(배열객체가 제공하는 메소드 사용X)로 저장2) 지역변수, 함수 3) scope chain : [[Scopes]] 프로퍼티 참고- 변수의 범위를 담은 프로퍼티- 선언된 지역변수는 지역변수의 값, 그렇지않은 것은 전역객체의 변수 프로퍼티값 참조- 전역객체에서도 없으면 undefined (상위 객체에서도 없을 때에 undefined 즉, 선언되지않은 값) [함수 상세하게 보기]1) 콘솔창에 함수 만들기1.. 2017. 4. 19.
[자바스크립트] 느슨한 타입 [목표]- 자바스크립트 특징 이해하기 : 그냥 아 그렇구나하고 넘어가는게 아니라... [느슨한 타입이란]- 타입없이 변수를 선언하는 것- 자바스크립트가 변수를 선언할 때 타입없이 var(variable 약어)로만 선언함- 느슨한타입과 반대되는 말은 강력한타입, 강력한타입은 반대로 변수를 선언할 때 타입을 선언해야함1234567/* javascript (loose typing) */var a = 1 // typeof(a) === Numbervar b = "str" // typeof(b) === String /* java (strong typing) */int a = 1;String b = "str"cs - 타입없이 선언했다고해서 변수의 타입이 없는 것은 아님 : 내부적으로 정해짐- 내부적으로 변수의 타입이.. 2017. 4. 19.
[node.js] express, 웹서버 구축, 설계, 제작 더 쉽게하자 [목표]- express를 사용하여 nodejs 공식홈페이지에 나와있는 예제코드보다 더 쉽게 웹서버 구축해보자- express를 사용하여 웹서버 내부 설계, 제작을 해보자 [express란]- 웹서버를 쉽게 구축할 수 있게하는 프레임워크- 프레임워크란(1) 어플리케이션을 구현할 때 어플리케이션 구현에 꼭 필요한 부분, 구조를 미리 구현해둔 구조체(2) 루비에는 레일즈(그래서 ruby on rails), php는 라라벨, java는 spring, nodejs는 express를 주로 사용함(3) 공식홈페이지 : http://expressjs.com/ko/ [express 설치](1) mkdir 디렉토리명 : 프로젝트 디렉토리 만들기 (2) npm init : 프로젝트 관리를 보다 쉽게 하기위해 npm 초기 .. 2017. 4. 15.
[node.js] 비동기 프로그래밍 [목표]- 동기 프로그래밍과 비동기 프로그래밍의 차이점을 알자- 비동기 프로그래밍은 어떤 때에 사용하는 것이 좋은지 찾아보고 생각해보자- nodejs는 비동기프로그래밍 하기가 쉬움을 느끼자- nodejs api 문서를 보면서 api 사용하는 것에 익숙해지자- 콜백함수란 무엇이고, 콜백함수 지옥 맛보기- 앞으로 nodejs를 공부함에 있어서 어떤 것을 공부해야할지 생각해보기 [비동기프로그래밍이란]- 영어로는 Asynchronous - 집안 일(빨래, 설거지, 청소)을 할 때 빨래 다하고 설거지 다하고 청소 하는 것, 순서대로 완료시키고 다음 넘어가는 것은 동기적인 것- 빨래, 설거지, 청소 업체를 불러 동시에 처리하는 것, 하나가 완료됨과 상관없이 동시에 일을 처리하는 것을 비동기적인 것이라 함- 일 처리.. 2017. 4. 12.
[node.js] 모듈 그리고 npm [모듈이란]- 부품과 같은 것- 어떤 기능을 쉽게 만들기위해 필요한 것- 정해진 모듈 사용방법에 따라 사용을 하면 어떤 기능을 쉽게 만들 수 있음- 기능이라는 것이 웹서버 내 기능 뿐만 아니라 컴퓨터 내에 어떤 처리를 쉽게할 수 있도록 도와주기도 함- 예시 : 공식홈페이지에서 가져온 웹서버 구축 코드123456789101112const http = require('http');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'.. 2017. 4. 12.
[node.js] nodejs에 대하여 [목표]- nodejs가 무엇인지 알아보고 이해하기- 기존 자바스크립트와 nodejs는 어떤 관계인지 알아보기- nodejs 특징을 살펴보고 프로그래밍 시 활용하도록 해보기 [nodejs란]- 서버사이드에서 사용할 수 있도록 자바스크립트로 짜여진 서버사이드 런타임 환경 자바스크립트- 서버로 사용할 컴퓨터에서 서버를 구축할 때 언어로 자바스크립트를 사용할 수 있게 됐다는 말- 자바스크립트가 웹브라우저를 벗어나 서버에서도 사용 가능하게 됨- 탈브라우저 자바스크립트인 nodejs가 어떤 기능을 가지고 있는지에 대해 앞으로 살펴보게될 것 [nodejs 선택한 이유 - 특징](1) 개발 생산성이 좋음- 앞선 포스팅에서 봤듯이 서버 구축할 때 굉장히 빠르게 할 수 있음(이건 해보니깐 굉장히 빠르고 좋음 그래서 더 .. 2017. 4. 11.
[node.js] 예제로 간단하게 웹서버 구축 [목표]- node.js로 웹서버 간단하게 구축해보기- 브라우저 - 웹서버 HTTP 통신 기본개념 익히기- node.js로 간편하게 웹서버 구축하는 방법 알기(다음 포스팅) [서버구축](1) node.js 공식 웹사이트 about 탭 가기 : https://nodejs.org/ko/about/(2) 예시 코드 긁어오기12345678910const http = require('http');const hostname = '127.0.0.1'; //클라우드 서버컴퓨터(원격 접속 후 웹서버 구축)라면 아래 (5)번 항목 참고const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Co.. 2017. 4. 11.