-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctions.html
173 lines (168 loc) · 3.94 KB
/
functions.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Functions</title>
</head>
<body>
<script>
// function declaration
function soma(a, b) {
return a + b;
}
console.log(soma);
console.log(soma(2, 2));
// function expression
var soma = function(a, b) {
return a + b;
}
console.log(soma);
console.log(soma(2, 2));
// named function expression
var soma = function som(a, b) {
return a + b;
}
console.log(soma);
console.log(soma(2, 2));
// carregada antes interpretação
console.log(soma(2, 2));
function soma(a, b) {
return a + b;
}
// retorna is not a function
console.log(soma(2, 2));
var soma = function(a, b) {
return a + b;
}
// function como parâmetro
// reutilidade do código
var produtoA = {name: "sapato", preco: 150};
var produtoB = {name: "botina", preco: 180};
var impostoA = function(preco) {
return preco*0.1;
}
var impostoB = function(preco) {
return preco*0.2;
}
var calcular = function(produto, imposto) {
return produto.preco + imposto(produto.preco);
}
console.log(calcular(produtoA, impostoA));
console.log(calcular(produtoA, impostoB));
console.log(calcular(produtoB, impostoA));
console.log(calcular(produtoB, impostoB));
// retorna uma <function>
var helloWorld = function () {
return function () {
return "Hello World!";
};
}
console.log(helloWorld);
// invoca function
// retorna function interna
console.log(helloWorld());
// retorna "Hello World!"
console.log(helloWorld()());
// simular um método
// método = objeto pode retorna function
var pessoa = {
nome: "Wallison",
idade: 22,
getIdade:function() {
return this.idade;
}
};
// exibir propriedade=function
console.log(pessoa.getIdade());
// retorna idade is not defined
// retorna var idade
// this = referece escopo function
var idade = 23;
var pessoa = {
nome: "Wallison",
idade: 22,
getIdade:function() {
return idade;
}
};
// function externa
var getIdade = function() {
return this.idade;
};
var pessoa = {
nome: "Wallison",
idade: 22,
getIdade: getIdade
};
// nao escopo global
// pertence ao objeto
console.log(getIdade());
////indicar escopo executar function
// vários parâmetros
console.log(getIdade.call(pessoa,2, 3, 10));
// vários parâmetros array
console.log(getIdade.apply(pessoa,[3,5,6]));
// função fábrica
// utilize multiplos objetos
// mais indicado->no-new
var criarPessoa = function (nome, idade) {
return {
nome: nome,
idade: idade
};
};
console.log(criarPessoa("Wallison",22));
console.log(criarPessoa("Henrique",30));
// função construtora
// utilize multiplos objetos
// letra maiúscula por convenção
var Pessoa = function (nome, idade) {
this.nome = nome;
this.idade = idade;
};
console.log(new Pessoa("Pereira",40));
console.log(new Pessoa("Silva",60));
// objeto literal com construtor
var pedro = {}; // utilize único objeto
Pessoa.call(pedro, "Pedro", 20);
pedro.telefone = "9999-9999";
console.log(pedro);
// closure-> não perde referência
var helloWorld = function () {
var message = "Hello World!";
return function () {
return message;
}
}
// armazena 2° function
var fnHelloWorld = helloWorld();
console.log(fnHelloWorld());
// não precisa this.texto
var texto = 'olá';
var message = function() {
var texto = 'hello';
return function() {
return texto; // retorna var local
}
}
// outra forma return function
var texto = 'global';
var mensagem = function() {
return texto;
}
var message = function() {
var texto = 'local';
return mensagem;
}
console.log(message()());
// var local undefined
var mensagem = function() {
return texto;
}
var message = function() {
var texto = 'local';
return mensagem;
}
</script>
</body>
</html>