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

看板Soft_Job作者 (a)時間3年前 (2020/11/02 23:36), 3年前編輯推噓40(44483)
留言131則, 59人參與, 3年前最新討論串1/2 (看更多)
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 --checkJS 則是提供了強型別語言的好處 例如 type checking, documentation, 避免null dereference, code navigation 等等 而維護程式碼品質的工具 eslint, prettier 分別是 linter 和 code formatter 可以避免許多問題 而 commonjs, es module 則是補上了模組功能 在這些東西出現前 js的確是很難用 所以請大家把討論範圍限定在現代的JavaScript -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.67.104 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1604331400.A.F6D.html ※ 編輯: keev (27.242.67.104 臺灣), 11/02/2020 23:38:07

11/02 23:57, 3年前 , 1F
this都到處亂指XD
11/02 23:57, 1F

11/02 23:57, 3年前 , 2F
其實是個人常常腦洞 settimeout忘記this會被改QQ
11/02 23:57, 2F

11/03 00:03, 3年前 , 3F
async/await 只能用在 promise 上,不能用在其他類似
11/03 00:03, 3F

11/03 00:03, 3年前 , 4F
的結構上有點可惜
11/03 00:03, 4F

11/03 00:04, 3年前 , 5F
能動就好爛code數量:js第一php第二python急追中
11/03 00:04, 5F

11/03 00:22, 3年前 , 6F
還要學打包工具 好麻煩
11/03 00:22, 6F

11/03 00:31, 3年前 , 7F
要打包真的好麻煩,參數也太多太細。
11/03 00:31, 7F

11/03 00:34, 3年前 , 8F
打包真的.....從來不覺得自己懂過XD
11/03 00:34, 8F

11/03 00:51, 3年前 , 9F
不就是因為難用才那麼多檢查工具?typeof nan = num...
11/03 00:51, 9F
NaN 是 IEEE 754 (浮點數標準) 定義的一個數 在 java 和 go裡 NaN 的型別也是浮點數 而 js的 number就是 float64 這樣來看 typeof NaN === "number" 算是合理八?

11/03 00:56, 3年前 , 10F

11/03 00:56, 3年前 , 11F
=jpg
11/03 00:56, 11F
※ 編輯: keev (36.231.154.156 臺灣), 11/03/2020 01:29:36

11/03 01:17, 3年前 , 12F
要學的東西一堆 動不動就大更新
11/03 01:17, 12F

11/03 01:28, 3年前 , 13F
typeof []
11/03 01:28, 13F

11/03 01:44, 3年前 , 14F
喜歡 JavaScript,不過也沒寫過其他語言,也無法比較
11/03 01:44, 14F

11/03 01:52, 3年前 , 15F
有沒有看過this用bind綁定成亂七八糟的值 你想要綁正
11/03 01:52, 15F

11/03 01:52, 3年前 , 16F
確的反而出bug
11/03 01:52, 16F

11/03 02:04, 3年前 , 17F
要學文內那麼多東西就是缺點啊
11/03 02:04, 17F

11/03 02:07, 3年前 , 18F
文內那些東西還是很簡單的 那些也叫難你要c++工程師
11/03 02:07, 18F

11/03 02:07, 3年前 , 19F
怎麼辦
11/03 02:07, 19F

11/03 02:08, 3年前 , 20F
個人觀點 難學的點是很多東西不可預期
11/03 02:08, 20F

11/03 02:09, 3年前 , 21F
this很難判斷現在是誰 用+連的東西放前後不同結果
11/03 02:09, 21F

11/03 02:12, 3年前 , 22F
太多流派造成選擇障礙症 看那精美的jQuery/ng/react/
11/03 02:12, 22F

11/03 02:12, 3年前 , 23F
vue/vanilla以及各自衍生的套件跟生態系...
11/03 02:12, 23F

11/03 02:12, 3年前 , 24F
很多東西用到要寫個小程式測 然後幾週後就忘了
11/03 02:12, 24F

11/03 02:13, 3年前 , 25F
搞不清楚它的邏輯脈絡 搞的像要背一堆例外情況…
11/03 02:13, 25F

11/03 03:01, 3年前 , 26F
因為大部分人js都不紮實才覺得難用
11/03 03:01, 26F

11/03 05:32, 3年前 , 27F
嚴格模式可避免this亂指
11/03 05:32, 27F

11/03 07:33, 3年前 , 28F
有時忘記寫await,輸出不如預期花很多時間Debug才想到=
11/03 07:33, 28F

11/03 07:33, 3年前 , 29F
=
11/03 07:33, 29F

11/03 07:36, 3年前 , 30F
濃縮成一句話就是例外太多,行為不一致吧!
11/03 07:36, 30F

11/03 07:50, 3年前 , 31F
好啦! 我就是難搞...哪一次不搞滴
11/03 07:50, 31F

11/03 07:50, 3年前 , 32F
天生的限制導致要各種第三方工具來打包和協助管理
11/03 07:50, 32F

11/03 07:53, 3年前 , 33F
後天用第三方套件軟體協助開發,跟天生就內建的方便程度
11/03 07:53, 33F

11/03 07:53, 3年前 , 34F
差太多了。
11/03 07:53, 34F

11/03 08:43, 3年前 , 35F
就是爛才一堆框架跟延伸模組出現啊?你看看python,
11/03 08:43, 35F

11/03 08:43, 3年前 , 36F
嘻嘻
11/03 08:43, 36F

11/03 08:51, 3年前 , 37F
樓上想法負面,雖然難精,但是因大家喜愛才會延伸出許
11/03 08:51, 37F
還有 54 則推文
還有 1 段內文
11/03 22:59, 3年前 , 92F
不能用 unicode 符號?
11/03 22:59, 92F

