[討論] 請大家聊聊 JavaScript的缺陷

作者: keev (a)   2020-11-02 23:36:38
https://www.ptt.cc/bbs/Soft_Job/M.1602985969.A.989.html
看了這篇文發現有不少人討厭 JavaScript
而我自己寫JavaScript 覺得寫起來很舒服
所以我想請大家提出 JavaScript 哪裡爛
我會試著反駁 互相交流
首先我要說 JavasSript 又稱做 ECMAScript
在近幾年演化的很快
例如 es6 增加 let, const語法
避免了 var的麻煩
promise, async await 的出現
避免了 callback hell
js + JSDoc + tsc
作者: er230059 (CQH)   2020-11-02 23:57:00
this都到處亂指XD其實是個人常常腦洞 settimeout忘記this會被改QQ
作者: stopcrying (賣考)   2020-11-03 00:03:00
async/await 只能用在 promise 上,不能用在其他類似的結構上有點可惜
作者: JingJing00 (晶晶)   2020-11-03 00:04:00
能動就好爛code數量:js第一php第二python急追中
作者: vi000246 (Vi)   2020-11-03 00:22:00
還要學打包工具 好麻煩
作者: s06yji3 (阿南)   2020-11-03 00:31:00
要打包真的好麻煩,參數也太多太細。
作者: fiiox3 (飆速宅男)   2020-11-03 00:34:00
打包真的.....從來不覺得自己懂過XD
作者: forewero (木日一)   2020-11-03 00:51:00
不就是因為難用才那麼多檢查工具?typeof nan = num...
作者: newhandfun (新手方)   2020-11-03 00:56:00
作者: GLaDOS1105 (HAHAHA)   2020-11-03 01:17:00
要學的東西一堆 動不動就大更新
作者: EPGo   2020-11-03 01:28:00
typeof []
作者: hermes018 (cynric)   2020-11-03 01:44:00
喜歡 JavaScript,不過也沒寫過其他語言,也無法比較
作者: lturtsamuel (港都都教授)   2020-11-03 01:52:00
有沒有看過this用bind綁定成亂七八糟的值 你想要綁正確的反而出bug
作者: iq1000x (台串彭于晏)   2020-11-03 02:04:00
要學文內那麼多東西就是缺點啊
作者: lturtsamuel (港都都教授)   2020-11-03 02:07:00
文內那些東西還是很簡單的 那些也叫難你要c++工程師怎麼辦
作者: cha122977 (CHA)   2020-11-03 02:08:00
個人觀點 難學的點是很多東西不可預期this很難判斷現在是誰 用+連的東西放前後不同結果
作者: SHANGOYANYI (彥一)   2020-11-03 02:12:00
太多流派造成選擇障礙症 看那精美的jQuery/ng/react/vue/vanilla以及各自衍生的套件跟生態系...
作者: cha122977 (CHA)   2020-11-03 02:12:00
很多東西用到要寫個小程式測 然後幾週後就忘了搞不清楚它的邏輯脈絡 搞的像要背一堆例外情況…
作者: tsao1211 (Sunday)   2020-11-03 03:01:00
因為大部分人js都不紮實才覺得難用
作者: imega (哎妹嘎)   2020-11-03 05:32:00
嚴格模式可避免this亂指
作者: windclara (null)   2020-11-03 07:33:00
有時忘記寫await,輸出不如預期花很多時間Debug才想到==
作者: brianhsu (墳墓)   2020-11-03 07:36:00
濃縮成一句話就是例外太多,行為不一致吧!
作者: JavaScript (JavaScript)   2020-11-03 07:50:00
好啦! 我就是難搞...哪一次不搞滴
作者: alihue (wanda wanda)   2020-11-03 07:50:00
天生的限制導致要各種第三方工具來打包和協助管理後天用第三方套件軟體協助開發,跟天生就內建的方便程度差太多了。
作者: johnny055279 (巴辣松)   2020-11-03 08:43:00
就是爛才一堆框架跟延伸模組出現啊?你看看python,嘻嘻
作者: JavaScript (JavaScript)   2020-11-03 08:51:00
樓上想法負面,雖然難精,但是因大家喜愛才會延伸出許套件出來才對怎麼可以說是爛...嘖嘖
作者: paint (有斑紋的馬)   2020-11-03 08:58:00
是不是該來註冊一下ECMAScript惹
作者: godddddd (howudoing)   2020-11-03 09:05:00
名稱比java長
作者: adsl12367 (adsl12367)   2020-11-03 09:21:00
長出太多奇奇怪怪的東西了
作者: ssccg (23)   2020-11-03 09:39:00
java不會運算一下自己變成NaN,會是exception,NaN只是個常數,跟javascript會自己冒出NaN根本不一樣
作者: askaleroux (FalconTW)   2020-11-03 09:42:00
套件太多派系太多 動不動就大改 第三方爛掉的套件超多寫過Go現在去寫Js感覺真是不舒服
作者: abc0922001 (中士abc)   2020-11-03 10:06:00
1+1=11
作者: alongalone (沿著孤單的路)   2020-11-03 10:32:00
我是會推薦你去寫看看 c, C++, C# 跟 java啦..
作者: alihue (wanda wanda)   2020-11-03 10:50:00
忘了還有 node module 黑洞,這根本是語言缺陷導致的
作者: odahawk (羊皮狼)   2020-11-03 11:07:00
使用浮點數的時候小數點以下是零的話就自動轉整數
作者: aidansky0989 (alta)   2020-11-03 11:16:00
js不錯,比Java好寫多了
作者: satanbaby (撒旦北鼻)   2020-11-03 11:22:00
語法再怎麼甜 也終究是JS
作者: windclara (null)   2020-11-03 11:42:00
作者: Gaitz (喵喵喵)   2020-11-03 11:53:00
太自由 有歷史包袱
作者: johnny055279 (巴辣松)   2020-11-03 12:03:00
現在是因為被定型了,重新開始誰還想用JS拜框架所賜現在才比較沒這麼多莫名其妙的問題存在
作者: sniper2824 (月夜)   2020-11-03 13:05:00
笑死==
作者: sky40280 (FallLeaf)   2020-11-03 14:13:00
你都說啦,設計不良要靠一堆新的規範來強化
作者: jinmin88 (晝伏夜出)   2020-11-03 15:48:00
雖然有async await, 但是一堆舊的lib沒promise版本阿
作者: Darkword1987 (黑字)   2020-11-03 16:32:00
不是討厭JS 是討厭csfgsj
作者: lachtchlee (nymph)   2020-11-03 16:50:00
人家就是把它設計為弱型別的語言 免得在網絡上一再撞牆喊暫停 它原本就不是強型別的語言(這不是它的錯) 大可不必拿它跟ts比 這只是子集 超集的關係而已
作者: opallin (Opal_Lin)   2020-11-03 17:16:00
NaN一直代表invalid number吧 是很多人會錯意以為是什麼non-exist
作者: atst2 (atst2)   2020-11-03 18:04:00
NaN是Not a Number 的縮寫。type of NaN == “number” 不覺得語意上就有問題嗎?
作者: askaleroux (FalconTW)   2020-11-03 18:48:00
然後很多是typescript幫js擦屁股還有vscode的extension 你是多菜覺得linter formatter內建在js
作者: jj0321 (JJ與你倒數唷)   2020-11-03 19:58:00
搜尋 javascript meme 那些就是我的困擾
作者: samioplg (war3)   2020-11-03 20:08:00
今天寫ng event.target.value幫我把number 轉成string找了半小時,幹
作者: panbanana (香蕉猴子)   2020-11-03 20:08:00
this都亂指,arrow function 跟一般的function 又不一樣了
作者: MyNion (Nion Lee)   2020-11-03 21:54:00
JavaScript就是個拉基語言,會覺得它有趣或優美的人大概沒有接觸過其他有「嚴謹邏輯」的語言
作者: chatnoir (對不起)   2020-11-03 22:23:00
this 沒有亂指, 是你沒有好好了解過他..
作者: netburst (133 134 592)   2020-11-03 22:23:00
js不錯,比Java好寫多了
作者: CoNsTaR ((const *))   2020-11-03 22:40:00
@某L 就是因為弱型別才會在執行期“撞牆喊停”吧你看過哪個 Haskell 或 Agda 程式跑到一半跟你講發生“例外”的?快笑死例外處理本身就是個弱智的想法在電腦的世界所有的值都是可預期的,才沒有所謂的“例外”會有例外除非你 RAM 滿了,CPU 燒掉了,硬碟故障了...@某 opa,所以 NaN 到底是不是 Number?如果一個函數跟你講它會回傳給你一個數字,結果給你一個NaN 你有什麼感想 XDDD幹嘛不一開始就好好寫好 f : Num n Maybe n或 f() -> Option<N> where N: Num 呢?
作者: x246libra (楓)   2020-11-03 23:13:00
JS 太自由 沒規範 動態又弱型別 覺得好寫的 不是高手就是新手 一般程式的程度 都會覺得很多莫名例外要背..
作者: guitarcho (guitarcho)   2020-11-04 03:19:00
Swift 歡迎你
作者: oao1002 (吃飯睡覺打東東)   2020-11-04 07:42:00
求別更新了...老子學不動了...
作者: max241 (養生之道)   2020-11-04 10:06:00
看完推文 感覺就是常見的不懂xxx 就說xxx不好用 難用 ㄏㄏ
作者: strlen (strlen)   2020-11-04 13:38:00
難用就是難用 懂了還是覺得難用 垃圾還有人要護航 今天是沒辦法大家被逼著用 不然滿大街的JS加強版是哪來的?不就是JS太垃圾太難用?
作者: dreamnook (亞龍)   2020-11-04 14:55:00
js的優勢是跑在browser上 很會能看到效果然後就(誤
作者: dream1124 (全新開始)   2020-11-04 15:50:00
推 strlen。說出我發文的心情。北七的東西就別再護航了
作者: superpandal   2020-11-04 16:18:00
很少 個人不喜歡類型 有了類型就要拋錯 方程處理數據足夠了 能夠講的大概就寫起來太醜 不過這還是得看人
作者: nh60211as   2020-11-04 16:21:00
不是吧,沒有型別就不會有型別錯誤的意思嗎
作者: superpandal   2020-11-04 16:30:00
當然會有錯 但你需要定位所有錯誤的原因嗎? haha
作者: v7q4 ((.)(.)乳劍雙修 -|=>)   2020-11-04 19:29:00
純Javascript沒問題,有問題的是那些有的沒的框架
作者: dream1124 (全新開始)   2020-11-04 19:45:00
要不要拋錯是可以透過語言的規格設計去改變做法的但一個高階語言一開始不提供機制給人宣告型態後面再用文件或註解去補往往就悲劇了一不小心就是整個社群一堆雜七雜八難懂的標準更別提你不想安排所有錯誤的處理對策不代表一個都不做更不代表像 js 那樣還會自動幫你轉型或進行一堆運算這麼不愛型態怎麼不去寫 Assembly 啊
作者: superpandal   2020-11-04 21:42:00
給你型態 會寫的如同亂碼的一樣很難懂 方不方便維護與有沒有型態根本是兩件事情 確實有錯誤需要處理 但主要錯誤才是重點吧 只能說這是每個人的選擇
作者: hanklgs (派星星)   2020-11-04 21:58:00
null >= 0
作者: ruthertw (小葉老大)   2020-11-05 08:40:00
js抄書隨便亂兜,就可以擔任總經理,你說這語言嘿
作者: strlen (strlen)   2020-11-05 23:16:00
就是純JS問題一大堆 才發明出那些有的沒的框架吧?
作者: CoNsTaR ((const *))   2020-11-06 08:49:00
@superpandal 沒給型態才像亂碼好嗎f = \x y. x $ map g y請問你要花多少時間確認怎麼用 f 和 f 回傳的東西?或甚至是確認上述程式是不是正確的?如果我告訴你它的 type 是f : (List String -> String) -> List Integer -> String不用兩秒,你大概連 g 是做什麼的都猜到了吧
作者: superpandal   2020-11-06 14:53:00
這是你定的? @[email protected]只能說這就是人生 總經理... 好遙遠的位置
作者: ssdoz2sk (眷戀著提拉米蘇的風采~)   2020-11-10 13:08:00
NaN === NaN // false | WTF?
作者: dryadd44651 (Howard)   2020-11-19 14:58:00
很簡單的道理我寫python可以完全專心在我要做的事情上js注意力都在找bug 跟個白癡一樣為什麼要浪費生命
作者: justben (BEN)   2020-11-23 16:53:00
回到這篇創始戰文打個卡

Links booklink

Contact Us: admin [ a t ] ucptt.com