成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用angularjs.foreach時(shí)return的問題

Youngdze / 3190人閱讀

摘要:解決方案用一個(gè)臨時(shí)變量存儲(chǔ)結(jié)果,當(dāng)條件成立相同時(shí)將結(jié)果改為這樣雖然能獲得正確的返回值,但卻無法阻止的循環(huán)想來應(yīng)該是用在歷遍數(shù)組元素來做一些操作,像這樣的應(yīng)該用循環(huán)比較好一些

在寫一個(gè)比較數(shù)組對(duì)象中是否存在一個(gè)對(duì)象,存在返回true,失敗返回false.在return時(shí),發(fā)現(xiàn)并沒有退出方法,自己測試了一下.

首先先寫一個(gè)數(shù)組對(duì)象,然后用angularjs的forEach方法循環(huán)比較,當(dāng)存在名字為2的對(duì)象時(shí),輸出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;
    }();

剛開始認(rèn)為,當(dāng)找到value.name == 2的元素時(shí),方法就會(huì)直接返回,所以應(yīng)該只輸出1 pass,true pass the test然后程序結(jié)束,但輸出結(jié)果卻是這樣的:

結(jié)果發(fā)現(xiàn)在forEach里的return 居然只起到了for循環(huán)里的continue作用.
再把forEach循環(huán)的返回值和執(zhí)行函數(shù)的返回值打印出來:


forEach函數(shù)返回的是循環(huán)的數(shù)組,函數(shù)的返回值是false.說明在forEach里return 并沒有奏效,僅僅起到了continue的作用.
去網(wǎng)上搜了一下,并沒有原因說明..

經(jīng)老師指導(dǎo),找到了原因。在當(dāng)初c和c++的學(xué)習(xí)時(shí),我們總是習(xí)慣認(rèn)為只要return就會(huì)跳出我們所定義的函數(shù),確實(shí)return確實(shí)有退出函數(shù)的作用,然而在js中并不是return沒有起到效果,他也確實(shí)起到了效果:
起初我們認(rèn)為return后會(huì)跳出這個(gè)方法:

實(shí)則不然,他跳出的其實(shí)這個(gè)方法:

到這我們就明白了,return確實(shí)起到了返回方法的作用,但他返回的不是我們理想的方法。而是我們定義的匿名函數(shù),在匿名函數(shù)返回后,angular.foreach()函數(shù)又開始下一次的遍歷,于是就沒有能達(dá)到我們想要的效果。

解決方案:用一個(gè)臨時(shí)變量存儲(chǔ)結(jié)果,當(dāng)條件成立相同時(shí)將結(jié)果改為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());

png](/img/bVbhHi8)
這樣雖然能獲得正確的返回值,但卻無法阻止angular.forEach的循環(huán),想來forEach應(yīng)該是用在歷遍數(shù)組元素來做一些操作,像這樣的應(yīng)該用for循環(huán)比較好一些.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98114.html

相關(guān)文章

  • 使用AngularJS構(gòu)建應(yīng)用時(shí)遇到問題及解決方案(版本為1.3.9)

    摘要:最近在公司使用用完成了一個(gè)項(xiàng)目,在此記錄一下過程中遇到的問題及解決方案。其他兩種方法可參考站內(nèi)文章控制器如何通信結(jié)語以上為我在編寫一個(gè)應(yīng)用時(shí)遇到的問題及解決方案,記錄并分享出來,歡迎大家指正 最近在公司使用用AngularJS(1.3.9)完成了一個(gè)項(xiàng)目,在此記錄一下過程中遇到的問題及解決方案。 使用$http服務(wù)發(fā)送ajax請(qǐng)求時(shí)后端無法判斷請(qǐng)求是XMLHttpRequest 問題...

    cuieney 評(píng)論0 收藏0
  • 樂字節(jié)Java方法、調(diào)用、重載、遞歸

    摘要:關(guān)鍵字為跳出方法或返回值??偨Y(jié)如下接收變量方法名實(shí)參列表沒有返回值,不能使用接收變量。四重載一般來說,功能點(diǎn)相同的方法才適合使用重載,重載必須滿足如下要求必須是同一個(gè)類方法名必須相同參數(shù)列表不同注意方法重載與返回值無關(guān)。 一、概述 方法是指人們?cè)趯?shí)踐過程中為達(dá)到一定目的和效果所采取的辦法、手段和解決方案。 所謂方法,就是解決一類問題的代碼的有序組合,是一個(gè)功能模塊。編程語言中的方法是組...

    songze 評(píng)論0 收藏0
  • 精讀《Function Component 入門》

    摘要:比如就是一種,它可以用來管理狀態(tài)返回的結(jié)果是數(shù)組,數(shù)組的第一項(xiàng)是值,第二項(xiàng)是賦值函數(shù),函數(shù)的第一個(gè)參數(shù)就是默認(rèn)值,也支持回調(diào)函數(shù)。而之所以輸出還是正確的,原因是的回調(diào)函數(shù)中,值永遠(yuǎn)指向最新的值,因此沒有邏輯漏洞。 1. 引言 如果你在使用 React 16,可以嘗試 Function Component 風(fēng)格,享受更大的靈活性。但在嘗試之前,最好先閱讀本文,對(duì) Function Com...

    Scholer 評(píng)論0 收藏0
  • JavaScript 編程精解 中文第三版 八、Bug 和錯(cuò)誤

    摘要:幸運(yùn)的是,使用符號(hào)創(chuàng)建的構(gòu)造器,如果在不使用來調(diào)用,則始終會(huì)報(bào)錯(cuò),即使在非嚴(yán)格模式下也不會(huì)產(chǎn)生問題。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Bugs and Errors 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 調(diào)試的難度是開始編寫代碼的兩倍。 因此,如...

    wujl596 評(píng)論0 收藏0
  • React Hooks入門: 基礎(chǔ)

    摘要:當(dāng)組件安裝和更新時(shí),回調(diào)函數(shù)都會(huì)被調(diào)用。好在為我們提供了第二個(gè)參數(shù),如果第二個(gè)參數(shù)傳入一個(gè)數(shù)組,僅當(dāng)重新渲染時(shí)數(shù)組中的值發(fā)生改變時(shí),中的回調(diào)函數(shù)才會(huì)執(zhí)行。 前言   首先歡迎大家關(guān)注我的Github博客,也算是對(duì)我的一點(diǎn)鼓勵(lì),畢竟寫東西沒法獲得變現(xiàn),能堅(jiān)持下去也是靠的是自己的熱情和大家的鼓勵(lì),希望大家多多關(guān)注呀!React 16.8中新增了Hooks特性,并且在React官方文檔中新增...

    mrli2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<