首先
語言不分好壞,好壞在於寫程式碼的人!
尷尬臉
本來想比較下兩個,結果我竟然不知道寫什麼。es6出來後,js的class extends...也都有了,當初的原型啊繼承啊好像都變得忽遠忽近了!由於涉及php,開啟了win10老人機電腦看曾經寫得一些程式碼,滿滿的回憶殺啊曾經學習php的基礎可以說是走心了,隨便截了一點...
正題
自己現在能想到的主要就是以下幾方面:
- 同步 && 非同步
一個同步阻塞一個非同步非阻塞!想當初寫php的時候哪裡需要考慮非同步的事情,現在寫node.js就要處處小心了,獨特的優點帶來的不便。 所以js就擁有獨特的promise,async,generator - 物件
js的物件真的一個很拗腦(對比Java,php)的東西。一系列 內建物件 (array,function也是特殊的object),還有 構造器函式(new Object()) ,this 的坑, 屬性,...
php的物件話,我所理解的就是類的一個 例項..當然js也有類的例項物件。 - 陣列
在上面寫js物件的時候,才想到{key:value} 和 php的陣列[key=>value]... js陣列和PHP的索引陣列真的很像 js的物件和php的關聯陣列也是真的很像(像不等於一樣,單純對應屬性值時真的像) - 函式
php直接 宣告 然後直接 呼叫 就好了。js對不起,呼叫還有回撥?即時呼叫?函式寫法還分匿名?箭頭? 對了,js函式內部的函式還有 閉包(拗腦的東西) 呢!!! - 變數
上面說到閉包,我就想到了 js 作用域, AO 鏈, 變數提升。而php相對單純多了,區域性$test=1, 全域性$GLOBALS['test']=1宣告就好了,哪裡有什麼一不注意就變數提升了...當然es6中除了有var,現在有 let, const 還是很方便的,對了還有 嚴格模式 ! -
oop
js在 沒有es6 (class,extends,constructor)之前的我簡直不敢相信自己會(逃).- 封裝: php的屬性方法有static,public,protected等關鍵字 來修飾,而js的話都相當於是public,不過可以用一些拗腦的方式來模擬,參考阮一峰es6.
- 繼承: 現在兩個都可以extends方式繼承,以前的話 js各種繼承方式 腦細胞燒死一群, 原型鏈 各種燒腦
- 多型: 其實自己感覺js和php都談不上真正的多型,畢竟都是 弱型別語言,只要開心就好寫法隨意。多型的話對比java
- other:
this, 在php類裡面會繫結,而Js的話你懂就好...
魔術方法, js中的constructor大概就類似與php中的__construct。當然php中還有很多其它(__set, __call...)
介面, 本應該放在外層的,但是由於目前還沒有發現js有相關概念所以放在這裡一代而過啦。php的話介面(interface,implements)和類(class,extends)有相似也有區別。
...
- 垃圾回收機制
坑位先留著,以後再來填!我現在的認知是很模糊不確定的。 - 其他
兩個的函式名啊,命名規範啊,格式啊......
總結
一下子一氣呵成能想到的主要就這麼多了,當然還有很多其它的異同。上面正題裡自己的感情基調好像很鄙視js似的,其實不然,有愛就有恨!!!畢竟當初在寫了一段時間的php後,我覺得js實在是太有魅力了,才有了轉語言的念頭。不過講真js的概念真的比PHP多,不過好像現在自己在工作中用到的...[逃]
最後:js很美很有魅力也很氣人
工作小插曲
遇到一個我不知道怎麼形容的bug,隱藏得很深也很坑。花了很久自己終於還是找到了導致這個bug的因素,也成功的解決了!但是,為什麼會導致這個因素,我(們)還是很懵逼的。也算是比較糟心且有趣的一件事情了。
生活小插曲
-
繼兩天前久未聯絡同學借錢後,這兩天微信一句話也沒說過,上午又打電話找我借錢。拒絕了!!!可以說是比較糟心了,所以人心啊,是真的不知道怎麼形容~~
-
下午一曾算基友的人吧,打電話找我借錢,當然是沒借因為我也很窮!怎麼說呢,很有一番不是滋味的感覺~~上次有人找我借錢我都快忘記是什麼時候了,結果這兩個又湊在了同一天...
明日任務
- 上面工作小插曲的bug儘量找到最根本導致的原因(不確定能否找到)
- 樓上若順利,更新一下腳手架的後端部分