Что происходит, когда я вызываю функцию Javascript, которая принимает параметры, не предоставляя эти параметры? - PullRequest
34 голосов
/ 04 декабря 2009

Что происходит, когда я вызываю функцию Javascript, которая принимает параметры, не предоставляя эти параметры?

Ответы [ 5 ]

33 голосов
/ 04 декабря 2009

Установить на неопределенное. Вы не получите исключение. Это может быть удобным способом сделать вашу функцию более универсальной в определенных ситуациях. Неопределенное значение оценивается как ложное, поэтому вы можете проверить, было ли передано значение.

14 голосов
/ 04 декабря 2009

JavaScript установит для всех отсутствующих параметров значение undefined.

function fn(a) {
    console.log(a);
}

fn(1); // outputs 1 on the console
fn(); // outputs undefined on the console

Это работает для любого количества параметров.

function example(a,b,c) {
    console.log(a);
    console.log(b);
    console.log(c);
}

example(1,2,3); //outputs 1 then 2 then 3 to the console
example(1,2); //outputs 1 then 2 then undefined to the console
example(1); //outputs 1 then undefined then undefined to the console
example(); //outputs undefined then undefined then undefined to the console

также обратите внимание, что массив arguments будет содержать все предоставленные аргументы, даже если вы предоставите больше, чем требуется для определения функции.

7 голосов
/ 04 декабря 2009

Существует обратный к каждому ответ, в котором вы можете вызвать функцию, у которой, похоже, нет параметров в подписи с параметрами.

Затем вы можете получить к ним доступ, используя встроенную глобальную arguments. Это массив, из которого вы можете получить подробности.

, например

function calcAverage() 
{ 
   var sum = 0 
   for(var i=0; i<arguments.length; i++) 
      sum = sum + arguments[i] 
   var average = sum/arguments.length 
   return average 
} 
document.write("Average = " + calcAverage(400, 600, 83)) 
3 голосов
/ 04 декабря 2009

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

0 голосов
/ 04 декабря 2009

Вы получаете исключение, как только вы пытаетесь использовать один из параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...