2010-08-02 5 views
4

- это возможность вызова функции Javascript без подачи всех параметров?Javascript не передает все параметры

Я сталкиваюсь с линией кода, не имеет большого смысла, если я не предполагаю, что в Javascript все параметры не требуются?

Пропущенный параметр является логическим значением, поэтому я могу предположить, что неопределенное логическое значение в Javascript равно «false»?

ответ

8

Да, остальные параметры будут только undefined, если они не прошли в :)

Например:

function myFunc(param1, param2) { 
    alert(param1); 
    alert(param2); 
} 

Это действительный вызов:

myFunc("string"); //alerts "string" then undefined 

Give it a try here , Если проверка в вашем вопросе примерно такая, как if(!param2), она будет оцениваться до true, так как undefined ~= false для большинства целей. Стоит отметить, что это не только приемлемо, это очень общий, почти каждая библиотека или каркас ожидает только некоторых параметров, которые будут переданы в большинство их функций.

+0

Спасибо, все ясно сейчас. И jsFiddle отлично! –

+0

+1 Я просто добавлял к вашему отличному ответу ... – davidsleeps

3

Добавление в ответ Ник, вы могли бы:

// set the value to false if not passed 
if (typeof(param2) === "undefined") param2 = false; 
+0

Хорошее дополнение, поэтому пропущенный параметр не является «истинным» или «ложным»? –

+0

Ник указывает, что значение не определено ... которое не равно false ... это всего лишь способ явно проверить, не определено ли оно, а затем установить его по умолчанию (согласно вашему предлагаемому значению) – davidsleeps

+0

э ... вы должны, вероятно, сделать ответ Ник действительно ... – davidsleeps

1

Вы также можете использовать Variadic Functions в JavaScript. Вы можете передать любой тип/количество параметров любой функции javascript и использовать arguments для получения этих параметров.

function PrintList() 
{ 
    for (var i = 0; i < arguments.length; i++) 
    { 
    document.write(arguments[i] + "<br />"); 
    } 
} 
// Calls to Function 
PrintList('Google'); 
PrintList('Google', 'Microsoft', 'Yahoo'); 
PrintList('Google', 'Microsoft', 'Yahoo', 'Adobe'); 
Смежные вопросы