Параметры функции JavaScript


Оглавление

    Показать оглавление


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


Параметры и аргументы функции

Ранее в этом руководстве вы узнали, что функции могут иметь параметры:

function functionName(parameter1, parameter2, parameter3) {
    // code to be executed
}

Параметры функции — это имена, перечисленные в определение функции.

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


Правила параметров

В определениях функций JavaScript не указываются типы данных для параметры.

Функции JavaScript не выполняют проверку типа переданных данных. аргументы.

Функции JavaScript не проверяют количество полученных аргументов.


Параметры по умолчанию

Если функция вызывается с отсутствующими аргументами (меньше заявленных), отсутствующим значениям присваивается значение не определено.

Иногда это приемлемо, но иногда лучше назначить значение по умолчанию. значение параметра:

Пример

function myFunction(x, y) {
    if (y === undefined) {
    y = 2;
     }

}

Попробуйте сами →

<!DOCTYPE html>
<html>
<body>

<p>Setting a default value to a function parameter.</p>
<p id="demo"></p>

<script>
function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }  
  return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>

</body>
</html>



Значения параметров по умолчанию

ES6 позволяет параметрам функции иметь значения по умолчанию.

Пример

Если y не передан или не определен, то y=10.

function myFunction(x, y = 10) {	  return x + y;
}
myFunction(5);

Попробуйте сами →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>Default Parameter Values</h2>
<p>If y is not passed or undefined, then y = 10:</p>

<p id="demo"></p>

<script>
function myFunction(x, y = 10) {
  return x + y;
}
document.getElementById("demo").innerHTML = myFunction(5);
</script>

</body>
</html>

Функция Оставшийся параметр

Параметр rest (...) позволяет функции обрабатывать неопределенное количество аргументов как массив:

Пример

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

Попробуйте сами →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>The Rest Parameter</h2>

<p>The rest parameter (...) allows a function to treat an indefinite number of arguments as an array:</p>

<p id="demo"></p>

<script>
function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

document.getElementById("demo").innerHTML = x;
</script>

</body>
</html>


Объект аргументов

Функции JavaScript имеют встроенный объект, называемый аргументами. объект.

Объект аргумента содержит массив аргументов, используемых при выполнении функции. был вызван (вызван).

Таким образом, вы можете просто использовать функцию, чтобы найти (например) самое высокое значение в списке чисел:

Пример

x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
  let max = -Infinity;
    for (let i = 0; i < arguments.length; i++) {
      if (arguments[i] > max) {
      max = arguments[i];
      }
    }
    return max;
}

Попробуйте сами →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Finding the largest number.</p>
<p id="demo"></p>

<script>
function findMax() {
  let max = -Infinity;
  for(let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
} 
document.getElementById("demo").innerHTML = findMax(4, 5, 6);
</script>

</body>
</html>


Или создайте функцию для суммирования всех входных значений:

Пример

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  let sum = 0;
    for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
    }
    return sum;
}

Попробуйте сами →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Sum of all arguments:</p>
<p id="demo"></p>

<script>
function sumAll() {
  let sum = 0;
  for(let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}
document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88);
</script>

</body>
</html>

Если функция вызывается с слишком большим количеством аргументов (больше, чем заявлено), эти аргументы можно получить с помощью объекта аргументов.


Аргументы передаются по значению

Параметры при вызове функции являются аргументами функции.

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

Если функция меняет значение аргумента, она не меняет значение параметра. исходное значение.

Изменения аргументов не видны (отражаются) вне функции.


Объекты передаются по ссылке

В JavaScript ссылки на объекты являются значениями.

Из-за этого объекты будут вести себя так, как будто они переданы по ссылке:.

Если функция изменяет свойство объекта, она меняет исходное значение.

Изменения свойств объекта видны (отражаются) вне функции.