2009-08-11 64 views
11

今天剛剛開始思考。我花了一些時間在IE調試模式下,像往常一樣瀏覽網頁,哦,我看到很多錯誤:)這些錯誤大多是因爲某些值是不同於預期的類型(至少據我解釋錯誤消息)。JavaScript和類似的腳本語言會受益於強類型嗎?

什麼原因JavaScript和類似的腳本語言沒有強類型?僅僅是爲了使語言「更容易」理解,更易於訪問,還是缺少「編譯時」是真正的問題?

+0

你或許應該發表您的意見作爲一個答案 - 衡量人(DIS)如何強烈同意 – karim79 2009-08-11 23:37:09

+0

澄清:沒有什麼從解析JavaScript或任何其他動態語言阻止你。你在談論的是語義評估解析的文本。 – JaredPar 2009-08-11 23:37:23

+0

添加了我自己的oppinion作爲答案。而且,Jared,但假設瀏覽器環境,我不知道這是否(至少不是我所知的)?如果你有一個強類型的腳本語言,你會被強迫我想嗎? :) – cwap 2009-08-11 23:42:08

回答

15

它應該有很強的打字可用。 Actionscript 3是強類型的,但如果需要動態對象,仍然具有原型繼承和通配符類型。

有這個功能沒有缺點,我不得不說,對於中等到大尺寸的項目來說,強大的輸入可以防止出現問題。爲了充分利用它,您需要IDE支持,以便它可以報告錯誤並提供自動完成選項,但如果JavaScript具有真實的類和強大的輸入,則它將處於一個全新的世界。

+0

+1「添加它有什麼危害」;不需要它的人不必使用它。 – 2011-08-20 11:44:58

+0

6年後,這種情況非常接近 - Javascript具有真正的類。雖然,我不太確定強打字。 – 2015-06-10 20:07:06

1

我自己的看法:你可以在執行它們之前解析腳本。這會捕獲大多數類型錯誤,並且意味着用戶不必看到部分執行然後終止的scriptresult。更妙的是,如果它有一個解析器,它將更容易調試:)

2

它從沒有被輸入獲得靈活性。我個人喜歡弱類型的語言。

所以答案是會有好處和缺點。

對於想在瀏覽器中使用強類型語言的用戶,可以使用GWT和Script#。

+0

我不會說他們非常靈活,因爲他們引入了一類可以自動阻止的錯誤,並且在不提供額外附加功能的情況下執行。你可以保證你傳遞該函數的那個​​對象將支持你需要的方法,但是除非這行代碼被執行,否則你永遠不會知道...... – weberc2 2013-04-26 05:25:36

0

我在ActionScript 2中爲電子教學構建了一個快速原型框架。我最大的抱怨是AS2沒有強類型,並且在調試時會讓我頭痛不已。我認爲強打字的東西使代碼更易於閱讀。我認爲一個弱類型的語言提供了更多的靈活性。

我更傾向於可讀性,當我不得不回頭去弄清楚在6個月前我寫的代碼裏發生了什麼。

+1

AS2是強類型的。只需在變量之後指定類型即可。例如:var vector1:Vector – Marius 2009-08-12 01:19:26

1

我很喜歡大多數腳本語言的弱類型方面。除了性能之外,我希望強類型化的唯一原因是,重構強類型語言的工具比弱工具更容易。

+0

此外,強打字似乎可以消除整個類別的錯誤,並且可以輕鬆記住對象支持哪些方法。使用Javascript,相同類型的兩個對象可以有完全不同的方法。 yippee的! – weberc2 2013-04-26 05:27:01

2

JavaScript和類似的腳本語言會受益於強類型嗎?

是的,他們會,JavaScript 2.0引入了type system

類型系統 的JavaScript 2.0支持一種類型, 它可以被看作是所有 可能值的子集的概念。有一些內置的 類型,如Object,Number和 String;每個用戶定義的類(第6部分) 也是一種類型。

另見:http://timkadlec.com/2008/04/an-objective-look-at-javascript-2-0-strong-typing/

一般來說,強類型支持編譯提供了許多有趣的機會和優化過程。

相關問題