首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

JavaScript 的 finally 属于语法糖吗?

  •  1
     
  •   mytry · 354 天前 · 2209 次点击
    这是一个创建于 354 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有没有不用 finally 解决不了问题的情况?
    16 回复  |  直到 2018-12-19 19:41:49 +08:00
        1
    Bryan0Z   354 天前 via Android
    try with resources 才是语法糖
    当然有不用解决不了的,比如异常时资源的释放
        2
    Bryan0Z   354 天前 via Android
    唔,看错了,原来是 js …
        3
    quinoa42   354 天前
    一时想不出来,确实可以理解为把 finally 的 block 分别接在 try 和所有 catch 的后面
        4
    azh7138m   354 天前 via Android
    是。
    没有。
    es6 之后的这些东西,大部分都是语法糖。
        5
    aneureka   354 天前 via Android
    @quinoa42 其实有细微差别,finally 是无论如何都会执行的,很直接放在后面不一样(比如 try/catch 块里的前面有 return 语句的话就执行不到了)
        6
    quinoa42   354 天前
    @aneureka 确实,还有没有 catch 到的 exception 的情况
    不过这两种特殊对待的话(把代码块加在 return 和 throw 前面)好像也可以只靠 try 和 catch 来实现
        7
    frankkai   354 天前 via Android
    我对 js 的语法糖已经无感了,还是 java 的 final 可爱
        8
    meetfly   354 天前
    什么叫语法糖
        9
    xlui   354 天前 via iPhone
    @meetfly 跟 #1 说的 Java 里的 try with resources 一样的,你不用也可以实现功能,但是用了写起来更舒服的语法。
        10
    Sparetire   354 天前 via Android
    似乎有一个不用 finally 解决不了的场景,生成器函数的资源释放,在 for/for of 迭代生成器的时候 break 了,需要关闭生成器中持有的文件之类,只能是 finally 了吧
        11
    Mutoo   354 天前
    finally 在 ECMA-262 第三版( 1999 年)里就是语法规范了,不是语法糖。

    https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf
        13
    msg7086   354 天前   ♥ 1
    语法糖这个东西,各人有各人的见解。说得杠一点,什么东西都是 CPU 指令集的语法糖。try catch 抛异常本来也是「语法糖」,比如 C 语言里就没这东西,大家都活得好好的,但是现代语言里都认为异常捕捉属于必须的语言特性了。finally 也一样。
        14
    otakustay   354 天前
    如果这样理解语法糖,很多关键字都会是语法糖:

    - with:仔细想想不用你会死吗
    - switch/case:写 if
    - in:一路向上 hasOwnProperty
    - break:自己写好 if 加上闭包变量值修改,绝对可以不用
    - instanceof:自己看 prototype
    - new:写函数 apply
    - typeof:Object.prototype.toString

    基于 for/while 都可以转成递归玩,所以你看……有意义吗
        15
    lqzhgood   354 天前
    P.then().catch().finally()

    是不是也可以这样写,除了语义上的区别

    P.then().catch().then()
        16
    meloner   354 天前
    别纠结这些, 能提高可读性、编码效率或是运行效率就是好特性
    编程语言都是语法糖,1010 才是本质
    1010 都是表象, 高低电平才是本质
    高低电平都是表象.....
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   872 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    ♥ Do have faith in what you're doing.