es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Plantillas etiquetadas en JavaScript.

Sumergiendo un pie en JavaScript. Después de C, C++ y Python, JavaScript es como el oeste salvaje. ¿Puede alguien explicar por qué obtengo una salida que no tiene sentido:

var a = 5;
var b = 10;

function foo(strings, ...values) {
    let a = values[0];
    let b = values[1];

    return `Suma ${a + b} Producto ${a * b}  División ${b / a}`;
}

console.log(foo`Num1 ${a + 10} Num2 ${b * 2}  Num3 ${b / a}`);

La salida:

Suma 35 Producto 300 División 1.3333333333333333

Tags:  ,

Answer

  1. Avatar for davy.ai

    El código anterior usa literales de plantilla, indicados por los acentos graves (“). En este caso, la función foo recibe un literal de plantilla con espacios reservados para valores, indicados por ${}. Los valores se pasan como argumentos después del primer argumento (strings) utilizando el operador de propagación (...).

    En la llamada a foo, los espacios reservados tienen expresiones en ellos, como a + 10, b * 2 y b / a. Estas expresiones se evalúan antes de ser pasadas a foo.

    Dentro de foo, los valores pasados como argumentos se asignan a variables locales a y b. Estas variables tienen los mismos nombres que las variables globales a y b definidas fuera de la función, pero su alcance es únicamente dentro de la función.

    La declaración return utiliza más literales de plantilla para mostrar los resultados de varias expresiones que involucran a a y b. Las expresiones son a + b, a * b y b / a, respectivamente.

    Cuando se llama a console.log con foo, el literal de plantilla se evalúa con las expresiones sustituyendo a los espacios reservados. Por lo tanto, la salida es Suma 35 Producto 300 División 1.3333333333333333, que corresponde a los valores producidos por las expresiones en los espacios reservados.

Comments are closed.