JavaScript のループ タイプの概要分析
英語の Loop
という単語は、曲線によって作成される形状を指します。同様の概念である Loop
という単語がプログラミングで使用されています。下の図を見ると、命令の流れがアクションのループでどのように繰り返されるかがよくわかります。プログラミングにおいて、ループの概念は新しい概念ではなく、コーディング中によく使用されます。言語によって構文は異なりますが、 基本的な概念は同じで必要に応じて同じコードブロックを繰り返すことです。 JavaScript はループ タイプ (さまざまなタイプのループを含む) を追加し、それらの操作をより快適かつ効率的にします。この記事では、JavaScript で使用できるすべてのループについて学びます。 Loop
这个词指的是由弯曲的曲线所产生的形状。类似的概念,Loop
这个词已经被用于编程中。如果你看到下图,你就会清楚的知道指令的流动是如何在一个循环的动作中不断重复的。在编程中,循环的概念并不是什么新概念,它们常常在编码时使用。虽然不是的语言其语法不同,但基本概念是相同的,根据需要重复相同的代码块。JavaScript增加了循环类型(包括各种类型的循环),并使其与它们的工作更加舒适和高效。在本文中,我们将学习JavaScript中所有可用的循环。
循环的定义
在计算机编程中,Loop
是一个重复特定代码块的过程。
JavaScript的循环类型
在JavaScript中有七种循环类型。我们已经把它们列出来,这样可以帮助你更清楚地了解他们的工作流程和使用情况。本文还将帮助你区分这七种循环类型,比如在哪里、何时或如何使用它们。让我们开始吧。
while
循环
while
循环是JavaScript中可用的最基本的循环类型之一。你一定听说过,JavaScript不是唯一的编程语言。
while
语句生成一个循环,在条件为true
的情况下,在一个特定的语句块中执行该循环。每次执行代码块之前,条件都会被检查。
语法
while (条件) { // 代码块}
示例
var i = 8;while (i < 10) { console.log('我小于10') i++ }
在上面的例子中,条件(i < 10)
先会被检查,如果条件为true
,while
中的代码块就会被执行,而且再下一次迭代之前,i
的值将增加1
,主要是因为我们已经添加了一个i++
语句。
do-while
循环
do-while
和while
略有不同,因为它包含一个额外的特性,最少执行一次。
语法
do { // 代码块}while (条件)
示例
var i = 8;do { console.log('我的值是' + i) i++ }while (i > 7 && i < 10)
你可以看到,我们的条件是(i > 7 && i < 10)
,但i=7
的时候值已经打印出来了。因为这个循环技术首先执行代码块,而不是考虑条件,执行完代码块之后,在第二轮的时候才执行条件。对于第二次循环遍历代码块时,只有条件为true
才将执行。
for
循环
while
循环和for
循环的工作方式完全相同,即使执行时间也没有太大差别。那么,另一个提供相同功能的循环系统需要什么呢?
在for
循环中,循环的变量声明和初始化,条件查询和循环变量的递增或递减都可以在相同的行中完成。它增加了可读性,降低了出错的几率。
语法
for ([变量初始化];[条件];[变量递增或递减]) { // 代码块 }
示例
for (var i = 0; i < 10; i++) { console.log('我的值是: ' + i) }
正如上面的示例所示,变量初始化i = 0
,条件i < 10
和变量的递增i++
都在同一行中声明。它更容易理解,可读性更好,是不是?
for
循环的使用和前面所说的while
循环完全相同。但是为了让代码更容易阅读和理解,大多数的时候我们使用for
循环而不是while
循环。
forEach()
它是数组的原型方法(甚至是map
和set
)。forEach()
方法根据索引顺序index
,每次使用数组中的每个元素调用一个给定的函数(或回调函数)。注意,forEach()
没有对没有值的数组元素运行给定的函数。
语法
array.forEach(function(currentValue, index, array){ // 函数主体})
forEach()
方法以函数作为参数。该函数由三个参数组成:
currentValue
:保存正在处理的当前值index
:保存该特定数组中的值的索引array
:保存了整个数组
你可以使用forEach()
遍历一个集合set
,也可以使用它迭代一个映射map
。
示例
var array = [10, 20, "hi", , {}, function () {console.log('我是一个函数')}]array.forEach(function(item, index){ console.log('array [' + index + '] 是: '+ item) })
forEach()
方法遍历的是array
数组。如果你没有使用索引index
,你只能使用array.forEach(function(item){})
。可以相应地使用参数,但不是每次都要使用这三个参数。
使用forEach()
ループの定義
コンピューター プログラミングにおけるループ
は、コードの特定のブロックを繰り返すプロセスです。 🎜JavaScript ループ タイプ
🎜 JavaScript には 7 つのループ タイプがあります。ワークフローと使用法をより明確に理解できるように、それらをリストにまとめました。この記事は、どこで、いつ、どのように使用するかなど、これら 7 つのループ タイプを区別するのにも役立ちます。はじめましょう。 🎜while
ループ
🎜while
ループは、JavaScript で使用できる最も基本的なタイプのループの 1 つです。 JavaScript が唯一のプログラミング言語ではないということを聞いたことがあるはずです。 🎜🎜 while
ステートメントは、条件が true
の場合に特定のステートメント ブロックで実行されるループを生成します。条件は、コード ブロックを実行する前に毎回チェックされます。 🎜構文
var arr = []; arr[0]=0; arr[10]=10;for(var i=0; i<arr.length; i++){ console.log("I am for:" + i); } arr.forEach(function(){ console.log("I am forEach"); });
例
var newArray= oldArray.map(function (currentValue, index, array){ //Return element for the newArray});
(i <10)
が最初にチェックされます。 code >true の場合、while
のコード ブロックが実行され、次の反復の前に、i
の値が 1< だけ増加します。 /code >、主に <code>i++
ステートメントを追加したためです。 🎜do-while
ループ
🎜do-while
は、追加の機能が含まれているため、while
とは少し異なります。少なくとも一度は。 🎜構文
var num = [1, 5, 10, 15];var doubles = num.map(function(x) { return x * 2; });
例
for (variableName in object) { Block of code }
(i > 7 && i <10)
であることがわかりますが、< When code >i=7、値が出力されました。このループ手法では、条件を考慮せずに最初にコード ブロックを実行するため、コード ブロックが実行された後、2 番目のラウンドで条件が実行されます。ループがコード ブロックを 2 回目に通過するときは、条件が true
の場合にのみ実行されます。 🎜for
ループ
🎜while
ループと for
ループは、実行時間はそれほど長くなくても、まったく同じように機能します。大きな違い。では、同じ機能を提供する別の循環システムには何が必要でしょうか? 🎜🎜 for
ループでは、ループ変数の宣言と初期化、条件付きクエリ、ループ変数のインクリメントまたはデクリメントをすべて同じ行で完了できます。可読性が向上し、エラーの可能性が減ります。 🎜構文
var obj = {a: 1, b: 2, c: 3}; for (var prop in obj) { console.log('obj.'+prop+'='+obj[prop]); };
例
var arr = []; arr[2] = 2; arr[3] = 3; arr[0] = 0; arr[1] = 1;
i = 0
、条件 i <10</ code> code> と変数の増分 <code>i++
は両方とも同じ行で宣言されます。よりわかりやすく、読みやすくなりましたね。 🎜🎜 for
ループの使用方法は、前述の while
ループとまったく同じです。ただし、コードを読みやすく理解しやすくするために、ほとんどの場合、while
ループの代わりに for
ループを使用します。 🎜forEach()
🎜これは配列 (map
や set
も) のプロトタイプ メソッドです。 forEach()
メソッドは、インデックス順序 index
に従って、配列内の各要素に対して毎回、指定された関数 (またはコールバック関数) を呼び出します。 forEach()
は、値を持たない配列要素に対して指定された関数を実行しないことに注意してください。 🎜構文
for(var prop in obj){ if(obj.hasOwnProperty(prop)){ Code block here } }
forEach()
メソッドは関数をパラメータとして受け取ります。この関数は 3 つのパラメータで構成されます: 🎜- 🎜
currentValue
: 処理中の現在の値を保存します🎜 - 🎜< code >index: 特定の配列内の値のインデックスを保存します 🎜
- 🎜
array
: 配列全体を保存します 🎜
forEach()
を使用してコレクション set
を反復処理したり、これを使用してマップ map
を反復処理したりできます。 🎜例
for (variable of iterable) { Block of code }

array
配列を走査します。インデックス index
を使用していない場合は、array.forEach(function(item){})
のみを使用できます。パラメータはそれに応じて使用できますが、これら 3 つのパラメータは毎回必要というわけではありません。 🎜🎜 forEach()
を使用すると、配列の走査が非常に簡単になります。ループ変数、条件、その他のことについて心配する必要はありません。すべての反復が処理されます。 🎜forEach()
和for
的区别
你可以使用一个从0
开始到array.length
(该数组长度)简单的遍历一个数组。那么为什么还要提出不同的选择呢?
一个经验法则是,如果你可以选择使用原型方法,你就应该使用原型方法。因为,原型方法更清楚地知道对象,并对最佳方法进行了优化。下面这个示例能更好的来说明他们的区别之处:
var arr = []; arr[0]=0; arr[10]=10;for(var i=0; i<arr.length; i++){ console.log("I am for:" + i); } arr.forEach(function(){ console.log("I am forEach"); });
如果你运行上面的代码,你会发现for
打印了11
次,而forEach()
只打印了两次:
原因是,for
循环是一个简单的for
循环,对它的用途一无所知。它从0
到arr.length
。然而,当你使用forEach()
的时候,它知道arr
只有两个元素,虽然长度是10
。累此,它实际上只迭代了两次。
根据这个,如果你想在循环中跳过繁重的工作,迭代一个iterable
,你应该使用forEach()
。然而,仅仅迭代(相同数量的迭代)的迭代时间相对于for
循环来说是次要的。因为迭代性能更好。
map()
map
是数组的另一个原型方法。map()
方法将创建一个新的数组,该数组的返回值由一个给定的数组的函数执行生成。
语法
var newArray= oldArray.map(function (currentValue, index, array){ //Return element for the newArray});
map()
方法以函数作为参数,该函数有三个参数:
currentValue
: 在数组中处理的当前元素index
:数组中正在处理的当前元素的索引值array
:数组映射的调用
示例
var num = [1, 5, 10, 15];var doubles = num.map(function(x) { return x * 2; });
在上面的示例中,名为doubles
的新数组将输出doubles=[2, 10, 20, 30]
和num
数组仍旧是num=[1, 5, 10, 15]
。
for…in
这个方法主要是对象的迭代。for...in
在语句中迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。
因为我们知道数组也是一种特殊的对象,所以不要认为数组不能用这个来进行迭代。
语法
for (variableName in object) { Block of code }
示例
var obj = {a: 1, b: 2, c: 3}; for (var prop in obj) { console.log('obj.'+prop+'='+obj[prop]); };
为什么在数组中使用for...in
迭代不可取?
for...in
不应该在数组迭代中使用,特别是index
顺序非常重要。
实际上,数组索引和一般对象属性之间没有区别,数组索引只是可枚举属性。
for...in
不会每次都以任何特定的顺序返回index
值。for...in
在迭代中,这个循环将返回所有可枚举属性,包括那些具有非整数名称的属性和继承的属性。
因此,建议在遍历数组时使用for
或forEach()
。因为迭代的顺序是依赖于现实的迭代,并且遍历一个数组,使用for...in
可能不会以一致的顺序访问元素。
var arr = []; arr[2] = 2; arr[3] = 3; arr[0] = 0; arr[1] = 1;
在这种情况下,使用forEach()
将输出一个0, 1, 2, 3
。但使用for...in
并不能保证会输出什么。
对于for...in
还有一件事你应该记住,它遍历对象的所有属性,包括继承的(来自父类)。如果只想在对象自己的属性上进行迭代,那么应该执行下面这样的操作:
for(var prop in obj){ if(obj.hasOwnProperty(prop)){ Code block here } }
for…of
这是ES6中新引入的一种循环类型。使用for...of
语句,你可以遍历任何可迭代的对象,比如Array
、String
、Map
、WeakMap
、Set
、参数对象、TypeArray
,甚至一般对象。
语法
for (variable of iterable) { Block of code }
示例
var str= 'paul';for (var value of str) { console.log(value); }
map的迭代
let itobj = new Map([['x', 0], ['y', 1], ['z', 2]]);for (let kv of itobj) { console.log(kv); }// => ['x', 0]// => ['y', 1]// => ['z', 2]for (let [key, value] of itobj) { console.log(value); }// => 0// => 1// => 2
for...in
循环主要遍历对象,其实际的插入顺序中是可枚举的属性;for...of
迭代任何可迭代对象的给定值(而不是属性名)。
Object.prototype.objProto = function() {}; Array.prototype.arrProto = function() {};let iterable = [8, 55, 9]; iterable.title = 'VoidCanvas';for (let x in iterable) { console.log(x); // logs 0, 1, 2, title, arrProto, objProto}for (let i of iterable) { console.log(i); // 8, 55, 9}
正如你所见,for...of
都是关于对象自己value
的迭代,而for...in
将会考虑原型和继承的属性。如果你想在对象上迭代(而不是迭代)。for...of
将会考虑它自己的所有属性,但迭代的情交下,它只会考虑适合这种迭代的元素。这就是为什么在上面的例子中,for...of
没有迭代属性。
相关推荐:
以上がJavaScript のループ タイプの概要分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

タイトル: DreamWeaver CMS のセカンダリディレクトリを開けない原因と解決策の分析 Dreamweaver CMS (DedeCMS) は、さまざまな Web サイトの構築に広く使用されている強力なオープンソースのコンテンツ管理システムです。ただし、Web サイトの構築中に、セカンダリ ディレクトリを開けない状況が発生し、Web サイトの通常の動作に問題が発生することがあります。この記事では、セカンダリ ディレクトリを開けない考えられる理由を分析し、この問題を解決するための具体的なコード例を示します。 1. 考えられる原因分析: 疑似静的ルール構成の問題: 使用中

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

タイトル: テンセントの主要なプログラミング言語は Go ですか: 詳細な分析 中国の大手テクノロジー企業として、テンセントはプログラミング言語の選択において常に多くの注目を集めてきました。近年、テンセントは主に Go を主要なプログラミング言語として採用していると考える人もいます。この記事では、Tencent の主要なプログラミング言語が Go であるかどうかについて詳細な分析を行い、この見解を裏付ける具体的なコード例を示します。 1. Tencent における Go 言語の適用 Go は、Google によって開発されたオープンソースのプログラミング言語であり、その効率性、同時実行性、シンプルさにより多くの開発者に愛されています。

静的測位技術の利点と限界の分析 現代の科学技術の発展に伴い、測位技術は私たちの生活に欠かせないものになりました。その 1 つとして、静的測位テクノロジには独自の利点と制限があります。この記事では、静的測位技術の詳細な分析を実施して、現在の応用状況と将来の開発傾向をより深く理解します。まず、静的測位技術の利点を見てみましょう。静的測位技術は、位置決め対象の物体を観察、測定、計算することで位置情報を決定します。他の測位技術と比較して、
