Подтвердить что ты не робот

Как проверить, предоставлен ли параметр функции?

Мне было интересно, можете ли вы создать функцию с необязательным параметром.

Пример:

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

Так что если вы вызываете parameterTest() то результатом будет сообщение "Параметр не существует...". И если вы вызываете parameterTest(true) он возвращает "параметр существует...".

Это возможно?

4b9b3361

Ответ 1

Это очень частая картина.

Вы можете протестировать его, используя

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

Затем вы можете вызвать свою функцию с помощью одной из этих форм:

 parameterTest();
 parameterTest(someValue);

Будьте внимательны, чтобы не допустить частой ошибки тестирования

if (!bool) {

Потому что вы не сможете отличить недоказанное значение от false, 0 или "".

Ответ 2

function parameterTest(bool)
{
   if(typeof bool !== 'undefined')
   {
     alert('the parameter exists...');
   }
   else
   {
     alert('The parameter doesn\'t exist...');
   }
}

Ответ 3

В JavaScript, если вы пренебрегаете заданием параметра, по умолчанию он будет undefined.

Вы можете попробовать это для себя достаточно легко, либо в консоли браузера, либо используя JSFiddle.

Вы можете проверить наличие параметра, как вы говорите, и таким образом написать функцию, которая может использовать параметр или нет. Тем не менее, JavaScript Garden (отличный ресурс) рекомендует избегать typeof в большинстве других случаев, так как его вывод практически бесполезен (проверьте таблицу результаты typeof).

Ответ 4

лучший способ проверить: если param не undefined

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

параметр param может быть также переменной или именем функции

Ответ 5

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

Ответ 6

Я знаю, что это старо, но это мой предпочтительный способ проверить и назначить значения по умолчанию для функций:

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
}

Ответ 7

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>