知っておくべき4つの役に立つJavaScriptステートメント
JavaScriptのステートメントは私たちに力を与えます コードにさまざまな種類のロジックを実装する. JavaScriptはそれらのいくつかを私たちに提供していますが、それらはすべて独自の目的と構文を持っています。最もよく知られている例の中には、式ステートメント、反復ステートメント、条件ステートメントなどがあります。
今日の記事では私たちが見るでしょう あまり一般的でない4つのJavaScriptステートメント あなたは今まで知らなかったかもしれませんが、あなたのJavaScriptの知識を深め、そしてあなたがより良いコードを書くことを可能にすることができます.
空のステートメント
JavaScriptステートメントの代わりに、空のステートメントを追加することができます。これは単一のセミコロンとして書かれています。 ;
. JavaScriptインタプリタが空の文を解釈したとき, コードは実行されません, それ故にそれらは有用である場合もあります 実行したくないサブステートメントを置き換える.
たとえば、という変数があるとします。 リトマス
デフォルト値 中性
. 別の変数の値に基づいて pH
, リトマス
どちらかに変更 酸性の
pHが < 7 or 基本的な
pH> 7のとき.
の値が pH
無効であることがわかり、エラーがスローされます。のために 調子 このように、次の条件文が適用されます。
var litmus = 'neutral'; var pH; (pH> 0 && pH)<7) litmus = 'acidic'; else if(pH>7 && pH<15) litmus = 'basic'; else throw "Invalid pH value";
ただし、上記の一連の文は、次の場合にエラーをスローします。 pH
の値は7ですが、そうではありません。.
いつ pH
7です, リトマス
デフォルト値を維持する必要があります。 中性
. したがって、このような場合は、次の場合に条件を追加します。 pH
末尾が空のステートメントで7.
var litmus = 'neutral'; var pH; (pH> 0 && pH)<7) litmus = 'acidic'; else if(pH===7) ; /* empty statement */ else if(pH>7 && pH<15) litmus = 'basic'; else throw "Invalid pH value";
今、いつ pH
7の場合、インタプリタは命令を実行しません。 リトマス
デフォルト値を保持, 中性
.
空の文を使って配列を生成することもできます。 にとって
ループ.
var ary = []; (var i = 0; iの場合 < 5; ary[i++] = i) ; /* empty statement */ console.log(ary); // [1, 2, 3, 4, 5]
通常、 にとって
ループステートメントの後に、単一のステートメントまたはブロックステートメント(で囲まれたもの)で構成されるサブステートメントが続きます。 実行される大括弧())サブステートメントの代わりに空のステートメントを使用することで、インタープリタは各ループの後に実行するものがなくなります のみ ルーピング が発生し、ループ条件が実行される.
上記の例では, ary [i ++] = i
ループ条件の一部として各ループ反復に対して実行し、配列 あい
の値でインスタンス化されます 私
.
2. デバッガ
ステートメント
デバッグツールでは、 マーカーを追加する 呼ばれる ブレークポイント ソースコード内の任意の行に デバッガツールがデバッグを開始する場所の行をマークします。.
JavaScriptでは、 デバッガ
ステートメント ブレークポイントと同じように機能します, それ以外は ソースコードに直接追加, ツール内ではなく実行中のデバッガはどれでも スクリプトの実行を中止する に達すると デバッガ
コードをデバッグするのに役立つステートメント.
覚えておいて、デバッグがトリガされます スクリプトがデバッグモードで実行されている場合のみ, つまり、デバッグプログラムがスクリプトの実行中に既に実行されています。解釈中に現在実行中のデバッガプログラムがない場合 デバッガ
文、通訳者は何も起こらなかったかのようにその仕事を続ける.
簡単なテストとして、ブラウザのデバッガツールを開いたままCodepenで次のコードを実行します。
console.log( 'tesing');デバッガ; console.log( 'debuggingステートメント');
あなたは他にブレークポイントを見るでしょう デバッガ
ブラウザのデバッガツールで以下に示すようにステートメント.
ラベル表示
JavaScriptでは、特定のステートメントにラベルを追加することもできます。そうすることによって、あなたはすることができます 後でラベル付きステートメントにジャンプします コードでそのラベルを使う, やや 以下のような 後藤
ステートメントは他の言語でも動作します.
ラベル付きステートメントは、 ブレーク
そして 持続する
JavaScriptにはリテラルはありません。 後藤
ステートメント.
両方 ブレーク
そして 持続する
次のようなループ文内でのみ使用できます。 にとって
ループ(1つの例外を除いて, ブレーク
で使用することができます スイッチ
同様に文)。それで、ループにラベルを付けて、 ブレーク
そして 持続する
実行を制御する.
の ラベル付きステートメントの構文 以下の例でわかるように、単純です。ラベルの名前の後にコロンを追加するだけです。 ループ
に追加するラベルの名前です。 にとって
ループ.
ループ:for(var i = 0; i<5; i++) if(i===2) continue loop; console.log(i); // 0, 1, 3, 4
の値が 私
2の場合、実行は続行せずにループに戻ります。 “2”.
それでは、別の例を見てみましょう。 ブレーク
ステートメント。交換するだけ 持続する
キーワード付き ブレーク
上記の例では、ループに戻るのではなく、 持続する
, ループは完全に終了/中断します.
ループ:for(var i = 0; i<5; i++) if(i===2) break loop; console.log(i); // 0, 1
上記の例はラベル付きステートメントがどのように機能するかをすばやく理解できるようにかなり単純ですが、実際のコーディングでは、次の例のように異なるループを区別する必要がある場合、ラベルは複合ループでより頻繁に使用されます。
ループ:for(var i = 0; i<4; i++) for(var j=0; j<2; j++) if(i===2 && j===1) break loop; console.log(i+"-"+j);
ここで、 外側ループ 休憩 変数2の場合 私
そして1時に j
, コンソールは次の出力を返します。
0-0 0-1 1-0 1-1 2-0
4. と
ステートメント
JSインタプリタ 修飾されていない名前に出会う それはどのオブジェクトや関数呼び出しに関連付けられているかを指定していない、それはそれ スコープチェーンを検索する 呼び出しが参照することができる任意の適切なオブジェクトまたは関数について.
を使って と
声明、私達はできます スコープチェーンの先頭にオブジェクトを追加する, 呼び出しがどのオブジェクトに関連付けられているかを指定します。.
次の例では、 人
オブジェクトは、名前の中だけで呼び出されます。 と
ステートメント.
var person = firstName: "John"、lastName: "Doe"、年齢: "18"、国: "Greenland"; with(person)console.log( "こんにちは、私の名前は" + firstName + "" + lastName + "です。私は" + age + "歳で、" + country + "に住んでいます。); "//"こんにちは、John Doeです。私は18歳です。グリーンランドに住んでいます。 "
を使用せずに上記のコードがどのように見えるかを比較してください と
ステートメント:
var person = firstName: "John"、lastName: "Doe"、年齢: "18"、国: "Greenland"; console.log( "こんにちは、私の名前は" + person.firstName + "" + person.lastName + "です。私は" + person.age + "歳で、" + person.country + "に住んでいます。 ; //「こんにちは、John Doeです。私は18歳です。グリーンランドに住んでいます。」
あなたが見ることができる、 と
同じオブジェクトの多くのプロパティを扱う場合は、ステートメントは非常に便利です。.
ただし、 と
ステートメント 厳密モードでは許可されていません, スコープの混乱を招く可能性があるため.
また、それだけを使用することをお勧めします と
その内部文がに関連するオブジェクトを使用する場合は、その文 と
そうでなければ、インタプリタは以下によって言及されたオブジェクトを調べるのに時間を浪費するでしょう。 と
まず、後に見つかった、修飾されていないすべてのプロパティ名について と
ブロック.