• Underscore.js的用法


    开始的时候看了很多类似于这样的代码

    _.each(buildNodeByCategory2(response, 'K3FieldRoot', 'K3Field', 'fa fa-database'), function (e) {
                        $scope.tree.field.resList.push(e);
                    })

    开始没有明白,后面知道这是属于Underscore的写法,

    Underscore一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象

    each

    _.each(list, iteratee, [context]) Alias: forEach
    遍历list中的所有元素,按顺序用每个元素当做参数调用 iteratee 函数。如果传递了context参数,则把iteratee绑定到context对象上。每次调用iteratee都会传递三个参数:(element, index, list)。如果list是个JavaScript对象,iteratee的参数是 (value, key, list))。返回list以方便链式调用。

    1. 那么上面的  function(e) 对应的就是iteratee ,问题是只定义了一个函数e啊,那他对应的难道就只是(element, index, list)中的element

    干脆行动测试一下,把 function(e)  改成 function(e,i,list) 

     _.each(buildNodeByCategory2(response, 'K3FieldRoot', 'K3Field', 'fa fa-database'), function (e,i,list) {
                        $scope.tree.field.resList.push(e);
                    });

    调试跟踪如下

     果然和猜想的是一样的。

    结论1:function(e,i,list)  function后面的参数个数可以根据自己的需要随便自己写,但是按照顺序输出对应的对象的。

    结论2:each结构里面,先执行buildNodeByCategory2 函数,执行函数完毕之后返回一个数组,然后把数组丢到 function(e) 里面,e 就是 三个函数里面(element, index, list) 的 element,也就是数组里面的第一个元素。

  • 相关阅读:
    vim tab 和4个空格
    python 入门
    pyenv 以及 virtualenv
    Redis Cluster 理论知识
    使用Redis SETNX 命令实现分布式锁
    go runtime scheduler
    LeetCode Valid Parentheses
    LeetCode Rotate Image
    leetcode
    HDU 3657 Game(取数 最小割)经典
  • 原文地址:https://www.cnblogs.com/Bruce_H21/p/12586586.html
Copyright © 2020-2023  润新知