underscorejs-each学习
2.1 each
2.1.1 语法:
_.each(list, iteratee, [context])
2.1.2 说明:
依次对集合的所有元素进行某种操作,原样返回list。接收3个参数,list集合可以理解为数据源;iteratee即迭代器可以理解为回调方法;context执行上下文。
- list可以为数组,对象,字符串和arguments
- iteratee 会传第三个参数(element, index, list)或(value, key, list)
- context可以改变iteratee内部的this
2.1.3 代码示例:
示例一:each可以循环数组、对象、字符串和arguments
//遍历数组
_.each([1, 2, 3], function (element, index, list) {
console.log(element);
});
//遍历对象
_.each({one: '一', two: '二', three: '三'}, function(value, key, list){
console.log(value);
});
//遍历字符串
_.each('123', function(element, index, list){
console.log(element);
});
//遍历arguments
function abc(){
_.each(arguments, function(element, index, list){
console.log(element);
});
}
abc(1, 2, 3);
示例二:iteratee传递的参数
//数组的情况
_.each([1, 2, 3], function (element, index, list) {
console.log(element, index, list);
//1 0 [1, 2, 3]
//2 1 [1, 2, 3]
//3 2 [1, 2, 3]
});
//对象的情况
_.each({one: '一', two: '二', three: '三'}, function(value, key, list){
console.log(value, key, list);
//一 one Object {one: "一", two: "二", three: "三"}
//二 two Object {one: "一", two: "二", three: "三"}
//三 three Object {one: "一", two: "二", three: "三"}
});
示例三:context可以改变iteratee内部的this
_.each([1], function (element, index, list) {
console.log(this); //window
});
_.each([1], function (element, index, list) {
console.log(this); //{key: 1}
}, {key : 1});
示例四:each的返回值
var arr1 = _.each([1, 2, 3], function (element, index, list) {
});
var arr2 = _.each({one: '一', two: '二', three: '三'}, function(element, index, list){
});
console.log(arr1); //[1, 2, 3]
console.log(arr2); //Object {one: "一", two: "二", three: "三"}
2.1.4 _.forEach的功能和_.each是一样的
_.forEach([1, 2, 3], function (element, index, list) {
console.log(element);
});
2.1.5 遍历非集合
_.each(null, function (element, index, list) {
console.log(element); //不执行
});
_.each(undefined, function (element, index, list) {
console.log(element); //不执行
});
_.each(123, function (element, index, list) {
console.log(element); //不执行
});
_.each(new Date(), function (element, index, list) {
console.log(element); //不执行
});
遍历特殊值都不会报错,但也不执行。在遍历一个集合的时候,最好能先确定他是数组或对象等。
2.1.6 iteratee还可以是全局的方法
_.each([1, 2, 3], alert); //会弹三次
2.1.7 iteratee里面console.log为什么不行?(坑)
_.each([1, 2, 3], console.log); //Uncaught TypeError: Illegal invocation
gitbook地址:https://www.gitbook.com/book/niec-fe/underscorejs/details
underscorejs-each学习的更多相关文章
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- Backbone学习笔记一Backbone中的MVC
原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...
- APPCAN学习笔记004---AppCan与Hybrid,appcan概述
APPCAN学习笔记004---AppCan与Hybrid,appcan概述 技术qq交流群:JavaDream:251572072 本节讲了appcan的开发流程,和开发工具 笔记不做具体介绍了,以 ...
- Angularjs学习笔记《一》
开始慢慢的学习新的框架,Angularjs,其中原理不知深浅,但有例子练习,慢慢熟知.看的英文文档一点点翻译学习. 第一个例子,写一个增加,选中,删除的例子, 首先要引进所用的框架源码,这样引进,下面 ...
- Backbone学习笔记 - View篇
Backbone是一种Web端的MVC框架,这里纪录学习Model,View和Collection的笔记. 1 View initialize构造函数 Backbone.View 与jQuery库紧密 ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- socket(tcp)互发信息
一:有图有真相,很简单 a, b, Thread 构造函数(ParameterizedThreadStart)初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托. 参数star ...
- firefox HackBar组件模拟请求POST请求
组件下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/hackbar/
- DFS Zoj 2110
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2110 //2110 #include<stdio.h> #in ...
- [Locked] Alien Dictionary
Alien Dictionary There is a new alien language which uses the latin alphabet. However, the order amo ...
- [AS/400] Control Language
下面是一个简单的 CL 例子,转换日期格式:从 Julian 到 MDY,或者反方向转换. 接受两个参数,日期值 IN,目标类型 TYP,将转换后的日期值存入 OUT 中. PGM (&IN ...
- getting start with storm 翻译 第八章 part-2
转载请注明出处:http://blog.csdn.net/lonelytrooper/article/details/12435641 The Bolts 首先我们看一下该topology中的标准bo ...
- Centos 多个mysql数据库
一.编译安装第一个MySQL 5.1.33 ? cd /opt /usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql -s /bi ...
- html特殊符号列表
特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 Α Α Α Β Β Β Γ Γ Γ Δ Δ Δ Ε Ε Ε Ζ Ζ Ζ Η Η Η Θ Θ Θ Ι Ι Ι Κ Κ Κ Λ Λ Λ Μ ...
- DFU工作过程中USB机制
在一级bootloader执行进入USB启动方式之后,设备进行枚举.枚举过程中会通过PC端发送命令对连接的USB设备进行枚举.当枚举成功之后,在PC端可以看到设备的盘符. 当设备能够被PC正确识别之后 ...
- C\C++代码优化的27个建议
1. 记住阿姆达尔定律: funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数. 所以,如果你优化了函数TriangleIntersect执行40%的运行时间, ...