SlideShare a Scribd company logo
1 of 54
비전공자의 자바스크립트 도전기
Freelancer / 아프리카TV BJ / Brunch Writer
기발자
2014년 10월
개발 공부 시작
HTML
CSS
JavaScript
Swift
Python
Bootstrap
Angular
React
MEAN
Ionic
Why
JavaScript
Versatile
실행 컨텍스트
클로저
호이스팅
객체지향
프로토타입
클래스
스코프
메서드
컴파일
콜백
재귀함수디버깅
생활코딩 Udemy Treehouse W3School …
여러 채널을 통해 공부했지만…
Too Many
To Fail
K.O
Image + Structure
+ =1 1 2
+ =
+ =1 1 2
값과 연관된 이름으로서,
이를 통해 데이터를 저장하고 조작할 수 있는 것
var
값과 연관된 이름으로서,
이를 통해 데이터를 저장하고 조작할 수 있는 것
=var name “inkwon”
=var name “inkwon”
“inkwon”
name
JavaScript에서 기본적인 빌딩 블록 중의 하나로
작업을 수행하거나 값을 계산하는
문장의 집합과 같은 자바스트립트 절차
JavaScript에서 기본적인 빌딩 블록 중의 하나로
작업을 수행하거나 값을 계산하는
문장의 집합과 같은 자바스트립트 절차
function
function coffeeMachine(coffee beans) {
……
}
coffeeMachine(“브라질 산토스”)
function coffeeMachine(coffee beans)
{
……
}
coffeeMachine(“브라질 산토스”)
function coffeeMachine(coffee beans)
{
……
}
coffeeMachine(“브라질 산토스”)
Parameter
Arguments
function coffeeMachine(coffee beans)
{
return 브라질 산토스 원두로 만들어진 커피
}
coffeeMachine(“브라질 산토스”)
스크립트가 실행되면서 생성되는 것으로
생성된 순서대로 Stack 메모리에 삽입되며
언제나 1개의 Variable Environment,
1개의 Lexical Environment,
그리고 1개의 This Binding 속성으로 구성되어 있는 것
Execution Context
스크립트가 실행되면서 생성되는 것으로
생성된 순서대로 Stack 메모리에 삽입되며
언제나 1개의 Variable Environment,
1개의 Lexical Environment,
그리고 1개의 This Binding 속성으로 구성되어 있는 것
var korName = “Inkwon”
전역에서의 실행 컨텍스트
var korName = “Inkwon”
전역 실행 컨텍스트
전역 변수 객체
scope ( 스코프 체인 )
korName : undefined -> Inkwon
this
함수 호출 시 실행 컨텍스트
var korName = “Inkwon”
function test() {
var korName = “Lee”
}
test();
var korName = “Inkwon”
function test() {
var korName = “Lee”
}
test();
전역 실행 컨텍스트
전역 변수 객체
scope ( 스코프 체인 )
korName
test
this
test 함수 실행 시 test 실행 컨텍스트 생성
전역 실행 컨텍스트
전역 변수 객체
scope ( 스코프 체인 )
korName
test
this
var korName = “Inkwon”
function test() {
var korName = “Lee”
}
test();
전역 실행 컨텍스트
var korName = “Inkwon”
function test() {
var korName = “Lee”
}
test();
test 실행 컨텍스트
test 변수 객체
scope ( 스코프 체인 )
korName
this
전역 실행 컨텍스트
test2 실행 컨텍스트
test2 변수 객체
scope ( 스코프 체인 )
this
test 실행 컨텍스트
var korName = “Inkwon”
function test() {
var korName = “Lee”
function test2() {
return korName
}
test2();
}
test();
var korName = “Inkwon”
function test() {
function test2() {
return korName
}
return test2();
}
console.log(test());
전역 실행 컨텍스트
test2 실행 컨텍스트
test 실행 컨텍스트
스코프 체인
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
전역 실행 컨텍스트
전역 변수 객체
scope ( 스코프 체인 )
korName
test1
test2
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
this
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
전역 실행 컨텍스트
test2 실행 컨텍스트
test2 변수 객체
scope ( 스코프 체인 )
korName
this
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
전역 실행 컨텍스트
test1 실행 컨텍스트
test1 변수 객체
scope ( 스코프 체인 )
this
test2 실행 컨텍스트
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
전역 실행 컨텍스트
test1 실행 컨텍스트
test2 실행 컨텍스트
전역 실행 컨텍스트
test1 실행 컨텍스트
전역 실행 컨텍스트
test2 실행 컨텍스트
var korName = "inkwon";
function test1() {
return korName;
}
function test2() {
var korName = "Lee";
return test1();
}
console.log(test2());
JavaScript에서 prototype은 함수의 속성이며 생성자 함수에서
만든 개체의 속성입니다. 함수의 프로토타입은 개체입니다.
이는 함수가 생성자로 사용될 때 주로 사용됩니다.
Prototype
var add = function(x, y) {
return x + y;
}
var add = function(x, y) {
return x + y;
}
console.dir(add.prototype);
console.dir(add.prototype.constructor);
add 함수 객체 add.prototype
( add 프로토타입 객체 )
prototype 프로퍼티
constructor 프로퍼티
객체지향 프로그래밍(OOP)에서 클래스는 특정 종류의 객체내에 있는 변
수와 메서드를 정의하는 일종의 틀, 즉 템플릿이다. 따라서, 객체는 클래
스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다.
Class
function Person(name) {
this.name = name;
this.getName = function() {…}
this.setName = function(reName) {…}
}
var korName = new Person(“inkweon”);
var usName = new Person(“Christy”);
function Person(name) {
this.name = name;
this.getName = function() {…}
this.setName = function(reName) {…}
}
Person
name
getName
setName
Person
name
getName
setName
korName
name
getName
setName
Person
name
getName
setName
korName
name
getName
setName
usName
name
getName
setName
Person
name
getName
setName
korName
name
getName
setName
usName
name
getName
setName
불필요한
메모리 공간을 차지
Person.prototype.getName = function() {…}
Person.prototype.setName = function(reName) {…}
var korName = new Person(“inkweon”);
var usName = new Person(“Christy”);
function Person(name) {
this.name = name;
}
Person
name
getName
setName
Person.prototype
korName
name
usName
name
남은 JavaScript 주요 개념
객체지향 (OOP), 재귀함수, 클로저 등
감사합니다.

More Related Content

What's hot

GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview기동 이
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeYoung-Beom Rhee
 
Regex & property sheet
Regex & property sheetRegex & property sheet
Regex & property sheetYoungkwon Lee
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍Hyunsoo Jung
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Byeongsu Kang
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js functionYoung-Beom Rhee
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기Jong Wook Kim
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GDG Korea
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍NAVER D2
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합NAVER D2
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 ClojureEunmin Kim
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로Jaeseung Ha
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGDG Korea
 

What's hot (20)

GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
Regex & property sheet
Regex & property sheetRegex & property sheet
Regex & property sheet
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android Looper
 

Similar to [하코사 세미나] 비전공자의 자바스크립트 도전기

자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화Sungchul Park
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 releaseJaehyeuk Oh
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
 
Why what how kotlin
Why what how kotlinWhy what how kotlin
Why what how kotlinSewonKo
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)Suwon Chae
 
Javascript Context, Prototype
Javascript Context, PrototypeJavascript Context, Prototype
Javascript Context, PrototypeGunhee Lee
 
스파르탄Js in sidejs5
스파르탄Js in sidejs5스파르탄Js in sidejs5
스파르탄Js in sidejs5Jin-Hyun Park
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본Tj .
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With GroovyTommy C. Kang
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
 
Spring test mvc 발표자료
Spring test mvc 발표자료Spring test mvc 발표자료
Spring test mvc 발표자료수홍 이
 

Similar to [하코사 세미나] 비전공자의 자바스크립트 도전기 (20)

자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
javascript01
javascript01javascript01
javascript01
 
Javascript
JavascriptJavascript
Javascript
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, Scalability
 
Scalability
ScalabilityScalability
Scalability
 
Why what how kotlin
Why what how kotlinWhy what how kotlin
Why what how kotlin
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
Javascript Context, Prototype
Javascript Context, PrototypeJavascript Context, Prototype
Javascript Context, Prototype
 
스파르탄Js in sidejs5
스파르탄Js in sidejs5스파르탄Js in sidejs5
스파르탄Js in sidejs5
 
Scala
ScalaScala
Scala
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본
 
Javascript
JavascriptJavascript
Javascript
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
 
javascript02
javascript02javascript02
javascript02
 
C++에서 Objective-C까지
C++에서 Objective-C까지C++에서 Objective-C까지
C++에서 Objective-C까지
 
Spring test mvc 발표자료
Spring test mvc 발표자료Spring test mvc 발표자료
Spring test mvc 발표자료
 

[하코사 세미나] 비전공자의 자바스크립트 도전기