函数参数问题导致的离奇问题

2018年04月18日Web前端

自测无问题的代码提交后,其他人更新后,出现了控制台报错问题。查看后,发现是函数调用参数的问题。

我们都知道,当定义以下JSON对象时,

var obj = {
    name: 'aaa',
}

在低版本的IE下是会报错的,在现代浏览器上是不会报错的。

问题

目前我遇到的问题可以总结为,在调用函数时,参数多了个逗号(居然没发现,实在是失误啊。。)。如

show(1, );

function show () {
    console.log(111);
}

这样调用函数时,在高版本的浏览器上是不会有问题的,第二个参数是undefined。而在低版本的浏览器上是直接编译报错,无法运行的。

注:测试chrome59和65没有问题,chrome50有问题。

结论

为了代码的兼容性以及稳定性,不出现离奇的问题,我们还是得规范代码书写,jshint等代码检查工具也可用起来。

在看ES6时发现啦,ES2017 允许函数的最后一个参数有尾逗号(trailing comma)。 看来只是chrome提前实现了某些功能。

目录