Qual erro neste código de iniciante .. kkk

JavaScript

Front-end

Web

13/11/2018

const date = new Date();
const dia = date.getDay();
const semana = [''Domingo'', ''Segunda'', ''terça'', ''Quarta'', ''Quinta'', ''Sexta'', ''Sabado''];

if (semana[dia] === ''Segunda'') {
console.log(''Deus deveria ter descançado na Segunda.'');


} else if (semana[dia] === ''terça'', ''Quarta'', ''Quinta'', ''Sexta'') {
console.log(''Fazer o que temos que trabalhar.'');
}


else (semana[dia] === ''Domingo'', ''Sabado'' ); {
console.log(''Final de Semana chegou escuto o ronco e os barulho do motor .'');
}
Paulo Albuquerque

Paulo Albuquerque

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

14/11/2018

você deveria publicar a mensagem de erro.
de qualquer forma...
if (dia == 1) {
  console.log(''Deus deveria ter descansado na Segunda.'');
} else if (dia >= 2 && dia <= 5) {
  console.log(''Fazer o que? Temos que trabalhar.'');
}
else (dia == 0 || dia == 6); {
  console.log(''Final de Semana chegou! Escuto o ronco e o barulho do motor.'');
}
GOSTEI 1

Mais Respostas

Jothaz

Jothaz

13/11/2018

O código do Emerson é uma abordagem lógica para resolver esta questão, pois não seria necessário a utilização de array.

Contudo utilizar array também é possível, mesmo que, neste exemplo, não seja a melhor prática.

Se for somente como aprendizagem, apesar do exemplo não ser dos melhores, o código seria:


<script>

