JavaScript中Allman风格的危险含义
我不记得在哪里了,但最近我发表了一条评论,用户告诉我在JavaScript中1TB比Allman更受欢迎,并说Allman在JavaScript中有危险的含义JavaScript中Allman风格的危险含义,javascript,code-formatting,Javascript,Code Formatting,我不记得在哪里了,但最近我发表了一条评论,用户告诉我在JavaScript中1TB比Allman更受欢迎,并说Allman在JavaScript中有危险的含义 这是一份有效的声明吗?如果是,为什么?返回后不能有行终止符: return { }; 被视为返回(return未定义),而不是return{}(返回一个对象) 更多信息请参见规则。我认为这取决于声明。例如,如果大括号位于新行,则返回语句可能会中断 这是一个有效的语句 因为JavaScript的引擎有所谓的ASI(自动分号插入),它在
这是一份有效的声明吗?如果是,为什么?
返回
后不能有行终止符
:
return
{
};
被视为返回
(return未定义
),而不是return{}代码>(返回一个对象)
更多信息请参见规则。我认为这取决于声明。例如,如果大括号位于新行,则返回语句可能会中断 这是一个有效的语句
因为JavaScript的引擎有所谓的ASI(自动分号插入),它在返回行插入分号(如果需要)。“如有必要”是含糊不清的;有时有效,有时无效。看
因此,正如其他答案所说:
return
{
};
// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};
因此,不建议将其用于return
语句
但是,如果您的指导方针建议函数声明使用Allman样式,那么这是完全正确的。我知道有一些是这样的。也许说它与ASI相关是一个好的答案?我已经长大了,非常喜欢javascript,但这仍然是一个好问题weird@FlorianMargaine给我一点时间解释一下:分号在JavaScript中是必需的;它们只是JavaScript中不需要的。
还有更多受ASI影响的语句,请查看@Esailija发布的规范链接或查看,我在那里总结了ASI规则。。。啊,只是为了好玩,试着通过以下测试:参见
return
{
};
// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};