Javascript 的 finally 属于语法糖吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mytry
V2EX    程序员

Javascript 的 finally 属于语法糖吗?

  •  1
     
  •   mytry 2018-12-19 09:08:30 +08:00 4008 次点击
    这是一个创建于 2495 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有没有不用 finally 解决不了问题的情况?
    16 条回复    2018-12-19 19:41:49 +08:00
    Bryan0Z
        1
    Bryan0Z  
       2018-12-19 09:11:17 +08:00 via Android
    try with resources 才是语法糖
    当然有不用解决不了的,比如异常时资源的释放
    Bryan0Z
        2
    Bryan0Z  
       2018-12-19 09:11:38 +08:00 via Android
    唔,看错了,原来是 js …
    quinoa42
        3
    quinoa42  
       2018-12-19 09:12:08 +08:00
    一时想不出来,确实可以理解为把 finally 的 block 分别接在 try 和所有 catch 的后面
    azh7138m
        4
    azh7138m  
       2018-12-19 09:13:38 +08:00 via Android
    是。
    没有。
    es6 之后的这些东西,大部分都是语法糖。
    aneureka
        5
    aneureka  
       2018-12-19 09:14:53 +08:00 via Android
    @quinoa42 其实有细微差别,finally 是无论如何都会执行的,很直接放在后面不一样(比如 try/catch 块里的前面有 return 语句的话就执行不到了)
    quinoa42
        6
    quinoa42  
       2018-12-19 09:17:18 +08:00
    @aneureka 确实,还有没有 catch 到的 exception 的情况
    不过这两种特殊对待的话(把代码块加在 return 和 throw 前面)好像也可以只靠 try 和 catch 来实现
    frankkai
        7
    frankkai  
       2018-12-19 09:42:22 +08:00 via Android
    我对 js 的语法糖已经无感了,还是 java 的 final 可爱
    meetfly
        8
    meetfly  
       2018-12-19 10:04:06 +08:00
    什么叫语法糖
    akiakiseofficial
        9
    akiakiseofficial  
       2018-12-19 10:25:41 +08:00 via iPhone
    @meetfly 跟 #1 说的 Java 里的 try with resources 一样的,你不用也可以实现功能,但是用了写起来更舒服的语法。
    Sparetire
        10
    Sparetire  
       2018-12-19 10:36:51 +08:00 via Android
    似乎有一个不用 finally 解决不了的场景,生成器函数的资源释放,在 for/for of 迭代生成器的时候 break 了,需要关闭生成器中持有的文件之类,只能是 finally 了吧
    Mutoo
        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
    Sparetire
        12
    Sparetire  
       2018-12-19 10:41:00 +08:00 via Android   1
    msg7086
        13
    msg7086  
       2018-12-19 13:46:01 +08:00   1
    语法糖这个东西,各人有各人的见解。说得杠一点,什么东西都是 CPU 指令集的语法糖。try catch 抛异常本来也是「语法糖」,比如 C 语言里就没这东西,大家都活得好好的,但是现代语言里都认为异常捕捉属于必须的语言特性了。finally 也一样。
    otakustay
        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 都可以转成递归玩,所以你看……有意义吗
    lqzhgood
        15
    lqzhgood  
       2018-12-19 15:36:07 +08:00
    P.then().catch().finally()

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

    P.then().catch().then()
    meloner
        16
    meloner  
       2018-12-19 19:41:49 +08:00
    别纠结这些, 能提高可读性、编码效率或是运行效率就是好特性
    编程语言都是语法糖,1010 才是本质
    1010 都是表象, 高低电平才是本质
    高低电平都是表象.....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1335 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:13 PVG 01:13 LAX 10:13 JFK 13:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86