1
Bryan0Z 2018-12-19 09:11:17 +08:00 via Android
try with resources 才是语法糖
当然有不用解决不了的,比如异常时资源的释放 |
2
Bryan0Z 2018-12-19 09:11:38 +08:00 via Android
唔,看错了,原来是 js …
|
3
quinoa42 2018-12-19 09:12:08 +08:00
一时想不出来,确实可以理解为把 finally 的 block 分别接在 try 和所有 catch 的后面
|
4
azh7138m 2018-12-19 09:13:38 +08:00 via Android
是。
没有。 es6 之后的这些东西,大部分都是语法糖。 |
5
aneureka 2018-12-19 09:14:53 +08:00 via Android
@quinoa42 其实有细微差别,finally 是无论如何都会执行的,很直接放在后面不一样(比如 try/catch 块里的前面有 return 语句的话就执行不到了)
|
6
quinoa42 2018-12-19 09:17:18 +08:00
@aneureka 确实,还有没有 catch 到的 exception 的情况
不过这两种特殊对待的话(把代码块加在 return 和 throw 前面)好像也可以只靠 try 和 catch 来实现 |
7
frankkai 2018-12-19 09:42:22 +08:00 via Android
我对 js 的语法糖已经无感了,还是 java 的 final 可爱
|
8
meetfly 2018-12-19 10:04:06 +08:00
什么叫语法糖
|
9
xlui 2018-12-19 10:25:41 +08:00 via iPhone
@meetfly 跟 #1 说的 Java 里的 try with resources 一样的,你不用也可以实现功能,但是用了写起来更舒服的语法。
|
10
Sparetire 2018-12-19 10:36:51 +08:00 via Android
似乎有一个不用 finally 解决不了的场景,生成器函数的资源释放,在 for/for of 迭代生成器的时候 break 了,需要关闭生成器中持有的文件之类,只能是 finally 了吧
|
11
Mutoo 2018-12-19 10:36:57 +08:00
finally 在 ECMA-262 第三版( 1999 年)里就是语法规范了,不是语法糖。
https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf |
12
Sparetire 2018-12-19 10:41:00 +08:00 via Android 1
|
13
msg7086 2018-12-19 13:46:01 +08:00 1
语法糖这个东西,各人有各人的见解。说得杠一点,什么东西都是 CPU 指令集的语法糖。try catch 抛异常本来也是「语法糖」,比如 C 语言里就没这东西,大家都活得好好的,但是现代语言里都认为异常捕捉属于必须的语言特性了。finally 也一样。
|
14
otakustay 2018-12-19 13:48:12 +08:00
如果这样理解语法糖,很多关键字都会是语法糖:
- with:仔细想想不用你会死吗 - switch/case:写 if - in:一路向上 hasOwnProperty - break:自己写好 if 加上闭包变量值修改,绝对可以不用 - instanceof:自己看 prototype - new:写函数 apply - typeof:Object.prototype.toString 基于 for/while 都可以转成递归玩,所以你看……有意义吗 |
15
lqzhgood 2018-12-19 15:36:07 +08:00
P.then().catch().finally()
是不是也可以这样写,除了语义上的区别 P.then().catch().then() |
16
meloner 2018-12-19 19:41:49 +08:00
别纠结这些, 能提高可读性、编码效率或是运行效率就是好特性
编程语言都是语法糖,1010 才是本质 1010 都是表象, 高低电平才是本质 高低电平都是表象..... |