首页 新闻 赞助 找找看

js call.Function

0
悬赏园豆:5 [已解决问题] 解决于 2013-05-06 12:36

  function fe (d, c) {
            var f = d.sort.call(c, Function("a,b", "return a > b?-1:1;"));
            for (var e = 0; e < f.length; e++) {
                d.splice(f[e], 1)
            }
            return d;
        }

        var d = new Array(5,43,3,4,22,1);
        alert(fe(d,3));

 

为什么我的程序会报错??

window5549-accp的主页 window5549-accp | 初学一级 | 园豆:117
提问于:2013-03-12 11:31
< >
分享
最佳答案
0

是没有发现问题,估计达不到效果

收获园豆:5
Yu | 专家六级 |园豆:12980 | 2013-03-12 13:05
其他回答(3)
0

没有问题呀,你浏览器的事吧,呵呵!

张占岭 | 园豆:464 (菜鸟二级) | 2013-03-12 12:01

ie9调试运行不行,var f = d.sort.call(c, Function("a,b", "return a > b?-1:1;"));

能解释下吗?

支持(0) 反对(0) window5549-accp | 园豆:117 (初学一级) | 2013-03-14 09:05
0

没有发现问题

陈希章 | 园豆:2538 (老鸟四级) | 2013-03-12 12:49
0

function fe (d, c) {
            var f = d.sort(function(a,b){

      return a > b?-1:1;

    });
            for (var e = 0; e < f.length; e++) {
                d.splice(f[e], 1)
            }
            return d;
        }

        var d = new Array(5,43,3,4,22,1);
        alert(fe(d,3));

这里d本身就是数组,它有sort方法, 还用call做什么,这样没必要吧。

还有Function是构造函数,定义函数时最好不要用这个,因为它会再解析器,无形中增加内存与cpu负担。

这还都可以,毕竟没有什么错误,主要是d.sort.call(c, Function("a,b", "return a > b?-1:1;")); 

而在调用时,fe(d,3),这个以就是3,是整数,它没有sort方法,会报错的。

call的第一个参数是它要执行的对象。

small-joker | 园豆:144 (初学一级) | 2013-04-01 13:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册