функция 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 ссылки на объекты являются значениями.
Из-за этого объекты будут вести себя так, как будто они переданы по ссылке:.
Если функция изменяет свойство объекта, она меняет исходное значение.
Изменения свойств объекта видны (отражаются) вне функции.