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

Вопрос о параметрах функции Javascript

Я пытался написать некоторую функцию javascript и понял, что

function testFunction(input_1, input_2, input_3) {
       alert("alert");
}

однако, когда я вызываю функцию следующим образом:

<input type="button" value="click" onclick="testFunction("1", "2")">

почему он будет работать даже с двумя параметрами?

4b9b3361

Ответ 1

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

Любые именованные параметры, которые не были переданы, будут undefined.

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

Ответ 2

На самом деле не важно, сколько параметров вы предоставляете. функция интерпретирует их и создает объект arguments (который действует как массив параметров). Вот пример:

function sum(){
   if(arguments.length === 0)
       return 0;
   if(arguments.length === 1)
       return arguments[0];
   return arguments[0] + sum.apply(this, [].slice.call(arguments, 1));
}

Это не самое эффективное решение, но оно обеспечивает короткий пик того, как функции могут обрабатывать аргументы.

Ответ 3

Поскольку javascript рассматривает ваши параметры как массив; если вы никогда не выходите за второй пункт, он никогда не замечает, что аргумент отсутствует.

Ответ 4

третий параметр может быть необязательным и будет иметь значение по умолчанию null. Если вы явно хотите потребовать параметр, это другая история.

Ответ 6

Javascript - очень динамичный язык и будет принимать значение "undefined" для любых параметров, не переданных значения.

Ответ 7

Попробуйте использовать приведенный ниже код

var CVH = {
        createFunction: function (validationFunction, extParamData, extParamData1) {
            var originalFunction = validationFunction;
            var extParam = extParamData;
            var extParam1 = extParamData1;

            return function (src, args) {
                // Proxy the call...
                return originalFunction(src, args, extParam, extParam1);
            }
        }
    }


function testFunction(input_1, input_2, input_3) {
       alert("alert");
}

и вы можете вызвать эту функцию, как показано ниже

<input type="button" value="click" onclick="CVH.createFunction(testFunction('1', '2'),'3','4')">

Ответ 8

Javascript не поддерживает перегрузку метода, поэтому метод будет выполняться в порядке их появления, независимо от передаваемых аргументов. Поскольку у javascript нет проверки типов для аргументов или необходимого количества аргументов, вы можете просто иметь одну реализацию testFunction(), которая может адаптироваться к тем или иным аргументам. были переданы ему путем проверки типа, наличия или количества аргументов..