遇到的问题
- 最近在项目当中遇到了一个问题:某一行的代码因为长度过长,就加了一个换行,结果运行之后结果不一样.后来出现问题后仔细排查终于确定了问题的原因.下面举一个简单的例子,以下面两个代码为例:
return {
name:function ()
{
alert(1);
}
};
return
{
name:function ()
{
alert(1);
}
};
原因分析
- 如果简单对比两个代码的话,确实一点毛病没有,但是运行的时候可能就会有报错的可能性.
- 查阅了部分资料后,知道js有一个自动修复机制——在程序可能有缺陷的时候,自动插入分号补全,但这个机制很不靠谱,常常会掩盖一些错误。
- 这样上面两个代码片在运行的时候就会展示出不一样的内容,第二块代码块在运行的时候return后面会自动补齐一个分号
return;
{
...
}
- 这样就会报错了~
小建议
我是在修改别人代码的时候手欠,看见内容比较长,就手动换行了一下,结果导致了项目在运行的时候报错.所以综上所述,有几个不成熟的小建议送给自己:
- 不要刻意更改别人的代码,除非是项目需要或者在项目重构的时候
- 在不得已个更改别人代码之后,一定一定要验证是否正确,养成良好的习惯,避免在后期遇到问题的时候再排查,这样浪费的时间远远多于当初验证的时间!