账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js多层嵌套的性能问题。
    • 2018-02-24 00:00
    • 11
    30
    0

    这个问题可能比较概念性,想去这样去做。现在还没有去实施。自己在编程学习都是培训出来的。对于程序设计没有太系统的了解。

    是这样的。考虑把函数分离开。然后用一个规则连接起来。考虑到兼容和异步所以打算使用回调函数的方式。固定函数头部。比如:

    var relation = {
        d1: ['d2','d3'],
        d2: ['d4'],
        d3: ['d5'],
        d4: ['d6'],
        ....
    }
    var next = function(name, params) {
        var next_steps = relation[name],
            i = 0,
            len = next_steps.length;
        for (; i < len; i++) {
            cache[next_steps[i]](params);
        }
    }
    var cache = {
        d1: function() {
            // do some things
            next(arguments.caller.name);
        },
        d2: function() {
            // do some things
            next(arguments.caller.name);
        },
        d3: function() {
            // do some things
            next(arguments.caller.name);
        },
        d4: function() {
            // do some things
            next(arguments.caller.name);
        }
        ....
    };
    for (var key in cache) {
        cache[key].name = key;
    }
    cache.d1();

    这样去运行。由配置参数决定上下步骤。减少灵活性.将代码存取到数据库或各种存储结构。运行的时候可异步可同步缓存处理函数,这样运行在长时间运行中会不会造成内存问题,如果保证每个函数内没有新的变量生成的话会不会造成内存问题。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 看別人笑話_ 普通会员 1楼

      在JavaScript中,多层嵌套的代码会导致性能问题,主要原因有以下几点:

      1. 内存消耗:当一个JavaScript对象包含嵌套的属性时,每个嵌套的属性都会被创建一个新的对象实例。这将消耗大量的内存,尤其是当对象包含大量的嵌套属性时。

      2. 访问效率低:由于JavaScript的函数对象是动态类型的,这意味着函数在不同的情况下可能会有不同的实现。这可能会导致访问函数对象时的效率低下。

      3. 算法复杂:嵌套的函数和属性会使得算法变得复杂,这会降低代码的可读性和可维护性。

      4. 错误处理困难:在JavaScript中,错误处理通常使用try/catch块来实现。如果一个嵌套的对象包含错误处理代码,那么当出现错误时,错误处理代码会被优先执行,这将导致错误的处理效果不理想。

      为了解决这些问题,可以考虑以下几点:

      1. 优化代码:尽量减少嵌套的代码,只在必要时才使用嵌套。如果必须使用嵌套,可以考虑使用深度优先搜索等方法来减少内存消耗。

      2. 使用函数对象:在JavaScript中,函数对象是静态类型的,因此可以使用函数对象来避免函数在不同的情况下可能会有不同的实现。

      3. 优化算法:尽量避免使用复杂的算法,如果必须使用,可以考虑使用递归等方法来优化算法。

      4. 使用try/catch块:如果嵌套的对象包含错误处理代码,可以考虑使用try/catch块来处理错误,这将有助于提高错误处理的效果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部