Помогите мне в написании простой функции, передавая значение параметра 0, если оно не объявлено - PullRequest
0 голосов
/ 29 ноября 2010

Я не знаю, как это лучше написать и как ... У меня есть функция типа

function myFunc(myVal1, myVal2){/*... various things ...*/};

где myVal1 и myVal2 - это числа

Иногда я хочу иметь возможность вызвать функцию, передающую только один параметр, просто вызвав myFunc (myVal1). При этом я хочу, чтобы myVal2 имел стандартное значение, если не объявлено, равное 0.

Я думал написать что-то

function myFunc(myVal1, myVal2){
    if(myVal2 == NaN)
         myVal2 = 0;
    }
}

Но я не верю, что это правильный способ сделать это. Большое спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 29 ноября 2010
function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    myVal2 = myVal2 || 0; 
} 

должен сделать трюк.

больше путей в Рим (кроме typeof myVal2 == "undefined"):

function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // using a ternary operator
    var myVal2check = myVal2 ? myVal2 :  0; 
}


function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // if myVal2 needs to be an integer
    myVal2 = parseInt(myVal2,10) ||  0; 
}

function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // using a regexp to determine the 'undefinedness'
    var myVal2check = String(myVal2).match(/undef/i) ? myVal2 :  0; 
}

и, наконец, специально для Дэвид Мартенссон

function myFunc(myVal1){ 
    // no myVal2 defined in the parameter section
    var myVal2check = window.myVal2 ? myVal2 :  0;
}
1 голос
/ 29 ноября 2010

Аргументы, которые не установлены, имеют тип undefined, проверьте его следующим образом.

function myFunc(myVal1, myVal2){ 
    if(typeof myVal2 == "undefined") 
         myVal2 = 0; 
    //the rest of the function goes here
} 
0 голосов
/ 29 ноября 2010
if (!myVal2) {
  myVal2 = 0;
}

Если вы хотите, чтобы myVal2 по умолчанию отличался от 0, вам нужно быть более явным, поскольку 0 оценивается как ложное. Итак:

if (!myVal2===undefined) {
  myVal2 = 3;
}
...