---
sourceDocument: Référence de l’API Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Référence de l’API Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Considérations relatives au changement de mode JavaScript

# Considérations relatives au changement de mode JavaScript {#ariaid-title1}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes de lecture

Le changement du mode JavaScript d'une application ou d'un script peut modifier le comportement des scripts existants. Passez en revue quelques exemples de changements de comportement avant de changer de mode JavaScript ou pour résoudre les problèmes que vous rencontrez après le changement.

Pour plus d'informations sur chaque mode JavaScript, consultez [Modes JavaScript](https://servicenow-prod.fluidtopics.net/0lGA9y0BIwm_yn52q9osVg "Le mode JavaScript est un paramètre de conception et d’exécution pour les applications et scripts personnalisés. Pour prendre en charge les scripts côté serveur existants et les nouveaux scripts développés selon la norme ECMAScript 2021, le moteur JavaScript dispose de trois modes : ECMAScript 2021 (ES12), Normes ES5 et Compatibilité.") et [Prise en charge des fonctionnalités du moteur JavaScript](https://servicenow-prod.fluidtopics.net/5SxFKvl83jVm4j8ZEELYpw "Comparez les fonctionnalités ECMAScript entre les modes Xanadu JavaScript ECMAScript 2021 (ES12) et ES5 Standards dans . Les deux modes prennent en charge un sous-ensemble de fonctionnalités ECMAScript.").

Ce tableau met en évidence l'évolution du comportement JavaScript de l'environnement pré-ES5, indulgent et sujet aux erreurs, à l'environnement ES5, plus strict et plus prévisible, et enfin à l'environnement plus riche en fonctionnalités d'ES12 (ECMAScript 2021).  
{#considerations-switching-javascript-mode__table_r4b_j4r_fcc__entry__4}

| Fonctionnalité | Mode de compatibilité | Mode standard ES5 | ECMAScript 2021 (ES12) |
|-|-|-|-|
| Objet des arguments | L'objet `arguments` existe, mais il n'y a pas de `mode strict`, donc les modifications se répercutent sur `les arguments`. Impressions: *** Script: [object Arguments] *** Script: [object Arguments] *** Script: [object Arguments] *** Script: 123 | En mode strict, l'objet arguments ne reflète pas les modifications des paramètres et génère une erreur. Impressions: sn_es5: 123 sn_es5: undefined sn_es5: [object Arguments] sn_es5: 123 | Identique à ES5. |
| Remplacements booléens | Les booléens primitifs (`vrai`, `faux`) peuvent être remplacés, ce qui provoque un comportement inattendu. | Les booléens primitifs sont mieux protégés, bien qu'ils puissent toujours être remplacés lorsqu'ils sont affectés à des variables. | Identique à ES5, mais le mode strict permet d'éviter certaines affectations. L'expression conditionnelle doit être écrite sous la forme suivante : (cond_expr instanceof Boolean ? cond_expr.valueOf() : cond_expr). |
| Exception pour les erreurs de syntaxe | Les erreurs de syntaxe lèvent des exceptions lors de l'exécution. La gestion des erreurs est incohérente. Exemple : Javascript compiler exception: unterminated string literal (null.null.script; line 1) in: var b = ' | Gestion plus cohérente des erreurs de syntaxe, en particulier en mode strict. Exemple : Evaluator: com.glide.script.RhinoEcmaError: unterminated string literal script : Line(1) column(9) ==>   1: var b = ' | Le même que l'ES5, mais avec une maniabilité plus robuste et des messages d'erreur plus clairs dans les moteurs mis à jour. Exemple : SyntaxError: Unterminated string constant at line 1 ==>   1: var b = ' |
| Incrémenter et diminuer | Autorisé sur les variables, mais peut se comporter de manière inattendue avec des expressions complexes. Impressions: *** Script: c: 1 *** Script: gr.related_incidents: 1 *** Script: 2 *** Script: 3 | Amélioration de la clarté, mais toujours autorisé sur les variables (`var`, `let`, `const`). Impressions: sn_es5: c: 0 sn_es5: gr.related_incidents: 1 sn_es5: 1 sn_es5: 2 | Identique à ES5, avec des règles plus strictes dans certains contextes (par exemple, `const`). |
| Continuations de la ligne | Autorisé avec une barre oblique inverse (`\`) mais déconseillé en raison de problèmes de lisibilité. Dans cet exemple, les trois fonctions sont appelées. var expr = doFoo();  // do foo doBar();  // do bar finish();   // all done eval(expr); | Identique au mode de compatibilité ; Pas de changement dans les continuations de ligne de manutention. Dans l'exemple précédent, ES5 n'appelle que la première fonction et traite tout ce qui suit le premier commentaire, y compris le saut de ligne, comme un commentaire jusqu'à la fin de l'expression. | Identique à ES5, mais les littéraux de modèle offrent une alternative plus lisible. |
| Point-virgules manquants | L'insertion automatique d'un point-virgule (ASI) entraînait souvent des comportements inattendus. | Génère une erreur de syntaxe lorsqu'un point-virgule est manquant. | Identique à ES5. Les pratiques mises à jour encouragent les points-virgules explicites. |
| Fonctions inexistantes | L'appel d'une fonction inexistante génère une `ReferenceError`. | Lève une `TypeError` si une non-fonction est appelée. | Lève une EcmaError lorsqu'une fonction inexistante est appelée ou qu'une propriété est référencée. |
| Propriétés inexistantes | L'accès à une propriété inexistante renvoie `undefined` ; Aucune erreur n'a été générée. | Identique à la version antérieure ES5. | Identique au mode de compatibilité et au mode standard ES5. |
| Littéraux numériques | Littéraux décimaux et hexadécimaux de base. | Introduction de règles d'analyse plus strictes et d'une meilleure gestion des littéraux numériques. | Ajout des littéraux binaires (`0b`), octal (`0o`) et BigInt (`123n`). |
| Mot clé réservé en tant que propriété | Il n'est pas possible d'utiliser des mots clés réservés. | Les mots-clés réservés peuvent être utilisés comme noms de propriété sans erreur, par exemple, `obj.for`. Imprime l'objet lorsqu'il est retourné. | Identique à ES5. |
| Traitez, laissez et céder comme des mots-clés | `let` et `yield` ne sont pas des mots-clés et ne peuvent être utilisés que comme identifiants. | `let` est introduit comme un mot-clé. `Le rendement` est réservé en mode strict. | Les deux sont des mots-clés. Leur utilisation en tant qu'identifiants génère des erreurs de syntaxe. |
[Tableau 1. Différences de comportement dans les modes JavaScript]

{#considerations-switching-javascript-mode__table_r4b_j4r_fcc}

