JavaScriptの中の語句

3409 ワード

一、switch文
 
JavaScriptはcase文の後にある任意の表現を許可します.ここでcaseのマッチングは====に等しいので、類型の変換プロセスがありません.
 
case 60*60*24:
case Math.PI:
case n+1:
case a[0]: 
 
マッチする項目が見つからない場合は、実行ラベルがdefaultの文であり、default文は理論的にはswitchのどの位置に置いてもいいですが、最後に置くのが一般的です.
 
対比:c、c+++とjavaではcase表現はコンパイル時定数でなければならないので、効率はJavaScriptの中より高いです.
 
二、for/in文
 
for (variable in object)
   statement
 
その中:
  • variable:値式の左に適用される値:var文、配列の要素またはオブジェクトの1つの属性
  •  オブジェクト名または計算結果を対象とする表式
  • statement:循環主体
  • for/inサイクルの主体はオブジェクトの属性ごとに一回実行します.サイクル前にオブジェクトの属性名は変数variableに文字列として付与されます.その後、循環体内で変数と「[]」演算子で属性の値を調べられます.
    for ( var prop in my_object)
         document.write("name: "+prop+"; "+my_object[prop], "</br>");
     
    単純で迅速なコピーオブジェクトのすべての属性から行列のコード:
    var o = {x:1, y:2, z:3};
    var a = new Array();
    var i = 0;
    for(a[i++] in o);
     
    三、contine文
     
    continue文は現在のループを終了し、次の反復を開始します.異なるタイプの循環語句には意味が違います.
  • は、whileサイクルにおいて、先頭のexpressionを再検出し、もし値がtrueであれば、ループ
  • を最初から実行する.
  • は、do/whileサイクルにおいて、ループの底部にジャンプし、トップから次のサイクルを開始する前に、まずここでサイクル条件
  • を検出する.
  • は、forサイクルでincrementの表現を先に計算し、その後、test表現を検出して、次の反復
  • を実行できるかどうかを判定する.
  • は、for/inサイクルにおいて、次の循環変数に割り当てられた属性名を新たな反復を開始する.
     注意:whileとforの中のcontinue行為は違いがあります.whileの中でまず循環条件のところにジャンプします.forでは、まずincrementを計算してから循環条件のところに行きます.そのため、この2つのサイクルの中でcontinueの語句行動は異なるので、一つのwhileループを使って完全に一つのforサイクルをシミュレートすることは不可能です. 
     
    四、function
     
    関数ネストは、例えばif、whileなどの語句には現れない関数の最上階にのみ存在します.JavaScriptの関数は、実行時ではなく解析時に発生します.たとえば:
    alert(f(4));             //16
    var f = 0;               //  f
    function f(x){        //    ,        
        return x*x;
    }
    alert(f);                 //f     ,   0
     
    五、throw文
     
    文法:throw expression;
    expressionは任意のタイプであってもよく、通常はErrオブジェクトまたはErrorのサブクラスである.たとえば:
    function factorial(x){
         if(x<0) throw new Error("x must not be negative");
         for(var f = 1;x>1;f*=x,x++);
         return f;
    }
    try/catch/finally文を使用して異常を捕捉します.例えば、
     
    try{
      ....
    }catch(ex){
      ...
    }finally{
     ...
    
      
    finallyは最終的なジャンプの前に実行されますが、finally自体がreturn、break、continue文またはthrow文を含んでいる場合、または異常な方法を呼び出して制御フローを変更した場合、待ち時間の制御フローの移行は破棄され、新しいシフトが行われます.
     
    六、with文
     
    記事http://liugang594.iteye.com/blog/1523878では、変数名を解析するために作用するドメインチェーンについて議論した.with文はスコープを一時的に変更するためのものです.文法は以下の通りです
     
    with(object)
        statement
     
    このステートメントは、Objectを作用ドメインチェーンのヘッダに追加し、statementを実行して、作用領域を元の状態に戻すために使用されます.
     
    実際のアプリケーションでは、withは大量の入力を減らすことができます.例えば、あるHTMLフォーム要素にアクセスすることができます.
                   frames[i].document.forms[0].address.value
     
    この変数に複数のアクセスが必要な場合は、with文を使って簡単に多くのアクセスができます.
     
    with(frames[i].document.forms[0]){
               name.value = "";
               address.value = "";
               email.value = "";
    }
     
    でも、使うのはおすすめできません.短所:
  • を最適化するのは難しいです.
  • 速度が遅いです.
  • 人は人を困惑させやすいです.