Skip to content

Instantly share code, notes, and snippets.

View IsTheJack's full-sized avatar
🇮🇪
Dublin

Roberto Oliveira IsTheJack

🇮🇪
Dublin
View GitHub Profile
@IsTheJack
IsTheJack / exercicio-funcao1.js
Created November 14, 2018 00:51
Primeiros exercícios de funções
function imprima(nomeDaFuncao, saida) {
console.log(`${nomeDaFuncao} => ${saida}`);
}
// Crie uma função que some dois números
var soma = (numero1, numero2) => numero1 + numero2
var resultado1 = soma(1, 3)
imprima('soma', resultado1)
// Crie uma função que verifica se um número é negativo
@IsTheJack
IsTheJack / js-gotcha-4.js
Created August 30, 2018 13:24
Dado o construtor booleano. Quais o resultados esperados nas linhas 6, 7 e 8? Você conhece outras formas de fazer coerção de tipo em JS?
// Boolean type coercion
Boolean(0) // false
Boolean(1) // true
Boolean(undefined) // ?
Boolean(' ') // ?
Boolean([]) // ?
@IsTheJack
IsTheJack / js-gotcha-3.js
Created August 30, 2018 13:16
Dado o código. Para obter o resultado de saída esperado (linha 13), qual método de composição eu devo utilizar no lugar da função 'X' (linha 11)? Opções (compose e pipe)
import { compose, pipe } from 'ramda'
const ada = { name: 'Ada Lovelace', age: 36 }
// getNameProp :: Object -> String
const getNameProp = obj => obj.name
// toThank :: String -> String
const toThank = name => `Thank you, ${name}!`
@IsTheJack
IsTheJack / js-gotcha-2.js
Created August 30, 2018 12:59
Ao rodar o código abaixo, ocorre esse erro causado pelo 'numbersMap'. Por que? O que você faria para que esse erro parasse de acontecer?
const numbers = [1, 2, 3, 4, 5]
const numbersMap = numbers.map
const double = n => n * 2
const doubleNumbers = numbersMap(double)
// Uncaught TypeError: Array.prototype.map called on null or undefined
// at map (<anonymous>)
// at <anonymous>
@IsTheJack
IsTheJack / js-gotcha-1.js
Last active August 30, 2018 13:01
A função 'getLast' retorna o último elemento de uma array sem causar nenhuma exceção ou qualquer tipo de warning. Qual melhoria você faria nessa função. Por que?
/**
* Get the last element of an array
* @function getLast
* @argument {Array} arr
* @returns
*/
const getLast = arr => arr.pop()
const numbers = [1, 2, 3, 4, 5]
console.log(getLast(numbers)) // => 5
// increment.js
const increment = n => n + 1;
// increment.test.js
describe('Testing increment pure function', () => {
it('Incrementing 1 must to return 2', () => {
// O valor esperado do retorno da função increment
const expectedResult = 2;
// Passando 1 como argumento, o retorno deve ser 2
@IsTheJack
IsTheJack / pure.js
Last active February 11, 2018 22:20
// implementando operador de composição (f1 º f2)(value)
const compose2 = (fn1, fn2) => value => fn1(fn2(value));
// Criando duas funções puras
const increment = (n) => n + 1;
const double = (n) => n * 2;
// Compondo duas funções puras.
const incrementedDouble = compose2(increment, double);
// actions.test.js
// Alguns imports importantes:
// Importando o arquivo onde terá a função acoplada à função testada
import * as punkapi from './path/to/file';
// Importando o aquivo onde terá a função testada
import * as actions from './actions';
// Arquivo com as constantes dos types usados nas actions
import * as types from './types';
// actions.test.js
// Importando o arquivo onde terá a função acoplada à função testada
import * as punkapi from './path/to/file';
// Importando o aquivo onde terá a função testada
import * as actions from './actions';
// Arquivo com as constantes dos types usados nas actions
import * as types from './types';
// ...
// actions.test.js
// Importando o arquivo onde terá a função acoplada à função testada
import * as punkapi from './path/to/file';
// Importando o aquivo onde terá a função testada
import * as actions from './actions';
// Arquivo com as constantes dos types usados nas actions
import * as types from './types';
// ...