Потому что в вашей функции создается своя локальная переменная s, которая ничему не равна. Вот и undefined.
Но даже если вместо {var s;} написать {var s = 1000;}
В алерте все-равно будет undefined, тк на момент вызова переменная не присвоена. Читайте теорию. Это обычное поведение