亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript的函數為什么可以在定義之前調用?

JavaScript的函數為什么可以在定義之前調用?

至尊寶的傳說 2018-07-31 15:07:46
如下,為什么可以在函數f定義之前就調用呢?編譯器是如何處理的呢?f();function f(){     alert("hehe"); }
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

目前的編程語言分為編譯型語言和解釋行語言。

編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以后執行這個程序的時候,就不用再進行翻譯了。
而編譯后需要進行連接,結果沒有前置聲明,連接器無法知道對應符號的位置,因此無法將多個文件鏈接到一起。所以此類語言在使用對應的變量之前必須要進行對應的聲明。

解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對于編譯型語言要慢。目前的腳本語言基本都是解釋型語言,他們一般都有相應的腳本引擎來解釋執行,他們一般需要解釋器才能運行。
由此,javascriptphp等腳本語言理論上是根本不需要手動聲明的,因為解釋器會在執行前把整個腳本加載到內存中,抓取其中的聲明部分,然后進行處理對應的函數流程,然后再從頭開始執行。這一過程稱為解釋。解釋器幫你做了許許多多的事情,比如申請內存,釋放內存,垃圾回收,線程同步,區域通信,變量管理等,區區聲明,自然不在話下。

以上。


查看完整回答
反對 回復 2018-09-16
  • 1 回答
  • 0 關注
  • 542 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號