2013年はthree.jsで始まりました。
WebGL だけでなくDOMElementやCanvas 2Dにも対応している懐の広いライブラリです。
リビジョンごとにClassが追加されたり削除されたり移動したりAPIが変わるのは難ありですけど、この多機能さはあり得ないほど助かります。
今回はthree.jsでも多用されているデフォルト引数の話です。
JavaScriptにはデフォルト引数の機能はありません。
ありませんが、設定したくなることがあります。
function example (x) { if (typeof x === "undefined") { x = 1; } console.log(x); } example();// 1 example(null);// null example(3);// 3 example("3");// 3 |
引数にnullだと設定できない。
x === undefined
と変えても同じ。
function example (x) { if (x == undefined) { x = 1; } console.log(x); } example();// 1 example(null);// 1 example(3);// 3 example("3");// 3 |
== 判定だと引数nullでも対応できた。
う〜〜ん。
function example (x) { if (typeof x !== "number") { x = 1; } console.log(x); } example();// 1 example(null);// 1 example(3);// 3 example("3");// 1 |
typeof "number"
は無いかぁ。
function example (x) { if (typeof x === 'undefined' || x === null) { x = 1; } console.log(x); } example();// 1 example(null);// 1 example(3);// 3 example("3");// 3 |
これでええんかな〜
今回のケースは数値かどうかを判定する方法もあるかな。
if (!isNaN(parseFloat(x)) && isFinite(x)) { //数値 } |
jQueryのisNumericから持ってきました。
仕組みとしてJavaScriptに導入されると嬉しい。
Firefox 15は対応しているそうな。
MDN: default parameters
ピンバック: JavaScriptで関数にデフォルト引数を設定する | mgzl.jp
ピンバック: [JavaScript]this参照を変更せずにsetTimeoutを実行したい « イナヅマTVログ