繁体   English   中英

误解了javascript执行流程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM