zoukankan      html  css  js  c++  java
  • 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,也就是数组里面的第一个元素。

  • 相关阅读:
    PAT 1038. 统计同成绩学生
    PAT 1037. 在霍格沃茨找零钱
    PAT 1036. 跟奥巴马一起编程
    PAT 1035. 插入与归并
    PAT 1034. 有理数四则运算
    PAT 1033.旧键盘打字
    [转载]信号处理基础知识——加窗windowing
    On the use of spectrogram function in matlab
    [转载]【MATLAB】pwelch函数的相关参数解释
    [转载]时频特性分析(Matlab)
  • 原文地址:https://www.cnblogs.com/Bruce_H21/p/12586586.html
Copyright © 2011-2022 走看看