1. 程式人生 > >強型別VS弱型別,您都知道些什麼?

強型別VS弱型別,您都知道些什麼?

web程式設計的世界

在web程式設計裡面,我們使用表單的時候發現有一個有意義的問題,不知道大家注意了沒有,比如一個商品的價格,我們將這個商品的價格作為數字字串來處理是可以的,作為數值來對待也是合理的,還有QQ號也是一樣,我們作為數字字串來處理是可以的,作為整數來處理也是可以的,還有數字型的簡訊驗證碼和圖形驗證碼等等,這樣的例子太多太多,我們就不一一例舉了,這個有趣的現象似乎給我們了一種啟示,就是對於我們的現實世界來說,很多業務場景資料型別並不是那麼的重要,因為同樣的資料可以用多種資料型別來表示。

根本就不存在弱型別

上面說到同一種資料可以有多種型別的存在,並且理論上都是合理的,但是對於我們的計算機世界來說,區別就大了,比如用字串去加一個整數,結果是什麼?用一個非數字字串去加一個整數,結果又是什麼?如果沒有資料型別,那麼在執行的時候計算機怎麼為這些資料分配儲存空間?這一系列的問題說明了一個事實,就是在計算機的世界裡面,都是強型別的語言,換句話說,我們的編譯器或者直譯器完成了這一步操作。

弱型別不斷在向強型別方向靠近

一個事實就是PHP7開始支援強型別了,從ECMAScript 2015開始,JavaScript開始支援型別陣列了,即開始支援Int8/16/32Array、Uint8/16/32Array和Float32/64Array等陣列了。

至於為什麼要靠近,或許需要我們寫過一些大的程式和同時熟悉兩種型別的語言才能夠深刻的明白其原因,網際網路的很多理由都感覺太淺了,我們爭取在後面的文章完善這一部分的整理。