块样式真的这么重要吗?

Jac*_*coe 11 javascript

我刚观看了Douglas Crockford关于2009年着作"JavaScript:The Good Parts"的演讲视频.

在视频中,他解释说以下块是危险的,因为它会产生无声错误:

return
{
    ok: false
};
Run Code Online (Sandbox Code Playgroud)

它实际上应该这样写(强调虽然看似相同,但行为差异至关重要):

return {
    ok: false
};
Run Code Online (Sandbox Code Playgroud)

你可以在32分钟左右看到他的评论:http://www.youtube.com/watch?v = hQVTIJBZook&feature = player_embedded#!&start = 1920

我以前没有听过这个,并且想知道这个规则是否仍然适用,或者自从这个陈述发表以来JavaScript语言的这种要求是否被克服了.

我发现这非常有趣,因为我没有以这种方式编写代码,并想检查这些信息是否已过时.

Pek*_*ica 15

无声错误undefined是返回的!

分号在JavaScript中是可选的,因此

return
{
    ok: false
};
Run Code Online (Sandbox Code Playgroud)

被解析就好像它一样

return;  // Leaves function straight away
{
    ok: false   
};
Run Code Online (Sandbox Code Playgroud)

JSLint将识别这些模式并警告它们:

棉绒警告:意外结束; 这些行是否属于同一语句是不明确的

lint警告:缺少分号

lint警告:无法访问的代码

皮棉警告:无意义的阻止; 花括号没有影响

这已在"最奇怪的语言特征"问题中讨论过.