const date = new Date();
const dia = date.getDay();
const semana = ['Domingo', 'Segunda', 'terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];


if (semana[dia] === 'Segunda') {
console.log('Deus deveria ter descançado na Segunda.');
} else if (semana[dia] === 'terça' , 'Quarta', 'Quinta' , 'Sexta') {
console.log('Fazer o que temos que trabalhar.');
}else if (semana[dia] === 'Domingo' , 'Sabado' ){
console.log('Final de Semana chegou escuto o ronco e os barulho do motor .');
}else {
console.log('O valor da variável dia, não encontrada no array');
}

</script>

Quando se usa "if else if" o "else" final não pode conter um condição, por isso provalmente estaria retornando erro.

Respondi o post somente para mostara que existem várias formas de se resolver o mesmo problema, agora sempre existirá uma que será mais simples, com melhor performance, que siga as melhores práricas, mais lógica e etc.


GOSTEI 1
Emerson Nascimento

Emerson Nascimento

13/11/2018

Verdade, Jothaz. O else final não deveria ter a condição.
if (dia == 1) {
  console.log(''Deus deveria ter descansado na Segunda.'');
} else if (dia >= 2 && dia <= 5) {
  console.log(''Fazer o que? Temos que trabalhar.'');
}
else {
  console.log(''Final de Semana chegou! Escuto o ronco e o barulho do motor.'');
}


Mas acredito que a falha esteja em "if (semana[dia] === 'Terça' , 'Quarta', 'Quinta' , 'Sexta')", quando se faz a comparação de um conteúdo com uma lista de resultados.

GOSTEI 0
Jothaz

Jothaz

13/11/2018

Emerson o exemplo em si não é muito feliz e como deixei claro não seria a melhor abordagem para o que foi proposto.

Só fiz o post, pois para quem esta iniciando é muit frustrante não enteder o que esta acontecendo.

Então a ideia é somente esclarecer o que poderia esta acontecendo de errado.

No caso o poste não deixa claro qual o erro, então só posso inferir que no caso o código original retorna a mensagem correta do dia em questão, mas sempre retorna a mensaagem do final de semana.

E isto acontece porque no else tem um ";" antes do console.log.

else (semana[dia] === ''Domingo'', ''Sabado'' ); { <---

Então não retorna erro, mas mesmo que o dia seja uma segunda, irá exibir a mensagem da segua e do final de semana, por causa do ";" logo após o else.

Outro detalhe que normalmente o "if else if" pode ser trocado pelo "switch", mas isto é um caso a se discutir também.

GOSTEI 1
Paulo Albuquerque

Paulo Albuquerque

13/11/2018

Amigos sou sim iniciante, Jothaz meu caro, o seu exemplo, não deu certo, e eu tbm não consegui entender isso
> console.log('O valor da variável dia, não encontrada no array'); <

Mas usando o código dessa forma abaixo, ele executa, mas a msg que imprime na tela não corresponde, Hoje um dia de ('Domingo'), me aparece a msg de que deveria aparecer nos dias ( 'terça' , 'Quarta', 'Quinta' , 'Sexta' )

const date = new Date();
const dia = date.getDay();
const semana = ['Domingo', 'Segunda', 'terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];


if (semana[dia] === 'Segunda') {
console.log('Deus deveria ter descançado na Segunda.')
}

else if (semana[dia] === 'terça' , 'Quarta', 'Quinta' , 'Sexta') {
console.log('Fazer o que temos que trabalhar.')
}

else {
console.log('Final de Semana chegou escuto o ronco e os barulho do motor .')
}


Realmente é muito frustante não saber o pq o código não roda da maneira que vc deseja, me ajudem a entender, Obrigado .
GOSTEI 0
Jothaz

Jothaz

13/11/2018

Paulo quando fui postar devo ter copiado o codigo errado, pois rodei aqui e o script funciona.

O código seria:

	const date = new Date();
	const dia = date.getDay();
	const semana = ['Domingo', 'Segunda', 'terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];


	if (semana[dia] === 'Segunda') {
		console.log('Deus deveria ter descançado na Segunda.');
	} else if (semana[dia] === 'terça' ,  'Quarta', 'Quinta' , 'Sexta') {
		console.log('Fazer o que temos que trabalhar.');
	}else if (semana[dia] === 'Domingo' ,  'Sabado' ){
		console.log('Final de Semana chegou escuto o ronco e os barulho do motor .');
	}else {
		console.log('O valor da variável dia, não encontrada no array');
	}



Ou:

const date = new Date();
	const dia = date.getDay();
	const semana = ['Domingo', 'Segunda', 'terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];


	if (semana[dia] === 'Segunda') {
		console.log('Deus deveria ter descançado na Segunda.');
	} else if (semana[dia] === 'terça' ,  'Quarta', 'Quinta' , 'Sexta') {
		console.log('Fazer o que temos que trabalhar.');
	}else if (semana[dia] === 'Domingo' ,  'Sabado' ){
		console.log('Final de Semana chegou escuto o ronco e os barulho do motor .');
	}




No primeiro exemplo usei o else que vc não entendeu: > console.log('O valor da variável dia, não encontrada no array'); <
somente para demonstrar que no else não pode existir uma condição.

Assim no meu código, primeiro exemplo, caso ocorra algum erro e o valor retornado na variável "dia" seja menor que zero ou maior que 6,
vai aparecer uma mensagem de erro avisando que ocorreu algum erro.
No exemplo este tipo de cuidado pode parecer exagero, contudo no dia a dia de desenvolvimento, poder ser prudente tratar erros gravá-los em um arquivo de log, assim caso o usuário reclame de algum comportamento estranho da aplicação fica fácil mapear o que esta ocorrendo.
No primeiro exemplo a ideia é de que nunca seja executado o else, mas se ocorrer algum erro na criação da variável dia vai retornar a mensagem de erro.

Com relação a frustração é melhor acostumar-se, pois a única certeza que você terá ao desenvolver é frustar-se.
E normalmente é só fazer certo que funciona, o problema é que as vezes por ser iniciante, não temos um ideia correta de que queremos.
Ou queremos que a linguagem ser adapte ao que entendemos e o certo e nós nos adaptarmos a linguagem.

Teste os exemplos que postei vão funcionar.

No mais relaxa e testa, testa de novo, testa novamente até entender e chegar ao seu objetivo.

Apesar de todas as frustrações, nada mais compensador que criar uma aplicação que funcione como desejado.
GOSTEI 0
POSTAR