師匠の散歩Grandmaster Wander

JavaScriptのかけら2

  1. For Next文
  2. For In文
  3. try catch文
  4. オブジェクト/メソッド
  5. 3項演算子

For Next文

配列の個数を求め求める。

var data =["1","2","3","5","7","11"];
for (var i = 0, i < data.length; i ++) {
 document.write(data[i]);
}

For In文

perlにおけるforeachループと同じように、連想配列のように、配列全てをループしてくれる。データを読み込んだときのような順序になるかは不明。

var data =["1","2","3","5","7","11"];
for(var i in data){
 document.write(data[i]);
}

try catch

最近、時々目にするコーディングなんですが、まとめてみようと思ったんですが、なかなか理解が進みません。 ブラウザやパソコンの機種依存での複数対応を準備するのに良い関数のようです。

データ読み込みの際、エラーがあったら読み込み関数をどんどん変更し、最後はnulを返す、ってスクリプトです。catch(e)はこれが常用単語になっているようです。

function createXMLHttpRequest(cbFunc){
  var XMLhttpObject = null;
  try{
    XMLhttpObject = new XMLHttpRequest();
  }catch(e){
    try{
      XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try{
        XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(e){
        return null;
      }
    }
  }
  if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc;
  return XMLhttpObject;
}

オブジェクト/メソッド

ドットを使って、オブジェクト・メソッドを扱うことができます。この手法の仕組みがわかるとVBAなどの他の言語でも応用できます。

ここではその抜粋

<script>
  document.write('あなたがお使いのブラウザは ' + navigator.appName + 'です' );
</script>

3項演算子

if文を省略することができ、より短いコーディングとすることができます。ただし、実行文が長い場合は使いにくいです。

if (flag == 1){
  x = 1;
} else {
  x = 2;
}
  条件 ? 式1 : 式2;
  x == flag ? 1 : 2;
  document.write(x);
var x=Math.PI;;
x<5 && x>3 && x ? document.write("x!=undefined x=" + x) : document.write("x==undefined");

var x="";
 x ? document.write("x!=undefined x=" + x) : document.write("x==" + x);

var x=undefined;
 x ? document.write("x!=undefined x=" + x) : document.write("x==" + x);

var x=defined;
 x ? document.write("x!=undefined x=" + x) : document.write("x==" + x);
undefinedはデータなしの数値だが、definedは文字なのに""で囲んでいないためエラーとなり、表示されません。


Topに戻る // 一覧に戻る
Copyright(C) Grandmaster since 2010最終更新:2016/4/21