JavaScript 是否在走 C 的老路?

時間 2021-06-08 23:52:05

1樓:王旭競

這個模擬感覺上有問題。js是表現力強,但是它的操作風格是非常統一的,基於指標、基類、原型鏈,實現了乙個比較純粹的值系統。C++直接相容指標的表達,手法異常多樣,而且不提供 .

操作符過載,沒辦法把屬性操作完全統一,必須要區分 . 、->、get/set

js又和C太親近了。作為乙個比較純粹的值體系,相當於C++把指標和基類運用到極致的那麼乙個流派。於是js天然解決了範性問題,天生就和函式化的寫法很相容。

那麼結合了過程式和函式式,讀寫風格統一,表現力是非常強的。

但這只是C++完全可以實現的乙個小流派。對,於是google做了v8。

而js的問題在於,它完全是一把雙刃劍。基於它的值系統特性,決定了在const、型別安全、靜態檢驗上非常困難。以至於越來越多的庫現在用typescript寫了,然後編譯成js。

好在目前主流的使用環境是單執行緒,掩蓋了各種資源問題。

另外除非完全忽略掉執行效率或者v8再做些特殊優化。否則js的值範圍也是有限的,比如64位整數就沒辦法直接完成了,跟double衝突。

學了C 之後再學javascript覺得非常不規範,難以理解怎麼辦?

你可以直接試試 更規範 的強型別 TypeScript,並忽略那些古早 JS 教程裡的奇技淫巧。什麼 this 指向 原理 變數提公升 這些都快在現代工程裡絕跡了,除非要維護相容 IE 的老專案。另外據個人觀察,我覺得雲風前輩說得確實對 zr scat 傳統c with class是過程化,和面相物...

請問在javascript中undefined和null與其他字串的進行邏輯運算有什麼規律嗎?感覺好亂 這個有用嗎?

周中原 邏輯運算不一定返回false或者true,還有可能返回其他值。題主只問了undefined和null,另外送NaN的情況 免費 與 運算元中任意乙個是null undefined NaN,則返回對應的null undefined NaN 例如 null 任意型別 返回null 若兩個運算元是...

javascript 如何檢測元素是否被其他元素覆蓋

月亮也會發光吶 除了IntersectionObserver的方案 可以用canvas2html截圖,之後對比元素區域的像素色值是否一樣。 博唯 要檢測HTML元素在viewport內的那部分是否被其他元素遮住 z相關 可以用 elementFromPoint function element el...