Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created April 5, 2025 14:18
Show Gist options
  • Save sunmeat/fc4b0a0db70132a6b4d9fe48fef3feb9 to your computer and use it in GitHub Desktop.
Save sunmeat/fc4b0a0db70132a6b4d9fe48fef3feb9 to your computer and use it in GitHub Desktop.
особенности функций
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="stylesheet" href="css/style.css">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="icon.png">
</head>
<body>
<script>
let numbers = [1, 2, 3, 4];
let names = ["Александр", "Артём", "Лариса"];
// function declaration с rest аргументами - неограниченное количество параметров
function sumNumbers(first, ...rest) {
// first — первое число, rest — все остальные в массиве
let total = first;
for (let num of rest) {
total += num;
}
return total;
}
// function expression со spread оператором
const greetPeople = function(names) {
// names — массив имён
let allNames = ["гость", ...names]; // добавляем "гость" и разворачиваем names
let greetings = allNames.map(name => `привет, ${name}!`); // делаем приветствия
return greetings.join(" "); // соединяем в строку через пробел
};
// стрелочная функция с rest для среднего значения
const average = (...numbers) => {
let sum = numbers.reduce((acc, curr) => acc + curr, 0); // 0 - начальное значение при аккумуляции
return sum / numbers.length;
};
// function expression с rest и spread для обработки данных
const processData = function(action, ...data) {
// action — что делать, data — все остальные аргументы
if (action === "sum") {
return sumNumbers(...data); // разворачиваем data и считаем сумму
} else if (action === "avg") {
return average(...data); // разворачиваем data и считаем среднее
} else {
return greetPeople(data); // передаём data как массив имён
}
};
console.log(sumNumbers(10, 20, 30, 40)); // 10 + 20 + 30 + 40 = 100
console.log(greetPeople(names)); // приветствия для "гость" и имён из names
console.log(average(5, 10, 15)); // (5 + 10 + 15) / 3 = 10
console.log(processData("sum", 1, 2, 3)); // 1 + 2 + 3 = 6
console.log(processData("avg", ...numbers)); // (1 + 2 + 3 + 4) / 4 = 2.5
console.log(processData("greet", ...names)); // приветствия с разворачиванием names
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment