Tenho o código abaixo que receberá dois valores e um operador aritmético, após será feito um cálculo matemático. Os valores eu converto para Number e tudo bem, quanto ao operador aritmético, tem como convertê-lo de string para um operador?
obs: os valores 1 e 2 já estão convertidos para Number
calcular(valor1, valor2, operador) {
let result = `${valor1} ${operador} ${valor2}`;
return this.result;
}
Vc tem duas opções:
Usar eval (não recomendável)…
https://www.w3schools.com/jsref/jsref_eval.asp
Ou usar switch (mais trabalhoso, porém mais seguro):
switch (operador) {
case '+':
return valor1 + valor2;
case '-':
return valor1 + valor2;
...
default:
alert('operador não identificado!');
}
Perceba que o return em cada case ja cumpre a função do break…
1 curtida
Com switch eu também pensei, mas achei que poderia ser convertido pra ficar mais fácil e menos código.
Valeu pela ajuda!
Como te falei, o eval pode resolver, mas ele não é recomendável pq abre brechas para coisas assim, por exemplo:
eval("alert('texto com palavrão no meu site!!!')");
isso pra dizer coisa boba, agora imagine colocar um iframe no meio do seu html com conteudo de outro site, e por ai vai…
2 curtidas