以下をみてみよう。下記3つのソースはすべて同じ(ような)挙動をする。
■code 1
<html>
<head>
<title>javascript test</title>
<script type="text/javascript">
function ipsum(i, j) {
if (typeof(i) == "undefined"){
i = 100;
}
if (typeof(j) == "undefined"){
j = 500;
}
alert(i + j);
}
</script>
</head>
<body>
<input type="button" onclick="ipsum(1,4)" value="ipsum(1,4)"/>
<input type="button" onclick="ipsum()" value="ipsum()"/>
</body>
</html>■code 2
<html>
<head>
<title>javascript test</title>
<script type="text/javascript">
function ipsum1(i, j) {
i = i === undefined ? 100 : i;
j = j === undefined ? 500 : j;
alert(i + j);
}
</script>
</head>
<body>
<input type="button" onclick="ipsum1(1,4)" value="ipsum1(1,4)"/>
<input type="button" onclick="ipsum1()" value="ipsum1()"/>
</body>
</html>■code 3
<html>
<head>
<title>javascript test</title>
<script type="text/javascript">
function ipsum2(i, j) {
i = i || 100;
j = j || 500;
alert(i + j);
}
</script>
</head>
<body>
<input type="button" onclick="ipsum2(1,4)" value="ipsum2(1,4)"/>
<input type="button" onclick="ipsum2()" value="ipsum2()"/>
</body>
</html>特にcode 3の部分とか直感的にわかりにくいな。
何れもiとjのデフォルト値(というか、iとjが指定されなければこの値を使うよという意味だな)を用意した関数だね。
これは論理和を求めているんだね。
i = i || 100;どちらかが真の場合真ってことだな。
typeofとか実際あまりつかわないけど、こういうの使うとちょっと玄人っぽいよね。(とカタチから入ってみる)
うーむ。いろんな書き方ができるんだねぇ・・・
