• 技术文章 >web前端 >js教程

    angularjs.foreach使用时return的用法

    不言不言2018-09-30 16:10:48转载1641
    本篇文章给大家带来的内容是关于angularjs.foreach使用时return的用法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    在写一个比较数组对象中是否存在一个对象,存在返回true,失败返回false.在return时,发现并没有退出方法,自己测试了一下.

    首先先写一个数组对象,然后用angularjs的forEach方法循环比较,当存在名字为2的对象时,输出true并返回,否则输出false并返回.

    self.test = function() {
          var testArray = [{name: 1},{name:2},{name:3}];
          angular.forEach(testArray, function(value, key){
            if (value.name == 2) {console.log(true + ' pass the test');return;}
            console.log(value.name + ' pass');
          });
          console.log(false + ' pass the test');
          return false;
        }();

    刚开始认为,当找到value.name == 2的元素时,方法就会直接返回,所以应该只输出1 pass,true pass the test然后程序结束,但输出结果却是这样的:

    2140344550-5bb04434117b3_articlex.png

    大前端成长进阶课程:进入学习

    结果发现在forEach里的return 居然只起到了for循环里的continue作用.
    再把forEach循环的返回值和执行函数的返回值打印出来:

    2719625032-5bb046deef48e_articlex.png

    forEach函数返回的是循环的数组,函数的返回值是false.说明在forEach里return 并没有奏效,仅仅起到了continue的作用.
    去网上搜了一下,并没有原因说明..

    解决方案:用一个临时变量存储结果,当条件成立相同时将结果改为true:

    self.test = function() {
          var testArray = [{name: 1},{name:2},{name:3}];
          var result = false;
          angular.forEach(testArray, function(value, key){
            if (value.name == 2) {result = true;}
          });
          return result;
        };
        console.log(self.test());

    2259104437-5bb047fb5c7d7_articlex.png
    这样虽然能获得正确的返回值,但却无法阻止forEach的循环,想来forEach应该是用在历遍数组元素来做一些操作,像这样的应该用for循环比较好一些.

    以上就是angularjs.foreach使用时return的用法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault思否,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:angularjs
    上一篇:带你彻底搞定vue-Router的导航守卫 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• AngularJS控制器继承自另一控制器• AngularJS入门(用ng-repeat指令实现循环输出_AngularJS• 学习AngularJs:Directive指令用法(完整版)_AngularJS• Angular.js回顾ng-app和ng-model使用技巧_AngularJS• AngularJS中的过滤器filter用法完全解析_AngularJS• AngularJS中实现用户访问的身份认证和表单验证功能_AngularJS
    1/1

    PHP中文网