Stack Overflow en español Asked by pwnaz on November 20, 2021
teniendo declarada la variables
let lang_EN = 'English'
let lang_ES = 'Spanish'
Como hago que una funcion me imprima el contenido de la variable elegida, por ejemplo
choosedLanguage("ES");
function choosedLanguage(language){
console.log(Aqui es donde quiero la variable que deberia quedar como lang_ES o lang_EN)
}
Es decir quiero que el console log tome como estatico el lang_ y la siguiente parte sea el language que recibio la funcion, quedando lang_ES o lang_EN depende lo que se le pase en la funcion
El punto es poder mostrar variables compuestas de strings Por ejemplo si la funcion me recibiera dos string que el console.log me imprima la variable que forman los dos string
let text1 = 'hi'
unify('text','1')
function unify(string1,string2){
console.log(string1+string2)//Quiero que esto me forme la variable text1 y no un string para que el console me imprima hi
}
La solución rápida
Usar eval
para ejecutar código pasado como un string, por lo que se pueden usar expresiones con valores dinámicos y resueltos en runtime.
const lang_ES = `Spanish`;
const lang_EN = `English`;
function chooseLanguage(language) {
const value = eval(`lang_${language}`); // resolvemos lang_ES
console.log(value);
}
chooseLanguage`ES`;
Pero, eval
es peligroso, ya que depende cómo se use puede dar problemas de script injection. Dejo un ejemplo aquí.
La solución buena
Usar otro tipo de almacenamiento de datos como un objeto.
const langs = {
ES: `Spanish`,
EN: `English`
};
function chooseLanguage(language) {
const value = langs[language];
console.log(value);
}
chooseLanguage`ES`;
Es más sencilla, más segura y muchísimo más escalable en el futuro.
Espero que sirva.
Answered by VRoxa on November 20, 2021
Por lo que entiendo quieres evaluar la concatenación de dos string, como comida para el interprete. Esto es poible con la función eval()
Según la documentación de Mozilla:
El argumento de la función eval es una cadena de caracteres. Si la cadena de caracteres representa una expresión, eval() evalúa la expresión. Si el argumento representa una o más sentencias JavaScript, eval() evalúa las sentencias.
Esto es bueno por que no solo evalúa expresiones como en otros lenguajes de programación, si no también sentencias. En este caso se trata de una expresión.
Teniendo una variable con un nombre medio raro y
var_iable = "Soy una variable!"
definiendo la función unify()
de tal forma que
function unify(string_a,string_b) {
console.log(eval(string_a + string_b))
}
se obtenga la interpretación de la cadena,
unify("var_","iable")
da como resultado
Soy una variable!
Espero haberte ayudado.
Answered by user166844 on November 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP