首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试理解underscore.js

尝试理解underscore.js
EN

Stack Overflow用户
提问于 2012-04-04 10:47:47
回答 3查看 479关注 0票数 2

在浏览underscore.js库时,我遇到了

代码语言:javascript
复制
for (var i = 0, l = obj.length; i < l; i++) {
    if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
}

// Establish the object that gets returned to break out of a loop iteration.
breaker = {};

为什么最后要用return?那么i in obj会检查什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-04 11:01:34

return存在函数(具有指定的返回值,如果有)。这将在教程中介绍。在循环结构中,它“提前停止”。

prop in obj是一个表达式,当且仅当obj (或链接的[prototype])具有属性prop (具有任何值,包括undefined)时才返回true。在本例中,请注意i的值超出了[0, length)的范围。这里的结果是“对于数组中每个指定的索引”。

iterator的计算结果是一个函数,并通过call()调用,因此可以设置上下文(可以设置this)。特殊的breaker变量的计算结果为特殊的标记对象。对于对象,===是“等同的”,没有其他新对象会对分配给breaker的对象执行===操作。

简而言之:它是Array.forEach (ECMAScript ed.5)或jQuery.each (实用程序方法),它遍历稀疏数组,传递一些额外的参数,并允许“提前终止”。

祝你编码愉快。

票数 3
EN

Stack Overflow用户

发布于 2012-04-04 10:50:13

代码似乎循环遍历某个迭代器对象,并在到达breaker变量时中断。return语句退出函数。

票数 1
EN

Stack Overflow用户

发布于 2013-01-08 08:59:22

请注意,您不能使用breaker来打破_.each循环;它只能在下划线自身内部访问,并由_.all_.some方法在内部使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10004310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档