Siguiendo la pregunta aquí:
JavaScript obtiene un nombre de archivo sin extensión ubicado en una carpeta diferente
Me gustaría concatenar esta función con mi cadena.
Cuando aplico este código
"use strict"; window.addEventListener('load', onLoad, false); function onLoad(evt) { let scripts = document.querySelectorAll('script'); scripts.forEach(scr => { if (scr.src != '') { let slashPos = scr.src.lastIndexOf('/'); let filename = scr.src.slice(slashPos + 1); filename = filename.replace('.js', ''); //console.log(filename); return filename } }); } var string = 'Date = ' + onLoad;console.log(string) Mi consola muestra la función completa en lugar de una fecha determinada.
¿Qué debo hacer para que la fecha se complete correctamente?
No está llamando a la función onLoad porque no hay paréntesis, le está pasando una referencia que es toda su función.
var string = 'Fecha = ' + onLoad();
No está ejecutando su función. Estás haciendo algo similar:
function return_string() { return 'a string'; } var string = 'Date = ' + return_string; console.log( string );Eso devuelve la función, no el resultado. Así que simplemente ejecute la función como de costumbre
function return_string() { return 'a string'; } var string = 'Date = ' + return_string(); console.log( string );Esto sucede porque en javascript, si solo llama a la función sin llaves, devuelve la definición de la función en lugar de invocar realmente la función. Entonces, llamar a onload como este devolvería la definición de su función. Debe llamar a onload() para obtener el valor de retorno real de la función. Pero luego vi que tampoco hay retorno de esa función. Entonces, ¿qué esperas que se devuelva esta función? Si desea obtener la Fecha dentro de JavaScript, debe llamar al constructor de Fecha como esta new Date() para obtener la Fecha actual. Para obtener más información sobre el constructor de fechas, visite mdn.