desenvolvimento frontend- javascript - share

65
Desenvolvimento Frontend: JavaScript Cesar William Alvarenga

Upload: cesar-william-alvarenga

Post on 13-Feb-2017

80 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento Frontend- JavaScript - Share

Desenvolvimento Frontend: JavaScriptCesar William Alvarenga

Page 2: Desenvolvimento Frontend- JavaScript - Share

About me

@cesarwbr

http://www.cesarwilliam.com

Page 3: Desenvolvimento Frontend- JavaScript - Share
Page 4: Desenvolvimento Frontend- JavaScript - Share
Page 5: Desenvolvimento Frontend- JavaScript - Share
Page 6: Desenvolvimento Frontend- JavaScript - Share
Page 8: Desenvolvimento Frontend- JavaScript - Share

Agenda

● Scope● Nested Scope● Hoisting● this● Closure

Page 9: Desenvolvimento Frontend- JavaScript - Share

Somente funções define escopo em JavaScript

Page 10: Desenvolvimento Frontend- JavaScript - Share
Page 11: Desenvolvimento Frontend- JavaScript - Share
Page 12: Desenvolvimento Frontend- JavaScript - Share
Page 13: Desenvolvimento Frontend- JavaScript - Share
Page 14: Desenvolvimento Frontend- JavaScript - Share

Somente funções define escopo em JavaScript

Page 15: Desenvolvimento Frontend- JavaScript - Share
Page 16: Desenvolvimento Frontend- JavaScript - Share
Page 17: Desenvolvimento Frontend- JavaScript - Share

cc c

Page 18: Desenvolvimento Frontend- JavaScript - Share
Page 19: Desenvolvimento Frontend- JavaScript - Share
Page 20: Desenvolvimento Frontend- JavaScript - Share

Chrome DevTools

discover-devtools.codeschool.com

Page 21: Desenvolvimento Frontend- JavaScript - Share
Page 22: Desenvolvimento Frontend- JavaScript - Share

IIFE

Page 23: Desenvolvimento Frontend- JavaScript - Share

IIFE

http://benalman.com/news/2010/11/immediately-invoked-function-expression/

Page 24: Desenvolvimento Frontend- JavaScript - Share

IIFE

Page 25: Desenvolvimento Frontend- JavaScript - Share

JQuery Code! :)

Page 26: Desenvolvimento Frontend- JavaScript - Share

Escopo em blocos no ES6

let

Page 27: Desenvolvimento Frontend- JavaScript - Share

let (ES6+)

Page 28: Desenvolvimento Frontend- JavaScript - Share

let (ES6+)

Page 29: Desenvolvimento Frontend- JavaScript - Share

Hoisting

Page 30: Desenvolvimento Frontend- JavaScript - Share

Hoisting

Page 31: Desenvolvimento Frontend- JavaScript - Share

Hoisting

Page 32: Desenvolvimento Frontend- JavaScript - Share

Hoisting

Page 33: Desenvolvimento Frontend- JavaScript - Share

Hoisting: Primeiro funções

Page 34: Desenvolvimento Frontend- JavaScript - Share

Hoisting: let (ES6+) “temporary dead zone”

Page 35: Desenvolvimento Frontend- JavaScript - Share

Exercício: Dia 3

Page 36: Desenvolvimento Frontend- JavaScript - Share

thisToda função, quando está sendo executada, tem uma referencia para o

contexto em que foi executada, chamada this.

Page 37: Desenvolvimento Frontend- JavaScript - Share

this

Page 38: Desenvolvimento Frontend- JavaScript - Share

this: implicit & default binding

Page 39: Desenvolvimento Frontend- JavaScript - Share

this: implicit & default binding

bar1

bar2

bar3

Page 40: Desenvolvimento Frontend- JavaScript - Share

this: implicit & default binding

Page 41: Desenvolvimento Frontend- JavaScript - Share

this: explicit binding

Page 42: Desenvolvimento Frontend- JavaScript - Share

this: hard binding

Page 43: Desenvolvimento Frontend- JavaScript - Share

this: hard binding

Page 45: Desenvolvimento Frontend- JavaScript - Share

this: new

Page 46: Desenvolvimento Frontend- JavaScript - Share

this rules priority

1. called with ‘new’?2. called with ‘call’ or ‘apply’?3. called via an object?4. DEFAULT: global object (except strict mode)

Page 47: Desenvolvimento Frontend- JavaScript - Share
Page 48: Desenvolvimento Frontend- JavaScript - Share
Page 49: Desenvolvimento Frontend- JavaScript - Share
Page 50: Desenvolvimento Frontend- JavaScript - Share

closureClosure é quando uma função "lembra" do seu escopo léxico mesmo quando a

função é executada fora do seu escopo léxico.

Page 51: Desenvolvimento Frontend- JavaScript - Share

closure

Page 52: Desenvolvimento Frontend- JavaScript - Share

closure

Page 53: Desenvolvimento Frontend- JavaScript - Share

closure

Page 54: Desenvolvimento Frontend- JavaScript - Share

closure

Page 55: Desenvolvimento Frontend- JavaScript - Share

closure

Page 56: Desenvolvimento Frontend- JavaScript - Share

closure

Page 57: Desenvolvimento Frontend- JavaScript - Share

closure

Page 58: Desenvolvimento Frontend- JavaScript - Share

closure

Page 59: Desenvolvimento Frontend- JavaScript - Share

closure

Page 60: Desenvolvimento Frontend- JavaScript - Share

closure

Page 61: Desenvolvimento Frontend- JavaScript - Share

modulesPadrões: clássico e moderno

Page 62: Desenvolvimento Frontend- JavaScript - Share

Padrão clássico

Page 63: Desenvolvimento Frontend- JavaScript - Share

Padrão clássico

Page 64: Desenvolvimento Frontend- JavaScript - Share

Padrão moderno

Page 65: Desenvolvimento Frontend- JavaScript - Share

ES6+

foo.js