problema setInterval y window.onload

Tengo este codigo

window.onload = function() { function foo() { alert("test"); } setInterval("foo()",500) } 

Lo que devuelve undefined … Cuando lo uso fuera de la ventana, funciona. ¿Alguien me puede explicar por qué?

El uso de un comando de cadena en setInterval() intentará buscar la función en el ámbito global (ventana), pero como la función está definida en un ámbito local, no se encontrará. Debes pasar la función a setInterval() lugar.

 window.onload = function() { function foo() { alert("test"); } setInterval(foo, 500); } 

Prueba esto:

 function foo() { alert("test"); } window.onload = function() { setInterval("foo()",500) } 

Esto funciona para mi.

Alternativamente, puede definir la función dentro de la llamada a setInterval:

 window.onload = function() { setInterval( function foo() { alert("test"); }, 500 ); } 

Debe configurar la función para establecer setInterval() lugar.

También recuerde borrar el intervalo en window.onunload o window.beforeonunload

 const CheckFoo = () => { const start = new Date().getTime(); console.log("check", start); }; window.onload = function foo() { window.setInterval(CheckFoo, 500); }; window.onunload = function foo() { window.clearInterval(CheckFoo); };