Como converter uma string para um operador aritmético em javascript

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! :wink:

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