2017-05-22 46 views
0

私は、次の既存のコード持っている、PHPアプリケーションに取り組んでいます:あなたは、ユーザーがタブをクリックすると、関数change_main_Selection(これは)、呼び出さ見ることができるように1つの引数で呼び出されるjavascript関数は、さまざまな引数で関数を呼び出すことができますか?

<ul> 
    <li><a href="#" id="BillingP" onClick="change_main_Selection(this);">Paper</a></li> 
    <li><a href="#" id="BillingE" onClick="change_main_Selection(this);">Electronic</a></li> 
    <li><a href="#" id="BillingE" onClick="change_main_Selection(this,'CLHReports');">Clearing House Reports</a></li> 
    <li><a href="#" id="BillingCP" onClick="change_main_Selection(this);">Capitation</a></li> 
</ul> 

を。私は、次のchange_main_Selection()の定義を見つけることを試みたと発見した:

function change_main_Selection(main_tab, sub_tab, redirect_url, flgNc, onload){ 
    var main_tab_obj = main_tab; 
    var sub_tab_obj = sub_tab; 
} 

私の混乱は)(change_main_Selectionを呼び出しながら、それだけで一つの引数を取ることです。しかし、複数の引数を持つchange_main_Selection()関数をどのように呼び出すことができますか?

+0

引数が渡されないと、 'undefined'とみなされます。言語文書を読む。 – maximkou

+0

明示的に定義するよりも* more *引数を持つ関数を呼び出すこともできます。 – nnnnnn

答えて

2

JavaScript関数は、パラメータ値(引数)のチェックを行いません。

関数は(宣言未満)不足している引数で呼び出された場合、欠損値に設定されていますundefined

時には、これは許容可能であるが、時にはパラメータにデフォルト値を割り当てる方が良いです。

ES6で
function myFunction(x, y) { 
    y = y || 'defaultValue'; // overwrites falsey values (0, null, false) 

    // better approach 
    if (typeof y === 'undefined') { y = 'defaultValue'; } 
} 

次のように、あなたはC++スタイルのデフォルト値にデフォルト値を提供することができます:あなたがアクセスも可能

function myFunction(x, y='defaultValue'){} 
+2

'||'を使用すると、実際の*定義された*値が偽であればそれを上書きすることに注意してください。 – nnnnnn

+0

'if(typeof y === 'undefined'){y = 'defaultValue';}のようなものです。 } 'より良いでしょう – George

+0

本当の人、これはより良い範囲のケースをカバーします – KAD

0

をあなたの関数内arguments変数によって引数へのw3schoolsで説明したように、これはそこにあなたの関数で明示的に任意のパラメータを宣言する必要はありません意味:

x = findMax(1, 123, 500, 115, 44, 88); 
 
console.info(x); 
 
function findMax() { 
 
    var i; 
 
    var max = -Infinity; 
 
    for (i = 0; i < arguments.length; i++) { 
 
    if (arguments[i] > max) { 
 
     max = arguments[i]; 
 
    } 
 
    } 
 
    return max; 
 
}

、あなたがarguments変数

でそれらにアクセスすることができます
1

Javascript関数はvariadic関数と呼ばれます。 less paramsまたはmore paramsを渡すことができます。より少ないパラメータを渡すと、余分なパラメータはundefinedに設定されます。もっと渡すと、argumentsというオブジェクトのような特別な配列でそれらを見ることができます。

もっと多くの引数を渡すと、以下の例を参照してください。

function sum() { 
var s = 0; 
for(var i=0;i<arguments.length;i++){ 
     s+= arguments[i]; 
} 
return s; 
} 

var ans = sum(1,2,3); 
console.log(ans);//6 
関連する問題