76

オプションのパラメーターを使用して関数を作成できるかどうか疑問に思っていました。

例:

function parameterTest(test)
{
   if exists(test)
   {
     alert('the parameter exists...');
   }
   else
   {
     alert('The parameter doesn\'t exist...');
   }
}

したがって、呼び出しparameterTest()た場合、結果は「パラメーターが存在しません...」というメッセージになります。そして、呼び出すとparameterTest(true)、「パラメーターが存在します...」が返されます。

これは可能ですか?

4

9 に答える 9

109

これは非常によくあるパターンです。

を使用してテストできます

function parameterTest(bool) {
  if (bool !== undefined) {

次に、これらのフォームのいずれかで関数を呼び出すことができます。

 parameterTest();
 parameterTest(someValue);

テストの頻繁なエラーをしないように注意してください

if (!bool) {

false提供されていない値を、0またはと区別できないためです""

于 2012-10-22T20:53:09.463 に答える
13
function parameterTest(bool)
{
   if(typeof bool !== 'undefined')
   {
     alert('the parameter exists...');
   }
   else
   {
     alert('The parameter doesn\'t exist...');
   }
}
于 2012-10-22T20:53:21.010 に答える
7

JavaScript では、パラメーターの指定を怠ると、デフォルトで になりますundefined

ブラウザのコンソールまたはJSFiddleを使用して、簡単に試すことができます。

あなたが言うように、パラメーターの存在を確認することができます。そのようにして、パラメーターを使用できるかどうかに関係なく関数を記述します。ただし、JavaScript ガーデン(優れたリソース) はtypeof、出力がほとんど役に立たないため、他のほとんどの場合に近づかないことをお勧めします ( typeof の結果の表を確認してください)。

于 2012-10-22T20:51:46.000 に答える
3
function parameterTest(p) {
    if ( p === undefined)
        alert('The parameter doesn\'t exist...');
    else
        alert('the parameter exists...');
}
于 2012-10-22T20:55:24.127 に答える
3

確認する最良の方法:パラメータ未定義でない場合

function parameterTest(param) {
    if (param !== undefined)
    ...

paramは、変数または関数名にすることもできます

于 2014-01-16T13:43:56.457 に答える
1

null == undefined本当です

if (arg == null){
    // arg was not passed.
}

コード例:

var button = document.querySelector("button");

function myFunction(arg){
  if(arg == null){
    alert("argument was not passed.");
  } else {
    alert("argument " + arg + " was passed.");
  }
}
<button onclick="myFunction('foo');">click to fire function w arg</button>
<br><br>
<button onclick="myFunction();">click to fire function w/o arg</button>

于 2018-08-15T20:31:58.163 に答える
-2

私はこれが古いことを知っていますが、これはチェックして関数にデフォルト値を割り当てるための私の好みの方法です:

function testParamFunction(param1, param2) {
    param1 = typeof param1 === 'undefined' ? null : param1;
    param2 = typeof param2 === 'undefined' ? 'default' : param2;

    // exit if the required parameter is not passed
    if (param1 === null) {
        console.error('Required parameter was not passed');
        return;
    }

    // param2 is not mandatory and is assigned a default value so 
    // things continue as long as param1 has a value
}
于 2016-04-12T00:43:47.407 に答える