如題,angular.forEach怎麼做可以跳出循環?
先回答你的問題:
forEach是不能跳出循環的。
forEach
在絕大多數程式語言中,foreach不仅仅是语法糖,通过编译优化它可以提供更好的性能,比如直接略去边界检查。为了能更好地做到这些优化,foreach在設計上也給出了限制。例如在C#中,迭代過程不允許更改容器本身(增刪元素),不允許break(我們知道,所有的條件語句都會降低指令快取和管線的效能)。
foreach
Angular包裝了一系列的原生JS方法,為的是能夠更好地監聽模型變化。這些JS方法的使用方式和原來基本上沒有差別。你說的forEach就是一个,还有$timeout就是一個,還有$timeout等等。關於Angular的資料綁定方式可以看這個:http://harttle.com/2015/06/06/angular-data-binding-and-digest.html
$timeout
http://stackoverflow.com/a/13844508/2586541
Js原生的forEach和jquery的each是這樣的,return true,中斷後面的操作,繼續遍歷到下一個操作,類似continue;return false,結束整個遍歷,類似break Angular不太清楚,樓主可以試試,這種語法糖應該都差不多的。
@harttle 那循環的資料太大的時候,不是很影響效能。
先回答你的問題:
forEach
是不能跳出循環的。在絕大多數程式語言中,
foreach
不仅仅是语法糖,通过编译优化它可以提供更好的性能,比如直接略去边界检查。为了能更好地做到这些优化,foreach
在設計上也給出了限制。例如在C#中,迭代過程不允許更改容器本身(增刪元素),不允許break(我們知道,所有的條件語句都會降低指令快取和管線的效能)。Angular包裝了一系列的原生JS方法,為的是能夠更好地監聽模型變化。這些JS方法的使用方式和原來基本上沒有差別。你說的
forEach
就是一个,还有$timeout
就是一個,還有$timeout
等等。關於Angular的資料綁定方式可以看這個:http://harttle.com/2015/06/06/angular-data-binding-and-digest.htmlhttp://stackoverflow.com/a/13844508/2586541
雷雷
Js原生的forEach和jquery的each是這樣的,return true,中斷後面的操作,繼續遍歷到下一個操作,類似continue;return false,結束整個遍歷,類似break
Angular不太清楚,樓主可以試試,這種語法糖應該都差不多的。
@harttle 那循環的資料太大的時候,不是很影響效能。