setInterval(alert("1"),4000);
Первым параметром надо передавать функцию, которая будет выполняться (или ее код).
Например,
// так - не лучший вариант
setInterval('alert("1")',4000)
// Либо так
var func = function() {
return alert("1");
}
setInterval(func,4000);
// Либо так
setInterval(function() {
return alert("1");
}, 4000);
// Либо вообще так (es6)
setInterval(() => alert("1"), 4000);
Вы же передаёте результат выполнения функции alert(), а имменно - всегда undefined. При том выполнение кода блокируется до тех пор, когда alert не был принят.