我可以防止JavaScript中的愚蠢错误,因为该语言不需要分号吗?

我可以防止JavaScript中的愚蠢错误,因为该语言不需要分号吗?,javascript,Javascript,我只是浪费了很多时间,因为我更改了一个JavaScript函数 到 当我需要测试的时候 当然,更改后的函数返回undefined,因为该语言不需要分号,并且假定return为完整语句 不幸的是,当我注释掉x(a,b,c)时,我没有想到这个含义。那么,有没有一种方法可以防止将来出现这种愚蠢的错误呢。还有一个单元测试框架 Problem at line 3 character 11: Expected ';' and instead saw 'y'. 分号插入对于return尤其令人讨厌。这种情况

我只是浪费了很多时间,因为我更改了一个JavaScript函数

当我需要测试的时候

当然,更改后的函数返回
undefined
,因为该语言不需要分号,并且假定
return
为完整语句

不幸的是,当我注释掉
x(a,b,c)
时,我没有想到这个含义。那么,有没有一种方法可以防止将来出现这种愚蠢的错误呢。

还有一个单元测试框架

Problem at line 3 character 11: Expected ';' and instead saw 'y'.

分号插入对于
return
尤其令人讨厌。这种情况的解决方法是:不要
返回
多行语句

function F(a,b,c)
{
    var toReturn x(a,b,c) +
           y(a,b,c) + 
           z(a,b,c);

    return toReturn;
}

惰性调试器的解决方案:

function F(a,b,c) {
    return (
      // x(a,b,c) +
      y(a,b,c) + 
      z(a,b,c)
    );
}
集成到您的构建中,并在检测到错误时使构建失败


第7行第12个字符的问题:“return”之后不可到达“y”。
当然要将此设置为行和字符的通用设置。你真正想要的是“返回后无法到达”。

是的,想想你所做的事情的含义。冒着直言不讳的风险,听起来你好像在咆哮,因为你在这个小错误上浪费了很多时间。正因为如此,我认为你在未来已经不太可能做到这一点,也不需要任何特殊的技巧来防止这一点。你可以阅读有关自动分号插入的内容:我不知道,为什么会发生这种情况,我只是想确保不会再发生这种情况。我不确定它对分号是否有帮助,但是javascript有一个严格的模式:可能有助于防止其他类似类型的错误?除了游戏之外,自动化
过程是我进入编程的主要原因之一。如果理论上它可以自动化,我就必须自动化它,而不是手工操作。这似乎很容易出错。一开始我也这么想。但后来发现,与仅使用paren相比,对现有语句的更改太多了。我猜您可能会检测到任何在同一行上以分号结尾的非简单返回语句,并在此基础上构建失败的语句。不过,这仍然让人觉得有点恶心。因为这在技术上是可以检测到的,所以我在你的答案中添加了一个空格,这样我就可以对它进行投票。我仍然希望看到它以某种方式自动生成。类似于“捕获所有返回值不带圆括号的函数”+1是的,这是我在返回语句中使用paren的原因之一。解释器不能自由决定返回语句的结尾。
function F(a,b,c)
{
    var toReturn x(a,b,c) +
           y(a,b,c) + 
           z(a,b,c);

    return toReturn;
}
function F(a,b,c) {
    return (
      // x(a,b,c) +
      y(a,b,c) + 
      z(a,b,c)
    );
}