[RESOLVIDO] Como uma função invoca outra em Javascript?

3 respostas
functionjavascriptfront-end
G

Boa noite a todos. Estou com um problema, não consigo fazer uma função invocar outra.
No meu código dois números são solicitados ao usuário e somados. Se este resultado for maior que 10, então uma outra função deve ser invocada. Esta nova função pegará o total da soma e diminuirá 2. Depois será exibido os dois resultados. Mas quando executo o código o primeiro resultado retorna como “undefined” e o segundo como “NaN”. Alguém pode me ajudar a resolver este problema? O código está logo abaixo. Muito obrigado pela colaboração de todos. Um forte abraço.

var nUm = parseInt(prompt("Digite um número qualquer"));
		var nDois = parseInt(prompt("Digite outro número qualquer"));
		function soma() {
			var total = nUm + nDois;
			if (total > 10) {
				diminui.call(total);
			} else {
				return total;
			}
		}
		function diminui(total) {
			var totDois = total - 2;
			return totDois;
		}
		alert(soma());
		alert(diminui());

3 Respostas

E

Fala amigão blz?
Cara vamos lá. Se você está chamando da funcao soma a funcao diminui sem utilizar a palavra chave return ela da erro, pois a funcao diminui irá retornar algo, mas irá retornar algo a funcao soma … E o que a funcao soma faz com esse retorno? Nada! undefined!
Basta adicionar a palavra chave return e remover o .call.
Dei uma limpada no seu código veja se ficou melhor … agora funciona!

Antes de mandar o código vamos ver se eu entendi:
"Seu javascript pede 2 números inteiros. quando você pedir pelo alert o resultado da função soma ele deverá: Somar ambos os numeros recebidos, caso a soma ultrapasse o valor de 10 ela deverá subtrair 2. Caso contrário simplesmente mostre a soma … É isso? Se sim segue abaixo seu código:

var nUm = parseInt(prompt("Digite um número qualquer"));
var nDois = parseInt(prompt("Digite outro número qualquer"));

function soma() {
	var total = nUm + nDois;
	if (total > 10) {
		return diminui(total);
	} else {
		return total;
	}
}
function diminui(total) {
	return total - 2;
}
alert(soma());

Espero que te ajude!
Abraços!!!

G

Muito obrigado pela ajuda, era disto que eu estava precisando, mas não sabia como uma função poderia chamar outra. Mas uma vez, muito obrigado pela ajuda. Um forte abraço.

V

Meu código estava dando errado por falta do return. Obrigado :pray:

Criado 31 de julho de 2016
Ultima resposta 14 de jul. de 2020
Respostas 3
Participantes 3