lest assume that i have the following
function a(){ function b(){} } a(); //pass a(); //error
why in the second call an exception is thr
It's exactly what is says, when you call a() again it tries to redeclare b(), declare b() outside of a() and call b() from within a() like so:
a()
b()
function a() { b(); } function b() {} a(); a();