[讨论] 请大家聊聊 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