da2k / curso-javascript-ninja Goto Github PK
View Code? Open in Web Editor NEWCurso Javascript Ninja
Home Page: http://blog.da2k.com.br/curso-javascript-ninja/
Curso Javascript Ninja
Home Page: http://blog.da2k.com.br/curso-javascript-ninja/
@fdaciuk travei nesse exercicio não consegui entender o enuciado, me da um help?
/*
No desafio anterior criamos uma calculadora, usando uma estrutura funcional.
Agora vamos criar uma outra calculadora, usando uma outra abordagem :D
- Crie uma função `calculator` que recebe dois valores (números)
por parâmetro.
- Essa função deve retornar uma outra função, que recebe um parâmetro
chamado `callback`.
- Esse `callback` será uma função, que passaremos por parâmetro ao invocar
o retorno de `calculator`.
- O retorno dessa segunda função deve ser a função de `callback` passada
por parâmetro, INVOCADA, e passando a ela por parâmetro os dois valores
que foram passadas para a primeira função `calculator`.
*/
Fala Daciuk, cara to me amarrando no curso muito bom mesmo parabens!
Estou com dificuldades pra pensar na lógica da coisa, você pode me dar um help?!
Vlw!
@fdaciuk não entendi o enunciado.
/*
Crie uma função que receba dois parâmetros: o primeiro, um array de valores; e o
segundo, um número. A função deve retornar um índice do array que foi passado
no primeiro parâmetro. O índice a ser retornado, deve ser o número passado no
segundo parâmetro.
*/
comecei fazendo dessa forma -> function towParam ( ["lucas", 1,3,4] , 1 ) {};
cara, eu mandei o pull request do desafio dessa semana, mas foi um monte de coisa junta que parece que esta acumulando, como eu faço pra remover esses pull requests?
só pra ver se vc entende oq eu quero dizer
silvioCoelho added some commits 7 days ago
@silviocoelho Challenge-15 0319652
@silviocoelho Challenge-15 e78f465
@silviocoelho Challenge-15 79bc596
@silviocoelho Merge remote-tracking branch 'upstream/master' 908c495
@silviocoelho Challenge-17 bb9fb11
Fala Fernando blz.
Então cara foi meio zica pra eu conseguir fazer as coisas pelo git aqui no terminal e confesso que algumas coisas não entendi muito bem, mas de boa consegui fazer funcionar. Meu SO aqui é Windows então já sabe como é.
Fiquei meio confuso sobre aquele exemplo que você explicou da variavel um e variavel dois. Não entendi muito bem isso.
var um = 1;
var dois = um++;
}
Ai lendo umas coisas também teve outra coisa que eu não entendi, se você puder explicar pra gente.
Por que aqui o valor é true?
var a = 1;
var b = 1;
a == b;
a === b;
}
E aqui é false?
var a = [1,2,3];
var b = [1,2,3];
a == b;
a === b;
}
O repositório do curso é apenas para consulta, ou pode ser clonado em um projeto local ? Preciso configurar a chave SSH e tudo mais ?
@fdaciuk Vi toda a aula 09 e antes de fazer o exercicio fui pensar sobre o que seria uma IIFE, me veio algumas ideias do que ela seria e fiz algumas analogias. A IIFF "seria como uma especie de casulo,escudo ou algo do tipo para proteger o codigo" e tive a ideia de quadrados dentro de varios outros quadrados no caso os quadrados seriam as functions(ou um aninhamento de functions).Isso seria algo certo a a se pensar sobre a IIFF?
seria correto sempre ultiliza-la em todo o tipo de codigo? esse tipo de codificação gera algum tipo de segurança ao projeto?
Estou praticando o operador de módulo, criei esta função que descobre se o número é par ou impar, o If foi bem empregado aqui?
function descobreTipo() { var numero1 = prompt('digite seu numero1: '); var numero2 = prompt('digite seu numero2: '); //condicional if ternário numero1 % numero2 === 0 ? console.log('numero par') : console.log('impar') }
No exercício temos que executar esse exemplo que está abaixo. Consegui fazer tranquilamente. Só estou meio equivocado e quero ter certeza se estou certo.
A variável total ela é passada para que os ifs tenha os valores atualizado, ou seja soma.
E passamos carro.quantidadePessoas += NumeroPessoa;
pois se não cair no ifs ele pega tudo que a variável tem e soma.
Está certo? 😄
carro.adicionarPessoas = function(NumeroPessoa){
var total = carro.quantidadePessoas + NumeroPessoa;
if( carro.quantidadePessoas === carro.assentos && total >= carro.assentos) {
return 'O carro já está lotado';
}
if( total > carro.assentos ) {
var PessoasCabem = carro.assentos - carro.quantidadePessoas;
var SingularPlural = PessoasCabem === 1 ? 'pessoa' : 'pessoas';
return 'Só cabem mais ' + PessoasCabem + ' ' + SingularPlural + '!';
}
carro.quantidadePessoas += NumeroPessoa;
return 'Já temos ' + carro.quantidadePessoas + ' pessoas no carro!';
};
Fala @fdaciuk, rapaz to com um "problema" ao editar o arquivo, fazer o commit e dar push ele envia branchs dos desafios anteriores juntos.
Exemplo: Enviei a branch do challenge 02 e na mesma branch esta indo do challenge 01
Boa noite @fdaciuk, notei que existem 2 novos desafios, 31, 32 e 33, porém nos links que me foram enviados, apenas constam acesso até a aula 30, está correto, seria possível me enviar o acesso a essas aulas?
Fernando, eu dei um git fetch upstream seguido de git merge upstream/master de dentro da branch master... e depois dei um git push origin master.
Só que acabou puxando o challenge 11 e 12 pra dentro da branch master e agora se eu criar uma branch nova pro challenge10 ele vai colocar o 11 e 12 também né?
Como resolvo isso?
Obrigado
"sum" agora é uma função, e, se o sinal correto não foi passado para a
função "calculator", "sum" será false. Certifique-se de que "sum" não é
"false", e então atribua às variáveis "number1" e "number2", dois números
que serão os operandos da operação de soma.
Após isso, mostre no console o resultado da operação, passando dois
parâmetros para o método "log" de "console":
quando eu atribuo um operador incorreto á calculator, meu código da erro, no caso desse exercício a atribuição das variaveis e feita dentro do console.log, pois as variaveis ja tao la na função calculator.
em que aula começamos a pegar itens de um input, criei um projeto aqui bem simples e so falta isso pra eu poder por ele no ar. essa parada de programação funcional é loka demais, to curtindo pra caramba.
Olá Fernando, boa tarde!
To meio perdido com o envio do desafio (Pull Request) acredito que envie para você, assim que puder me confirme se recebeu ai. Abraço!
Fala @fdaciuk blz?
Estou atrasado nos exercícios devido a alguns contratempos.
Estou tendo dificuldade neste exercício, sera que poderia me ajudar a entender?
/*
Crie uma função com as seguintes características:
2
ao resultado da multiplicação.Obrigado
@fdaciuk, eu criei o objeto operation
var operation ={
sum: function( a, b ) {
return a + b;
},
subtraction: function( a, b ) {
return a - b;
},
multiplication: function( a, b ) {
return a * b;
},
division: function( a, b ) {
return a / b;
},
mod: function( a, b ) {
return a % b;
}
}
e validei o operador
function isOperatorValid( operator ) {
operator !== '*' || operator !== '/' || operator !== '+' || operator !== '-' || operator !== '%' ? console.log(true) : console.log(false);
}
nessa parte do execicio eu vou criar novamente o objeto operation
e a função isOperatorValid
dentro da função calculator? ou chamar dentro dessa função os dois?
pode usar o if nessa parte?
/*
Agora vamos criar a calculadora.
- Crie uma função chamada `calculator`, que receberá como parâmetro um
operador;
- Se o operador não for válido, a função deve retornar "false";
- Se o operador for válido, retornar uma segunda função que receberá dois
parâmetros;
- Se algum dos parâmetros não for um número, retornar "false";
- Senão, retornar o método do objeto "operation" criado acima, baseado no
operador passado para a função "calculator", e passando para esse método
os dois parâmetros da função de retorno de "calculator".
*/
Boa noite @fdaciuk,
Os vídeos não estão aparecendo lá no vimeo, já inseri a senha para assitir as aulas e nada, Há algum problema?
Grato! ;)
Grande Fernando,
Na criação do método não estou conseguindo acessar variavel idade veja abaixo.
Até aqui esta tubo bem.
var pessoa = {
nome: 'Danilo',
sobrenome: 'agostinho',
sexo: 'masculino',
idade: 23,
altura: 1.85,
peso: 64,
andando: false,
caminhouQuantosMetros: 0
}
Agora aqui não consigo acessar a variável diz: is not defined
pessoa.fazerAniversario = function() {
return idade++;
}
Como resolver isso?
@fdaciuk Não to conseguindo ver os videos das aulas... Fica um espaço em branco onde era pra ter o video. O que fazer?
@fdaciuk
por quê nesse exemplo ele mostra no fim o 20 duas vezes?
var init =10;
while(init <=20){
console.log(init);
init++;
};
// 10 11 12 13 14 15 16 17 18 19 20 20
e nesse outro não? sendo que a estrutura é a mesma só diferencia porque está dentro de uma function()
function cont(){
var init = 10;
while (init <=20){
console.log(init);
init ++;
};
}
cont();
// 10 11 12 13 14 15 16 17 18 19 20
@fdaciuk
estou tendo dificuldades com esse exercicio, o parametro da 1° function que recebe o operando está concatenando com o os paramentros da segunda function,não sei como resolver esse problema
Crie uma função literal chamada `calculator`, que funcione assim:
- A função deve receber um parâmetro que dirá qual operação matemática ela
vai efetuar. Será uma string com os valores `+`, `-`, `*`, `/` ou `%`;
- Essa função deve retornar uma segunda função que fará o seguinte:
- Essa segunda função deve receber dois parâmetros;
- Esses dois parâmetros serão os operandos usados na operação matemática;
- O retorno dessa segunda função é a operação matemática completa, com a frase:
"Resultado da operação: [NUMERO1] [OPERADOR] [NUMERO2] = [RESULTADO]."
- Se o operador não for válido, retornar a frase:
"Operação inválida."
@fdaciuk blz? Estou com um probleminha, não sei o que eu fiz mas apareceu os diretorios 27,28 e 29 para commit, como eu retiro eles ?
Fernando, acho que não estou enviando de forma correta meus exercícios para você porque nunca mais recebi nenhuma notificação de correção.
Tenho todas as branchs criadas com todos os exercícios feitos... Devo dar um push ou merge para algum outro repositorio? Desculpe as perguntas mas sou iniciante nesse git.
Abraço
Olá, Fernando!
Qual atalho você utilizou pra limpar o console do node.js, como foi feito na aula de operadores de igualdade e relacionais?
Posso ficar a vontade para remover pastas dos desafios passados de branchs mais recentes para fim de organização dos meus repositórios?
Como posso adicionar tags como a "question" em issues que eu venha a criar?
@fdaciuk qual a diferença de object e Object?
@fdaciuk fiquei em dúvida com relação a seguinte parte do enunciado.
Crie uma função chamada
addItem
, que irá adicionar itens no array criado.
A função deverá retornar o array atualizado.
Crie o seguinte:
function addItem() {
return myArray;
}
Pergunta: Essa função serve apenas para mostrar o array criado ou também já deve adicionar itens no array?. Exemplo.
function addItem() {
myArray.push('item');
return myArray;
}
Aqui que não entendi direito:
Adicione um novo array ao array criado no início do desafio, com ao menos 3 itens de tipos diferentes, mostrando o resultado no console.
Pergunta: Aqui eu devo usar o 'push', dentro da função acima ou isoladamente. Fazendo com que essa função adicione e mostre o array atualizado. Exemplos:
function addItem() {
var addItemArray = myArray.push([undefined, function(){}, {}]);
console.log(addItemArray);
}
Ou seria assim...
var addItemArray = myArray.push([undefined, function(){}, {}]);
console.log(addItemArray);
Não sei se me expressei bem, Grato!
Oi Daciuk!
Fiquei em dúvida de quais são os parâmetros válidos que podemos passar na função, quais são as restrições ou parâmetros inválidos?
Você pode por favor explicar sobre os operadores abreviados de multiplicação e divisão?
Olá Daciuk. Então, estou com um problema/dúvida na hora de fazer o pull request. Toda hora que o faço, ele insiste em enviar o challenge 01 e o challenge 02. Can you help me?
Opa @fdaciuk !
Não estou conseguindo essa parte.
null
.function somar(a,b,c){
if( a !== undefined && b === undefined && c === undefined){
return a;
}
else if(a === undefined && b !== undefined && c === undefined){
return b;
}
else if(a !== undefined && b !== undefined && c === undefined){
return a+b;
}
else if(a !== undefined && b !== undefined && c !== undefined){
return (a+b)/c;
}
else if( a === undefined && b === undefined && c === undefined ){
return false;
}
else{
return null;
}
}
se uso uma string como argumento da o seguite erro,no erro abaixo eu coloquei meu nome para testar, e não retorna o null como deveria ser.
Uncaught ReferenceError: lucas is not defined
at :2:7
at Object.InjectedScript._evaluateOn (:895:140)
at Object.InjectedScript._evaluateAndWrap (:828:34)
at Object.InjectedScript.evaluate (:694:21)
se uso string com aspas simples ou duplas ele mostra a string.Em um outro codigo que fiz ele mostrava a string + undefined
fiz varios testes usei a letra f como argumento a saida é um form relacioando a pesquisa por voz do google
(function(win, doc) {
'use stric';
var $inputNumber = doc.querySelector( '[data-js="input"]' );
var $numberBtn = doc.querySelectorAll( '[data-js="btnNumber"]' );
var $operatorBtn = doc.querySelectorAll( '[data-js="operatorBtn"]' );
$equalBtn = doc.querySelector( '[data-js="equalBtn"]' );
var $ceBtn = doc.querySelector( '[data-js="ceBtn"]' );
})( window, document);
nesse codigo ele só consegue achar o $qualBtn que é qual eu nao usei a palavra var antes, todos os outros quando eu invoco ele diz que não foi declarado! agora se eu tirar a palavra var eu consigo invocar. ce sabe qual é o problema doido que ta ocorrendo?
@fdaciuk Acha válido um canal no Slack para interação e networking entre os participantes do Curso?
Aqui no GitHub fica com as dúvidas através de issues e no slack ficaria o networking e conversas sobre JavaScript.
@fdaciuk
sabe de algum site que tenha exercicios de algoritimos para mim faze-los em js, preciso praticar muito essa parte, melhorar minha logica, ja procurei no google não consegui encontrar, so encontrei livros e por sinal bem caros
Boa tarde @fdaciuk !
Estou refazendo meus exercícios afim de melhorá-los, :)
Tenho uma grande dúvida com relação a: return null e false
Neste exemplo:
Pelo que eu entendi, se nenhuma das condições acima forem atendidas, retorne null
, certo! Mas o return null ou false ele quebra alguma ação? Ou dá um salto feito o return e break?
Se puder me dar alguns detalhes sobre o impacto dos retornos null, false
Grato ;) 👍
@fdaciuk ,
Pode me dizer onde esta o erro nesta minha função? Quando eu passo por paramêtro o nome do Livro tenho um retorno undefined.
function book( livro ) {
var livros = {
crepusculo: {quantidadePaginas: 260, autor: ' clarice ' , editora: 'Abril'},
alquimista: {quantidadePaginas: 260, autor: ' Paulo coelho ' , editora: 'Abril'},
mensagens: {quantidadePaginas: 260, autor: ' Flavio siqueira ' , editora: 'Abril'}
};
return livro;
if( livro === undefined ) {
return livros;
}
}
Será que é no return?
É possível criar Loops com objetos? hhhahha sei lá mandar um for em um objeto! :)
Alguém pra dar um luz aqui no exercício?
/*
Crie uma função chamada book
, que recebe um parâmetro, que será o nome do
livro. Dentro dessa função, declare uma variável que recebe um objeto com as
seguintes características:
quantidadePaginas
- Number (quantidade de páginas)autor
- Stringeditora
- Stringfunction book(livro){
livro = {
pequenoPrincipe: {quantidadePaginas: 501, autor: 'Jose Silva', editora: 'Novatec'},
madMax: {quantidadePaginas: 301, autor: 'Jorge', editora: 'Abril'},
tropoDeElite: {quantidadePaginas: 402, autor: 'Cezar Oliveira', editora: 'Globo'}
};
return livro;
};
Travei na função. :/
e ae @fdaciuk , depois que eu formatei meu notebook eu mantive os arquivos das aulas no meu D:, porem agora não consigo mais enviar, tentei refazer as autenticações mas não to tendo progresso, e como se ele tivesse mantido as chaves, mas perdeu as configurações, como eu faço pra resolver isso??
@fdaciuk to tendo problemas no video da aula mostra que o stringify transforma um objeto em string e o parse a string em objeto, eu fiz a conversão de obj pra string e logo depois converti de volta usando parse e fiz um for pra exibir, ta dando erro na linha do parse.
--------------------------mensagem no console
[object Object],[object Object]
^
SyntaxError: Unexpected token o
at Object.parse (native)
at D:\curso-javascript\curso-javascript-ninja\challenge-12\challenge-12.js:71:6
at Object. (D:\curso-javascript\curso-javascript-ninja\challenge-12\challenge-12.js:110:3)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
-------------------------fim da mensagem do console
Converta os objetos que ficaram em
books
para strings.
/
JSON.stringify(books);
console.log( '\nLivros em formato string:' );
/
Mostre os livros nesse formato no console:
/
console.log(books);
/
Converta os livros novamente para objeto.
/
JSON.parse(books);
console.log( '\nAgora os livros são objetos novamente:' );
/
Mostre no console todas as propriedades e valores de todos os livros,
no formato abaixo:
"[PROPRIEDADE]: [VALOR]"
*/
for(i = 0; i <= books.length; i++){
console.log('name: ' + books[i].name);
console.log('pages: ' + books[i].pages);
};
Bom no exercício a gente vem criando uma calculadora. Sei que cada qual tem sua abordagem. Queria saber o que você acha da minha, pois não ficou igual a tua. No meu ponto de vista, ficou mais fácil de ler e um fácil entendimento.
number1 = 50;
number2 = 30;
calculator( number1, number2 );
console.log(
showOperationMessage( operationSignal, number1, number2 ),
sum !== false ? sum( number1, number2 ) : showErrorMessage( operationSignal )
);
Eu penso que, essa abordagem pode prejudicar a peformace, sei lá... Porque vou reescrevendo as variáveis em outros exemplos..
O método que tu utilizou, colocando as variáveis e valores dentro do if
a peformace aumenta? As variáveis está em um escopo local?
E enfim, o que tu acha da abordagem... Pra mim ficou linda 😄
Abs!!! @fdaciuk
eu tenho feito mais de um exercício antes de poder subir para o github, como eu faço pra subir o exercicio certo em cada branch, quando eu dou status aparece 3 arquivos.
Oi @fdaciuk !
return operation/[operator]( x, y );
Eu sei que o operation[operator] chama a propriedade do objeto operation definida pela variável operator. Se eu usasse variáveis diferentes em operation e em calculator, funcionaria?
Exemplo:
var operation = {
'+': function( valor1, valor2 ){
return valor1 + valor2;
},
'-': function( valor1, valor2 ){
return valor1 - valor2;
},
'*': function( valor1, valor2 ){
return valor1 * valor2;
},
'/': function( valor1, valor2 ){
return valor1 / valor2;
},
'%': function( valor1, valor2 ){
return valor1 % valor2;
}
}
/*-------------------------------------------------------------------------*/
function calculator( operator ){
if ( !isOperatorValid( operator ) ){
return false;
}
return function( number1, number2 ){
if (typeof number1 !== 'number' || typeof number2 !== 'number'){
return false;
}
return operation[operator]( number1, number2 );
}
}
Eu preciso dar uma treinada no olho, eu passei um tempinho pra entender a notação do operation[operator]( x, y )
. Mas no fim eu entendi que é basicamente uma função.
Ola, @fdaciuk, preciso de uma ajuda.
cara, minha branch master sumiu.
quando eu digito branch checkout master, aparece: error: pathspec 'master' did not match any file(s) known to git.
Cara, eu to apanhando um pouco com o git, eu consegui recuperar a branch master como vc ensinou, o problema agora é que eu enviei o challenge-15 enquanto ainda estava na master. como eu faço pra cancelar esse envio?
vou colar pra vc tentar entender oq eu fiz
git commit -m "Challenge-15"
[master 0319652] Challenge-15
Fala Fernando estou lendo o livro do maujor para incrementar nos estudos e me deparei com esse exemplo, no HTML eu tenho 6 elementos buttons.
var btn = document.getElementsByTagName('button');
for(var i = 0; i < btn.length; i++) {
btn[i].onclick = function () {
console.log('você clicou no botão: ' + i);
}
}
só que não funciona por causa das clousers e o i está dentro de um loop. Aí ele passa essa maneira de escapar da closure:
function escape (j) {
return function () {
console.log('você clicou no botão: ' + j);
}
}
for (var i = 0; i < btn.length; i++) {
btn[i].onclick = escape(i);
console.log('você clicou no botão: ' + i);
}
queria uma explicação sua para isso, ficou um pouco confuso para mim. Abraços.
Fala @fdaciuk rapaz, deu um problema aqui e eu perdi o repositório com os desafios feitos, posso refazer e te mandar junto com o desafio 04?!
Olá Daciuk,
De primeira que curso mais foda! Meus parabéns! ;)
Que massa saber que no JS não existe Arrays. Pelo que eu entendi arrays são objetos, a final em js tudo é um objeto. Em outras linguagens arrays são arrays? haha confuso isso!
Outro ponto: Por que conseguimos acessar os métodos de um objeto como se fosse um array usando [] simplesmente passando uma aspas simples e sem ela não conseguimos? É feito alguma conversão quando passamos as aspas simples?
Outro pronto, hahaha os objetos são mais usados pelo motivo de serem mais rápidos?
Esta aparecendo a seguinte mensagem de erro na hora de clonar o repositório.
Mac-mini:~ leandromacedo$ git clone [email protected]:leandromac/curso-javascript-ninja.git
Cloning into 'curso-javascript-ninja'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Mac-mini:~ leandromacedo$
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.