動態做用域通常是指一個變量在函數內外都能被使用。也就是說,函數調用時,參考的符號表和函數外的符號表是相同的。這種語言解釋模型比較簡潔,也比較好實現。而詞法做用域則須要動態的創建多個符號表。在函數內有獨立的符號表。而在每一個詞法閉包內,也會有一個繼承自上層的符號表。因此說,閉包是一種動態做用域的結構。閉包
符號表的繼承即便在詞法做用域的語言中也隨處可見。全部的內置函數都會被任何的詞法空間,命名空間繼承。我認爲關於這方面的爭論讓這個問題複雜化,咱們能夠用不少方式避免由於語言在這方面的區別產生的不一樣。函數
函數內部有靜態變量是一個頗有用的語言特性。而函數式語言沒有。由於函數式語言的原則是,相同的輸入產生相同的輸出。既然這樣,計算過一次,就能夠把結果和參數映射在一塊兒,下次調用的時候,就直接輸出結果,會大大提升運算的效率。測試
函數式語言常常會說:變量是有害的東西,但實際上,在函數式語言中,變量是無處不在的。只是變量是不變的,只能被定義一次。若是內容改變了,就換一個名稱好了。繼承
函數式語言因爲每一個函數都是有固定的輸出,那麼程序模型就被大大的簡化了。任何一個函數都是能夠獨立測試的單元。惟一要改變的就是處理問題的思路。作用域