Что произойдет, если я не передам параметр в функции Javascript?



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



пример функции



function myfunction(x) {
alert("This is a sample alert");
}


теперь, если я вызываю функцию myfunction(); Я представлен с предупреждением. Почему это, что я могу вызвать функцию без каких-либо ошибок или предупреждений, когда я не прошел параметр?



EDIT



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

1145   7  

7 ответов:

ничего не произойдет-это означает, что вы не получите ошибку или предупреждение, поскольку передача параметров в javascript является необязательной.
Все параметры, которые не были "предоставлены" будут иметь undefined стоимостью.

function foo(x, y, z){
    //...
}

foo(1);

внутри

все аргументы в функциях JavaScript являются необязательными (читайте "слабо типизированные").

функции JavaScript могут быть вызваны с любым количеством аргументов, независимо от количества аргументов, названных в функции определение. Поскольку функция слабо типизирована, нет никакого способа для это объявить тип аргументов, которые он ожидает, и это законно передавайте значения любого типа в любую функцию. Когда функция вызывается с меньшим количеством аргументов, чем объявлено, дополнительные аргументы имеют неопределенное значение.

вы можете ссылаться на аргументы функции внутри функции с помощью именованных переменных аргументов или объекта arguments. Этот объект содержит запись для каждого аргумента, переданного функции, ИНДЕКС первой записи, начиная с 0. Например, если функции передается три аргумента, вы можете ссылаться на аргумент следующим образом:

arguments[0]
arguments[1]
arguments[2]
  • JavaScript-окончательное руководство, 5-й Издание

именно так работает JavaScript. Параметры являются необязательными и будут иметь значение not-really-a-value "undefined" в функции, если они отсутствуют в вызове функции.

под "необязательным" я имею в виду именно это: вызов любой функция включает в себя произвольно длинный список параметров. Не должно быть никакой связи между количеством параметров принят функции и количество объявил. Лучший способ думать об этой декларации, затем:

function x(a, b, c) {
  // ...
}

это то, что вы объявляете функцию и привязываете имя "a" к первому параметру, "b" ко второму и "c" к третьему. Однако ни в коем случае не гарантируется, что любой из них будет на самом деле будьте привязаны к значению в любом данном вызове функции позже.

таким же образом вы можете определить функцию без каких-либо параметров вообще, а затем "найти" их через

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

если вы не передаете значение, параметр undefined.

function myfunction(x) {
    alert(x);
}

myfunction(); // alerts undefined
myfunction(1); // alerts 1
myfunction(1,2,3); // alerts 1

если вы пройдете больше параметров, чем в подписи, вы можете использовать arguments.

function myfunction(x) {
    alert(x);
    console.log(arguments);
}

myfunction(1,2,3); // alerts 1, logs [1,2,3]

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

например:

function myfunction(x) {
    return x*2;
}

выдаст ошибку; хотя, вероятно, только a NaN (в данном случае) или variable is undefined.

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

еще одна особенность-это возможность определить функцию без параметров и успешно вызвать ее с аргументами, используя

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

myFunction(1,2,3,4,5,6,7,'etc');

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

Comments

    Ничего не найдено.