SlideShare uma empresa Scribd logo
1 de 37
Programação
Funcional em
JavaScript
Sou Emanuel Gonçalves, estudante do
curso de Sistemas de Informação,
Unigranrio – Caxias. Sou desenvolvedor
Front-End, amo JavaScript e Tecnologias
Web.
O que veremos?
Conceitos básicos da programação funcional:
Functions First-Class e High Order;
Compose e Curriyng;
Como fazer um código JavaScript nos moldes da PF?
Map, Reduce, Filter, Every, Some;
Que raios é PF?
É um paradigma da Ciência da Computação que trata um código como
um apanhado de funções matemáticas, em que os dados são imutáveis
e não há mudança de estado no sistema.
Vamos aos princípios e conceitos
Como eu programo em PF?
Utilizando funções!
Mas quaisquer tipos de funções e
de que qualquer forma?
var counter = 0;
function increment() {
counter++;
console.log(counter);
}
increment(); // 1
increment(); // 2
console.log(counter); // 2
Dados imutáveis
Perceba que no exemplo anterior, a variável counter é modificada a cada chamada
de increment. Coisa chata de acontecer!
Funções devem ser puras
Olhe agora a diferença com PF
var counter = 0;
function increment(counter) {
return counter + 1;
}
increment(counter); // 1
increment(counter); // 1
console.log(counter); // 0
E se eu passar como parâmetro
um dado não numérico
function increment(x) {
x++;
console.log(x);
}
increment(“a”); // NaN
increment(true); // 2
increment(false); // 1
É importante estabelecer um
contrato!
function rntNumber(x) {
if (typeof x === “number”)
return x;
else
throw new Error(“É necessário um número”);
}
increment(rtnNumber(“a”)); // Error
increment(rtnNumber(true)); // Error
increment(rtnNumber(10)); // 11
Sem laços de repetição
Use a recursividade
function iterar(x) {
if(x == 0)
return console.log(x);
else
console.log(x);
return iterar(x-1);
}
iterar(5);
5
4
3
2
1
0
Bases da PF para funções
Funções devem:
Retornar valores ou outras funções!!!
Terem, ao menos, um parâmetro;
Dai derivam as:
First-Class Functions; e
High Order Functions
First-Class Functions
É toda função que pode ser:
Passada para uma variável;
Retornada de uma função;
Passada como um parâmetro
High Order Functions
É toda função que:
Recebe uma ou mais funções como parâmetro;
Retorna uma outra função;
Vamos a mais código?
function somar(x, y) {
return x + y;
}
function multiplicar(x, y) {
return x * y;
}
function calcular(f, x, y) {
return f(x, y);
}
var soma = somar(2, 2);
console.log(soma) // 4
var multiplicacao = multiplicar(2, 2);
console.log(multiplicação); // 4
// Ou você pode fazer assim, usando COMPOSE
var soma = calcular(soma, 2, 2); // 4
var multiplicacao = calcular(multiplicar, 2, 2); // 4
Curriyng
function add(x) {
return function (y) {
return x + y;
}
}
var addFive = add(5);
addFive(10); // 15
var addTen = add (10);
addTen(10); // 20
Métodos de Array
Map, filter, reduce, every, some
var numBin = [1, 0, 1, 0, 1, 0] .reverse();
function isBin(x) {
return x < 2 && x >= 0;
}
// Usando o método every
var isBinario = numBin.every(isBin);
if(isBinario) {
// Usando o método map
var calculo = numBin.map(function(x, i) {
return x * (Math.pow(2, i)); // O i é o índice do array
});
// Usando o método reduce
var calcFinal = calcFinal.reduce(function(x, y) {
return x + y;
});
}
console.log(calcFinal); // 42
Método filter
É usado quando você quer “filtrar” o seu array
var arrayNums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var numsPares = arrayNums.filter(function(x){
return x % 2 == 0;
});
console.log(numsPares); // [2, 4, 6, 8];
Método some
Logicamente falando, é o oposto do every, em que se apenas um
elemento se encaixa na condição, ele retorna true
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
Var isPar = number.some(function(x){
return x % 2 == 0;
});
console.log(isPar); // true
Obrigado por sua atenção!!!!
emanuelgdev.com.br
github.com/emanuelgsouza

Mais conteúdo relacionado

Mais procurados (20)

Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Aula 01 práticaalgoritmo laboratorio
Aula 01 práticaalgoritmo laboratorioAula 01 práticaalgoritmo laboratorio
Aula 01 práticaalgoritmo laboratorio
 
Aula14
Aula14Aula14
Aula14
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Pilha em C
Pilha em CPilha em C
Pilha em C
 
Aula 09 08-2013
Aula 09 08-2013Aula 09 08-2013
Aula 09 08-2013
 
Aula2
Aula2Aula2
Aula2
 
Estruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILEEstruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILE
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04
 
Ling c
Ling cLing c
Ling c
 
Units
UnitsUnits
Units
 
Linguagem c wellington telles - aula 08
Linguagem c   wellington telles - aula 08Linguagem c   wellington telles - aula 08
Linguagem c wellington telles - aula 08
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 

