[英]Misunderstanding a javascript execution flow
我从Backbone开始,正在为手机销售编写应用程序。 但是我的疑惑是关于javascript执行流程的。
情况是我有一个自定义方法来拒绝购物车集合中的重复项,这些方法是这样的:
var Cart = Backbone.Collection.extend({
contains : function(aProduct){
_.each(this.models, function( element, index, list ){
if( element.get('product').get('id') == aProduct.get('id') ){
return true;
}
});
return false;
}
});
该方法检测到重复项并尝试返回true,但是该行不是最后一行,因为最后执行的语句是“ return false”。 在这一点上,我意识到我对这个javascript执行流程有误解。
也许你们其中一位可以用您的知识启发我
谢谢
您将从传递给_.each
的函数返回true。 这与您的contains函数不同。 这是使其工作的一种方法:
var Cart = Backbone.Collection.extend({
contains : function(aProduct){
var doesContain = false;
_.each(this.models, function( element, index, list ){
if( element.get('product').get('id') == aProduct.get('id') ){
doesContain = true;
}
});
return doesContain;
}
});
但是,更好的方法(假设是破折号或下划线)将是使用_.any
var Cart = Backbone.Collection.extend({
contains : function(aProduct){
return _.any(this.models, function( element ){
if( element.get('product').get('id') == aProduct.get('id') ){
return true;
}
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.