3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
JavaScript 未輸入類(lèi)型:
甚至布倫丹·艾希(Brendan Eich)也是這樣。在Twitter上,他回復(fù)了一個(gè)與此問(wèn)題相關(guān)的話題:
學(xué)術(shù)類(lèi)型使用“無(wú)類(lèi)型”來(lái)表示“沒(méi)有靜態(tài)類(lèi)型”
因此,問(wèn)題在于untyped有一些不同的定義。
在上面的答案之一中已經(jīng)討論了一個(gè)定義-運(yùn)行時(shí)不標(biāo)記值,而只是將每個(gè)值視為位。JavaScript 會(huì)標(biāo)記值,并基于這些標(biāo)記具有不同的行為。因此,JavaScript顯然不適合此類(lèi)。
另一個(gè)定義來(lái)自編程語(yǔ)言理論(Brendan所指的學(xué)術(shù)東西)。在此域中,未類(lèi)型化只是意味著所有內(nèi)容都屬于一個(gè)類(lèi)型。
為什么?因?yàn)橐环N語(yǔ)言只有在可以證明類(lèi)型對(duì)齊時(shí)才會(huì)生成程序(又稱(chēng)Curry-Howard對(duì)應(yīng);類(lèi)型是定理,程序是證明)。這意味著使用非類(lèi)型化語(yǔ)言:
程序總是生成
因此類(lèi)型總是匹配的
因此必須只有一個(gè)類(lèi)型
與輸入語(yǔ)言相反:
可能未生成程序
因?yàn)轭?lèi)型可能不匹配
因?yàn)槌绦蚩梢园喾N類(lèi)型
因此,在PLT中,untyped僅表示動(dòng)態(tài)類(lèi)型,而typed僅表示靜態(tài)類(lèi)型。JavaScript絕對(duì)不在此類(lèi)別中。
添加回答
舉報(bào)