如何理解動態型別/靜態型別語言?
很多人會把靜態型別同等為強型別,動態型別同等為弱型別。
其實不是。
它們可能在表現上有很多相似之處,但它們並不同等,因為他們在原理上不一樣。
區分
強型別弱型別,關注的是是否允許隱式型別轉換。
靜態型別和動態型別,關注的是檢查資料型別的時機。
所以,理論上,“強型別弱型別”與“靜態型別動態型別”之間沒有必然聯絡。
具體區別
靜態型別是指在執行之前就檢查資料型別的語言,比如java,它在被轉換成中間碼,也就是在編譯的時候,就檢查了資料型別。
動態型別是指,在執行的時候(runtime)才檢查資料型別,比如php、javascript。
注意
有人可能會問,php就是弱型別,也是動態型別,java是靜態型別,也是強型別,那從結果上來看,弱型別就是等於動態型別啊。
其實也不是,舉個例子:python就是動態型別,它在但卻是強型別語言。