11/03 23:13, 3年前 , 93F
JS 太自由 沒規範 動態又弱型別 覺得好寫的 不是高手
11/03 23:13, 93F

11/03 23:14, 3年前 , 94F
就是新手 一般程式的程度 都會覺得很多莫名例外要背..
11/03 23:14, 94F

11/04 03:19, 3年前 , 95F
Swift 歡迎你
11/04 03:19, 95F

11/04 07:42, 3年前 , 96F
求別更新了...老子學不動了...
11/04 07:42, 96F

11/04 10:06, 3年前 , 97F
看完推文 感覺就是常見的不懂xxx 就說xxx不好用 難用 ㄏㄏ
11/04 10:06, 97F

11/04 13:38, 3年前 , 98F
難用就是難用 懂了還是覺得難用 垃圾還有人要護航 今天是
11/04 13:38, 98F

11/04 13:39, 3年前 , 99F
沒辦法大家被逼著用 不然滿大街的JS加強版是哪來的?不就
11/04 13:39, 99F

11/04 13:39, 3年前 , 100F
是JS太垃圾太難用?
11/04 13:39, 100F

11/04 14:55, 3年前 , 101F
js的優勢是跑在browser上 很會能看到效果
11/04 14:55, 101F

11/04 14:55, 3年前 , 102F
然後就(誤
11/04 14:55, 102F

11/04 15:50, 3年前 , 103F
推 strlen。說出我發文的心情。北七的東西就別再護航了
11/04 15:50, 103F

11/04 16:18, 3年前 , 104F
很少 個人不喜歡類型 有了類型就要拋錯 方程處理數據
11/04 16:18, 104F

11/04 16:19, 3年前 , 105F
足夠了 能夠講的大概就寫起來太醜 不過這還是得看人
11/04 16:19, 105F

11/04 16:21, 3年前 , 106F
不是吧,沒有型別就不會有型別錯誤的意思嗎
11/04 16:21, 106F

11/04 16:30, 3年前 , 107F
當然會有錯 但你需要定位所有錯誤的原因嗎? haha
11/04 16:30, 107F

11/04 19:29, 3年前 , 108F
純Javascript沒問題,有問題的是那些有的沒的框架
11/04 19:29, 108F

11/04 19:45, 3年前 , 109F
要不要拋錯是可以透過語言的規格設計去改變做法的
11/04 19:45, 109F

11/04 19:46, 3年前 , 110F
但一個高階語言一開始不提供機制給人宣告型態
11/04 19:46, 110F

11/04 19:47, 3年前 , 111F
後面再用文件或註解去補往往就悲劇了
11/04 19:47, 111F

11/04 19:47, 3年前 , 112F
一不小心就是整個社群一堆雜七雜八難懂的標準
11/04 19:47, 112F

11/04 19:49, 3年前 , 113F
更別提你不想安排所有錯誤的處理對策不代表一個都不做
11/04 19:49, 113F

11/04 19:50, 3年前 , 114F
更不代表像 js 那樣還會自動幫你轉型或進行一堆運算
11/04 19:50, 114F

11/04 19:51, 3年前 , 115F
這麼不愛型態怎麼不去寫 Assembly 啊
11/04 19:51, 115F

11/04 21:42, 3年前 , 116F
給你型態 會寫的如同亂碼的一樣很難懂 方不方便維護
11/04 21:42, 116F

11/04 21:42, 3年前 , 117F
與有沒有型態根本是兩件事情 確實有錯誤需要處理 但
11/04 21:42, 117F

11/04 21:43, 3年前 , 118F
主要錯誤才是重點吧 只能說這是每個人的選擇
11/04 21:43, 118F

11/04 21:58, 3年前 , 119F
null >= 0
11/04 21:58, 119F

11/05 08:40, 3年前 , 120F
js抄書隨便亂兜,就可以擔任總經理,你說這語言嘿
11/05 08:40, 120F

11/05 08:42, 3年前 , 121F
台灣眾多小型公司慣老闆超愛js,覺得此語言萬能
11/05 08:42, 121F

11/05 23:16, 3年前 , 122F
就是純JS問題一大堆 才發明出那些有的沒的框架吧?
11/05 23:16, 122F

11/06 08:49, 3年前 , 123F
@superpandal 沒給型態才像亂碼好嗎
11/06 08:49, 123F

11/06 08:49, 3年前 , 124F
f = \x y. x $ map g y
11/06 08:49, 124F

11/06 08:49, 3年前 , 125F
請問你要花多少時間確認怎麼用 f 和 f 回傳的東西?
11/06 08:49, 125F

11/06 08:49, 3年前 , 126F
或甚至是確認上述程式是不是正確的?
11/06 08:49, 126F

11/06 08:49, 3年前 , 127F
如果我告訴你它的 type 是
11/06 08:49, 127F

11/06 08:49, 3年前 , 128F
f : (List String -> String) -> List Integer -> String
11/06 08:49, 128F

11/06 08:49, 3年前 , 129F
不用兩秒,你大概連 g 是做什麼的都猜到了吧
11/06 08:49, 129F

11/06 14:53, 3年前 , 130F
這是你定的? @_@
11/06 14:53, 130F

11/06 14:54, 3年前 , 131F
只能說這就是人生 總經理... 好遙遠的位置
11/06 14:54, 131F
文章代碼(AID): #1Ve2U8zj (Soft_Job)
文章代碼(AID): #1Ve2U8zj (Soft_Job)