前言

学习过的语言,像C,Java 和 php。可能是 php 写多了,然后 js 又与 php 一样都是弱类型语言,不自觉地就把 php 的一些特性用到了 js 上。这次就出现问题了。

本来项目中的 jqgrid 插件是能用的,可以直接展示可编辑表(兼容IE7~)。但在接手项目后,做了一些修改,发现,可编辑表出不来了!以前没怎么注意,觉得就是浏览器兼容问题。因为在 chrome 浏览器上展示是没有问题的,一般调试也是选择 chrome。

但最近之前的系统使用者反馈,更新后的系统在 IE 上不能运行,表单出不来,而之前是可以的。这就带来了疑问,要么同事撒谎,要么我们后面的编辑改动有 bug 造成了这样的结果。前者不太现实,那就只能是我们代码的问题了。

解决

通过 360 浏览器切换到兼容模式(IE 模式)进行调试,发现运行 jqgrid 的页面控制台输出了报错信息。

对比代码发现,问题出在 function 参数默认值上(当前 phpstorm 并没有报错。。),错误写法如下:

function(a=1){
    xx(a);
}

百度这个问题,有文章提示 js function 不支持参数赋值默认值。
正确的写法如下:

function(a){
    if(!arguments[0]) a = 1;
}

通过 arguments 参数获取形参,索引对应形参位置。

改写原来的 function ,ok!