Как проверить, предоставлен ли параметр функции?
Мне было интересно, можете ли вы создать функцию с необязательным параметром.
Пример:
function parameterTest(test)
{
if exists(test)
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
Так что если вы вызываете parameterTest()
то результатом будет сообщение "Параметр не существует...". И если вы вызываете parameterTest(true)
он возвращает "параметр существует...".
Это возможно?
Ответы
Ответ 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>