Главная страница » JavaScript » 39. Детерминированность
Детерминированность в программировании означает, что функция при одном и том же наборе входных данных всегда возвращает одинаковый результат. Такие функции называются детерминированными. Это важное свойство, особенно при написании предсказуемого и тестируемого кода.
Детерминированная функция
Функция, результат которой зависит только от её аргументов и не зависит от внешних факторов.
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // Всегда возвращает 5
Недетерминированная функция
Функция, результат которой может зависеть от внешних факторов или состояния.
function getRandomNumber() {
return Math.random();
}
console.log(getRandomNumber()); // Результат может быть разным при каждом вызове
Детерминированные функции обладают следующими преимуществами:
Сложение чисел
function multiply(a, b) {
return a * b;
}
console.log(multiply(4, 5)); // Всегда возвращает 20
Конкатенация строк
function concatenate(str1, str2) {
return str1 + str2;
}
console.log(concatenate("Hello, ", "World!")); // Всегда возвращает "Hello, World!"
Функции, зависящие от времени
function getCurrentTime() {
return new Date().toLocaleTimeString();
}
console.log(getCurrentTime()); // Возвращает текущее время, которое постоянно меняется
Функции с побочными эффектами
let counter = 0;
function incrementCounter() {
return ++counter;
}
console.log(incrementCounter()); // Результат зависит от внешнего состояния (counter)
console.log(incrementCounter()); // Результат изменится при каждом вызове
Избегайте побочных эффектов: Функции не должны изменять внешнее состояние или зависимости.
function pureAdd(a, b) {
return a + b;
}
Не используйте глобальные переменные: Глобальные переменные могут изменяться из других частей программы, что делает функции недетерминированными.
function pureMultiply(a, b) {
return a * b;
}
Передавайте все необходимые данные через параметры: Это обеспечивает независимость функции от внешнего состояния.
function pureConcat(str1, str2) {
return str1 + str2;
}
Использование глобальных переменных
Глобальные переменные могут изменяться в любой части программы, что приводит к недетерминированности.
let globalValue = 10;
function addGlobalValue(a) {
return a + globalValue;
}
Функции с побочными эффектами
Изменение состояния вне функции делает её поведение непредсказуемым.
let counter = 0;
function increment() {
counter += 1;
return counter;
}
Зависимость от внешних ресурсов
Внешние ресурсы, такие как системное время, делают функцию недетерминированной.
function getCurrentDate() {
return new Date();
}
Детерминированные функции делают ваш код более предсказуемым, тестируемым и надежным. Избегание побочных эффектов, глобальных переменных и зависимости от внешних ресурсов способствует созданию детерминированных функций.
Напишите детерминированную функцию square
, которая принимает одно число и возвращает его квадрат.
Напишите недетерминированную функцию getRandomItem
, которая принимает массив и возвращает случайный элемент из этого массива.
Пример решения:
// Задание 1
function square(num) {
return num * num;
}
console.log(square(4)); // 16
console.log(square(5)); // 25
// Задание 2
function getRandomItem(arr) {
const randomIndex = Math.floor(Math.random() * arr.length);
return arr[randomIndex];
}
console.log(getRandomItem([1, 2, 3, 4, 5])); // Случайный элемент массива
Этот урок поможет вам лучше понять важность детерминированности функций и научит создавать функции, которые ведут себя предсказуемо и надежно.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.