1) The argument assumes that I can generate all programs and name them, right?
2)This indicates that there is a way to write a program in javascript which gives me f_i for i. Let's call that function gen_f(i)
3) Isn't the function fbar(i)=1-eval(gen_f(i))(i) a valid program? It obviously fulfills the premise.
4) The only way out here that I see is that gen_f is not halting, or that eval(gen_f(i)) is not halting.
5) The first case is possible, but then we can not generate the table, and without the table, it's not clear that fbar exists.
6) The second case means that we generated a non-halting function, i.e. f_i is not a computable function, and not part of F.
So, if we write a function gen_f, it's either not sound, as it gives functions which are actually not in F, or not complete, because it can then never give fbar. That's the trick, right?