大家讲道理2017-05-15 16:56:21
まず質問に答えさせてください:
forEach
はループから抜け出すことができません。 forEach
是不能跳出循环的。
在绝大多数编程语言中,foreach
不仅仅是语法糖,通过编译优化它可以提供更好的性能,比如直接略去边界检查。为了能更好地做到这些优化,foreach
在设计上也给出了制约。例如在C#中,迭代过程不允许更改容器本身(增删元素),不允许break(我们知道,所有的条件语句都会降低指令缓存和流水线的性能)。
Angular包装了一系列的原生JS方法,为的是能够更好地监听模型变化。这些JS方法的使用方式和原来基本没有区别。你说的forEach
就是一个,还有$timeout
foreach
は単なる構文の糖衣ではなく、境界チェックを直接省略するなど、コンパイルの最適化を通じてパフォーマンスを向上させることができます。これらの最適化をより効果的に達成するために、foreach
は設計制約も提供します。たとえば、C# では、反復プロセスではコンテナ自体への変更 (要素の追加または削除) が許可されず、ブレークも許可されません (すべての条件付きステートメントが命令キャッシュとパイプラインのパフォーマンスを低下させることがわかっています)。 #🎜🎜#
#🎜🎜#Angular は、モデルの変更をより適切に監視するために、一連のネイティブ JS メソッドをラップします。これらの JS メソッドの使用方法は基本的に以前と同じです。あなたが言及した forEach
は 1 つですが、$timeout
などもあります。 Angular のデータ バインディング方法については、http://harttle.com/2015/06/06/angular-data-binding-and-digest.html#🎜🎜# を参照してください。仅有的幸福2017-05-15 16:56:21
Js ネイティブの forEach と jquery はそれぞれ次のようになり、true を返し、後続の操作を中断し、継続と同様に次の操作へのトラバースを続行します。 false を返し、break と同様にトラバース全体を終了します
Angular についてはよくわかりませんが、この種の糖衣構文は似ているはずです。