درسته. سوال من اینه که چرا تو کد اول , دفعه ی اول نمیگه b رو نمیشناسه , ولی دفعه ی دوم میگه . وقتی ما تابع a رو صدا میکنیم , همزمان باهاش تابع b هم ساخته میشه , نمیشه ؟ حالا چه بار اول باشه چه بار دوم , سوم و ... function a() { function b() { echo 'I am b'; } echo 'I am a'; } a(); b(); a(); ما هیچ وقت در حالت معمولی , اول تابع رو چک نمیکنیم که ببینیم وجود داره یا نه , که اگر وجود نداشت اونو ایجاد کنیم . ما همین که ایجاد میکنیم و فراخوانی , ساخته میشه دیگه.