Причина, по которой ваш первый пример не работает, заключается в том, что данные должны храниться где-то .У вас есть десять различных значений для хранения, но только одна переменная i , поэтому она не работает.
Другие авторы предлагают использовать замыкание, которое работает, но ваш вопрос ищетспособ сделать это без вызова функций.Я бы предложил следующее:
var a = [];
for (i=0; i<10; i++) {
a[i] = function(i){alert("I am " + i);};
}
a[5](5);
Конечно, возникает вопрос: почему даже десять различных функций, когда все они выполняют одно и то же?Почему бы просто:
var whoAmI = function(i){ alert("I am " + i); };
whoAmI(5);
Возможно, вам нужна функция, которую вы можете передать внешнему API, который вызывает ее без аргументов?В этом случае сделайте функцию замыкания, которая делает функцию.