関数を呼び出す際にオプションにしたい、いくつかの入力を持つ関数があります。各入力は、文字列、配列、数値など、異なる型です。次のようなコードで:
function doStuff(str, arr, num){
if typeof(str) != 'undefined' { $('#stringDiv').text(str)}
if typeof(arr) != 'undefined' {
for(var i=0; i < arr.length; i++){
$('<li>').text(arr[i]).appendTo('#arrayUl')
}
}
if typeof(num) != 'undefined' { $('#numberDiv').text(num)}
}
jQuery(document).ready(function() {
doStuff("i'm a string", [1,2,3,4,5], 7)
})
引数がオプションであるという事実は説明できますが、 が欠落している場合arr
、数値引数 ( num
) が 3 番目ではなく 2 番目になるという事実は説明できません。
これを回避するために、入力を配列にダンプし、配列を並べ替えて、このフィドルで行うように、各タイプのこれを探すこともできます。これはずさんなように思えます。私が見たライブラリの関数でこれを行うライブラリの数に基づいて、おそらくもっと良い方法があるようです。これを行うより良い方法はありますか?それとも、引数をループして型を探すのが私の最善の策ですか?