區(qū)別:1、C++是靜態(tài)語言,而javascript是動(dòng)態(tài)語言;2、C++是編譯型語言,而javascript是解釋型語言;3、C++有指針,而javascript無指針;4、javascript是函數(shù)式編程語言,C++不是。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5&&C++17版、Dell G3電腦。
c++和javascript的區(qū)別
1、C++是靜態(tài)語言,js是動(dòng)態(tài)語言。
區(qū)別如下:
靜態(tài)語言:
-
在不執(zhí)行的時(shí)候也能夠做類型檢測,可以一定程度上的檢測出一些邏輯錯(cuò)誤。但是過多的聲明使得程序變得冗余。
-
編寫代碼開始的時(shí)候就要考慮變量和算式應(yīng)該是什么類型,有利于編寫好的、高可用性的程序。
-
對編譯器提示有作用,同時(shí)也對理解代碼有作用。
問題:靈活性不夠,不定義類型無法寫程序。
動(dòng)態(tài)語言:
-
最大優(yōu)點(diǎn)是代碼簡潔。
-
十分靈活。
問題:運(yùn)行速度相對會慢一些,要做類型檢查。最大缺點(diǎn)是不執(zhí)行就無法檢測出錯(cuò)誤。
2、C++是編譯型語言,js是解釋型語言。
C++的編譯過程:預(yù)處理->編譯優(yōu)化->匯編->鏈接。
Js的解析機(jī)制:預(yù)處理(分段讀取代碼預(yù)處理)->解釋執(zhí)行
3、C++有指針,js無指針。
在C++中的賦值,所有的基本類型都是直接復(fù)制,而自定義類型因?yàn)橛兄羔樀拇嬖冢梢宰约哼x擇進(jìn)行深復(fù)制(復(fù)制)還是淺復(fù)制(引用)。而在js中,所有的基本類型賦值都是復(fù)制,而所有的其他類型賦值都是引用。
4、js是函數(shù)式編程語言,C++不是。
Js把函數(shù)當(dāng)作對象來處理,可以將它當(dāng)作函數(shù)的輸入?yún)?shù)和輸出值(高階函數(shù))。
C++如果要把函數(shù)當(dāng)作其他函數(shù)的輸入?yún)?shù),即實(shí)現(xiàn)高階函數(shù),必須要通過函數(shù)指針(經(jīng)常還要多傳遞一個(gè)(void *)類型的參數(shù)作為參數(shù)的函數(shù)的參數(shù))。
5、C++的繼承是基于類的,js的繼承基于原型
在C++中,繼承是通過類來進(jìn)行的。比較符合人的直觀思維。同時(shí)在生成一個(gè)類之后,是不能夠?qū)λM(jìn)行修改了,除非再去修改它的定義。(Ruby基于開放類的繼承可以在定義之后任意追加類的內(nèi)容)
在js中,繼承則是通過原型鏈的方式來進(jìn)行的。同樣也可以在定義之后修改原型鏈。同時(shí),也可以修改內(nèi)置類型的原型鏈來擴(kuò)展內(nèi)置類型(慎用,monkey patching可能導(dǎo)致內(nèi)置對象大幅度修改產(chǎn)生難以預(yù)期的行為)。
【