Soft_Job 板


LINE

※ 引述《keev (a)》之铭言: : 而我自己写JavaScript 觉得写起来很舒服 : 所以我想请大家提出 JavaScript 哪里烂 你喜不喜欢是一回事,但尽管我天天写 ts 仍觉得 js 真的比较烂啊~ : 在近几年演化的很快 : 例如 es6 增加 let, const语法 这可以说是近年最有用的功能了… 还好有它们不然事情更麻烦 : promise, async await 的出现 : 避免了 callback hell 认真说来这是非同步作业都要面对的议题,不是 js 自己的问题, 但小吐槽一下,promise 只是函式库… 请不要跟语言混为一谈。 async、await 才是语言功能,但那是你 promise 用太凶而顺势衍生出的工具, 不是因为有什麽前瞻的见解而发展出来的功能。 另外值得一提的是… 既然现在人们把 js 当通用语言来用,也开发伺服器端的程式, 那处理到可能发生多种例外的作业,好比说 I/O 时, 你们难道不觉得没有 throws 语法给开发者事先声明函式的使用者可能会面对的例外是一项缺陷? 这样对於使用者来说,他不就要事先看一堆文件才会知道应该设想好哪些问题的对策? 难道有可能发生错误的函式你通通都要靠 promise 来回报吗? 这样应该比较浪费记忆体空间吧? 还是你觉得只要靠一两个高层次的 try catch 统一补捉各式 error, 然後再层层呼叫多个函式善後就好? 你这次要再靠 JSDoc 於程式码的外部声明例外状况来缓解这项问题吗? (有空去看看这篇文章吧 https://www.yinwang.org/blog-cn/2017/05/23/kotlin: TypeScript + JSDoc + vscode : 则是提供了强型别语言的好处 : 例如 type checking, documentation, 避免null dereference, code navigation 等等 这段是吸引我回文的点 不好意思喔,这些都是 typescript、vscode 的功劳,跟 javascript 无关。 你在用的是 typescript,javascript 仍旧是破破的,请不要帮它揽功。 其他 C-like 通用语言早就可以提供型态资讯给编译器, 也陆续都可以协助检查 null pointer 的问题, 拿这些功能出来说嘴只是让人觉得像是国中生跟大人强调自己已经不是小孩了。 如果你 js 专案不加入 tsconfig,或着不透过文字编译器、 IDE 提供的机制 向他们说明程式执行环境的资讯,那各类工具支援都难以做得很精准到位。 Facebook 为了解决型态问题还发展出 propTypes 这种鬼东西欸,我看了只觉得呵呵 : 而维护程式码品质的工具 eslint, prettier : 分别是 linter 和 code formatter : 可以避免许多问题 嗯,已知用火… : 而 commonjs, es module 则是补上了模组功能 : 在这些东西出现前 js的确是很难用 : 所以请大家把讨论范围限定在现代的JavaScript 好啦好啦,你终於长大,已经不是小孩子罗~ 你是未来世界的主人翁~ 乖哦~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.231.183.84 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1604367983.A.10C.html
1F:推 hegemon: 笑死,在蛇蛇圈也是有已知用火的感觉 11/03 10:14
2F:推 alihue: 推推 11/03 10:15
3F:→ stopcrying: 可惜 ts 的 union type 没有好用到可以取代 exception 11/03 10:16
4F:推 maik060: 漂亮 11/03 10:36
5F:推 newhandfun: 很精辟 11/03 10:49
6F:→ angusyu: 各位观众,新一代鄙视链已出现! 11/03 10:58
其实我不鄙视 js,毕竟当初发展的时空背景跟现在完全不同, 当年谁能料到浏览器辅助开发者的功能会变成现在大家开发应用程式的基础? 我只是受不了 js、ts 分不清楚就要说 js 好棒棒的论点,这太瞎了。
7F:推 windclara: 感谢TS,不然开发前端面对JS真心痛苦 11/03 10:59
8F:推 vi000246: 说ES6很棒 但是还要打包 考虑不同浏览器行为 11/03 11:15
9F:推 keev: promise 是语言的一部分 写在规格里 11/03 11:15
10F:→ vi000246: 部署难度差那麽多 我还是觉得js难用 11/03 11:15
12F:→ keev: 如果规格没有定义 promise 要怎麽定义 async await? 11/03 11:15
13F:推 keev: 型别检查那段我可能没写清楚 11/03 11:34
14F:→ keev: 我指的是 js + JSDoc + tsc checkJS 11/03 11:34
15F:→ keev: 开发时用 tsc检查型别 11/03 11:34
16F:→ keev: 跑的时候 node.js 直接跑不用编译 11/03 11:34
17F:→ keev: 在语法上是合格的 js 11/03 11:34
18F:→ keev: 可以说他是 js 也可以说他是 ts 11/03 11:34
好啊,你不是写 ts,你是写 js,但这样就更妙了。 语言是语言,开发工具是开发工具,这是两回事。 为什麽进步的 tsc 可以拿来为 js 语言护航? 工具都能为语言加分的话,那恐怕会让 js 被人笑更惨哦~ 就算你说工具的进步和语言的进步密切相关, js 有 let 有 const,有 node 的 cjs 和後面 export import 等概念後, tsc 抓错的能力才能大幅提升,但这改变不了 js 语言本身就是比其他语言破, 让人写得进阶一点就要背一堆特例,记一堆怪异行为,用一堆外部工具辅助的本质啊~ 这样的语言给人抱怨只是刚好而已好不好…
19F:推 kusakawa: promise 是函式库??定义在 ECMAScript Spec 里面的是 11/03 11:39
20F:→ kusakawa: 函式库?? 11/03 11:39
21F:嘘 tsao1211: 半瓶水响叮当 看到promise那段就懒得看了 11/03 11:44
22F:推 chatnoir: 用ts鄙视js XDDDD 11/03 11:51
也不是鄙视,就只是学会 ts 这种能提供 js 型态资讯给开发工具的语言之後, 若非维护旧专案,否则就不想写纯 js 专案了。 讲白了现在除非新专案是 node 程式,不然写给外部使用者的前端纯 js 专案还不是要转译, 有多少团队敢假设对方浏览器都很新,直接用最新的 ES 语法? 既然都要转译,那为啥不写 ts 就好?
23F:→ chatnoir: promise不是物件吗? 囧 11/03 11:52
24F:推 vi000246: 可是IE不支援promise捏 订在spec 浏览器不支援还要绕 11/03 11:53
25F:→ vi000246: 一圈 似乎不太方便 11/03 11:53
26F:→ kusakawa: 楼上不觉得这听起来像是 IE 的问题吗? 11/03 11:56
27F:→ vi000246: 如果公司要你支援IE 那就变成RD的问题了 11/03 12:00
28F:推 lturtsamuel: 你不想要 exception,go rust c欢迎你 11/03 12:06
29F:→ lturtsamuel: 除了ocaml系列语言 rust kotlin 其他人说要避免空指 11/03 12:08
30F:→ lturtsamuel: 针解引用我都当笑话 11/03 12:08
31F:→ WTFCN: 笑死 11/03 12:35
32F:→ jobintan: 我用react都用tsx取代jsx,ts真的建议去学一下。 11/03 13:13
33F:嘘 tz5514: 2020 年还在说 promise 只是函式库不是语言特性 如果不是 11/03 13:45
34F:→ tz5514: 平行时空就是时空旅人 11/03 13:45
35F:嘘 soccer103: Promise 是函式库? 11/03 18:37
36F:→ dreamnook: typescript写起来真的颇舒服 11/03 20:41
37F:→ fantasystar: promise/async/await 的部分讲错了 = = 11/03 22:13
38F:推 viper9709: 推 11/04 00:30
39F:→ superpandal: 个人觉得有错直接回传状态 再由其他函数处理比较好 11/04 16:27
这不就是 Go 语言的做法? 很好,以後你去呼叫函式之前都要注意他有没有可能抛执行期错误, 然後不断检查有没有错误讯息了。 ※ 编辑: dream1124 (118.160.95.12 台湾), 11/05/2020 14:59:59
40F:→ superpandal: 不需要像go那麽繁复 11/05 16:45
41F:推 sharku: 推ts 11/05 21:04
42F:推 strlen: 推TS就是证明JS就是个垃圾 11/05 23:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP