1

在 Javascript(或大多数情况下,通常是 ECMAscript)中,哪种方式是最合适的编写方式?

try { ajax.abort() } catch(e) { console.error (e) }

或者

try { ajax.abort(); } catch(e) { console.error (e); }

在这种情况下,似乎不需要分号,但与此同时,我通常将其写在 5 行而不是 1 行上,在这种情况下,我将分号用于其标准编程目的 (eol)。

两者都有效,我相信两者都会验证,那么在语义上哪个是正确的?

4

2 回答 2

7

由于自动分号插入,它们在语义上是相同的,并且在语法上都是正确的。


这部分是意见:

我建议始终明确地编写必要的分号,并且永远不要依赖 ASI。但即使你这样做,ASI 也会咬你。经典的例子是:

function foo() {
    return
        "testing";
}

如果你调用foo,返回值将是undefined,不是"testing",因为 ASI 会;return. 哎哟。

于 2013-09-29T16:27:32.170 回答
3

这是表达式的内联 try-catch 。您可以一次性计算一个值,但仍会捕获异常并在评估失败时回退到默认值 - 在本质上类似于三元?:运算符:

function trycatch(func, fail) {
    try { return func() }
    catch(e) { return fail }
}

表达式必须包含在一个函数中,因此它在内部trycatch()而不是外部执行。示例使用:

let value = trycatch(() => JSON.parse("parsing fails on this input"), null)
于 2021-11-04T23:44:06.653 回答