Maison  >  Article  >  interface Web  >  javascript trouver une année bissextile

javascript trouver une année bissextile

王林
王林original
2023-05-09 14:34:061104parcourir

Une année bissextile fait référence à une année avec un jour bissextile (c'est-à-dire le 29 février) dans le calendrier grégorien. Selon les règles du calendrier grégorien, il y a un saut tous les quatre ans, mais il n'y a pas de saut tous les 100 ans et un autre saut tous les 400 ans. En JavaScript, vous pouvez utiliser la fonction suivante pour savoir si une année est bissextile :

function isLeapYear(year) {
  return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}

Dans le code ci-dessus, on détermine d'abord si l'année est divisible par 4. Si elle peut et ne peut pas être divisible par 100, ou il peut être divisible par 400, cela signifie que cette année est bissextile. Si les conditions ne sont pas remplies, ce n’est pas une année bissextile.

La mise en œuvre de cette fonction est relativement simple, mais il y a certaines choses auxquelles il faut prêter attention. Par exemple, si le paramètre transmis lors d'un appel de fonction n'est pas de type entier, des problèmes peuvent survenir lors du processus de calcul. Afin d'éviter cette situation, nous pouvons ajouter du code pour vérifier le type de paramètre au début de la fonction :

function isLeapYear(year) {
  if (typeof year !== 'number' || year % 1 !== 0) {
    throw new TypeError('Year must be an integer');
  }

  return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}

Dans le code ci-dessus, nous avons ajouté une logique de vérification du type de paramètre au début. Si le paramètre transmis n’est pas un type entier, une exception d’erreur de type sera levée. Cela peut améliorer la robustesse du code et éviter certaines erreurs imprévisibles.

En plus de vérifier les types de paramètres, nous pouvons également effectuer des optimisations supplémentaires sur les fonctions. Par exemple, certains mécanismes de mise en cache peuvent être ajoutés pour éviter des calculs répétés pour la même année. Cela peut économiser des ressources informatiques et améliorer les performances des fonctions. Voici un exemple de code pour ajouter un mécanisme de mise en cache :

function createLeapYearChecker() {
  const cache = {};

  return function(year) {
    if (typeof year !== 'number' || year % 1 !== 0) {
      throw new TypeError('Year must be an integer');
    }

    if (year in cache) {
      return cache[year];
    }

    const isLeapYear = (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
    cache[year] = isLeapYear;
    return isLeapYear;
  };
}

const isLeapYear = createLeapYearChecker();
console.log(isLeapYear(2020)); // true
console.log(isLeapYear(2021)); // false
console.log(isLeapYear(2022)); // false
console.log(isLeapYear(2023)); // false
console.log(isLeapYear(2024)); // true
console.log(isLeapYear(2020)); // true - result is retrieved from cache

Dans le code ci-dessus, nous avons changé la fonction d'origine en fonction d'usine. Cette fonction d'usine renvoie une fonction interne, qui contient un objet cache pour stocker les résultats du calcul. Cette fonction interne peut recevoir le paramètre année et vérifiera d'abord si le résultat du calcul de cette année existe déjà dans le cache. S'il existe, le résultat stocké dans le cache est renvoyé directement, sinon il est recalculé et le résultat est stocké dans le cache.

En ajoutant un mécanisme de mise en cache, nous pouvons éviter les calculs répétés de la même année lors de l'appel de la fonction, améliorant ainsi l'efficacité d'exécution de la fonction. Dans le même temps, puisque le mécanisme de mise en cache est transparent pour le code externe, les utilisateurs n’ont pas besoin de code supplémentaire pour gérer le cache.

En bref, le problème de la recherche d'années bissextiles en JavaScript est un problème très basique, mais il peut y avoir certaines choses qui nécessitent une attention particulière dans le codage réel. En plus de la logique de jugement de base, nous pouvons également optimiser les fonctions en ajoutant des mécanismes de mise en cache et d'autres méthodes pour améliorer la robustesse et l'efficacité d'exécution du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn