Jac*_*nkr 1 javascript try-catch
在Javascript中(或者大多数情况下,ECMAscript一般)哪种写法最合适?
try { ajax.abort() } catch(e) { console.error (e) }
Run Code Online (Sandbox Code Playgroud)
try { ajax.abort(); } catch(e) { console.error (e); }
Run Code Online (Sandbox Code Playgroud)
对于这种情况,似乎不需要分号,但同时我通常将其写在5行而不是1行,在这种情况下,我使用分号作为标准编程目的(eol).
两者都有效,我相信两者都会验证,这在语义上是否正确?
这是表达式的内联 try-catch 。您可以一次性计算一个值,但仍然会捕获异常并在计算失败时回退到默认值 - 与三元运算符的精神类似?::
function trycatch(func, fail) {
try { return func() }
catch(e) { return fail }
}
Run Code Online (Sandbox Code Playgroud)
表达式必须封装在函数中,以便在函数内部执行,trycatch()而不是在函数外部执行。使用示例:
let value = trycatch(() => JSON.parse("parsing fails on this input"), null)
Run Code Online (Sandbox Code Playgroud)
它们在语义上是相同的,并且由于自动分号插入,它们在语法上都是正确的.
这部分是意见:
我建议总是明确地编写必要的分号,而不是依赖于ASI.但即使你这样做,ASI也会咬你.经典的例子是:
function foo() {
return
"testing";
}
Run Code Online (Sandbox Code Playgroud)
如果你打电话foo,返回值将undefined不是"testing",因为ASI开始并在;之后添加一个return.哎哟.