Semelhante a Light Talk sobre JavaScript Funcional

Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoLeonardo Borges
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++thiagodp
 
TDD em C++
TDD em C++TDD em C++
TDD em C++thiagodp
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 
Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Giovanni Bassi
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Arthur Xavier
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++Verônica Veiga
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maplejeandson correa
 

Semelhante a Light Talk sobre JavaScript Funcional (20)

Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncrono
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
Javascript
JavascriptJavascript
Javascript
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Apresentando o EcmaScript 6
Apresentando o EcmaScript 6
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Tdc2010 web
Tdc2010 webTdc2010 web
Tdc2010 web
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maple
 

Último

[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORDRONDINELLYRAMOS1
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 

Último (11)

[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 

Light Talk sobre JavaScript Funcional

  • 2. Sou Emanuel Gonçalves, estudante do curso de Sistemas de Informação, Unigranrio – Caxias. Sou desenvolvedor Front-End, amo JavaScript e Tecnologias Web.
  • 3. O que veremos? Conceitos básicos da programação funcional: Functions First-Class e High Order; Compose e Curriyng; Como fazer um código JavaScript nos moldes da PF? Map, Reduce, Filter, Every, Some;
  • 4. Que raios é PF? É um paradigma da Ciência da Computação que trata um código como um apanhado de funções matemáticas, em que os dados são imutáveis e não há mudança de estado no sistema.
  • 5.
  • 6. Vamos aos princípios e conceitos Como eu programo em PF?
  • 8.
  • 9. Mas quaisquer tipos de funções e de que qualquer forma?
  • 10.
  • 11. var counter = 0; function increment() { counter++; console.log(counter); } increment(); // 1 increment(); // 2 console.log(counter); // 2
  • 12. Dados imutáveis Perceba que no exemplo anterior, a variável counter é modificada a cada chamada de increment. Coisa chata de acontecer!
  • 13. Funções devem ser puras Olhe agora a diferença com PF
  • 14. var counter = 0; function increment(counter) { return counter + 1; } increment(counter); // 1 increment(counter); // 1 console.log(counter); // 0
  • 15. E se eu passar como parâmetro um dado não numérico
  • 16. function increment(x) { x++; console.log(x); } increment(“a”); // NaN increment(true); // 2 increment(false); // 1
  • 18. function rntNumber(x) { if (typeof x === “number”) return x; else throw new Error(“É necessário um número”); } increment(rtnNumber(“a”)); // Error increment(rtnNumber(true)); // Error increment(rtnNumber(10)); // 11
  • 19. Sem laços de repetição Use a recursividade
  • 20. function iterar(x) { if(x == 0) return console.log(x); else console.log(x); return iterar(x-1); } iterar(5); 5 4 3 2 1 0
  • 21. Bases da PF para funções
  • 22. Funções devem: Retornar valores ou outras funções!!! Terem, ao menos, um parâmetro; Dai derivam as: First-Class Functions; e High Order Functions
  • 24. É toda função que pode ser: Passada para uma variável; Retornada de uma função; Passada como um parâmetro
  • 26. É toda função que: Recebe uma ou mais funções como parâmetro; Retorna uma outra função;
  • 27. Vamos a mais código?
  • 28. function somar(x, y) { return x + y; } function multiplicar(x, y) { return x * y; } function calcular(f, x, y) { return f(x, y); }
  • 29. var soma = somar(2, 2); console.log(soma) // 4 var multiplicacao = multiplicar(2, 2); console.log(multiplicação); // 4 // Ou você pode fazer assim, usando COMPOSE var soma = calcular(soma, 2, 2); // 4 var multiplicacao = calcular(multiplicar, 2, 2); // 4
  • 31. function add(x) { return function (y) { return x + y; } } var addFive = add(5); addFive(10); // 15 var addTen = add (10); addTen(10); // 20
  • 32. Métodos de Array Map, filter, reduce, every, some
  • 33. var numBin = [1, 0, 1, 0, 1, 0] .reverse(); function isBin(x) { return x < 2 && x >= 0; } // Usando o método every var isBinario = numBin.every(isBin);
  • 34. if(isBinario) { // Usando o método map var calculo = numBin.map(function(x, i) { return x * (Math.pow(2, i)); // O i é o índice do array }); // Usando o método reduce var calcFinal = calcFinal.reduce(function(x, y) { return x + y; }); } console.log(calcFinal); // 42
  • 35. Método filter É usado quando você quer “filtrar” o seu array var arrayNums = [1, 2, 3, 4, 5, 6, 7, 8, 9]; var numsPares = arrayNums.filter(function(x){ return x % 2 == 0; }); console.log(numsPares); // [2, 4, 6, 8];
  • 36. Método some Logicamente falando, é o oposto do every, em que se apenas um elemento se encaixa na condição, ele retorna true var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; Var isPar = number.some(function(x){ return x % 2 == 0; }); console.log(isPar); // true
  • 37. Obrigado por sua atenção!!!! emanuelgdev.com.br github.com/emanuelgsouza