国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用angularjs.foreach時return的問題

Youngdze / 3154人閱讀

摘要:解決方案用一個臨時變量存儲結果,當條件成立相同時將結果改為這樣雖然能獲得正確的返回值,但卻無法阻止的循環想來應該是用在歷遍數組元素來做一些操作,像這樣的應該用循環比較好一些

在寫一個比較數組對象中是否存在一個對象,存在返回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然后程序結束,但輸出結果卻是這樣的:

結果發現在forEach里的return 居然只起到了for循環里的continue作用.
再把forEach循環的返回值和執行函數的返回值打印出來:


forEach函數返回的是循環的數組,函數的返回值是false.說明在forEach里return 并沒有奏效,僅僅起到了continue的作用.
去網上搜了一下,并沒有原因說明..

經老師指導,找到了原因。在當初c和c++的學習時,我們總是習慣認為只要return就會跳出我們所定義的函數,確實return確實有退出函數的作用,然而在js中并不是return沒有起到效果,他也確實起到了效果:
起初我們認為return后會跳出這個方法:

實則不然,他跳出的其實這個方法:

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

解決方案:用一個臨時變量存儲結果,當條件成立相同時將結果改為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的循環,想來forEach應該是用在歷遍數組元素來做一些操作,像這樣的應該用for循環比較好一些.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98114.html

相關文章

  • 使用AngularJS構建應用遇到問題及解決方案(版本為1.3.9)

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

    cuieney 評論0 收藏0
  • 樂字節Java方法、調用、重載、遞歸

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

    songze 評論0 收藏0
  • 精讀《Function Component 入門》

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

    Scholer 評論0 收藏0
  • JavaScript 編程精解 中文第三版 八、Bug 和錯誤

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

    wujl596 評論0 收藏0
  • React Hooks入門: 基礎

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

    mrli2016 評論0 收藏0

發表評論

0條評論

Youngdze

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<