From 844f5103992238c0c23203286dad16a466e89c97 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:09 +0200 Subject: move *.html to *.md --- .../global_objects/asyncfunction/index.html | 118 --------------------- .../global_objects/asyncfunction/index.md | 118 +++++++++++++++++++++ 2 files changed, 118 insertions(+), 118 deletions(-) delete mode 100644 files/fr/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/fr/web/javascript/reference/global_objects/asyncfunction/index.md (limited to 'files/fr/web/javascript/reference/global_objects/asyncfunction') diff --git a/files/fr/web/javascript/reference/global_objects/asyncfunction/index.html b/files/fr/web/javascript/reference/global_objects/asyncfunction/index.html deleted file mode 100644 index 778e94b924..0000000000 --- a/files/fr/web/javascript/reference/global_objects/asyncfunction/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: AsyncFunction -slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction -tags: - - Constructeur - - Experimental - - JavaScript - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction -original_slug: Web/JavaScript/Reference/Objets_globaux/AsyncFunction ---- -
{{JSRef}}
- -

Le constructeur AsyncFunction crée un nouvel objet pour {{jsxref("Instructions/async function", "une fonction asynchrone","",1)}}. En JavaScript, chaque fonction asynchrone est en fait un objet AsyncFunction.

- -

Attention, AsyncFunction n'est pas un objet global. On peut l'obtenir grâce au code suivant :

- -
Object.getPrototypeOf(async function(){}).constructor
-
- -

Syntaxe

- -
new AsyncFunction ([arg1[, arg2[, ...argN]],] functionBody)
- -

Paramètres

- -
-
arg1, arg2, ... argN
-
Les noms des paramètres passés à la fonction. Chacun doit être une chaîne de caractères qui puisse être un identifiant JavaScript valide ou une liste de telles chaînes séparées par une virgule (ex. "x", "laValeur", ou "a,b").
-
functionBody
-
Une chaîne de caractères qui contient les instructions JavaScript définissant la définition de la fonction.
-
- -

Description

- -

Les objets des {{jsxref("Instructions/async_function", "fonctions asynchrones","",1)}} créés avec le constructeur AsyncFunction sont analysés lorsque la fonction est créée. C'est moins efficace que de déclarer une fonction asynchrone avec une {{jsxref("Instructions/async_function", "expression de fonction asynchrone")}} et de l'appeler depuis le code car ces fonctions sont analysées avec le reste du code.

- -

Tous les arguments passés à la fonction sont traités comme les noms des identifiants des paramètres de la fonction qui sera créée, dans l'ordre dans lequel ils sont passés.

- -
-

Note : Les fonctions asynchrones créées avec le constructeur AsyncFunction ne créent pas de fermetutres dans leurs contextes de création. Elles sont toujours créées dans la portée globale. Lorsqu'on les exécute, ellee ne pourront accéder qu'à leurs variables locales et aux variables globales, pas à celles qui appartiennent à la portée dans laquelle AsyncFunction a été appelé. On aurait donc un comportement différent  si on appelait {{jsxref("Objets_globaux/eval", "eval")}} avec le code de l'expression de la fonction asynchrone.

-
- -

Si on appelle AsyncFunction comme une fonction (c'est-à-dire sans new), cela aura le même effet que s'il est appelé comme un constructeur.

- -

Propriétés

- -
-
AsyncFunction.length
-
La propriété de longueur du constructeur AsyncFunction dont la valeur est 1.
-
{{jsxref("AsyncFunction.prototype")}}
-
Le prototype permet d'ajouter des propriétés à tous les objets représentant les fonctions asynchrones.
-
- -

Prototype de l'objet AsyncFunction

- -

Propriétés

- -
{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/AsyncFunction/prototype', 'Propriétés')}}
- -

Instances AsyncFunction

- -

Les instances d'AsyncFunction héritent des méthodes et des propriétés de {{jsxref("AsyncFunction.prototype")}}. Comme avec les autres constructeurs, on peut changer l'objet prototype du constructeur afin de modifier l'ensemble des instances AsyncFunction.

- -

Exemples

- -

Créer une fonction asynchrone avec un constructeur AsyncFunction

- -
function resolveAfter2Seconds(x) {
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve(x);
-    }, 2000);
-  });
-}
-
-var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
-var a = new AsyncFunction("a",
-                          "b",
-                          "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);");
-a(10, 20).then(v => {
-  console.log(v); // affiche 30 après 4 secondes
-});
-
- -

Spécifications

- - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Définition initiale dans ES2017.
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.builtins.AsyncFunction")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md b/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md new file mode 100644 index 0000000000..778e94b924 --- /dev/null +++ b/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md @@ -0,0 +1,118 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +tags: + - Constructeur + - Experimental + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +original_slug: Web/JavaScript/Reference/Objets_globaux/AsyncFunction +--- +
{{JSRef}}
+ +

Le constructeur AsyncFunction crée un nouvel objet pour {{jsxref("Instructions/async function", "une fonction asynchrone","",1)}}. En JavaScript, chaque fonction asynchrone est en fait un objet AsyncFunction.

+ +

Attention, AsyncFunction n'est pas un objet global. On peut l'obtenir grâce au code suivant :

+ +
Object.getPrototypeOf(async function(){}).constructor
+
+ +

Syntaxe

+ +
new AsyncFunction ([arg1[, arg2[, ...argN]],] functionBody)
+ +

Paramètres

+ +
+
arg1, arg2, ... argN
+
Les noms des paramètres passés à la fonction. Chacun doit être une chaîne de caractères qui puisse être un identifiant JavaScript valide ou une liste de telles chaînes séparées par une virgule (ex. "x", "laValeur", ou "a,b").
+
functionBody
+
Une chaîne de caractères qui contient les instructions JavaScript définissant la définition de la fonction.
+
+ +

Description

+ +

Les objets des {{jsxref("Instructions/async_function", "fonctions asynchrones","",1)}} créés avec le constructeur AsyncFunction sont analysés lorsque la fonction est créée. C'est moins efficace que de déclarer une fonction asynchrone avec une {{jsxref("Instructions/async_function", "expression de fonction asynchrone")}} et de l'appeler depuis le code car ces fonctions sont analysées avec le reste du code.

+ +

Tous les arguments passés à la fonction sont traités comme les noms des identifiants des paramètres de la fonction qui sera créée, dans l'ordre dans lequel ils sont passés.

+ +
+

Note : Les fonctions asynchrones créées avec le constructeur AsyncFunction ne créent pas de fermetutres dans leurs contextes de création. Elles sont toujours créées dans la portée globale. Lorsqu'on les exécute, ellee ne pourront accéder qu'à leurs variables locales et aux variables globales, pas à celles qui appartiennent à la portée dans laquelle AsyncFunction a été appelé. On aurait donc un comportement différent  si on appelait {{jsxref("Objets_globaux/eval", "eval")}} avec le code de l'expression de la fonction asynchrone.

+
+ +

Si on appelle AsyncFunction comme une fonction (c'est-à-dire sans new), cela aura le même effet que s'il est appelé comme un constructeur.

+ +

Propriétés

+ +
+
AsyncFunction.length
+
La propriété de longueur du constructeur AsyncFunction dont la valeur est 1.
+
{{jsxref("AsyncFunction.prototype")}}
+
Le prototype permet d'ajouter des propriétés à tous les objets représentant les fonctions asynchrones.
+
+ +

Prototype de l'objet AsyncFunction

+ +

Propriétés

+ +
{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/AsyncFunction/prototype', 'Propriétés')}}
+ +

Instances AsyncFunction

+ +

Les instances d'AsyncFunction héritent des méthodes et des propriétés de {{jsxref("AsyncFunction.prototype")}}. Comme avec les autres constructeurs, on peut changer l'objet prototype du constructeur afin de modifier l'ensemble des instances AsyncFunction.

+ +

Exemples

+ +

Créer une fonction asynchrone avec un constructeur AsyncFunction

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
+var a = new AsyncFunction("a",
+                          "b",
+                          "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);");
+a(10, 20).then(v => {
+  console.log(v); // affiche 30 après 4 secondes
+});
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Définition initiale dans ES2017.
+ +

Compatibilité des navigateurs

+ +

{{Compat("javascript.builtins.AsyncFunction")}}

+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../a_re-introduction_to_javascript/index.md | 855 ++++++------ files/fr/web/javascript/about_javascript/index.md | 58 +- files/fr/web/javascript/closures/index.md | 206 +-- files/fr/web/javascript/data_structures/index.md | 441 +++---- .../index.md | 650 ++++++---- .../equality_comparisons_and_sameness/index.md | 573 +++------ files/fr/web/javascript/eventloop/index.md | 131 +- .../guide/control_flow_and_error_handling/index.md | 346 ++--- .../guide/details_of_the_object_model/index.md | 586 +++++---- .../guide/expressions_and_operators/index.md | 1333 +++++++++---------- files/fr/web/javascript/guide/functions/index.md | 572 +++++---- .../javascript/guide/grammar_and_types/index.md | 715 +++++------ files/fr/web/javascript/guide/index.md | 289 ++--- .../javascript/guide/indexed_collections/index.md | 585 +++++---- .../fr/web/javascript/guide/introduction/index.md | 136 +- .../guide/iterators_and_generators/index.md | 106 +- .../javascript/guide/keyed_collections/index.md | 120 +- .../javascript/guide/loops_and_iteration/index.md | 357 +++--- .../web/javascript/guide/meta_programming/index.md | 568 ++++---- files/fr/web/javascript/guide/modules/index.md | 467 +++---- .../javascript/guide/numbers_and_dates/index.md | 468 +++---- .../guide/regular_expressions/assertions/index.md | 163 ++- .../regular_expressions/character_classes/index.md | 400 +++--- .../regular_expressions/groups_and_ranges/index.md | 228 ++-- .../javascript/guide/regular_expressions/index.md | 1355 ++++++++++++-------- .../guide/regular_expressions/quantifiers/index.md | 210 +-- .../unicode_property_escapes/index.md | 506 ++------ .../web/javascript/guide/text_formatting/index.md | 354 +++-- .../web/javascript/guide/using_promises/index.md | 295 +++-- .../javascript/guide/working_with_objects/index.md | 360 +++--- files/fr/web/javascript/index.md | 224 ++-- .../inheritance_and_the_prototype_chain/index.md | 438 ++++--- .../javascript_technologies_overview/index.md | 94 +- .../fr/web/javascript/language_resources/index.md | 366 ++++-- files/fr/web/javascript/memory_management/index.md | 142 +- files/fr/web/javascript/reference/about/index.md | 62 +- .../reference/classes/constructor/index.md | 103 +- .../javascript/reference/classes/extends/index.md | 101 +- files/fr/web/javascript/reference/classes/index.md | 303 +++-- .../classes/private_class_fields/index.md | 133 +- .../reference/classes/public_class_fields/index.md | 188 +-- .../javascript/reference/classes/static/index.md | 104 +- .../deprecated_and_obsolete_features/index.md | 384 +++--- .../the_legacy_iterator_protocol/index.md | 59 +- .../reference/errors/already_has_pragma/index.md | 38 +- .../reference/errors/array_sort_argument/index.md | 44 +- .../javascript/reference/errors/bad_octal/index.md | 46 +- .../javascript/reference/errors/bad_radix/index.md | 55 +- .../reference/errors/bad_regexp_flag/index.md | 139 +- .../reference/errors/bad_return_or_yield/index.md | 47 +- .../errors/called_on_incompatible_type/index.md | 57 +- .../index.md | 45 +- .../reference/errors/cant_access_property/index.md | 58 +- .../errors/cant_assign_to_property/index.md | 45 +- .../index.md | 49 +- .../reference/errors/cant_delete/index.md | 48 +- .../errors/cant_redefine_property/index.md | 46 +- .../reference/errors/cyclic_object_value/index.md | 57 +- .../reference/errors/dead_object/index.md | 45 +- .../errors/delete_in_strict_mode/index.md | 51 +- .../deprecated_caller_or_arguments_usage/index.md | 56 +- .../errors/deprecated_expression_closures/index.md | 69 +- .../reference/errors/deprecated_octal/index.md | 63 +- .../errors/deprecated_source_map_pragma/index.md | 56 +- .../errors/deprecated_string_generics/index.md | 124 +- .../errors/deprecated_tolocaleformat/index.md | 74 +- .../reference/errors/equal_as_assign/index.md | 50 +- .../for-each-in_loops_are_deprecated/index.md | 121 +- .../reference/errors/getter_only/index.md | 44 +- .../errors/identifier_after_number/index.md | 47 +- .../reference/errors/illegal_character/index.md | 77 +- .../errors/in_operator_no_object/index.md | 70 +- files/fr/web/javascript/reference/errors/index.md | 18 +- .../reference/errors/invalid_array_length/index.md | 61 +- .../invalid_assignment_left-hand_side/index.md | 37 +- .../errors/invalid_const_assignment/index.md | 91 +- .../reference/errors/invalid_date/index.md | 58 +- .../errors/invalid_for-in_initializer/index.md | 59 +- .../errors/invalid_for-of_initializer/index.md | 48 +- .../index.md | 44 +- .../reference/errors/is_not_iterable/index.md | 94 +- .../reference/errors/json_bad_parse/index.md | 158 +-- .../errors/malformed_formal_parameter/index.md | 49 +- .../reference/errors/malformed_uri/index.md | 69 +- .../errors/missing_bracket_after_list/index.md | 38 +- .../missing_colon_after_property_id/index.md | 76 +- .../missing_curly_after_function_body/index.md | 57 +- .../missing_curly_after_property_list/index.md | 41 +- .../errors/missing_formal_parameter/index.md | 59 +- .../errors/missing_initializer_in_const/index.md | 62 +- .../missing_name_after_dot_operator/index.md | 55 +- .../index.md | 57 +- .../missing_parenthesis_after_condition/index.md | 67 +- .../missing_semicolon_before_statement/index.md | 80 +- .../errors/more_arguments_needed/index.md | 44 +- .../errors/negative_repetition_count/index.md | 40 +- .../reference/errors/no_non-null_object/index.md | 66 +- .../reference/errors/no_properties/index.md | 34 +- .../reference/errors/no_variable_name/index.md | 82 +- .../errors/non_configurable_array_element/index.md | 67 +- .../reference/errors/not_a_codepoint/index.md | 46 +- .../reference/errors/not_a_constructor/index.md | 83 +- .../reference/errors/not_a_function/index.md | 130 +- .../reference/errors/not_defined/index.md | 62 +- .../reference/errors/precision_range/index.md | 116 +- .../errors/property_access_denied/index.md | 45 +- .../javascript/reference/errors/read-only/index.md | 65 +- .../reference/errors/redeclared_parameter/index.md | 53 +- .../index.md | 98 +- .../reference/errors/reserved_identifier/index.md | 83 +- .../errors/resulting_string_too_large/index.md | 43 +- .../reference/errors/stmt_after_return/index.md | 59 +- .../errors/strict_non_simple_params/index.md | 111 +- .../reference/errors/too_much_recursion/index.md | 58 +- .../reference/errors/undeclared_var/index.md | 60 +- .../reference/errors/undefined_prop/index.md | 42 +- .../reference/errors/unexpected_token/index.md | 70 +- .../reference/errors/unexpected_type/index.md | 58 +- .../errors/unnamed_function_statement/index.md | 103 +- .../errors/unterminated_string_literal/index.md | 77 +- .../reference/errors/var_hides_argument/index.md | 43 +- .../functions/arguments/@@iterator/index.md | 65 +- .../reference/functions/arguments/callee/index.md | 167 ++- .../reference/functions/arguments/index.md | 262 ++-- .../reference/functions/arguments/length/index.md | 98 +- .../reference/functions/arrow_functions/index.md | 349 ++--- .../functions/default_parameters/index.md | 158 ++- .../javascript/reference/functions/get/index.md | 181 ++- .../fr/web/javascript/reference/functions/index.md | 999 +++++++-------- .../functions/method_definitions/index.md | 177 ++- .../reference/functions/rest_parameters/index.md | 163 ++- .../javascript/reference/functions/set/index.md | 150 +-- .../global_objects/aggregateerror/index.md | 69 +- .../global_objects/array/@@iterator/index.md | 87 +- .../global_objects/array/@@species/index.md | 82 +- .../global_objects/array/@@unscopables/index.md | 73 +- .../reference/global_objects/array/array/index.md | 78 +- .../reference/global_objects/array/concat/index.md | 150 +-- .../global_objects/array/copywithin/index.md | 139 +- .../global_objects/array/entries/index.md | 91 +- .../reference/global_objects/array/every/index.md | 166 ++- .../reference/global_objects/array/fill/index.md | 123 +- .../reference/global_objects/array/filter/index.md | 190 ++- .../reference/global_objects/array/find/index.md | 146 +-- .../global_objects/array/findindex/index.md | 153 +-- .../reference/global_objects/array/flat/index.md | 115 +- .../global_objects/array/flatmap/index.md | 141 +- .../global_objects/array/foreach/index.md | 242 ++-- .../reference/global_objects/array/from/index.md | 109 +- .../global_objects/array/includes/index.md | 130 +- .../reference/global_objects/array/index.md | 510 ++++---- .../global_objects/array/indexof/index.md | 162 +-- .../global_objects/array/isarray/index.md | 101 +- .../reference/global_objects/array/join/index.md | 115 +- .../reference/global_objects/array/keys/index.md | 82 +- .../global_objects/array/lastindexof/index.md | 151 +-- .../reference/global_objects/array/length/index.md | 119 +- .../reference/global_objects/array/map/index.md | 181 ++- .../reference/global_objects/array/of/index.md | 105 +- .../reference/global_objects/array/pop/index.md | 112 +- .../reference/global_objects/array/push/index.md | 131 +- .../reference/global_objects/array/reduce/index.md | 437 ++++--- .../global_objects/array/reduceright/index.md | 358 +++--- .../global_objects/array/reverse/index.md | 103 +- .../reference/global_objects/array/shift/index.md | 111 +- .../reference/global_objects/array/slice/index.md | 158 +-- .../reference/global_objects/array/some/index.md | 156 +-- .../reference/global_objects/array/sort/index.md | 254 ++-- .../reference/global_objects/array/splice/index.md | 111 +- .../global_objects/array/tolocalestring/index.md | 126 +- .../global_objects/array/tosource/index.md | 62 +- .../global_objects/array/tostring/index.md | 73 +- .../global_objects/array/unshift/index.md | 108 +- .../reference/global_objects/array/values/index.md | 90 +- .../global_objects/arraybuffer/@@species/index.md | 78 +- .../global_objects/arraybuffer/bytelength/index.md | 62 +- .../reference/global_objects/arraybuffer/index.md | 154 +-- .../global_objects/arraybuffer/isview/index.md | 82 +- .../global_objects/arraybuffer/slice/index.md | 81 +- .../global_objects/asyncfunction/index.md | 129 +- .../reference/global_objects/atomics/add/index.md | 92 +- .../reference/global_objects/atomics/and/index.md | 178 +-- .../atomics/compareexchange/index.md | 96 +- .../global_objects/atomics/exchange/index.md | 82 +- .../reference/global_objects/atomics/index.md | 179 ++- .../global_objects/atomics/islockfree/index.md | 72 +- .../reference/global_objects/atomics/load/index.md | 88 +- .../global_objects/atomics/notify/index.md | 109 +- .../reference/global_objects/atomics/or/index.md | 180 +-- .../global_objects/atomics/store/index.md | 80 +- .../reference/global_objects/atomics/sub/index.md | 91 +- .../reference/global_objects/atomics/wait/index.md | 113 +- .../reference/global_objects/atomics/xor/index.md | 180 +-- .../global_objects/bigint/asintn/index.md | 64 +- .../global_objects/bigint/asuintn/index.md | 65 +- .../reference/global_objects/bigint/index.md | 232 ++-- .../global_objects/bigint/tolocalestring/index.md | 88 +- .../global_objects/bigint/tostring/index.md | 90 +- .../global_objects/bigint/valueof/index.md | 50 +- .../global_objects/bigint64array/index.md | 274 ++-- .../global_objects/biguint64array/index.md | 274 ++-- .../reference/global_objects/boolean/index.md | 165 +-- .../global_objects/boolean/tosource/index.md | 51 +- .../global_objects/boolean/tostring/index.md | 92 +- .../global_objects/boolean/valueof/index.md | 88 +- .../global_objects/dataview/buffer/index.md | 60 +- .../global_objects/dataview/bytelength/index.md | 74 +- .../global_objects/dataview/byteoffset/index.md | 74 +- .../global_objects/dataview/getbigint64/index.md | 92 +- .../global_objects/dataview/getbiguint64/index.md | 92 +- .../global_objects/dataview/getfloat32/index.md | 102 +- .../global_objects/dataview/getfloat64/index.md | 102 +- .../global_objects/dataview/getint16/index.md | 102 +- .../global_objects/dataview/getint32/index.md | 102 +- .../global_objects/dataview/getint8/index.md | 98 +- .../global_objects/dataview/getuint16/index.md | 102 +- .../global_objects/dataview/getuint32/index.md | 102 +- .../global_objects/dataview/getuint8/index.md | 98 +- .../reference/global_objects/dataview/index.md | 171 ++- .../global_objects/dataview/setbigint64/index.md | 90 +- .../global_objects/dataview/setbiguint64/index.md | 90 +- .../global_objects/dataview/setfloat32/index.md | 102 +- .../global_objects/dataview/setfloat64/index.md | 102 +- .../global_objects/dataview/setint16/index.md | 102 +- .../global_objects/dataview/setint32/index.md | 102 +- .../global_objects/dataview/setint8/index.md | 100 +- .../global_objects/dataview/setuint16/index.md | 102 +- .../global_objects/dataview/setuint32/index.md | 102 +- .../global_objects/dataview/setuint8/index.md | 98 +- .../global_objects/date/@@toprimitive/index.md | 58 +- .../reference/global_objects/date/getdate/index.md | 92 +- .../reference/global_objects/date/getday/index.md | 109 +- .../global_objects/date/getfullyear/index.md | 90 +- .../global_objects/date/gethours/index.md | 86 +- .../global_objects/date/getmilliseconds/index.md | 86 +- .../global_objects/date/getminutes/index.md | 86 +- .../global_objects/date/getmonth/index.md | 107 +- .../global_objects/date/getseconds/index.md | 86 +- .../reference/global_objects/date/gettime/index.md | 114 +- .../global_objects/date/gettimezoneoffset/index.md | 66 +- .../global_objects/date/getutcdate/index.md | 88 +- .../global_objects/date/getutcday/index.md | 88 +- .../global_objects/date/getutcfullyear/index.md | 75 +- .../global_objects/date/getutchours/index.md | 86 +- .../date/getutcmilliseconds/index.md | 90 +- .../global_objects/date/getutcminutes/index.md | 86 +- .../global_objects/date/getutcmonth/index.md | 86 +- .../global_objects/date/getutcseconds/index.md | 86 +- .../reference/global_objects/date/getyear/index.md | 139 +- .../reference/global_objects/date/index.md | 376 +++--- .../reference/global_objects/date/now/index.md | 98 +- .../reference/global_objects/date/parse/index.md | 216 ++-- .../reference/global_objects/date/setdate/index.md | 101 +- .../global_objects/date/setfullyear/index.md | 108 +- .../global_objects/date/sethours/index.md | 115 +- .../global_objects/date/setmilliseconds/index.md | 96 +- .../global_objects/date/setminutes/index.md | 110 +- .../global_objects/date/setmonth/index.md | 120 +- .../global_objects/date/setseconds/index.md | 106 +- .../reference/global_objects/date/settime/index.md | 96 +- .../global_objects/date/setutcdate/index.md | 96 +- .../global_objects/date/setutcfullyear/index.md | 106 +- .../global_objects/date/setutchours/index.md | 110 +- .../date/setutcmilliseconds/index.md | 96 +- .../global_objects/date/setutcminutes/index.md | 106 +- .../global_objects/date/setutcmonth/index.md | 102 +- .../global_objects/date/setutcseconds/index.md | 102 +- .../reference/global_objects/date/setyear/index.md | 100 +- .../global_objects/date/todatestring/index.md | 103 +- .../global_objects/date/togmtstring/index.md | 90 +- .../global_objects/date/toisostring/index.md | 94 +- .../reference/global_objects/date/tojson/index.md | 84 +- .../date/tolocaledatestring/index.md | 154 +-- .../global_objects/date/tolocalestring/index.md | 169 +-- .../date/tolocaletimestring/index.md | 154 +-- .../global_objects/date/tosource/index.md | 48 +- .../global_objects/date/tostring/index.md | 169 +-- .../global_objects/date/totimestring/index.md | 92 +- .../global_objects/date/toutcstring/index.md | 98 +- .../reference/global_objects/date/utc/index.md | 141 +- .../reference/global_objects/date/valueof/index.md | 92 +- .../reference/global_objects/decodeuri/index.md | 109 +- .../global_objects/decodeuricomponent/index.md | 102 +- .../reference/global_objects/encodeuri/index.md | 121 +- .../global_objects/encodeuricomponent/index.md | 130 +- .../global_objects/error/columnnumber/index.md | 31 +- .../global_objects/error/filename/index.md | 35 +- .../reference/global_objects/error/index.md | 219 ++-- .../global_objects/error/linenumber/index.md | 44 +- .../global_objects/error/message/index.md | 68 +- .../reference/global_objects/error/name/index.md | 66 +- .../reference/global_objects/error/stack/index.md | 105 +- .../global_objects/error/tosource/index.md | 46 +- .../global_objects/error/tostring/index.md | 87 +- .../reference/global_objects/escape/index.md | 110 +- .../reference/global_objects/eval/index.md | 262 ++-- .../reference/global_objects/evalerror/index.md | 124 +- .../reference/global_objects/float32array/index.md | 306 ++--- .../reference/global_objects/float64array/index.md | 312 +++-- .../global_objects/function/apply/index.md | 244 ++-- .../global_objects/function/arguments/index.md | 82 +- .../global_objects/function/bind/index.md | 186 ++- .../global_objects/function/call/index.md | 166 +-- .../global_objects/function/caller/index.md | 67 +- .../global_objects/function/displayname/index.md | 46 +- .../reference/global_objects/function/index.md | 150 +-- .../global_objects/function/length/index.md | 88 +- .../global_objects/function/name/index.md | 177 ++- .../global_objects/function/tosource/index.md | 73 +- .../global_objects/function/tostring/index.md | 110 +- .../reference/global_objects/generator/index.md | 156 +-- .../global_objects/generator/next/index.md | 103 +- .../global_objects/generator/return/index.md | 114 +- .../global_objects/generator/throw/index.md | 92 +- .../global_objects/generatorfunction/index.md | 127 +- .../reference/global_objects/globalthis/index.md | 79 +- .../javascript/reference/global_objects/index.md | 322 +++-- .../reference/global_objects/infinity/index.md | 91 +- .../reference/global_objects/int16array/index.md | 306 ++--- .../reference/global_objects/int32array/index.md | 306 ++--- .../reference/global_objects/int8array/index.md | 306 ++--- .../global_objects/internalerror/index.md | 78 +- .../global_objects/intl/collator/compare/index.md | 99 +- .../global_objects/intl/collator/index.md | 203 ++- .../intl/collator/resolvedoptions/index.md | 97 +- .../intl/collator/supportedlocalesof/index.md | 104 +- .../intl/datetimeformat/format/index.md | 122 +- .../intl/datetimeformat/formatrange/index.md | 62 +- .../datetimeformat/formatrangetoparts/index.md | 51 +- .../intl/datetimeformat/formattoparts/index.md | 173 ++- .../global_objects/intl/datetimeformat/index.md | 399 +++--- .../intl/datetimeformat/resolvedoptions/index.md | 69 +- .../datetimeformat/supportedlocalesof/index.md | 104 +- .../intl/displaynames/displaynames/index.md | 151 +-- .../global_objects/intl/displaynames/index.md | 109 +- .../intl/getcanonicallocales/index.md | 74 +- .../reference/global_objects/intl/index.md | 196 ++- .../global_objects/intl/listformat/format/index.md | 57 +- .../intl/listformat/formattoparts/index.md | 87 +- .../global_objects/intl/listformat/index.md | 170 +-- .../intl/listformat/resolvedoptions/index.md | 88 +- .../intl/listformat/supportedlocalesof/index.md | 93 +- .../global_objects/intl/locale/basename/index.md | 65 +- .../global_objects/intl/locale/calendar/index.md | 260 ++-- .../global_objects/intl/locale/casefirst/index.md | 93 +- .../global_objects/intl/locale/collation/index.md | 279 ++-- .../global_objects/intl/locale/hourcycle/index.md | 130 +- .../reference/global_objects/intl/locale/index.md | 67 +- .../global_objects/intl/locale/language/index.md | 63 +- .../global_objects/intl/locale/maximize/index.md | 73 +- .../global_objects/intl/locale/minimize/index.md | 73 +- .../intl/locale/numberingsystem/index.md | 522 ++------ .../global_objects/intl/locale/numeric/index.md | 72 +- .../global_objects/intl/locale/region/index.md | 75 +- .../global_objects/intl/locale/script/index.md | 63 +- .../global_objects/intl/locale/tostring/index.md | 70 +- .../intl/numberformat/format/index.md | 99 +- .../intl/numberformat/formattoparts/index.md | 160 ++- .../global_objects/intl/numberformat/index.md | 199 ++- .../intl/numberformat/resolvedoptions/index.md | 111 +- .../intl/numberformat/supportedlocalesof/index.md | 104 +- .../global_objects/intl/pluralrules/index.md | 133 +- .../intl/pluralrules/resolvedoptions/index.md | 92 +- .../intl/pluralrules/select/index.md | 68 +- .../intl/pluralrules/supportedlocalesof/index.md | 87 +- .../intl/relativetimeformat/format/index.md | 88 +- .../intl/relativetimeformat/formattoparts/index.md | 87 +- .../intl/relativetimeformat/index.md | 155 +-- .../relativetimeformat/resolvedoptions/index.md | 111 +- .../relativetimeformat/supportedlocalesof/index.md | 78 +- .../reference/global_objects/isfinite/index.md | 100 +- .../reference/global_objects/isnan/index.md | 133 +- .../reference/global_objects/json/index.md | 245 ++-- .../reference/global_objects/json/parse/index.md | 116 +- .../global_objects/json/stringify/index.md | 260 ++-- .../global_objects/map/@@iterator/index.md | 81 +- .../global_objects/map/@@species/index.md | 78 +- .../global_objects/map/@@tostringtag/index.md | 47 +- .../reference/global_objects/map/clear/index.md | 70 +- .../reference/global_objects/map/delete/index.md | 76 +- .../reference/global_objects/map/entries/index.md | 74 +- .../reference/global_objects/map/foreach/index.md | 104 +- .../reference/global_objects/map/get/index.md | 80 +- .../reference/global_objects/map/has/index.md | 80 +- .../reference/global_objects/map/index.md | 204 ++- .../reference/global_objects/map/keys/index.md | 72 +- .../reference/global_objects/map/set/index.md | 96 +- .../reference/global_objects/map/size/index.md | 54 +- .../reference/global_objects/map/values/index.md | 73 +- .../reference/global_objects/math/abs/index.md | 107 +- .../reference/global_objects/math/acos/index.md | 112 +- .../reference/global_objects/math/acosh/index.md | 106 +- .../reference/global_objects/math/asin/index.md | 113 +- .../reference/global_objects/math/asinh/index.md | 94 +- .../reference/global_objects/math/atan/index.md | 108 +- .../reference/global_objects/math/atan2/index.md | 126 +- .../reference/global_objects/math/atanh/index.md | 105 +- .../reference/global_objects/math/cbrt/index.md | 89 +- .../reference/global_objects/math/ceil/index.md | 118 +- .../reference/global_objects/math/clz32/index.md | 93 +- .../reference/global_objects/math/cos/index.md | 106 +- .../reference/global_objects/math/cosh/index.md | 114 +- .../reference/global_objects/math/e/index.md | 89 +- .../reference/global_objects/math/exp/index.md | 109 +- .../reference/global_objects/math/expm1/index.md | 105 +- .../reference/global_objects/math/floor/index.md | 106 +- .../reference/global_objects/math/fround/index.md | 87 +- .../reference/global_objects/math/hypot/index.md | 120 +- .../reference/global_objects/math/imul/index.md | 95 +- .../reference/global_objects/math/index.md | 295 ++--- .../reference/global_objects/math/ln10/index.md | 89 +- .../reference/global_objects/math/ln2/index.md | 89 +- .../reference/global_objects/math/log/index.md | 121 +- .../reference/global_objects/math/log10/index.md | 103 +- .../reference/global_objects/math/log10e/index.md | 89 +- .../reference/global_objects/math/log1p/index.md | 103 +- .../reference/global_objects/math/log2/index.md | 94 +- .../reference/global_objects/math/log2e/index.md | 89 +- .../reference/global_objects/math/max/index.md | 132 +- .../reference/global_objects/math/min/index.md | 125 +- .../reference/global_objects/math/pi/index.md | 85 +- .../reference/global_objects/math/pow/index.md | 106 +- .../reference/global_objects/math/random/index.md | 105 +- .../reference/global_objects/math/round/index.md | 106 +- .../reference/global_objects/math/sign/index.md | 92 +- .../reference/global_objects/math/sin/index.md | 105 +- .../reference/global_objects/math/sinh/index.md | 109 +- .../reference/global_objects/math/sqrt/index.md | 103 +- .../reference/global_objects/math/sqrt1_2/index.md | 75 +- .../reference/global_objects/math/sqrt2/index.md | 75 +- .../reference/global_objects/math/tan/index.md | 112 +- .../reference/global_objects/math/tanh/index.md | 111 +- .../reference/global_objects/math/trunc/index.md | 101 +- .../reference/global_objects/nan/index.md | 106 +- .../reference/global_objects/null/index.md | 88 +- .../global_objects/number/epsilon/index.md | 80 +- .../reference/global_objects/number/index.md | 297 ++--- .../global_objects/number/isfinite/index.md | 103 +- .../global_objects/number/isinteger/index.md | 94 +- .../reference/global_objects/number/isnan/index.md | 105 +- .../global_objects/number/issafeinteger/index.md | 102 +- .../number/max_safe_integer/index.md | 78 +- .../global_objects/number/max_value/index.md | 75 +- .../number/min_safe_integer/index.md | 66 +- .../global_objects/number/min_value/index.md | 77 +- .../reference/global_objects/number/nan/index.md | 79 +- .../number/negative_infinity/index.md | 114 +- .../global_objects/number/parsefloat/index.md | 87 +- .../global_objects/number/parseint/index.md | 93 +- .../number/positive_infinity/index.md | 116 +- .../global_objects/number/toexponential/index.md | 114 +- .../global_objects/number/tofixed/index.md | 112 +- .../global_objects/number/tolocalestring/index.md | 164 +-- .../global_objects/number/toprecision/index.md | 102 +- .../global_objects/number/tosource/index.md | 52 +- .../global_objects/number/tostring/index.md | 116 +- .../global_objects/number/valueof/index.md | 86 +- .../object/__definegetter__/index.md | 95 +- .../object/__definesetter__/index.md | 108 +- .../object/__lookupgetter__/index.md | 91 +- .../object/__lookupsetter__/index.md | 85 +- .../global_objects/object/assign/index.md | 161 ++- .../global_objects/object/constructor/index.md | 151 +-- .../global_objects/object/create/index.md | 118 +- .../object/defineproperties/index.md | 168 +-- .../global_objects/object/defineproperty/index.md | 287 +++-- .../global_objects/object/entries/index.md | 138 +- .../global_objects/object/freeze/index.md | 176 ++- .../global_objects/object/fromentries/index.md | 113 +- .../object/getownpropertydescriptor/index.md | 131 +- .../object/getownpropertydescriptors/index.md | 125 +- .../object/getownpropertynames/index.md | 145 +-- .../object/getownpropertysymbols/index.md | 84 +- .../global_objects/object/getprototypeof/index.md | 109 +- .../global_objects/object/hasownproperty/index.md | 140 +- .../reference/global_objects/object/index.md | 261 ++-- .../reference/global_objects/object/is/index.md | 127 +- .../global_objects/object/isextensible/index.md | 105 +- .../global_objects/object/isfrozen/index.md | 103 +- .../global_objects/object/isprototypeof/index.md | 121 +- .../global_objects/object/issealed/index.md | 104 +- .../reference/global_objects/object/keys/index.md | 111 +- .../object/preventextensions/index.md | 111 +- .../object/propertyisenumerable/index.md | 118 +- .../reference/global_objects/object/proto/index.md | 153 +-- .../reference/global_objects/object/seal/index.md | 118 +- .../global_objects/object/setprototypeof/index.md | 145 +-- .../global_objects/object/tolocalestring/index.md | 79 +- .../global_objects/object/tosource/index.md | 116 +- .../global_objects/object/tostring/index.md | 135 +- .../global_objects/object/valueof/index.md | 126 +- .../global_objects/object/values/index.md | 98 +- .../reference/global_objects/parsefloat/index.md | 149 +-- .../reference/global_objects/parseint/index.md | 202 ++- .../reference/global_objects/promise/all/index.md | 189 ++- .../global_objects/promise/allsettled/index.md | 61 +- .../reference/global_objects/promise/any/index.md | 128 +- .../global_objects/promise/catch/index.md | 127 +- .../global_objects/promise/finally/index.md | 112 +- .../reference/global_objects/promise/index.md | 242 ++-- .../reference/global_objects/promise/race/index.md | 132 +- .../global_objects/promise/reject/index.md | 81 +- .../global_objects/promise/resolve/index.md | 114 +- .../reference/global_objects/promise/then/index.md | 192 ++- .../reference/global_objects/proxy/index.md | 208 ++- .../global_objects/proxy/proxy/apply/index.md | 123 +- .../global_objects/proxy/proxy/construct/index.md | 134 +- .../proxy/proxy/defineproperty/index.md | 148 +-- .../proxy/proxy/deleteproperty/index.md | 115 +- .../global_objects/proxy/proxy/get/index.md | 128 +- .../proxy/proxy/getownpropertydescriptor/index.md | 132 +- .../proxy/proxy/getprototypeof/index.md | 131 +- .../global_objects/proxy/proxy/has/index.md | 128 +- .../reference/global_objects/proxy/proxy/index.md | 121 +- .../proxy/proxy/isextensible/index.md | 118 +- .../global_objects/proxy/proxy/ownkeys/index.md | 128 +- .../proxy/proxy/preventextensions/index.md | 118 +- .../global_objects/proxy/proxy/set/index.md | 127 +- .../proxy/proxy/setprototypeof/index.md | 125 +- .../global_objects/proxy/revocable/index.md | 87 +- .../reference/global_objects/rangeerror/index.md | 140 +- .../global_objects/referenceerror/index.md | 129 +- .../global_objects/reflect/apply/index.md | 101 +- .../comparing_reflect_and_object_methods/index.md | 261 ++-- .../global_objects/reflect/construct/index.md | 133 +- .../global_objects/reflect/defineproperty/index.md | 107 +- .../global_objects/reflect/deleteproperty/index.md | 91 +- .../reference/global_objects/reflect/get/index.md | 95 +- .../reflect/getownpropertydescriptor/index.md | 103 +- .../global_objects/reflect/getprototypeof/index.md | 96 +- .../reference/global_objects/reflect/has/index.md | 91 +- .../reference/global_objects/reflect/index.md | 103 +- .../global_objects/reflect/isextensible/index.md | 100 +- .../global_objects/reflect/ownkeys/index.md | 93 +- .../reflect/preventextensions/index.md | 100 +- .../reference/global_objects/reflect/set/index.md | 101 +- .../global_objects/reflect/setprototypeof/index.md | 93 +- .../global_objects/regexp/@@match/index.md | 111 +- .../global_objects/regexp/@@matchall/index.md | 99 +- .../global_objects/regexp/@@replace/index.md | 124 +- .../global_objects/regexp/@@search/index.md | 115 +- .../global_objects/regexp/@@species/index.md | 80 +- .../global_objects/regexp/@@split/index.md | 121 +- .../global_objects/regexp/compile/index.md | 101 +- .../global_objects/regexp/dotall/index.md | 46 +- .../reference/global_objects/regexp/exec/index.md | 271 ++-- .../reference/global_objects/regexp/flags/index.md | 65 +- .../global_objects/regexp/global/index.md | 91 +- .../global_objects/regexp/ignorecase/index.md | 80 +- .../reference/global_objects/regexp/index.md | 269 ++-- .../reference/global_objects/regexp/input/index.md | 48 +- .../global_objects/regexp/lastindex/index.md | 121 +- .../global_objects/regexp/lastmatch/index.md | 52 +- .../global_objects/regexp/lastparen/index.md | 50 +- .../global_objects/regexp/leftcontext/index.md | 48 +- .../global_objects/regexp/multiline/index.md | 96 +- .../reference/global_objects/regexp/n/index.md | 66 +- .../global_objects/regexp/rightcontext/index.md | 48 +- .../global_objects/regexp/source/index.md | 86 +- .../global_objects/regexp/sticky/index.md | 89 +- .../reference/global_objects/regexp/test/index.md | 131 +- .../global_objects/regexp/tosource/index.md | 50 +- .../global_objects/regexp/tostring/index.md | 98 +- .../global_objects/regexp/unicode/index.md | 68 +- .../global_objects/set/@@iterator/index.md | 81 +- .../global_objects/set/@@species/index.md | 78 +- .../reference/global_objects/set/add/index.md | 80 +- .../reference/global_objects/set/clear/index.md | 70 +- .../reference/global_objects/set/delete/index.md | 90 +- .../reference/global_objects/set/entries/index.md | 70 +- .../reference/global_objects/set/foreach/index.md | 120 +- .../reference/global_objects/set/has/index.md | 84 +- .../reference/global_objects/set/index.md | 182 ++- .../reference/global_objects/set/size/index.md | 54 +- .../reference/global_objects/set/values/index.md | 72 +- .../sharedarraybuffer/bytelength/index.md | 62 +- .../global_objects/sharedarraybuffer/index.md | 140 +- .../sharedarraybuffer/slice/index.md | 97 +- .../global_objects/string/@@iterator/index.md | 77 +- .../global_objects/string/anchor/index.md | 92 +- .../reference/global_objects/string/big/index.md | 79 +- .../reference/global_objects/string/blink/index.md | 97 +- .../reference/global_objects/string/bold/index.md | 96 +- .../global_objects/string/charat/index.md | 177 ++- .../global_objects/string/charcodeat/index.md | 137 +- .../global_objects/string/codepointat/index.md | 105 +- .../global_objects/string/concat/index.md | 103 +- .../global_objects/string/endswith/index.md | 103 +- .../reference/global_objects/string/fixed/index.md | 80 +- .../global_objects/string/fontcolor/index.md | 98 +- .../global_objects/string/fontsize/index.md | 85 +- .../global_objects/string/fromcharcode/index.md | 125 +- .../global_objects/string/fromcodepoint/index.md | 98 +- .../global_objects/string/includes/index.md | 140 +- .../reference/global_objects/string/index.md | 528 ++++---- .../global_objects/string/indexof/index.md | 162 +-- .../global_objects/string/italics/index.md | 94 +- .../global_objects/string/lastindexof/index.md | 124 +- .../global_objects/string/length/index.md | 99 +- .../reference/global_objects/string/link/index.md | 93 +- .../global_objects/string/localecompare/index.md | 188 ++- .../reference/global_objects/string/match/index.md | 159 +-- .../global_objects/string/matchall/index.md | 106 +- .../global_objects/string/normalize/index.md | 103 +- .../global_objects/string/padend/index.md | 80 +- .../global_objects/string/padstart/index.md | 83 +- .../reference/global_objects/string/raw/index.md | 105 +- .../global_objects/string/repeat/index.md | 85 +- .../global_objects/string/replace/index.md | 376 +++--- .../global_objects/string/replaceall/index.md | 227 ++-- .../global_objects/string/search/index.md | 117 +- .../reference/global_objects/string/slice/index.md | 164 ++- .../reference/global_objects/string/small/index.md | 77 +- .../reference/global_objects/string/split/index.md | 218 ++-- .../global_objects/string/startswith/index.md | 93 +- .../global_objects/string/strike/index.md | 95 +- .../reference/global_objects/string/sub/index.md | 77 +- .../global_objects/string/substr/index.md | 146 +-- .../global_objects/string/substring/index.md | 216 ++-- .../reference/global_objects/string/sup/index.md | 78 +- .../string/tolocalelowercase/index.md | 116 +- .../string/tolocaleuppercase/index.md | 118 +- .../global_objects/string/tolowercase/index.md | 76 +- .../global_objects/string/tosource/index.md | 52 +- .../global_objects/string/tostring/index.md | 79 +- .../global_objects/string/touppercase/index.md | 108 +- .../reference/global_objects/string/trim/index.md | 91 +- .../global_objects/string/trimend/index.md | 82 +- .../global_objects/string/trimstart/index.md | 82 +- .../global_objects/string/valueof/index.md | 88 +- .../global_objects/symbol/@@toprimitive/index.md | 54 +- .../global_objects/symbol/asynciterator/index.md | 60 +- .../global_objects/symbol/description/index.md | 56 +- .../reference/global_objects/symbol/for/index.md | 112 +- .../global_objects/symbol/hasinstance/index.md | 55 +- .../reference/global_objects/symbol/index.md | 271 ++-- .../symbol/isconcatspreadable/index.md | 100 +- .../global_objects/symbol/iterator/index.md | 118 +- .../global_objects/symbol/keyfor/index.md | 76 +- .../reference/global_objects/symbol/match/index.md | 84 +- .../global_objects/symbol/matchall/index.md | 59 +- .../global_objects/symbol/replace/index.md | 53 +- .../global_objects/symbol/search/index.md | 53 +- .../global_objects/symbol/species/index.md | 63 +- .../reference/global_objects/symbol/split/index.md | 53 +- .../global_objects/symbol/toprimitive/index.md | 64 +- .../global_objects/symbol/tosource/index.md | 58 +- .../global_objects/symbol/tostring/index.md | 80 +- .../global_objects/symbol/tostringtag/index.md | 87 +- .../global_objects/symbol/unscopables/index.md | 82 +- .../global_objects/symbol/valueof/index.md | 54 +- .../reference/global_objects/syntaxerror/index.md | 127 +- .../global_objects/typedarray/@@iterator/index.md | 83 +- .../global_objects/typedarray/@@species/index.md | 99 +- .../global_objects/typedarray/buffer/index.md | 58 +- .../global_objects/typedarray/bytelength/index.md | 70 +- .../global_objects/typedarray/byteoffset/index.md | 56 +- .../typedarray/bytes_per_element/index.md | 69 +- .../global_objects/typedarray/copywithin/index.md | 90 +- .../global_objects/typedarray/entries/index.md | 90 +- .../global_objects/typedarray/every/index.md | 133 +- .../global_objects/typedarray/fill/index.md | 101 +- .../global_objects/typedarray/filter/index.md | 126 +- .../global_objects/typedarray/find/index.md | 125 +- .../global_objects/typedarray/findindex/index.md | 122 +- .../global_objects/typedarray/foreach/index.md | 126 +- .../global_objects/typedarray/from/index.md | 139 +- .../global_objects/typedarray/includes/index.md | 84 +- .../reference/global_objects/typedarray/index.md | 402 +++--- .../global_objects/typedarray/indexof/index.md | 96 +- .../global_objects/typedarray/join/index.md | 91 +- .../global_objects/typedarray/keys/index.md | 89 +- .../global_objects/typedarray/lastindexof/index.md | 86 +- .../global_objects/typedarray/length/index.md | 70 +- .../global_objects/typedarray/map/index.md | 125 +- .../global_objects/typedarray/name/index.md | 63 +- .../global_objects/typedarray/of/index.md | 112 +- .../global_objects/typedarray/reduce/index.md | 112 +- .../global_objects/typedarray/reduceright/index.md | 118 +- .../global_objects/typedarray/reverse/index.md | 56 +- .../global_objects/typedarray/set/index.md | 105 +- .../global_objects/typedarray/slice/index.md | 104 +- .../global_objects/typedarray/some/index.md | 139 +- .../global_objects/typedarray/sort/index.md | 78 +- .../global_objects/typedarray/subarray/index.md | 97 +- .../typedarray/tolocalestring/index.md | 72 +- .../global_objects/typedarray/tostring/index.md | 81 +- .../global_objects/typedarray/values/index.md | 85 +- .../reference/global_objects/typeerror/index.md | 127 +- .../reference/global_objects/uint16array/index.md | 306 ++--- .../reference/global_objects/uint32array/index.md | 306 ++--- .../reference/global_objects/uint8array/index.md | 306 ++--- .../global_objects/uint8clampedarray/index.md | 306 ++--- .../reference/global_objects/undefined/index.md | 132 +- .../reference/global_objects/unescape/index.md | 106 +- .../reference/global_objects/uneval/index.md | 53 +- .../reference/global_objects/urierror/index.md | 135 +- .../global_objects/weakmap/clear/index.md | 29 +- .../global_objects/weakmap/delete/index.md | 76 +- .../reference/global_objects/weakmap/get/index.md | 80 +- .../reference/global_objects/weakmap/has/index.md | 80 +- .../reference/global_objects/weakmap/index.md | 133 +- .../reference/global_objects/weakmap/set/index.md | 94 +- .../reference/global_objects/weakset/add/index.md | 84 +- .../global_objects/weakset/delete/index.md | 78 +- .../reference/global_objects/weakset/has/index.md | 84 +- .../reference/global_objects/weakset/index.md | 129 +- .../global_objects/webassembly/compile/index.md | 97 +- .../webassembly/compileerror/index.md | 135 +- .../webassembly/compilestreaming/index.md | 89 +- .../global_objects/webassembly/global/index.md | 119 +- .../reference/global_objects/webassembly/index.md | 163 ++- .../webassembly/instance/exports/index.md | 55 +- .../global_objects/webassembly/instance/index.md | 73 +- .../webassembly/instantiate/index.md | 173 ++- .../webassembly/instantiatestreaming/index.md | 99 +- .../global_objects/webassembly/linkerror/index.md | 135 +- .../webassembly/memory/buffer/index.md | 56 +- .../webassembly/memory/grow/index.md | 88 +- .../global_objects/webassembly/memory/index.md | 138 +- .../webassembly/module/customsections/index.md | 99 +- .../webassembly/module/exports/index.md | 101 +- .../webassembly/module/imports/index.md | 90 +- .../global_objects/webassembly/module/index.md | 85 +- .../webassembly/runtimeerror/index.md | 135 +- .../global_objects/webassembly/table/get/index.md | 76 +- .../global_objects/webassembly/table/grow/index.md | 87 +- .../global_objects/webassembly/table/index.md | 160 +-- .../webassembly/table/length/index.md | 59 +- .../global_objects/webassembly/table/set/index.md | 114 +- .../global_objects/webassembly/validate/index.md | 80 +- files/fr/web/javascript/reference/index.md | 48 +- .../reference/iteration_protocols/index.md | 281 ++-- .../javascript/reference/lexical_grammar/index.md | 752 +++++------ .../reference/operators/addition/index.md | 70 +- .../operators/addition_assignment/index.md | 64 +- .../reference/operators/assignment/index.md | 48 +- .../reference/operators/async_function/index.md | 116 +- .../javascript/reference/operators/await/index.md | 132 +- .../reference/operators/bitwise_and/index.md | 106 +- .../operators/bitwise_and_assignment/index.md | 43 +- .../reference/operators/bitwise_not/index.md | 89 +- .../reference/operators/bitwise_or/index.md | 102 +- .../operators/bitwise_or_assignment/index.md | 43 +- .../reference/operators/bitwise_xor/index.md | 102 +- .../operators/bitwise_xor_assignment/index.md | 41 +- .../javascript/reference/operators/class/index.md | 103 +- .../reference/operators/comma_operator/index.md | 119 +- .../operators/conditional_operator/index.md | 152 +-- .../reference/operators/decrement/index.md | 68 +- .../javascript/reference/operators/delete/index.md | 231 ++-- .../operators/destructuring_assignment/index.md | 334 ++--- .../reference/operators/division/index.md | 61 +- .../operators/division_assignment/index.md | 41 +- .../reference/operators/equality/index.md | 116 +- .../reference/operators/exponentiation/index.md | 89 +- .../operators/exponentiation_assignment/index.md | 41 +- .../reference/operators/function/index.md | 163 +-- .../reference/operators/function_star_/index.md | 106 +- .../reference/operators/greater_than/index.md | 119 +- .../operators/greater_than_or_equal/index.md | 119 +- .../reference/operators/grouping/index.md | 86 +- .../web/javascript/reference/operators/in/index.md | 136 +- .../reference/operators/increment/index.md | 68 +- .../fr/web/javascript/reference/operators/index.md | 508 ++++---- .../reference/operators/inequality/index.md | 74 +- .../reference/operators/instanceof/index.md | 132 +- .../reference/operators/left_shift/index.md | 55 +- .../operators/left_shift_assignment/index.md | 43 +- .../reference/operators/less_than/index.md | 144 +-- .../operators/less_than_or_equal/index.md | 119 +- .../reference/operators/logical_and/index.md | 164 ++- .../operators/logical_and_assignment/index.md | 81 +- .../reference/operators/logical_not/index.md | 91 +- .../operators/logical_nullish_assignment/index.md | 65 +- .../reference/operators/logical_or/index.md | 147 ++- .../operators/logical_or_assignment/index.md | 79 +- .../reference/operators/multiplication/index.md | 66 +- .../operators/multiplication_assignment/index.md | 42 +- .../reference/operators/new.target/index.md | 91 +- .../javascript/reference/operators/new/index.md | 206 ++- .../operators/nullish_coalescing_operator/index.md | 131 +- .../operators/object_initializer/index.md | 267 ++-- .../operators/operator_precedence/index.md | 922 ++++++++----- .../reference/operators/optional_chaining/index.md | 168 +-- .../operators/property_accessors/index.md | 185 ++- .../reference/operators/remainder/index.md | 73 +- .../operators/remainder_assignment/index.md | 41 +- .../reference/operators/right_shift/index.md | 63 +- .../operators/right_shift_assignment/index.md | 45 +- .../reference/operators/spread_syntax/index.md | 249 ++-- .../reference/operators/strict_equality/index.md | 79 +- .../reference/operators/strict_inequality/index.md | 67 +- .../reference/operators/subtraction/index.md | 59 +- .../operators/subtraction_assignment/index.md | 41 +- .../javascript/reference/operators/super/index.md | 81 +- .../javascript/reference/operators/this/index.md | 284 ++-- .../javascript/reference/operators/typeof/index.md | 265 ++-- .../reference/operators/unary_negation/index.md | 64 +- .../reference/operators/unary_plus/index.md | 67 +- .../operators/unsigned_right_shift/index.md | 62 +- .../unsigned_right_shift_assignment/index.md | 45 +- .../javascript/reference/operators/void/index.md | 148 +-- .../javascript/reference/operators/yield/index.md | 187 ++- .../reference/operators/yield_star_/index.md | 137 +- .../reference/statements/async_function/index.md | 199 ++- .../javascript/reference/statements/block/index.md | 116 +- .../javascript/reference/statements/break/index.md | 141 +- .../javascript/reference/statements/class/index.md | 124 +- .../javascript/reference/statements/const/index.md | 92 +- .../reference/statements/continue/index.md | 136 +- .../reference/statements/debugger/index.md | 75 +- .../reference/statements/do...while/index.md | 89 +- .../javascript/reference/statements/empty/index.md | 108 +- .../reference/statements/export/index.md | 232 ++-- .../reference/statements/for-await...of/index.md | 117 +- .../reference/statements/for...in/index.md | 154 +-- .../reference/statements/for...of/index.md | 231 ++-- .../javascript/reference/statements/for/index.md | 167 +-- .../reference/statements/function/index.md | 166 +-- .../reference/statements/function_star_/index.md | 213 ++- .../reference/statements/if...else/index.md | 152 +-- .../reference/statements/import.meta/index.md | 68 +- .../reference/statements/import/index.md | 286 ++--- .../web/javascript/reference/statements/index.md | 237 ++-- .../javascript/reference/statements/label/index.md | 184 ++- .../javascript/reference/statements/let/index.md | 259 ++-- .../reference/statements/return/index.md | 151 +-- .../reference/statements/switch/index.md | 326 ++--- .../javascript/reference/statements/throw/index.md | 120 +- .../reference/statements/try...catch/index.md | 254 ++-- .../javascript/reference/statements/var/index.md | 212 ++- .../javascript/reference/statements/while/index.md | 121 +- .../javascript/reference/statements/with/index.md | 163 +-- .../web/javascript/reference/strict_mode/index.md | 305 +++-- .../transitioning_to_strict_mode/index.md | 137 +- .../reference/template_literals/index.md | 231 ++-- .../javascript/reference/trailing_commas/index.md | 182 ++- files/fr/web/javascript/shells/index.md | 50 +- .../index.md | 138 +- files/fr/web/javascript/typed_arrays/index.md | 192 ++- 841 files changed, 48888 insertions(+), 61369 deletions(-) (limited to 'files/fr/web/javascript/reference/global_objects/asyncfunction') diff --git a/files/fr/web/javascript/a_re-introduction_to_javascript/index.md b/files/fr/web/javascript/a_re-introduction_to_javascript/index.md index 0724f02931..962ace144f 100644 --- a/files/fr/web/javascript/a_re-introduction_to_javascript/index.md +++ b/files/fr/web/javascript/a_re-introduction_to_javascript/index.md @@ -11,125 +11,126 @@ tags: translation_of: Web/JavaScript/A_re-introduction_to_JavaScript original_slug: Web/JavaScript/Une_réintroduction_à_JavaScript --- -
{{jsSidebar}}
+{{jsSidebar}} -

Pourquoi une réintroduction ? Parce que JavaScript est connu pour être source d'incompréhensions. Bien que souvent raillé comme étant un simple jouet, derrière sa simplicité désarmante se cachent certaines fonctionnalités de langage très puissantes. JavaScript est maintenant utilisé par un nombre incroyable d'applications de haut rang, ce qui montre qu'une connaissance approfondie de cette technologie est une compétence importante pour toute développeuse ou développeur web ou mobile.

+Pourquoi une réintroduction ? Parce que JavaScript est connu pour être source d'incompréhensions. Bien que souvent raillé comme étant un simple jouet, derrière sa simplicité désarmante se cachent certaines fonctionnalités de langage très puissantes. JavaScript est maintenant utilisé par un nombre incroyable d'applications de haut rang, ce qui montre qu'une connaissance approfondie de cette technologie est une compétence importante pour toute développeuse ou développeur web ou mobile. -

Il peut être utile de commencer avec un aperçu de l'histoire de ce langage. JavaScript a été créé en 1995 par Brendan Eich, alors ingénieur à Netscape. Ce langage est sorti au grand jour pour la première fois avec Netscape 2 au début de l'année 1996. Il était au départ censé s'appeler LiveScript, mais a été renommé par une décision marketing mal avisée dans le but de capitaliser sur la popularité du langage Java de Sun Microsystems, malgré le fait qu'ils n'aient que très peu en commun. Cela n'a jamais cessé d'être une source de confusion.

+Il peut être utile de commencer avec un aperçu de l'histoire de ce langage. JavaScript a été créé en 1995 par Brendan Eich, alors ingénieur à Netscape. Ce langage est sorti au grand jour pour la première fois avec Netscape 2 au début de l'année 1996. Il était au départ censé s'appeler LiveScript, mais a été renommé par une décision marketing mal avisée dans le but de capitaliser sur la popularité du langage Java de Sun Microsystems, malgré le fait qu'ils n'aient que très peu en commun. Cela n'a jamais cessé d'être une source de confusion. -

Quelques mois plus tard, Microsoft a lancé avec Internet Explorer 3 une version du langage globalement compatible, appelée JScript. Quelques mois après, Netscape a soumis le langage à l'Ecma International, une organisation de normalisation européenne, ce qui a permis d'aboutir à la première édition du standard ECMAScript en 1997. Ce standard a reçu une mise à jour importante appelée ECMAScript edition 3 en 1999, et est resté relativement stable depuis. La quatrième édition a été abandonnée suite à des différends portants sur la complexité du langage. De nombreuses sections de la quatrième édition ont été utilisées pour servir de fondation à la cinquième édition d'ECMAScript, publiée en décembre 2009. La sixième édition, qui apporte des nouveautés majeures, a été publiée en juin 2015.

+Quelques mois plus tard, Microsoft a lancé avec Internet Explorer 3 une version du langage globalement compatible, appelée JScript. Quelques mois après, Netscape a soumis le langage à l'[Ecma International](https://www.ecma-international.org/), une organisation de normalisation européenne, ce qui a permis d'aboutir à la première édition du standard [ECMAScript](/fr/docs/Glossary/ECMAScript) en 1997. Ce standard a reçu une mise à jour importante appelée [ECMAScript edition 3](https://www.ecma-international.org/publications/standards/Ecma-262.htm) en 1999, et est resté relativement stable depuis. La quatrième édition a été abandonnée suite à des différends portants sur la complexité du langage. De nombreuses sections de la quatrième édition ont été utilisées pour servir de fondation à la cinquième édition d'ECMAScript, publiée en décembre 2009. La sixième édition, qui apporte des nouveautés majeures, a été publiée en juin 2015. -
-

Note : Dans la suite de cet article et à des fins de simplicité, nous utiliserons les termes « JavaScript » et « ECMAScript » pour désigner la même chose.

-
+> **Note :** Dans la suite de cet article et à des fins de simplicité, nous utiliserons les termes « JavaScript » et « ECMAScript » pour désigner la même chose. -

Contrairement à la plupart des langages de programmation, JavaScript n'a pas de concept d'entrée ou de sortie. Il est conçu pour s'exécuter comme un langage de script dans un environnement hôte, et c'est à cet environnement de fournir des mécanismes de communication avec le monde extérieur. L'environnement hôte le plus commun est un navigateur, mais des interpréteurs JavaScript existent également dans Adobe Acrobat, Photoshop, les images SVG, le moteur de widgets de Yahoo!, et même au sein d'environnements côté serveur tels que Node.js. Cette liste ne se limite pas qu'à ces éléments et on retrouve également JavaScript dans les bases de données NoSQL telles que Apache CouchDB, les ordinateurs embarqués ou encore des environnements de bureaux comme GNOME (l'une des interfaces graphiques les plus populaires des systèmes d'exploitation GNU/Linux), etc.

+Contrairement à la plupart des langages de programmation, JavaScript n'a pas de concept d'entrée ou de sortie. Il est conçu pour s'exécuter comme un langage de script dans un environnement hôte, et c'est à cet environnement de fournir des mécanismes de communication avec le monde extérieur. L'environnement hôte le plus commun est un navigateur, mais des interpréteurs JavaScript existent également dans Adobe Acrobat, Photoshop, les images SVG, le moteur de widgets de Yahoo!, et même au sein d'environnements côté serveur tels que [Node.js](https://nodejs.org/). Cette liste ne se limite pas qu'à ces éléments et on retrouve également JavaScript dans les bases de données NoSQL telles que [Apache CouchDB](https://couchdb.apache.org/), les ordinateurs embarqués ou encore des environnements de bureaux comme [GNOME](https://www.gnome.org/) (l'une des interfaces graphiques les plus populaires des systèmes d'exploitation GNU/Linux), etc. -

Aperçu

+## Aperçu -

JavaScript est un langage dynamique multi-paradigme : il dispose de différents types, opérateurs, objets natifs et méthodes. Sa syntaxe s'inspire des langages Java et C et de nombreuses structures de ces langages s'appliquent également à JavaScript. JavaScript permet la programmation orientée objet avec les prototypes (voir l'héritage et la chaîne de prototypes et les classes apparues avec ES6/ES2015). JavaScript permet également la programmation fonctionnelle car ses fonctions sont des objets et on peut donc stocker ces fonctions dans des variables et les transmettre comme n'importe quel objet.

+JavaScript est un langage dynamique multi-paradigme : il dispose de différents types, opérateurs, objets natifs et méthodes. Sa syntaxe s'inspire des langages Java et C et de nombreuses structures de ces langages s'appliquent également à JavaScript. JavaScript permet la programmation orientée objet avec les prototypes (voir [l'héritage et la chaîne de prototypes](/fr/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) et [les classes](/fr/docs/Web/JavaScript/Reference/Classes) apparues avec ES6/ES2015). JavaScript permet également la programmation fonctionnelle car ses fonctions sont des objets et on peut donc stocker ces fonctions dans des variables et les transmettre comme n'importe quel objet. -

Commençons par nous intéresser aux briques de base de tout langage : les types. Les programmes en JavaScript manipulent des valeurs, et ces valeurs appartiennent toutes à un type. Les types JavaScript sont :

+Commençons par nous intéresser aux briques de base de tout langage : les types. Les programmes en JavaScript manipulent des valeurs, et ces valeurs appartiennent toutes à un type. Les types JavaScript sont : - +- Les nombres : [`Number`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Number) +- Les grands entiers (_BigInt_) : [`BigInt`](/fr/docs/Web/JavaScript/Reference/Global_Objects/BigInt) +- Les chaînes de caractères : [`String`](/fr/docs/Web/JavaScript/Reference/Global_Objects/String) +- Les booléens : [`Boolean`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Boolean) +- Les fonctions : [`Function`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function) +- Les objets : [`Object`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object) +- Les symboles : [`Symbol`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Symbol) (apparus avec la sixième édition d'ECMAScript, ES2015) -

On aura également undefined et null, qui sont relativement étranges. Les tableaux ou Array permettent d'organiser des séries d'objets au sein d'un même objet. Les dates (Date) et les expressions rationnelles (RegExp) qui sont également des objets nativement disponibles en JavaScript. Afin d'être tout à fait précis, les fonctions sont aussi une sorte particulière d'objets, de sorte que le diagramme de types ressemble plutôt à ceci :

+On aura également [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) et [`null`](/fr/docs/Web/JavaScript/Reference/Global_Objects/null), qui sont relativement étranges. Les [tableaux ou `Array`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Array) permettent d'organiser des séries d'objets au sein d'un même objet. Les [dates (`Date`)](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date) et les [expressions rationnelles (`RegExp`)](/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp) qui sont également des objets nativement disponibles en JavaScript. Afin d'être tout à fait précis, les fonctions sont aussi une sorte particulière d'objets, de sorte que le diagramme de types ressemble plutôt à ceci : - +- [`Number`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Number) +- [`BigInt`](/fr/docs/Web/JavaScript/Reference/Global_Objects/BigInt) +- [`String`](/fr/docs/Web/JavaScript/Reference/Global_Objects/String) +- [`Boolean`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Boolean) +- [`Symbol`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Symbol) (apparu avec la sixième édition d'ECMAScript, ES2015) +- [`Object`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object) -

Enfin, il y a également quelques types natifs pour gérer les exceptions : Error. Pour garder une approche simple, nous utiliserons la première de ces listes pour présenter les types.

+ - [`Function`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function) + - [`Array`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Array) + - [`Date`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date) + - [`RegExp`](/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp) -

Les nombres

+- [`null`](/fr/docs/Web/JavaScript/Reference/Global_Objects/null) +- [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) -

ECMAScript possède deux types numériques intégrés : Number et BigInt.

+Enfin, il y a également quelques types natifs pour gérer les exceptions : [`Error`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Error). Pour garder une approche simple, nous utiliserons la première de ces listes pour présenter les types. -

Les nombres en JavaScript sont « des valeurs au format IEEE 754 en double précision 64 bits », d'après la spécification. Cela permet de représenter les nombres entre -(2^53 − 1) et 2^53 − 1. Lorsqu'on fait référence (ici ou dans les autres articles) à des entiers, on parle généralement d'une représentation d'un entier avec une valeur de type Number. En effet, les valeurs Number ne sont pas strictement des entiers et il faut donc prendre quelques précautions :

+## Les nombres -
+ECMAScript possède deux types numériques intégrés : **Number** et **BigInt**.
+
+Les nombres en JavaScript sont « des valeurs [au format IEEE 754 en double précision 64 bits](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) », d'après la spécification. Cela permet de représenter les nombres entre -(2^53 − 1) et 2^53 − 1. Lorsqu'on fait référence (ici ou dans les autres articles) à des entiers, on parle généralement d'une représentation d'un entier avec une valeur de type Number. En effet, les valeurs Number ne sont pas strictement des entiers et il faut donc prendre quelques précautions :
+
+```js
 console.log(3 / 2);             // 1.5 et pas 1
 console.log(Math.floor(3 / 2)); // 1
-
+``` -

Ainsi, un entier apparent est en fait implicitement un nombre à virgule flottante.

+Ainsi, un _entier apparent_ est en fait _implicitement un nombre à virgule flottante_. -

Aussi, faites attention à des choses comme :

+Aussi, faites attention à des choses comme : -
0.1 + 0.2 == 0.30000000000000004;
+```js +0.1 + 0.2 == 0.30000000000000004; +``` -

Dans la pratique, les valeurs entières sont traitées comme des entiers représentés sur 32 bits (certaines implémentations les stockent même ainsi tant qu'il n'y a pas besoin d'effectuer une opération valide pour un nombre mais pas pour un entier sur 32 bits). Cette représentation peut être importante pour les opérations binaires.

+Dans la pratique, les valeurs entières sont traitées comme des entiers représentés sur 32 bits (certaines implémentations les stockent même ainsi tant qu'il n'y a pas besoin d'effectuer une opération valide pour un nombre mais pas pour un entier sur 32 bits). Cette représentation peut être importante pour les opérations binaires. -

Les opérateurs arithmétiques standards sont gérés, dont l'addition, la soustraction, le reste arithmétique et ainsi de suite. Il existe également un objet natif, qui n'a pas été mentionné jusqu'à présent, appelé Math, qui permet de gérer certaines fonctions et constantes mathématiques plus avancées :

+Les [opérateurs arithmétiques](/fr/docs/Web/JavaScript/Reference/Operators#arithmetic_operators) standards sont gérés, dont l'addition, la soustraction, le reste arithmétique et ainsi de suite. Il existe également un objet natif, qui n'a pas été mentionné jusqu'à présent, appelé [`Math`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Math), qui permet de gérer certaines fonctions et constantes mathématiques plus avancées : -
+```js
 Math.sin(3.5);
 let circonference = 2 * Math.PI * r;
-
+``` -

On peut convertir une chaîne de caractères en un nombre entier à l'aide de la fonction intégrée parseInt(). Elle reçoit la base de conversion comme second paramètre, qui devrait toujours être fourni afin de lever une éventuelle ambiguïté :

+On peut convertir une chaîne de caractères en un nombre entier à l'aide de la fonction intégrée [`parseInt()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseInt). Elle reçoit la base de conversion comme second paramètre, qui devrait toujours être fourni afin de lever une éventuelle ambiguïté : -
+```js
 parseInt("123", 10); // 123
 parseInt("010", 10); //10
-
+``` -

Si la base n'est pas indiquée, les résultats peuvent être surprenants dans les anciens navigateurs qui datent de 2013 ou avant où les chaînes commençant par 0 pouvaient ne pas être considérées comme exprimées en notation octale. À moins que vous ne soyez certain du format de votre chaîne de caractères, vous pouvez obtenir des résultats surprenants sur ces anciens navigateurs :

+Si la base n'est pas indiquée, les résultats peuvent être surprenants dans les anciens navigateurs qui datent de 2013 ou avant où les chaînes commençant par `0` pouvaient ne pas être considérées comme exprimées en notation octale. À moins que vous ne soyez certain du format de votre chaîne de caractères, vous pouvez obtenir des résultats surprenants sur ces anciens navigateurs : -
+```js
 parseInt("010");  //  8
 parseInt("0x10"); // 16
-
+``` -

Cela se produit parce que la fonction parseInt() a été implémentée pour traiter la première chaîne comme un nombre octal à cause du zéro initial et la seconde comme une représentation hexadécimale car commençant avec 0x. Une telle notation hexadécimale peut toujours être utilisée mais la notation octale a été retirée.

+Cela se produit parce que la fonction [`parseInt()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseInt) a été implémentée pour traiter la première chaîne comme un nombre octal à cause du zéro initial et la seconde comme une représentation hexadécimale car commençant avec `0x`. Une telle notation hexadécimale peut toujours être utilisée mais la notation octale a été retirée. -

Si on souhaite convertir un nombre binaire en un entier, il suffit de changer la base :

+Si on souhaite convertir un nombre binaire en un entier, il suffit de changer la base : -
parseInt("11", 2); // 3
+```js +parseInt("11", 2); // 3 +``` -

De la même manière, vous pouvez traiter les nombres à virgule flottante à l'aide de la fonction intégrée parseFloat(), qui, à la différence de parseInt(), utilise toujours la base 10.

+De la même manière, vous pouvez traiter les nombres à virgule flottante à l'aide de la fonction intégrée [`parseFloat()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseFloat), qui, à la différence de [`parseInt()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseInt), utilise toujours la base 10. -

On peut également utiliser l'opérateur unaire + pour convertir des valeurs en nombres :

+On peut également utiliser l'opérateur unaire `+` pour convertir des valeurs en nombres : -
+```js
 + "42";   // 42
 + "010";  // 10
 + "0x10"; // 16
-
+``` -

Une valeur spéciale appelée NaN (qui signifie « Not a Number », soit « pas un nombre ») est renvoyée si la chaîne est non numérique :

+Une valeur spéciale appelée [`NaN`](/fr/docs/Web/JavaScript/Reference/Global_Objects/NaN) (qui signifie « _Not a Number_ », soit « pas un nombre ») est renvoyée si la chaîne est non numérique : -
parseInt("coucou", 10); // NaN
+```js +parseInt("coucou", 10); // NaN +``` -

NaN est « toxique » : si cette valeur est fournie en entrée pour n'importe quelle opération mathématique, le résultat sera également NaN :

+`NaN` est « toxique » : si cette valeur est fournie en entrée pour n'importe quelle opération mathématique, le résultat sera également `NaN` : -
NaN + 5; // NaN
+```js +NaN + 5; // NaN +``` -

Cette valeur peut être détectée grâce à la fonction native Number.isNaN() (qui fait exactement ce que son nom indique) :

+Cette valeur peut être détectée grâce à la fonction native [`Number.isNaN()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) (qui fait [exactement ce que son nom indique](/fr/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#description)) : -
+```js
 Number.isNaN(NaN); // true
 Number.isNaN('bonjour'); // false
 Number.isNaN('1'); // false
@@ -137,177 +138,178 @@ Number.isNaN(undefined); // false
 Number.isNaN({}); // false
 Number.isNaN([1]) // false
 Number.isNaN([1,2]) // false
-
+``` -

Mais ne testez pas le NaN en utilisant la fonction globale isNaN(), qui a un comportement peu intuitif :

+Mais ne testez pas le `NaN` en utilisant la fonction globale [`isNaN()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/isNaN), [qui a un comportement peu intuitif](/fr/docs/Web/JavaScript/Reference/Global_Objects/isNaN#confusing_special-case_behavior) : -
+```js
 isNaN('bonjour'); // true
 isNaN('1'); // false
 isNaN(undefined); // true
 isNaN({}); // true
 isNaN([1]) // false
 isNaN([1,2]) // true
-
+``` -

JavaScript dispose également de valeur spéciales pour l'infini Infinity et l'infini négatif (-Infinity) :

+JavaScript dispose également de valeur spéciales pour l'infini [`Infinity`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Infinity) et l'infini négatif (`-Infinity`) : -
+```js
 1 / 0; // Infinity
 -1 / 0; // -Infinity
-
+``` -

Il est possible de tester les valeurs Infinity, -Infinity et NaN à l'aide de la fonction native isFinite() :

+Il est possible de tester les valeurs `Infinity`, `-Infinity` et `NaN` à l'aide de la fonction native [`isFinite()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/isFinite) : -
+```js
 isFinite(1/0); // false
 isFinite(-Infinity); // false
 isFinite(NaN); // false
-
+``` -
-

Note : Les fonctions parseFloat() et parseInt() traitent une chaîne de caractères jusqu'à ce qu'elles atteignent un caractère qui n'est pas valide pour le format numérique indiqué, puis renvoient le nombre traité jusqu'à ce point. Cependant, l'opérateur "+" convertit simplement la chaîne à NaN à partir du moment où la chaîne contient le moindre caractère non valide. Vous pouvez tester ce comportement en manipulant la chaîne "10.2abc" avec chaque méthode dans la console afin de mieux comprendre les différences.

-
+> **Note :** Les fonctions [`parseFloat()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseFloat) et [`parseInt()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/parseInt) traitent une chaîne de caractères jusqu'à ce qu'elles atteignent un caractère qui n'est pas valide pour le format numérique indiqué, puis renvoient le nombre traité jusqu'à ce point. Cependant, l'opérateur "+" convertit simplement la chaîne à `NaN` à partir du moment où la chaîne contient le moindre caractère non valide. Vous pouvez tester ce comportement en manipulant la chaîne "10.2abc" avec chaque méthode dans la console afin de mieux comprendre les différences. -

Les chaînes de caractères

+## Les chaînes de caractères -

Les chaînes en JavaScript sont des séquences de caractères Unicode. Cette nouvelle devrait être bien accueillie par toute personne qui a déjà eu affaire à des problèmes d'internationalisation. Pour être plus précis, ce sont des séquences de codets UTF-16 : chaque codet est représenté par un nombre sur 16 bits et chaque caractère Unicode est représenté par 1 ou 2 codets.

+Les chaînes en JavaScript sont des séquences de [caractères Unicode](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#unicode). Cette nouvelle devrait être bien accueillie par toute personne qui a déjà eu affaire à des problèmes d'internationalisation. Pour être plus précis, ce sont des séquences de codets UTF-16 : chaque codet est représenté par un nombre sur 16 bits et chaque caractère Unicode est représenté par 1 ou 2 codets. -

Si vous voulez représenter un seul caractère, il suffit d'utiliser une chaîne qui contient un seul caractère.

+Si vous voulez représenter un seul caractère, il suffit d'utiliser une chaîne qui contient un seul caractère. -

Pour connaître la longueur d'une chaîne, utilisez sa propriété length :

+Pour connaître la longueur d'une chaîne, utilisez sa propriété [`length`](/fr/docs/Web/JavaScript/Reference/Global_Objects/String/length) : -
"bonjour".length; // 7
+```js +"bonjour".length; // 7 +``` -

C'est notre première rencontre avec les objets JavaScript ! Les chaînes peuvent également être utilisées comme des objets. Elles possèdent aussi des méthodes permettant de manipuler la chaîne et d'accéder à certaines informations sur cette chaîne de caractères :

+C'est notre première rencontre avec les objets JavaScript ! Les chaînes peuvent également être utilisées comme des [objets](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object). Elles possèdent aussi des [méthodes](/fr/docs/Web/JavaScript/Reference/Global_Objects/String#instance_methods) permettant de manipuler la chaîne et d'accéder à certaines informations sur cette chaîne de caractères : -
+```js
 "bonjour".charAt(0); // "b"
 "coucou monde".replace("coucou", "bonjour"); // "bonjour monde"
 "bonjour".toUpperCase(); // "BONJOUR"
-
+``` -

Les autres types

+## Les autres types -

JavaScript fait la distinction entre null, qui est un objet de type object indiquant une absence délibérée de valeur, et undefined qui est un objet de type undefined indiquant une variable non initialisée — c'est-à-dire qui n'a pas encore été assignée. Nous parlerons des variables plus tard, mais en JavaScript il est possible de déclarer une variable sans lui assigner de valeur. Si vous faites cela, le type de la variable sera undefined qui est une constante.

+JavaScript fait la distinction entre [`null`](/fr/docs/Web/JavaScript/Reference/Global_Objects/null), qui est un objet de type `object` indiquant une absence délibérée de valeur, et [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) qui est un objet de type `undefined` indiquant une variable non initialisée — c'est-à-dire qui n'a pas encore été assignée. Nous parlerons des variables plus tard, mais en JavaScript il est possible de déclarer une variable sans lui assigner de valeur. Si vous faites cela, le type de la variable sera `undefined` qui est une constante. -

JavaScript dispose d'un type booléen, dont les valeurs possibles sont true (vrai) et false (faux). L'un et l'autre sont des mots clés. Toute valeur peut être convertie en une valeur booléenne selon les règles suivantes :

+JavaScript dispose d'un type booléen, dont les valeurs possibles sont `true` (vrai) et `false` (faux). L'un et l'autre sont des mots clés. Toute valeur peut être convertie en une valeur booléenne selon les règles suivantes : -
    -
  1. false, 0, la chaîne vide (""), NaN, null et undefined deviennent toutes false
  2. -
  3. toutes les autres valeurs deviennent true.
  4. -
+1. `false`, `0`, la chaîne vide (`""`), `NaN`, `null` et `undefined` deviennent toutes `false` +2. toutes les autres valeurs deviennent `true`. -

Cette conversion peut être faite de manière explicite à l'aide de la fonction Boolean() :

+Cette conversion peut être faite de manière explicite à l'aide de la fonction `Boolean()` : -
+```js
 Boolean("");  // false
 Boolean(234); // true
-
+``` -

Cependant, c'est rarement nécessaire, puisque JavaScript effectuera cette conversion silencieusement chaque fois qu'il attend une valeur booléenne, par exemple dans une instruction if (voir plus bas). Pour cette raison, on parle souvent simplement de valeurs « vraies » et « fausses » pour indiquer des valeurs devenant respectivement true et false lorsqu'elles sont converties en valeurs booléennes.

+Cependant, c'est rarement nécessaire, puisque JavaScript effectuera cette conversion silencieusement chaque fois qu'il attend une valeur booléenne, par exemple dans une instruction `if` (voir plus bas). Pour cette raison, on parle souvent simplement de valeurs « vraies » et « fausses » pour indiquer des valeurs devenant respectivement `true` et `false` lorsqu'elles sont converties en valeurs booléennes. -

Les opérations booléennes comme && (et logique), || (ou logique) et ! (non logique) sont également gérées, comme on le verra plus bas.

+Les opérations booléennes comme `&&` (_et_ logique), `||` (_ou_ logique) et `!` (_non_ logique) sont également gérées, comme on le verra plus bas. -

Les variables

+## Les variables -

En JavaScript, on peut déclarer de nouvelles variables grâce à l'un de ces trois mots-clés : let, const, ou var.

+En JavaScript, on peut déclarer de nouvelles variables grâce à l'un de ces trois mots-clés : [`let`](/fr/docs/Web/JavaScript/Reference/Statements/let), [`const`](/fr/docs/Web/JavaScript/Reference/Statements/const), ou [`var`](/fr/docs/Web/JavaScript/Reference/Statements/var "/en/JavaScript/Reference/Statements/var"). -

let permet de déclarer des variables qui pourront être utilisées dans un bloc. La variable déclarée avec let est uniquement disponible dans le bloc qui contient la déclaration.

+**`let`** permet de déclarer des variables qui pourront être utilisées dans un bloc. La variable déclarée avec `let` est uniquement disponible dans le bloc qui contient la déclaration. -
+```js
 let a;
 let nom = "Simon";
-
+``` -

Voici un exemple de portée avec let :

+Voici un exemple de _portée_ avec **`let`** : -
+```js
 // variableLet n'est pas utilisable ici
 
-for (let variableLet = 0; variableLet < 5; variableLet++) {
+for (let variableLet = 0; variableLet < 5; variableLet++) {
   // variableLet peut être utilisée ici
 }
 
 // variableLet n'est pas utilisable ici
-
+``` -

const permet de déclarer des variables dont la valeur ne doit pas changer. Une variable déclarée avec const est disponible dans le bloc dans lequel elle est déclarée.

+**`const`** permet de déclarer des variables dont la valeur ne doit pas changer. Une variable déclarée avec `const` est disponible dans le bloc dans lequel elle est déclarée. -
+```js
 const Pi = 3.14; // la constante Pi est définie
 Pi = 1; // produira une erreur, car on ne peut pas modifier une variable constante.
-
+``` -

var est le mot-clé le plus fréquemment utilisé pour déclarer des variables. Ce mot-clé était disponible avant let et const (c'était alors le seul qui permettait de déclarer des variables). Une variable qu'on déclare avec var est disponible dans la fonction dans laquelle elle est déclarée.

+**`var`** est le mot-clé le plus fréquemment utilisé pour déclarer des variables. Ce mot-clé était disponible avant `let` et `const` (c'était alors le seul qui permettait de déclarer des variables). Une variable qu'on déclare avec **`var`** est disponible dans la _fonction_ dans laquelle elle est déclarée. -
+```js
 var a;
 var nom = "simon";
-
+``` -

Voici un exemple pour étudier la portée d'une variable déclarée avec var :

+Voici un exemple pour étudier la portée d'une variable déclarée avec **`var`** : -
+```js
 // variableVar *est* utilisable ici
 
-for (var variableVar = 0; variableVar < 5; variableVar++) {
+for (var variableVar = 0; variableVar < 5; variableVar++) {
   // variableVar *est* également disponible ici
 }
 
-// variableVar *est* toujours disponible ici
+// variableVar *est* toujours disponible ici +``` -

Si on déclare une variable sans lui affecter aucune valeur, son type sera alors undefined.

+Si on déclare une variable sans lui affecter aucune valeur, son type sera alors `undefined`. -

JavaScript possède une différence importante quant aux autres langages de programmation comme Java : en JavaScript, les blocs ne créent pas de portées pour les variables déclarées avec var, c'est la fonction qui gère la portée d'une variable déclarée avec var. Aussi, si une variable est définie avec var au sein d'une instruction conditionnelle avec if, cette variable sera visible depuis l'ensemble de la fonction. Avec ECMAScript 2015, les instructions de déclarations, let et const permettent de créer des variables dont la portée est limitée à celle du bloc qui l'englobe.

+JavaScript possède une différence importante quant aux autres langages de programmation comme Java : en JavaScript, les blocs ne créent pas de portées pour les variables déclarées avec `var`, c'est la fonction qui gère la portée d'une variable déclarée avec `var`. Aussi, si une variable est définie avec `var` au sein d'une instruction conditionnelle avec `if`, cette variable sera visible depuis l'ensemble de la fonction. Avec ECMAScript 2015, les instructions de déclarations, [`let`](/fr/docs/Web/JavaScript/Reference/Statements/let) et [`const`](/fr/docs/Web/JavaScript/Reference/Statements/const) permettent de créer des variables dont la portée est limitée à celle du bloc qui l'englobe. -

Les opérateurs

+## Les opérateurs -

Les opérateurs numériques en JavaScript sont +, -, *, / et % (qui est l'opérateur de reste, à ne pas confondre avec le « modulo » mathématique). Les valeurs sont affectées à l'aide de = et il existe également des opérateurs d'affectation combinés comme += et -=. Ils sont équivalents à x = x opérateur y.

+Les opérateurs numériques en JavaScript sont `+`, `-`, `*`, `/` et `%` (qui est [l'opérateur de reste, à ne pas confondre avec le « modulo » mathématique]()). Les valeurs sont affectées à l'aide de `=` et il existe également des opérateurs d'affectation combinés comme `+=` et `-=`. Ils sont équivalents à `x = x opérateur y`. -
+```js
 x += 5;
 x = x + 5;
-
+``` -

Vous pouvez utiliser ++ et -- respectivement pour incrémenter et pour décrémenter. Ils peuvent être utilisés comme opérateurs préfixes ou suffixes.

+Vous pouvez utiliser `++` et `--` respectivement pour incrémenter et pour décrémenter. Ils peuvent être utilisés comme opérateurs préfixes ou suffixes. -

L'opérateur + permet également de concaténer des chaînes :

+L'[opérateur `+` ]()permet également de concaténer des chaînes : -
"coucou" + " monde"; // "coucou monde"
+```js +"coucou" + " monde"; // "coucou monde" +``` -

Si vous additionnez une chaîne à un nombre (ou une autre valeur), tout est d'abord converti en une chaîne. Ceci pourrait vous surprendre :

+Si vous additionnez une chaîne à un nombre (ou une autre valeur), tout est d'abord converti en une chaîne. Ceci pourrait vous surprendre : -
+```js
 "3" + 4 + 5; // "345"
 3 + 4 + "5"; // "75"
-
+``` -

L'ajout d'une chaîne vide à une valeur est une manière utile de convertir cette valeur une chaîne de caractères.

+L'ajout d'une chaîne vide à une valeur est une manière utile de convertir cette valeur une chaîne de caractères. -

Les comparaisons en JavaScript se font à l'aide des opérateurs <, >, <= et >=. Ceux-ci fonctionnent tant pour les chaînes que pour les nombres. L'égalité est un peu moins évidente. L'opérateur double égal effectue une équivalence si vous lui donnez des types différents, ce qui donne parfois des résultats intéressants :

+Les [comparaisons](/fr/docs/Web/JavaScript/Reference/Operators) en JavaScript se font à l'aide des opérateurs `<`, `>`, `<=` et `>=`. Ceux-ci fonctionnent tant pour les chaînes que pour les nombres. L'égalité est un peu moins évidente. L'opérateur double égal effectue une équivalence si vous lui donnez des types différents, ce qui donne parfois des résultats intéressants : -
+```js
 123 == "123"; // true
 1 == true;    // true
-
+``` -

Pour éviter les conversions implicites avant les comparaisons, utilisez l'opérateur triple égal :

+Pour éviter les conversions implicites avant les comparaisons, utilisez l'opérateur triple égal : -
+```js
 123 === "123"; //false
 true === true; // true
-
+``` -

Les opérateurs != et !== existent également.

+Les opérateurs `!=` et `!==` existent également. -

JavaScript dispose également d'opérations bit à bit.

+JavaScript dispose également d'[opérations bit à bit](/fr/docs/Web/JavaScript/Reference/Operators). -

Les structures de contrôle

+## Les structures de contrôle -

JavaScript dispose d'un ensemble de structures de contrôle similaires aux autres langages de la famille du langage C. Les structures conditionnelles sont présentes avec if et else ; lesquels peuvent être chaînés si nécessaire :

+JavaScript dispose d'un ensemble de structures de contrôle similaires aux autres langages de la famille du langage C. Les structures conditionnelles sont présentes avec `if` et `else` ; lesquels peuvent être chaînés si nécessaire : -
+```js
 let nom = "des chatons";
 if (nom == "des chiots") {
   nom += " !";
@@ -317,11 +319,11 @@ if (nom == "des chiots") {
   nom = " !" + nom;
 }
 nom == "des chatons !!"
-
+``` -

JavaScript dispose également de boucles while et do-while. Les premières permettent de former des boucles basiques ; les secondes permettent de construire des boucles qui seront exécutées au moins une fois :

+JavaScript dispose également de boucles `while` et `do-while`. Les premières permettent de former des boucles basiques ; les secondes permettent de construire des boucles qui seront exécutées au moins une fois : -
+```js
 while (true) {
   // une boucle infinie !
 }
@@ -330,53 +332,61 @@ let input;
 do {
   input = getInput();
 } while (inputNonValide(input));
-
+``` -

Les boucles for en JavaScript sont les mêmes qu'en C et en Java : elles permettent de fournir les informations de contrôle de la boucle en une seule ligne.

+Les boucles [`for`](/fr/docs/Web/JavaScript/Reference/Statements/for) en JavaScript sont les mêmes qu'en C et en Java : elles permettent de fournir les informations de contrôle de la boucle en une seule ligne. -
-for (let i = 0; i < 5; i++) {
+```js
+for (let i = 0; i < 5; i++) {
   // Sera exécutée cinq fois
 }
-
+``` -

JavaScript permet également d'utiliser deux autres types de boucles : for...of :

+JavaScript permet également d'utiliser deux autres types de boucles : [`for`...`of`](/fr/docs/Web/JavaScript/Reference/Statements/for...of) : -
+```js
 for (let element of tableau) {
   // utiliser des instructions
   // pour manipuler la valeur element
 }
-
+``` -

et for...in :

+et [`for`...`in`](/fr/docs/Web/JavaScript/Reference/Statements/for...in) : -
+```js
 for (let propriete in objet) {
   // utiliser des instructions
   // pour manipuler la propriété de l'objet
 }
-
+``` -

Les opérateurs && et || utilisent une logique de court-circuit, ce qui signifie qu'ils exécuteront leur second opérande ou non selon la valeur du premier. C'est très utile pour vérifier qu'un objet n'est pas égal à null avant d'essayer d'accéder à ses attributs :

+Les opérateurs `&&` et `||` utilisent une logique de court-circuit, ce qui signifie qu'ils exécuteront leur second opérande ou non selon la valeur du premier. C'est très utile pour vérifier qu'un objet n'est pas égal à `null` avant d'essayer d'accéder à ses attributs : -
let nom = o && o.getNom();
+```js +let nom = o && o.getNom(); +``` -

Ou pour définir des valeurs par défaut :

+Ou pour définir des valeurs par défaut : -
let nom = autreNom || "nomParDéfaut";
+```js +let nom = autreNom || "nomParDéfaut"; +``` -

De la même façon, le OU peut être utilisé pour mettre en cache des valeurs (lorsque les valeurs équivalentes à faux sont invalides) :

+De la même façon, le OU peut être utilisé pour mettre en cache des valeurs (lorsque les valeurs équivalentes à faux sont invalides) : -
let nom = nomEnCache || (nomEnCache = getNom());
+```js +let nom = nomEnCache || (nomEnCache = getNom()); +``` -

JavaScript propose également un opérateur ternaire pour les assignations conditionnelles en une ligne :

+JavaScript propose également un opérateur ternaire pour les assignations conditionnelles en une ligne : -
let permis = (age > 18) ? "oui" : "non";
+```js +let permis = (age > 18) ? "oui" : "non"; +``` -

L'instruction switch peut être utilisée pour différentes branches de code basées sur un nombre ou une chaîne :

+L'instruction `switch` peut être utilisée pour différentes branches de code basées sur un nombre ou une chaîne : -
+```js
 switch (action) {
   case 'dessiner':
     dessine();
@@ -387,58 +397,64 @@ switch (action) {
   default:
     neRienFaire();
 }
-
+``` -

Si vous n'ajoutez pas d'instruction break, l'exécution va se poursuivre au niveau suivant. C'est rarement ce qui est désiré, en fait ça vaut même la peine de préciser dans un commentaire si la poursuite au cas suivant est délibérée pour aider au débogage :

+Si vous n'ajoutez pas d'instruction `break`, l'exécution va se poursuivre au niveau suivant. C'est rarement ce qui est désiré, en fait ça vaut même la peine de préciser dans un commentaire si la poursuite au cas suivant est délibérée pour aider au débogage : -
switch (a) {
+```js
+switch (a) {
   case 1: // identique au cas 2
   case 2:
     mange();
     break;
   default:
     nerienfaire();
-}
+} +``` -

La clause default est optionnelle. Vous pouvez placer des expressions à la fois dans la partie switch et dans les cas à gérer si vous voulez ; les comparaisons entre les deux se font comme si on avait utilisé l'opérateur === :

+La clause `default` est optionnelle. Vous pouvez placer des expressions à la fois dans la partie `switch` et dans les cas à gérer si vous voulez ; les comparaisons entre les deux se font comme si on avait utilisé l'opérateur `===` : -
switch (1 + 3){
+```js
+switch (1 + 3){
   case 2 + 2:
     yay();
     break;
   default:
     nArriveJamais();
-}
+} +``` -

Les objets

+## Les objets -

Les objets en JavaScript sont simplement des collections de paires nom-valeur. Dans ce sens, ils sont similaires aux :

+Les objets en JavaScript sont simplement des collections de paires nom-valeur. Dans ce sens, ils sont similaires aux : - +- dictionnaires en Python, +- hashs en Perl et Ruby, +- tables de hachage en C et C++, +- HashMaps en Java, +- tableaux associatifs en PHP. -

Le fait que cette structure de données soit si largement utilisée est un témoignage de sa polyvalence. Puisque tout (sauf les types de base) est un objet en JavaScript, tout programme écrit dans ce langage implique naturellement un grand nombre de recherches dans des tables de hachage. C'est une bonne chose que ce soit si rapide !

+Le fait que cette structure de données soit si largement utilisée est un témoignage de sa polyvalence. Puisque tout (sauf les types de base) est un objet en JavaScript, tout programme écrit dans ce langage implique naturellement un grand nombre de recherches dans des tables de hachage. C'est une bonne chose que ce soit si rapide ! -

La partie « nom » est une chaîne JavaScript, tandis que la partie « valeur » peut être n'importe quelle valeur JavaScript, y compris d'autres objets. Cela permet de construire des structures de données de n'importe quel niveau de complexité.

+La partie « nom » est une chaîne JavaScript, tandis que la partie « valeur » peut être n'importe quelle valeur JavaScript, y compris d'autres objets. Cela permet de construire des structures de données de n'importe quel niveau de complexité. -

Il existe deux façons très simples pour créer un objet vide :

+Il existe deux façons très simples pour créer un objet vide : -
let obj = new Object();
+```js +let obj = new Object(); +``` -

Et :

+Et : -
let obj = {};
+```js +let obj = {}; +``` -

Ils sont sémantiquement équivalents ; la seconde écriture est appelée syntaxe littérale d'objet et est plus pratique. Cette syntaxe est également au cœur du format JSON et devrait être privilégiée à tout moment.

+Ils sont sémantiquement équivalents ; la seconde écriture est appelée syntaxe littérale d'objet et est plus pratique. Cette syntaxe est également au cœur du format JSON et devrait être privilégiée à tout moment. -

La syntaxe littérale pour écrire un objet peut être utilisée afin d'initialiser tout un objet :

+La syntaxe littérale pour écrire un objet peut être utilisée afin d'initialiser tout un objet : -
+```js
 let obj = {
   name: 'Carotte',
   _for: 'Max', // Le mot "for" est un mot réservé, utilisez plutôt "_for".
@@ -446,18 +462,19 @@ let obj = {
     color: 'orange',
     size: 12
   }
-};
+}; +``` -

L'accès aux attributs peut être enchaîné :

+L'accès aux attributs peut être enchaîné : -
+```js
 obj.details.color; // orange
 obj['details']['size']; // 12
-
+``` -

L'exemple suivant crée un prototype d'objet (Person) et une instance de ce prototype (you).

+L'exemple suivant crée un prototype d'objet (`Person`) et une instance de ce prototype (`you`). -
+```js
 function Person(name, age) {
   this.name = name;
   this.age = age;
@@ -466,226 +483,183 @@ function Person(name, age) {
 // Définir un objet
 let you = new Person('You', 24);
 // Nous créons une nouvelle personne nommée "You" âgée de 24 ans.
-
+``` -

Une fois l'objet créé, on peut accéder à ses propriétés de l'une des deux manières suivantes :

+**Une fois l'objet créé**, on peut accéder à ses propriétés de l'une des deux manières suivantes : -
+```js
 // notation par points
 obj.name = 'Simon';
 let name = obj.name;
-
+``` -

Et…

+Et… -
+```js
 // notation entre crochets
 obj['name'] = 'Simon';
 let name = obj['name'];
 // on peut utiliser une variable pour définir une clé
 let user = prompt('quelle clé ?');
 obj[user] = prompt('quelle valeur ?');
-
+``` -

Ces deux méthodes sont également sémantiquement équivalentes. La seconde méthode a l'avantage de fournir le nom de l'attribut de l'objet dans une chaîne, ce qui signifie qu'il peut être calculé au moment de l'exécution (mais ce qui peut empêcher certaines optimisations du moteur JavaScript). Elle peut également être utilisée pour définir et lire des propriétés dont les noms sont des mots réservés :

+Ces deux méthodes sont également sémantiquement équivalentes. La seconde méthode a l'avantage de fournir le nom de l'attribut de l'objet dans une chaîne, ce qui signifie qu'il peut être calculé au moment de l'exécution (mais ce qui peut empêcher certaines optimisations du moteur JavaScript). Elle peut également être utilisée pour définir et lire des propriétés dont les noms sont des [mots réservés](/fr/docs/Web/JavaScript/Reference/Lexical_grammar#keywords) : -
+```js
 obj.for = "Simon"; // erreur de syntaxe, car "for" est un mot réservé
 obj["for"] = "Simon"; // fonctionne très bien
-
+``` -
-

Note : À partir d'ECMAScript 5, les mots réservés peuvent être utilisés comme noms de propriétés d'objets « en vrac ». Cela signifie qu'ils n'ont pas besoin d'être « habillés » de guillemets lors de la définition des littéraux d'objet. Voir la spécification ES5.

-
+> **Note :** À partir d'ECMAScript 5, les mots réservés peuvent être utilisés comme noms de propriétés d'objets « en vrac ». Cela signifie qu'ils n'ont pas besoin d'être « habillés » de guillemets lors de la définition des littéraux d'objet. Voir [la spécification ES5](https://es5.github.io/#x7.6.1). -

Pour en savoir plus sur les objets et les prototypes, voir Object.prototype. Pour une explication des prototypes d'objets et des chaînes de prototypes, voir l'héritage et la chaîne de prototypes.

+Pour en savoir plus sur les objets et les prototypes, voir [`Object.prototype`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object). Pour une explication des prototypes d'objets et des chaînes de prototypes, voir [l'héritage et la chaîne de prototypes](/fr/docs/Web/JavaScript/Inheritance_and_the_prototype_chain). -
-

Note : À partir d'ECMAScript 2015, les clés des objets peuvent être définies par la variable en utilisant la notation entre parenthèses lors de sa création. {[phoneType] : 12345} est possible au lieu de simplement var userPhone = {}; userPhone[phoneType] = 12345;.

-
+> **Note :** À partir d'ECMAScript 2015, les clés des objets peuvent être définies par la variable en utilisant la notation entre parenthèses lors de sa création. `{[phoneType] : 12345}` est possible au lieu de simplement `var userPhone = {}; userPhone[phoneType] = 12345;`. -

Les tableaux

+## Les tableaux -

Les tableaux (Arrays) en JavaScript sont en fait un type spécial d'objets. Ils fonctionnent d'une façon tout à fait similaire aux objets normaux (on peut naturellement accéder aux propriétés numériques avec la syntaxe des crochets []), mais ils ont également une propriété magique appelée length. Elle vaut toujours un de plus que le plus grand indice dans le tableau.

+Les tableaux (_Arrays_) en JavaScript sont en fait un type spécial d'objets. Ils fonctionnent d'une façon tout à fait similaire aux objets normaux (on peut naturellement accéder aux propriétés numériques avec la syntaxe des crochets `[]`), mais ils ont également une propriété magique appelée `length`. Elle vaut toujours un de plus que le plus grand indice dans le tableau. -

L'ancienne manière de créer des tableaux est celle-ci :

+L'ancienne manière de créer des tableaux est celle-ci : -
+```js
 let a = new Array();
 a[0] = "chien";
 a[1] = "chat";
 a[2] = "poule";
 a.length; // 3
-
+``` -

Une notation plus pratique est la syntaxe littérale :

+Une notation plus pratique est la syntaxe littérale : -
+```js
 let a = ["chien", "chat", "poule"];
 a.length; // 3
-
+``` -

Notez que array.length ne correspond pas nécessairement au nombre d'éléments dans le tableau. Observez le code suivant :

+Notez que `array.length` ne correspond pas nécessairement au nombre d'éléments dans le tableau. Observez le code suivant : -
+```js
 let a = ["chien", "chat", "poule"];
 a[100] = "renard";
 a.length // 101
-
+``` -

Rappelez-vous : la longueur du tableau vaut simplement un de plus que l'indice le plus élevé.

+Rappelez-vous : la longueur du tableau vaut simplement un de plus que l'indice le plus élevé. -

Si vous interrogez un élément de tableau non existant, vous obtenez undefined :

+Si vous interrogez un élément de tableau non existant, vous obtenez `undefined` : -
typeof(a[90]); // undefined
+```js +typeof(a[90]); // undefined +``` -

Si vous prenez cela en compte, il est possible de parcourir un tableau à l'aide de la boucle suivante :

+Si vous prenez cela en compte, il est possible de parcourir un tableau à l'aide de la boucle suivante : -
-for (let i = 0; i < a.length; i++) {
+```js
+for (let i = 0; i < a.length; i++) {
   // Faire quelque chose avec a[i]
 }
-
+``` -

ES2015 a introduit la boucle plus concise for...of pour les objets itérables tels que les tableaux :

+ES2015 a introduit la boucle plus concise [`for`...`of`](/fr/docs/Web/JavaScript/Reference/Statements/for...of) pour les objets itérables tels que les tableaux : -
+```js
 for (const currentValue of a) {
   // Faire quelque chose avec currentValue
 }
-
+``` -

Vous pourriez également itérer sur un tableau en utilisant une boucle for...in, cependant cela n'itère pas sur les éléments du tableau, mais sur les indices du tableau. De plus, si quelqu'un ajoutait de nouvelles propriétés à Array.prototype, elles seraient également parcourues par une telle boucle. Par conséquent, ce type de boucle n'est pas recommandé pour les tableaux.

+Vous pourriez également itérer sur un tableau en utilisant une boucle [`for`...`in`](/fr/docs/Web/JavaScript/Reference/Statements/for...in), cependant cela n'itère pas sur les éléments du tableau, mais sur les indices du tableau. De plus, si quelqu'un ajoutait de nouvelles propriétés à `Array.prototype`, elles seraient également parcourues par une telle boucle. Par conséquent, ce type de boucle n'est pas recommandé pour les tableaux. -

Une autre façon d'itérer sur un tableau qui a été ajoutée avec ECMAScript 5 est forEach() :

+Une autre façon d'itérer sur un tableau qui a été ajoutée avec ECMAScript 5 est [`forEach()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) : -
+```js
 ['chien', 'chat', 'poule'].forEach(function(currentValue, index, array) {
   // Faire quelque chose avec currentValue ou array[index]
 });
-
- -

Si vous voulez ajouter un élément à un tableau, procédez comme suit :

- -
a.push(item);
- -

Les tableaux sont accompagnés d'un certain nombre de méthodes. Voir également la documentation complète sur les méthodes des tableaux.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nom de la méthodeDescription
a.toString()Renvoie une chaîne composée des différents éléments auxquels on a appliqué toString(), séparés par des virgules.
a.toLocaleString()Renvoie une chaîne composée des différents éléments auxquels on a appliqué toLocaleString(), séparés par des virgules.
a.concat(item1[, item2[, ...[, itemN]]])Renvoie un nouveau tableau auquel on a ajouté les éléments.
a.join(sep)Convertit le tableau en une chaîne dont les valeurs sont séparées par le paramètre sep.
a.pop()Renvoie le dernier élément du tableau et le retire du tableau.
a.push(item1, ..., itemN)Ajoute un ou plusieurs éléments à la fin du tableau.
a.shift()Renvoie le premier élément du tableau et le retire du tableau.
a.unshift(item1[, item2[, ...[, itemN]]])Ajoute des éléments au début du tableau.
a.slice(start[, end])Renvoie un sous-tableau.
a.sort([cmpfn])Trie le tableau (avec une fonction de comparaison optionnelle).
a.splice(start, delcount[, item1[, ...[, itemN]]])Permet de modifier un tableau en en supprimant une partie et en la remplaçant avec plus d'éléments.
a.reverse()Retourne le tableau.
- -

Les fonctions

- -

Avec les objets, les fonctions sont les composants de base d'une bonne compréhension de JavaScript. La fonction la plus basique n'a rien de compliqué :

- -
+```
+
+Si vous voulez ajouter un élément à un tableau, procédez comme suit :
+
+```js
+a.push(item);
+```
+
+Les tableaux sont accompagnés d'un certain nombre de méthodes. Voir également la [documentation complète sur les méthodes des tableaux](/fr/docs/Web/JavaScript/Reference/Global_Objects/Array).
+
+| Nom de la méthode                                    | Description                                                                                                              |
+| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
+| `a.toString()`                                       | Renvoie une chaîne composée des différents éléments auxquels on a appliqué `toString()`, séparés par des virgules.       |
+| `a.toLocaleString()`                                 | Renvoie une chaîne composée des différents éléments auxquels on a appliqué `toLocaleString()`, séparés par des virgules. |
+| `a.concat(item1[, item2[, ...[, itemN]]])`           | Renvoie un nouveau tableau auquel on a ajouté les éléments.                                                              |
+| `a.join(sep)`                                        | Convertit le tableau en une chaîne dont les valeurs sont séparées par le paramètre `sep`.                                |
+| `a.pop()`                                            | Renvoie le dernier élément du tableau et le retire du tableau.                                                           |
+| `a.push(item1, ..., itemN)`                          | Ajoute un ou plusieurs éléments à la fin du tableau.                                                                     |
+| `a.shift()`                                          | Renvoie le premier élément du tableau et le retire du tableau.                                                           |
+| `a.unshift(item1[, item2[, ...[, itemN]]])`          | Ajoute des éléments au début du tableau.                                                                                 |
+| `a.slice(start[, end])`                              | Renvoie un sous-tableau.                                                                                                 |
+| `a.sort([cmpfn])`                                    | Trie le tableau (avec une fonction de comparaison optionnelle).                                                          |
+| `a.splice(start, delcount[, item1[, ...[, itemN]]])` | Permet de modifier un tableau en en supprimant une partie et en la remplaçant avec plus d'éléments.                      |
+| `a.reverse()`                                        | Retourne le tableau.                                                                                                     |
+
+## Les fonctions
+
+Avec les objets, les fonctions sont les composants de base d'une bonne compréhension de JavaScript. La fonction la plus basique n'a rien de compliqué :
+
+```js
 function ajoute(x, y) {
   let total = x + y;
   return total;
 }
-
+``` -

Ceci représente tout ce qu'il y a à savoir à propos des fonctions basiques. Une fonction JavaScript peut recevoir 0 paramètre nommé ou plus. Son corps peut contenir autant d'instructions que vous le voulez et permet de déclarer des variables qui sont locales à la fonction. L'instruction return peut être utilisée pour renvoyer une valeur à tout moment, mettant ainsi fin à la fonction. Si aucune instruction return n'est utilisée (ou que l'instruction return n'est suivie d'aucune valeur), JavaScript renvoie undefined.

+Ceci représente tout ce qu'il y a à savoir à propos des fonctions basiques. Une fonction JavaScript peut recevoir 0 paramètre nommé ou plus. Son corps peut contenir autant d'instructions que vous le voulez et permet de déclarer des variables qui sont locales à la fonction. L'instruction `return` peut être utilisée pour renvoyer une valeur à tout moment, mettant ainsi fin à la fonction. Si aucune instruction `return` n'est utilisée (ou que l'instruction `return` n'est suivie d'aucune valeur), JavaScript renvoie `undefined`. -

On se rendra compte que les paramètres sont plus des indications qu'autre chose. Il est en effet possible d'appeler une fonction sans lui fournir les paramètres qu'elle attend, auquel cas ils vaudront undefined.

+On se rendra compte que les paramètres sont plus des indications qu'autre chose. Il est en effet possible d'appeler une fonction sans lui fournir les paramètres qu'elle attend, auquel cas ils vaudront `undefined`. -
+```js
 ajoute(); // NaN 
 // Il n'est pas possible d'additionner des variables indéfinies
-
+``` -

Il est également possible de fournir plus de paramètres que demandé par la fonction :

+Il est également possible de fournir plus de paramètres que demandé par la fonction : -
+```js
 ajoute(2, 3, 4); // 5
 // les deux premiers sont additionnés ; 4 est ignoré
-
+``` -

Par définition les fonctions ont accès à des variables supplémentaires à l'intérieur de leur corps, appelée arguments. Il s'agit d'un objet semblable à un tableau qui contient toutes les valeurs reçues par la fonction. Réécrivons la fonction ajoute pour recevoir autant de valeurs qu'on veut :

+Par définition les fonctions ont accès à des variables supplémentaires à l'intérieur de leur corps, appelée [`arguments`](/fr/docs/Web/JavaScript/Reference/Functions/arguments). Il s'agit d'un objet semblable à un tableau qui contient toutes les valeurs reçues par la fonction. Réécrivons la fonction `ajoute` pour recevoir autant de valeurs qu'on veut : -
function ajoute() {
+```js
+function ajoute() {
   let somme = 0;
-  for (let i = 0, j = arguments.length; i < j; i++) {
+  for (let i = 0, j = arguments.length; i < j; i++) {
     somme += arguments[i];
   }
   return somme;
 }
 
 ajoute(2, 3, 4, 5); // 14
-
+``` -

Ce n'est cependant pas vraiment plus utile que d'écrire 2 + 3 + 4 + 5. Écrivons plutôt une fonction de calcul de moyenne :

+Ce n'est cependant pas vraiment plus utile que d'écrire `2 + 3 + 4 + 5`. Écrivons plutôt une fonction de calcul de moyenne : -
+```js
 function moyenne() {
   let somme = 0;
-  for (let i = 0, j = arguments.length; i < j; i++) {
+  for (let i = 0, j = arguments.length; i < j; i++) {
     somme += arguments[i];
   }
   return somme / arguments.length;
 }
 moyenne(2, 3, 4, 5); // 3.5
-
+``` -

C'est assez utile, mais cela semble un peu verbeux. Pour réduire un peu plus ce code, nous pouvons envisager de substituer l'utilisation du tableau d'arguments par la syntaxe du reste des paramètres. De cette façon, nous pouvons passer un nombre quelconque d'arguments dans la fonction tout en gardant notre code minimal. L'opérateur du reste des paramètres est utilisé dans les listes de paramètres de fonctions avec le format : ...variable et il inclura dans cette variable la liste entière des arguments non capturés avec lesquels la fonction a été appelée. Nous remplacerons également la boucle for par une boucle for...of pour retourner les valeurs dans notre variable.

+C'est assez utile, mais cela semble un peu verbeux. Pour réduire un peu plus ce code, nous pouvons envisager de substituer l'utilisation du tableau d'arguments par [la syntaxe du reste des paramètres](/fr/docs/Web/JavaScript/Reference/Functions/rest_parameters). De cette façon, nous pouvons passer un nombre quelconque d'arguments dans la fonction tout en gardant notre code minimal. **L'opérateur du reste des paramètres** est utilisé dans les listes de paramètres de fonctions avec le format : **...variable** et il inclura dans cette variable la liste entière des arguments non capturés avec lesquels la fonction a été appelée. Nous remplacerons également la boucle **for** par une boucle **for...of** pour retourner les valeurs dans notre variable. -
+```js
 function moyenne(...args) {
   let somme = 0;
   for (let valeur of args) {
@@ -694,78 +668,80 @@ function moyenne(...args) {
   return somme / args.length;
 }
 moyenne(2, 3, 4, 5); // 3.5
-
+``` -

Avec le reste des paramètres, dans l'exemple précédent, args contient tous les arguments passés à la fonction.

+Avec le reste des paramètres, dans l'exemple précédent, `args` contient tous les arguments passés à la fonction. -

Il est important de noter que, quel que soit l'endroit où est écrit l'opérateur du reste des paramètres au sein de la déclaration de fonction, il stockera tous les arguments écrits après mais pas avant. Autrement dit, function avg(premiereValeur, ...args) stockera la première valeur passée à la fonction dans la variable firstValue et les autres arguments iront dans args.

+Il est important de noter que, quel que soit l'endroit où est écrit l'opérateur du reste des paramètres au sein de la déclaration de fonction, il stockera tous les arguments écrits _après_ mais pas avant. Autrement dit, _function avg(**premiereValeur,** ...args)_ stockera la première valeur passée à la fonction dans la variable **firstValue** et les autres arguments iront dans **args**. -

C'est très pratique, mais on rencontre un nouveau problème. La fonction moyenne() reçoit une liste de valeurs séparées par des virgules, mais comment fait-on si on souhaite trouver la moyenne des valeurs d'un tableau ?

+C'est très pratique, mais on rencontre un nouveau problème. La fonction `moyenne()` reçoit une liste de valeurs séparées par des virgules, mais comment fait-on si on souhaite trouver la moyenne des valeurs d'un tableau ? -

On pourrait simplement récrire la fonction comme ceci :

+On pourrait simplement récrire la fonction comme ceci : -
+```js
 function moyenneTableau(arr) {
   let somme = 0;
-  for (let i = 0, j = arr.length; i < j; i++) {
+  for (let i = 0, j = arr.length; i < j; i++) {
     somme += arr[i];
   }
   return somme / arr.length;
 }
 moyenneTableau([2, 3, 4, 5]); // 3.5
-
+``` -

Mais ce serait bien si on pouvait réutiliser la fonction qu'on avait déjà créée. Par chance, JavaScript permet d'appeler une fonction et de lui donner un tableau de paramètres d'une longueur arbitraire, à l'aide de la méthode apply() de tout objet Function.

+Mais ce serait bien si on pouvait réutiliser la fonction qu'on avait déjà créée. Par chance, JavaScript permet d'appeler une fonction et de lui donner un tableau de paramètres d'une longueur arbitraire, à l'aide de la méthode [`apply()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) de tout objet `Function`. -
moyenne.apply(null, [2, 3, 4, 5]); // 3.5
+```js +moyenne.apply(null, [2, 3, 4, 5]); // 3.5 +``` -

Le second paramètre envoyé à apply() est le tableau à utiliser comme paramètre ; nous parlerons du premier plus tard. Cela permet de souligner le fait que les fonctions sont aussi des objets.

+Le second paramètre envoyé à `apply()` est le tableau à utiliser comme paramètre ; nous parlerons du premier plus tard. Cela permet de souligner le fait que les fonctions sont aussi des objets. -

On peut également utiliser l'opérateur de décomposition pour l'appel et la définition de la fonction pour écrire, par exemple, moyenne(...nombres).

+On peut également utiliser [l'opérateur de décomposition](/fr/docs/Web/JavaScript/Reference/Operators/Spread_syntax) pour l'appel et la définition de la fonction pour écrire, par exemple, `moyenne(...nombres)`. -

Fonctions anonymes

+### Fonctions anonymes -

JavaScript vous permet de créer des fonctions anonymes, c'est-à-dire des fonctions sans nom :

+JavaScript vous permet de créer des fonctions anonymes, c'est-à-dire des fonctions sans nom : -
+```js
 function() {
   let somme = 0;
-  for (let i = 0, j = arguments.length; i < j; i++) {
+  for (let i = 0, j = arguments.length; i < j; i++) {
     somme += arguments[i];
   }
   return somme / arguments.length;
 };
-
+``` -

Mais une telle fonction anonyme n'est pas utile en soi, car sans nom, il n'y a aucun moyen d'appeler la fonction. En pratique, les fonctions anonymes sont donc généralement utilisées comme arguments pour d'autres fonctions ou sont rendues appelables en les assignant immédiatement à une variable qui peut être utilisée pour invoquer la fonction :

+Mais une telle fonction anonyme n'est pas utile en soi, car sans nom, il n'y a aucun moyen d'appeler la fonction. En pratique, les fonctions anonymes sont donc généralement utilisées comme arguments pour d'autres fonctions ou sont rendues appelables en les assignant immédiatement à une variable qui peut être utilisée pour invoquer la fonction : -
+```js
 let moyenne = function() {
   let somme = 0;
-  for (let i = 0, j = arguments.length; i < j; i++) {
+  for (let i = 0, j = arguments.length; i < j; i++) {
     somme += arguments[i];
   }
   return somme / arguments.length;
 };
-
+``` -

Cela rend la fonction anonyme invocable en appelant moyenne() avec des arguments — c'est-à-dire que c'est sémantiquement équivalent à déclarer la fonction en utilisant la forme nommée fonction moyenne().

+Cela rend la fonction anonyme invocable en appelant `moyenne()` avec des arguments — c'est-à-dire que c'est sémantiquement équivalent à déclarer la fonction en utilisant la forme nommée `fonction moyenne()`. -

Mais les fonctions anonymes peuvent être utiles même si elles ne sont jamais affectées à des variables ou transmises comme arguments à d'autres fonctions : JavaScript fournit un mécanisme permettant de déclarer et d'invoquer simultanément une fonction à l'aide d'une seule expression. Cela s'appelle une expression de fonction invoquée immédiatement (IIFE pour l'acronyme anglais), et la syntaxe pour l'utiliser avec une fonction anonyme ressemble à ceci :

+Mais les fonctions anonymes peuvent être utiles même si elles ne sont jamais affectées à des variables ou transmises comme arguments à d'autres fonctions : JavaScript fournit un mécanisme permettant de déclarer et d'invoquer simultanément une fonction à l'aide d'une seule expression. Cela s'appelle une [expression de fonction invoquée immédiatement (_IIFE_ pour l'acronyme anglais)](/fr/docs/Glossary/IIFE), et la syntaxe pour l'utiliser avec une fonction anonyme ressemble à ceci : -
+```js
 (function() {
   // …
 })();
-
+``` -

De plus amples détails sur les IIFE sont hors de portée de cet article d'introduction — mais un bon exemple de ce à quoi ils sont particulièrement utiles se trouve dans la section Émulation de méthodes privées avec des fermetures de l'article Fermetures.

+De plus amples détails sur les IIFE sont hors de portée de cet article d'introduction — mais un bon exemple de ce à quoi ils sont particulièrement utiles se trouve dans la section [Émulation de méthodes privées avec des fermetures](/fr/docs/Web/JavaScript/Closures#emulating_private_methods_with_closures) de l'article [Fermetures](/fr/docs/Web/JavaScript/Closures). -

Fonctions récursives

+### Fonctions récursives -

JavaScript permet d'appeler des fonctions récursivement. C'est particulièrement utile lorsqu'on a affaire à des structures en arbre, comme c'est le cas dans le DOM du navigateur.

+JavaScript permet d'appeler des fonctions récursivement. C'est particulièrement utile lorsqu'on a affaire à des structures en arbre, comme c'est le cas dans le DOM du navigateur. -
+```js
 function countChars(elm) {
   if (elm.nodeType == 3) { // TEXT_NODE
     return elm.nodeValue.length;
@@ -776,11 +752,11 @@ function countChars(elm) {
   }
   return count;
 }
-
+``` -

Cela met en évidence un problème potentiel avec les fonctions anonymes : comment les appeler de manière récursive si elles n'ont pas de nom ? JavaScript vous permet de nommer les expressions de fonctions pour cela. Vous pouvez utiliser des IIFE (« Immediately Invoked Function Expressions » en anglais soit « Expressions de fonctions immédiatement invoquées » en français) nommées, comme indiqué ci-dessous :

+Cela met en évidence un problème potentiel avec les fonctions anonymes : comment les appeler de manière récursive si elles n'ont pas de nom ? JavaScript vous permet de nommer les expressions de fonctions pour cela. Vous pouvez utiliser des [IIFE (« Immediately Invoked Function Expressions » en anglais soit « Expressions de fonctions immédiatement invoquées » en français)](/fr/docs/Glossary/IIFE) nommées, comme indiqué ci-dessous : -
+```js
 let charsInBody = (function counter(elm) {
   if (elm.nodeType == 3) { // TEXT_NODE
     return elm.nodeValue.length;
@@ -791,21 +767,19 @@ let charsInBody = (function counter(elm) {
   }
   return count;
 })(document.body);
-
+``` -

Le nom fourni à l'expression de la fonction n'est disponible qu'au sein de la portée de la fonction. Cela permet au moteur JavaScript de faire des optimisations. Cela rend également le code plus lisible. Le nom apparaîtra également dans le débogueur et les piles d'appel, ce qui permettra de gagner du temps.

+Le nom fourni à l'expression de la fonction n'est disponible qu'au sein de la portée de la fonction. Cela permet au moteur JavaScript de faire des optimisations. Cela rend également le code plus lisible. Le nom apparaîtra également dans le débogueur et les piles d'appel, ce qui permettra de gagner du temps. -

En JavaScript, les fonctions sont également des objets. Il est donc possible de leur ajouter ou de modifier leurs propriétés.

+En JavaScript, les fonctions sont également des objets. Il est donc possible de leur ajouter ou de modifier leurs propriétés. -

Les objets personnalisés

+## Les objets personnalisés -
-

Note : Pour une approche plus détaillée de la programmation orientée objet en JavaScript, voir l'Introduction à JavaScript orienté objet.

-
+> **Note :** Pour une approche plus détaillée de la programmation orientée objet en JavaScript, voir l'[Introduction à JavaScript orienté objet](/fr/docs/conflicting/Learn/JavaScript/Objects). -

Dans la programmation orientée objet classique, les objets sont des collections de données et de méthodes opérant sur ces données. Imaginons un objet personne avec les champs prénom et nom. Il y a deux manières d'afficher son nom complet : de la façon « prénom nom » ou de la façon « nom prénom ». À l'aide des fonctions et des objets vus précédemment, voici une manière de le faire :

+Dans la programmation orientée objet classique, les objets sont des collections de données et de méthodes opérant sur ces données. Imaginons un objet personne avec les champs prénom et nom. Il y a deux manières d'afficher son nom complet : de la façon « prénom nom » ou de la façon « nom prénom ». À l'aide des fonctions et des objets vus précédemment, voici une manière de le faire : -
+```js example-bad
 function creerPersonne(prenom, nom) {
   return {
     prenom: prenom,
@@ -824,11 +798,11 @@ function personneNomCompletInverse(personne) {
 let s = creerPersonne("Simon", "Willison");
 personneNomComplet(s); // Simon Willison
 personneNomCompletInverse(s); // Willison Simon
-
+``` -

Ça fonctionne, mais c'est inutilement verbeux. On va se retrouver avec des dizaines de fonctions dans l'espace de noms global. Ce dont on aurait vraiment besoin, c'est d'une manière d'attacher une fonction à un objet. Comme les fonctions sont des objets, c'est facile :

+Ça fonctionne, mais c'est inutilement verbeux. On va se retrouver avec des dizaines de fonctions dans l'espace de noms global. Ce dont on aurait vraiment besoin, c'est d'une manière d'attacher une fonction à un objet. Comme les fonctions sont des objets, c'est facile : -
+```js example-good
 function creerPersonne(prenom, nom) {
   return {
     prenom: prenom,
@@ -845,23 +819,23 @@ function creerPersonne(prenom, nom) {
 let s = creerPersonne("Simon", "Willison")
 s.nomComplet(); // Simon Willison
 s.nomCompletInverse(); // Willison Simon
-
+``` -

Il y a quelque chose que nous n'avons pas vu jusqu'à présent : le mot-clé this. Utilisé au sein d'une fonction, this fait référence à l'objet courant. Sa signification dépend de la façon dont la fonction a été appelée. Si elle a été appelée avec la notation utilisant le point ou les crochets sur un objet, cet objet devient this. Si cette notation n'a pas été utilisée pour l'appel, this fera référence à l'objet global.

+Il y a quelque chose que nous n'avons pas vu jusqu'à présent : le mot-clé [`this`](/fr/docs/Web/JavaScript/Reference/Operators/this). Utilisé au sein d'une fonction, `this` fait référence à l'objet courant. Sa signification dépend de la façon dont la fonction a été appelée. Si elle a été appelée avec [la notation utilisant le point ou les crochets](/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer#accessing_properties) sur un objet, cet objet devient `this`. Si cette notation n'a pas été utilisée pour l'appel, `this` fera référence à l'objet global. -

C'est une source fréquente d'erreurs. Par exemple :

+C'est une source fréquente d'erreurs. Par exemple : -
+```js
 let s = creerPersonne("Simon", "Willison");
 let nomComplet = s.nomComplet;
 nomComplet(); // undefined undefined
-
+``` -

Lorsqu'on appelle nomComplet() seul, sans utiliser s.nomComplet(), this est lié à l'objet global. Comme il n'y a pas de variables globales appelées prenom ou nom, on se retrouve avec undefined pour chacune.

+Lorsqu'on appelle `nomComplet()` seul, sans utiliser `s.nomComplet()`, `this` est lié à l'objet global. Comme il n'y a pas de variables globales appelées `prenom` ou `nom`, on se retrouve avec `undefined` pour chacune. -

On peut se servir du mot-clé this pour améliorer notre fonction de construction :

+On peut se servir du mot-clé `this` pour améliorer notre fonction de construction : -
+```js
 function Personne(prenom, nom) {
   this.prenom = prenom;
   this.nom = nom;
@@ -873,15 +847,15 @@ function Personne(prenom, nom) {
   }
 }
 let s = new Personne("Simon", "Willison");
-
+``` -

Nous avons utilisé un nouveau mot clé : new. new est très lié à this. Il crée un nouvel objet vide et appelle ensuite la fonction spécifiée, avec this pointant vers ce nouvel objet. On notera cependant que la fonction appelée avec ce this ne renvoie pas de valeur mais ne fait que modifier l'objet this. C'est l'opérateur new qui renvoie l'objet this à l'endroit de l'appel. Les fonctions prévues pour être appelées par new sont appelées des constructeurs. L'usage courant est de mettre la première lettre de ces fonctions en majuscule pour se souvenir de les appeler avec new.

+Nous avons utilisé un nouveau mot clé : [`new`](/fr/docs/Web/JavaScript/Reference/Operators/new). `new` est très lié à `this`. Il crée un nouvel objet vide et appelle ensuite la fonction spécifiée, avec `this` pointant vers ce nouvel objet. On notera cependant que la fonction appelée avec ce `this` ne renvoie pas de valeur mais ne fait que modifier l'objet `this`. C'est l'opérateur `new` qui renvoie l'objet `this` à l'endroit de l'appel. Les fonctions prévues pour être appelées par `new` sont appelées des constructeurs. L'usage courant est de mettre la première lettre de ces fonctions en majuscule pour se souvenir de les appeler avec `new`. -

La fonction améliorée présente toujours le même écueil avec l'appel de personneNomComplet() seul.

+La fonction améliorée présente toujours le même écueil avec l'appel de `personneNomComplet()` seul. -

Nos objets Personne s'améliorent, mais il leur reste certaines aspérités pas très esthétiques. Chaque fois que l'on crée une personne, on crée deux nouveaux objets de fonctions en même temps. Ne serait-ce pas mieux si ce code était partagé ?

+Nos objets `Personne` s'améliorent, mais il leur reste certaines aspérités pas très esthétiques. Chaque fois que l'on crée une personne, on crée deux nouveaux objets de fonctions en même temps. Ne serait-ce pas mieux si ce code était partagé ? -
+```js
 function personneNomComplet() {
   return this.prenom + ' ' + this.nom;
 }
@@ -896,11 +870,11 @@ function Personne(prenom, nom) {
   this.nomComplet = personneNomComplet;
   this.nomCompletInverse = personneNomCompletInverse;
 }
-
+``` -

C'est mieux : on crée les fonctions une seule fois, et on leur assigne des références au sein du constructeur. Est-il possible de faire encore mieux que ça ? La réponse est oui :

+C'est mieux : on crée les fonctions une seule fois, et on leur assigne des références au sein du constructeur. Est-il possible de faire encore mieux que ça ? La réponse est oui : -
+```js
 function Personne(prenom, nom) {
   this.prenom = prenom;
   this.nom = nom;
@@ -913,13 +887,13 @@ Personne.prototype.nomComplet = function() {
 Personne.prototype.nomCompletInverse = function() {
   return this.nom + ', ' + this.prenom;
 }
-
+``` -

Personne.prototype est un objet partagé par toutes les instances de Personne. Il fait partie d'une chaîne de résolution (qui a un nom spécial, la « chaîne de prototypes ») : chaque fois que vous essayez d'accéder à une propriété de Personne qui n'est pas définie, JavaScript va vérifier Personne.prototype pour voir si cette propriété n'existe pas plutôt à cet endroit. Par conséquent, tout ce qui est assigné à Personne.prototype devient disponible à toutes les instances de ce constructeur via l'objet this.

+`Personne.prototype` est un objet partagé par toutes les instances de `Personne`. Il fait partie d'une chaîne de résolution (qui a un nom spécial, la « chaîne de prototypes ») : chaque fois que vous essayez d'accéder à une propriété de `Personne` qui n'est pas définie, JavaScript va vérifier `Personne.prototype` pour voir si cette propriété n'existe pas plutôt à cet endroit. Par conséquent, tout ce qui est assigné à `Personne.prototype` devient disponible à toutes les instances de ce constructeur via l'objet `this`. -

C'est un outil incroyablement puissant. JavaScript vous permet de modifier le prototype de quelque chose à tout moment dans votre programme, cela signifie qu'il est possible d'ajouter des méthodes supplémentaires à des objets existants lors de l'exécution :

+C'est un outil incroyablement puissant. JavaScript vous permet de modifier le prototype de quelque chose à tout moment dans votre programme, cela signifie qu'il est possible d'ajouter des méthodes supplémentaires à des objets existants lors de l'exécution : -
+```js
 let s = new Personne("Simon", "Willison");
 s.prenomEnMajuscules(); // TypeError on line 1: s.prenomEnMajuscules is not a function
 
@@ -927,63 +901,69 @@ Personne.prototype.prenomEnMajuscules = function prenomEnMajuscules() {
   return this.prenom.toUpperCase()
 }
 s.prenomEnMajuscules(); // "SIMON"
-
+``` -

Il est également possible d'ajouter des choses aux prototypes de classes d'objets JavaScript prédéfinies. Ajoutons par exemple une méthode à String qui renvoie cette chaîne à l'envers :

+Il est également possible d'ajouter des choses aux prototypes de classes d'objets JavaScript prédéfinies. Ajoutons par exemple une méthode à `String` qui renvoie cette chaîne à l'envers : -
+```js
 let s = "Simon";
 s.inverse(); // TypeError on line 1: s.inverse is not a function
 
 String.prototype.inverse = function inverse() {
   let r = "";
-  for (let i = this.length - 1; i >= 0; i--) {
+  for (let i = this.length - 1; i >= 0; i--) {
     r += this[i];
   }
   return r;
 }
 s.inverse(); // "nomiS"
-
+``` -

Notre nouvelle méthode fonctionne même sur les chaînes littérales !

+Notre nouvelle méthode fonctionne même sur les chaînes littérales ! -
"Ceci peut maintenant être inversé.".inverse() // ".ésrevni ertê tnanetniam tuep iceC"
+```js +"Ceci peut maintenant être inversé.".inverse() // ".ésrevni ertê tnanetniam tuep iceC" +``` -

Comme mentionné précédemment, le prototype fait partie d'une chaîne de prototypes. Le début de cette chaîne est Object.prototype, dont toString() fait partie des méthodes. C'est cette méthode qui est appelée quand vous essayez de représenter un objet sous la forme d'une chaîne. Elle sera utile pour déboguer nos objets Personne :

+Comme mentionné précédemment, le prototype fait partie d'une chaîne de prototypes. Le début de cette chaîne est `Object.prototype`, dont `toString()` fait partie des méthodes. C'est cette méthode qui est appelée quand vous essayez de représenter un objet sous la forme d'une chaîne. Elle sera utile pour déboguer nos objets `Personne` : -
+```js
 let s = new Personne("Simon", "Willison");
 s; // [object Object]
 
 Personne.prototype.toString = function() {
-  return '<Personne : ' + this.nomComplet() + '>';
+  return '';
 }
-s.toString(); // "<Personne : Simon Willison>"
-
+s.toString(); // "" +``` -

Vous vous souvenez de la fonction moyenne.apply() qui avait un premier paramètre défini à null ? Nous pouvons en reparler à présent. Le premier paramètre d'apply() est l'objet qui doit être traité comme this. Par exemple, voici une implémentation de new :

+Vous vous souvenez de la fonction `moyenne.apply()` qui avait un premier paramètre défini à `null` ? Nous pouvons en reparler à présent. Le premier paramètre d'`apply()` est l'objet qui doit être traité comme `this`. Par exemple, voici une implémentation de `new` : -
+```js
 function trivialNew(constructor, ...args) {
   let o = {}; // Crée un objet
   constructor.apply(o, ...args);
   return o;
 }
-
+``` -

Ce n'est pas une réplique exacte de new parce qu'elle n'initialise pas la chaîne de prototype. La méthode apply() est difficile à illustrer, ce n'est pas quelque chose qu'on utilise très souvent, mais c'est utile de savoir qu'elle existe. Dans ce fragment de code, on utilise le reste des arguments, représentés par ...args. Comme son nom l'indique, cela représente le reste des arguments passés à la fonction.

+Ce n'est pas une réplique exacte de `new` parce qu'elle n'initialise pas la chaîne de prototype. La méthode `apply()` est difficile à illustrer, ce n'est pas quelque chose qu'on utilise très souvent, mais c'est utile de savoir qu'elle existe. Dans ce fragment de code, on utilise le [reste des arguments](/fr/docs/Web/JavaScript/Reference/Functions/rest_parameters), représentés par `...args`. Comme son nom l'indique, cela représente le reste des arguments passés à la fonction. -

Appeler

+Appeler -
let bill = trivialNew(Personne, ["William", "Orange"]);
+```js +let bill = trivialNew(Personne, ["William", "Orange"]); +``` -

est donc quasiment équivalent à :

+est donc quasiment équivalent à : -
let bill = new Personne("William", "Orange");
+```js +let bill = new Personne("William", "Orange"); +``` -

apply() possède une fonction proche, appelée call, qui permet de définir la valeur de this mais qui prend une liste d'arguments plutôt qu'un tableau.

+`apply()` possède une fonction proche, appelée [`call`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function/call), qui permet de définir la valeur de `this` mais qui prend une liste d'arguments plutôt qu'un tableau. -
+```js
 function nomMajuscule() {
   return this.nom.toUpperCase();
 }
@@ -991,13 +971,13 @@ let s = new Personne("Simon", "Willison");
 nomMajuscule.call(s); // correspond à:
 s.nomMajuscule = nomMajuscule;
 s.nomMajuscule();
-
+``` -

Les fonctions internes

+### Les fonctions internes -

Comme nous l'avons déjà vu, les déclarations de fonctions JavaScript peuvent se trouver à l'intérieur d'autres fonctions. Un détail important des fonctions définies à l'intérieur d'autres fonctions est qu'elles peuvent accéder à des variables de leur fonction parente :

+Comme nous l'avons déjà vu, les déclarations de fonctions JavaScript peuvent se trouver à l'intérieur d'autres fonctions. Un détail important des fonctions définies à l'intérieur d'autres fonctions est qu'elles peuvent accéder à des variables de leur fonction parente : -
+```js
 function parentFunc() {
   let a = 1;
   function fonctionImbriquee() {
@@ -1005,17 +985,18 @@ function parentFunc() {
     return a + b;
   }
   return fonctionImbriquee(); // 5
-}
+} +``` -

Cela peut s'avérer très utile dans l'écriture de code plus facilement maintenable. Si une fonction A dépend d'une ou deux autres fonctions B et C qui ne sont utiles à aucun autre endroit de votre code, on peut imbriquer ces fonctions utilitaires B et C à l'intérieur de la fonction A. Cela diminue le nombre de fonctions se trouvant dans la portée globale, ce qui est toujours une bonne chose.

+Cela peut s'avérer très utile dans l'écriture de code plus facilement maintenable. Si une fonction A dépend d'une ou deux autres fonctions B et C qui ne sont utiles à aucun autre endroit de votre code, on peut imbriquer ces fonctions utilitaires B et C à l'intérieur de la fonction A. Cela diminue le nombre de fonctions se trouvant dans la portée globale, ce qui est toujours une bonne chose. -

C'est également un bon moyen de se préserver de l'attrait trompeur des variables globales. Lorsqu'on écrit du code complexe, il est souvent tentant d'utiliser des variables globales pour partager des valeurs entre différentes fonctions, ce qui mène à du code difficile à maintenir. Les fonctions internes peuvent partager des variables avec leur parent, de sorte que vous pouvez utiliser ce mécanisme pour coupler des fonctions ensemble lorsque cela a un sens, sans pour autant polluer l'espace de noms global. Ce sont ainsi des « globales locales ». Cette technique doit être utilisée parcimonieusement, mais il est utile de s'en souvenir.

+C'est également un bon moyen de se préserver de l'attrait trompeur des variables globales. Lorsqu'on écrit du code complexe, il est souvent tentant d'utiliser des variables globales pour partager des valeurs entre différentes fonctions, ce qui mène à du code difficile à maintenir. Les fonctions internes peuvent partager des variables avec leur parent, de sorte que vous pouvez utiliser ce mécanisme pour coupler des fonctions ensemble lorsque cela a un sens, sans pour autant polluer l'espace de noms global. Ce sont ainsi des « globales locales ». Cette technique doit être utilisée parcimonieusement, mais il est utile de s'en souvenir. -

Les fermetures (Closures)

+## Les fermetures (_Closures_) -

Cela nous amène à l'une des abstractions les plus spectaculaires que JavaScript a à nous offrir. C'est également un des concepts les plus déroutants. Que fait ce fragment de code ?

+Cela nous amène à l'une des abstractions les plus spectaculaires que JavaScript a à nous offrir. C'est également un des concepts les plus déroutants. Que fait ce fragment de code ? -
+```js
 function creerAdditionneur(a) {
   return function(b) {
     return a + b;
@@ -1025,21 +1006,21 @@ let ajoute5 = creerAdditionneur(5);
 let ajoute20 = creerAdditionneur(20);
 ajoute5(6); // ?
 ajoute20(7); // ?
-
+``` -

Le nom de la fonction creerAdditionneur devrait vous donner un indice : elle crée de nouveaux additionneurs sous forme de fonctions qui, quand elles sont appelées avec un paramètre, l'ajoutent à celui avec lequel elles ont été créées.

+Le nom de la fonction `creerAdditionneur` devrait vous donner un indice : elle crée de nouveaux additionneurs sous forme de fonctions qui, quand elles sont appelées avec un paramètre, l'ajoutent à celui avec lequel elles ont été créées. -

Ce qui se passe ici est sensiblement la même chose qu'avec les fonctions internes dont nous avons parlé précédemment : une fonction définie à l'intérieur d'une autre fonction a accès aux variables de sa fonction extérieure. La seule différence ici est que la fonction extérieure a déjà renvoyé son résultat, et le bon sens semblerait vouloir être que ses variables locales n'existent plus. Mais elles existent encore ; autrement les additionneurs présentés ci-dessus ne fonctionneraient pas. Ce n'est pas tout, il y a même deux « copies » différentes des variables locales de creerAdditionneur : une dans laquelle a vaut 5 et une autre dans laquelle a vaut 20. Quel est donc le résultat de ces appels de fonction ?

+Ce qui se passe ici est sensiblement la même chose qu'avec les fonctions internes dont nous avons parlé précédemment : une fonction définie à l'intérieur d'une autre fonction a accès aux variables de sa fonction extérieure. La seule différence ici est que la fonction extérieure a déjà renvoyé son résultat, et le bon sens semblerait vouloir être que ses variables locales n'existent plus. Mai*s* elles existent _encore_ ; autrement les additionneurs présentés ci-dessus ne fonctionneraient pas. Ce n'est pas tout, il y a même deux « copies » différentes des variables locales de `creerAdditionneur` : une dans laquelle `a` vaut 5 et une autre dans laquelle `a` vaut 20. Quel est donc le résultat de ces appels de fonction ? -
+```js
 ajoute5(6); // renvoie 11
 ajoute20(7); // renvoie 27
-
+``` -

Voici ce qui se passe en réalité. Lorsque JavaScript exécute une fonction, un objet de portée est créé pour conserver les variables locales créées au sein de cette fonction. Il est initialisé avec les variables passées en paramètres à la fonction. Cela ressemble à l'objet global dans lequel toutes les variables et fonctions globales se trouvent, mais avec quelques différences importantes : premièrement, un nouvel objet de portée est créé chaque fois qu'une fonction commence à s'exécuter, et deuxièmement, contrairement à l'objet global (qui est accessible via this et qui, dans le navigateur, correspond à l'objet window), on ne peut pas directement accéder à ces objets de portée depuis le code JavaScript. Il n'existe pas de mécanisme permettant de parcourir les propriétés de l'objet de la portée courante par exemple.

+Voici ce qui se passe en réalité. Lorsque JavaScript exécute une fonction, un objet de portée est créé pour conserver les variables locales créées au sein de cette fonction. Il est initialisé avec les variables passées en paramètres à la fonction. Cela ressemble à l'objet global dans lequel toutes les variables et fonctions globales se trouvent, mais avec quelques différences importantes : premièrement, un nouvel objet de portée est créé chaque fois qu'une fonction commence à s'exécuter, et deuxièmement, contrairement à l'objet global (qui est accessible via `this` et qui, dans le navigateur, correspond à l'objet `window`), on ne peut pas directement accéder à ces objets de portée depuis le code JavaScript. Il n'existe pas de mécanisme permettant de parcourir les propriétés de l'objet de la portée courante par exemple. -

Donc, quand creerAdditionneur() est appelée, une portée est créée avec une propriété : a, qui est l'argument passé à la fonction creerAdditionneur(). Celle-ci renvoie alors une fonction nouvellement créée. Normalement, le ramasse-miettes de JavaScript devrait supprimer l'objet de portée créé pour creerAdditionneur() à ce moment, mais la fonction renvoyée garde une référence vers cet objet de portée. Par conséquent, il ne sera pas supprimé par le ramasse-miettes tant qu'il y a toujours des références à l'objet de type fonction que creerAdditionneur() a renvoyé.

+Donc, quand `creerAdditionneur()` est appelée, une portée est créée avec une propriété : `a`, qui est l'argument passé à la fonction `creerAdditionneur()`. Celle-ci renvoie alors une fonction nouvellement créée. Normalement, le ramasse-miettes de JavaScript devrait supprimer l'objet de portée créé pour `creerAdditionneur()` à ce moment, mais la fonction renvoyée garde une référence vers cet objet de portée. Par conséquent, il ne sera pas supprimé par le ramasse-miettes tant qu'il y a toujours des références à l'objet de type fonction que `creerAdditionneur()` a renvoyé. -

Les objets de portée forment une chaîne appelée chaîne de portée, similaire à la chaîne de prototypes utilisée par le système d'objets de JavaScript.

+Les objets de portée forment une chaîne appelée chaîne de portée, similaire à la chaîne de prototypes utilisée par le système d'objets de JavaScript. -

Une fermeture est la combinaison d'une fonction et de la portée de l'objet dans lequel elle a été créée. Les fermetures vous permettent de sauvegarder l'état — en tant que telles, elles peuvent souvent être utilisées à la place des objets. Vous pouvez trouver plusieurs excellentes introductions aux fermetures dans cet article.

+Une **fermeture** est la combinaison d'une fonction et de la portée de l'objet dans lequel elle a été créée. Les fermetures vous permettent de sauvegarder l'état — en tant que telles, elles peuvent souvent être utilisées à la place des objets. Vous pouvez trouver [plusieurs excellentes introductions aux fermetures dans cet article](https://stackoverflow.com/questions/111102/how-do-javascript-closures-work). diff --git a/files/fr/web/javascript/about_javascript/index.md b/files/fr/web/javascript/about_javascript/index.md index 3cdf73b473..9df9e079ce 100644 --- a/files/fr/web/javascript/about_javascript/index.md +++ b/files/fr/web/javascript/about_javascript/index.md @@ -8,50 +8,46 @@ tags: translation_of: Web/JavaScript/About_JavaScript original_slug: Web/JavaScript/A_propos --- -
{{jsSidebar}}
+{{jsSidebar}} -

Qu'est-ce que JavaScript ?

+## Qu'est-ce que JavaScript ? -

JavaScript®, souvent abrégé en JS, est le langage de script développé par Netscape utilisé dans des millions de pages web et d'applications serveur dans le monde entier. Le JavaScript de Netscape est une extension du langage de script standard ECMA-262 Edition 3 (ECMAScript), ne différant que légèrement des standards publiés. JavaScript est un langage léger, interprété, orienté objet (les fonctions étant des objets à part entière). Il est orienté prototype, multi-paradigme étant dynamique, impératif et fonctionnel à la fois

+[JavaScript](https://fr.wikipedia.org/wiki/JavaScript)®, souvent abrégé en JS, est le langage de script développé par Netscape utilisé dans des millions de pages web et d'applications serveur dans le monde entier. Le JavaScript de Netscape est une extension du langage de script standard ECMA-262 Edition 3 (ECMAScript), ne différant que légèrement des standards publiés. JavaScript est un langage léger, interprété, orienté objet (les fonctions étant des objets à part entière). Il est [orienté prototype](https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_prototype), multi-paradigme étant dynamique, impératif et fonctionnel à la fois -

Contrairement à une conception populaire, JavaScript n'est pas « du Java interprété ». En quelques mots, JavaScript est un langage de script dynamique utilisant une construction d'objets basée sur des prototypes. La syntaxe de base est volontairement similaire à Java et à C++ pour réduire le nombre de concepts nouveaux à assimiler par un débutant. Les structures de contrôle, telles que les instructions if, les boucles for et while, les blocs switch et try..catch fonctionnent de la même manière que dans ces langages (ou presque).

+Contrairement à une conception populaire, _JavaScript n'est pas « du Java interprété »_. En quelques mots, JavaScript est un langage de script dynamique utilisant une construction d'objets basée sur des prototypes. La syntaxe de base est volontairement similaire à Java et à C++ pour réduire le nombre de concepts nouveaux à assimiler par un débutant. Les structures de contrôle, telles que les instructions `if`, les boucles `for` et `while`, les blocs `switch` et `try..catch` fonctionnent de la même manière que dans ces langages (ou presque). -

JavaScript peut être employé en tant que langage procédural ou orienté objet. Les objets sont créés par le programme et des méthodes et des propriétés lui sont attachés lors de l'exécution, contrairement aux définitions de classes courantes dans les langages compilés comme C++ et Java. Une fois qu'un objet a été construit, il peut servir de modèle (ou prototype) pour créer des objets similaires.

+JavaScript peut être employé en tant que langage [procédural](https://fr.wikipedia.org/wiki/Programmation_procédurale) ou [orienté objet](https://fr.wikipedia.org/wiki/Programmation_orientée_objet). Les objets sont créés par le programme et des méthodes et des propriétés lui sont attachés lors de l'exécution, contrairement aux définitions de classes courantes dans les langages compilés comme C++ et Java. Une fois qu'un objet a été construit, il peut servir de modèle (ou prototype) pour créer des objets similaires. -

Parmi les capacités dynamiques de JavaScript, on peut citer la construction d'objets à l'exécution, les listes de paramètres variables, les fonctions comme variables, la création des scripts dynamique (via eval), le parcours d'objets (via for ... in), et la récupération du code source (les programmes JavaScript peuvent décompiler les corps de fonction pour retrouver le code source).

+Parmi les capacités dynamiques de JavaScript, on peut citer la construction d'objets à l'exécution, les listes de paramètres variables, les fonctions comme variables, la création des scripts dynamique (via [`eval`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/eval)), le parcours d'objets (via [`for ... in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in)), et la récupération du code source (les programmes JavaScript peuvent décompiler les corps de fonction pour retrouver le code source). -

Pour une description approfondie de la programation en JavaScript, consultez les liens de la section ressources JavaScript ci-dessous.

+Pour une description approfondie de la programation en JavaScript, consultez les liens de la section [ressources JavaScript](#Ressources_JavaScript) ci-dessous. -

Les implémentations de JavaScript disponibles

+## Les implémentations de JavaScript disponibles -

Mozilla héberge deux implémentations de JavaScript. La première au monde est celle créée par Brendan Eich chez Netscape, et depuis mise à jour pour se conformer à la cinquième édition d'ECMA-262 (aussi appelé ECMAScript 5). Ce moteur, portant le nom de code SpiderMonkey, est implémenté en C. Le moteur Rhino, créé principalement par Norris Boyd (également chez Netscape) est une implémentation de JavaScript en Java. Comme SpiderMonkey, Rhino suit la spécification ECMA-262 Edition 5.

+Mozilla héberge deux implémentations de JavaScript. La première **au monde** est celle créée par Brendan Eich chez Netscape, et depuis mise à jour pour se conformer à la cinquième édition d'ECMA-262 (aussi appelé ECMAScript 5). Ce moteur, portant le nom de code [SpiderMonkey](/fr/docs/SpiderMonkey), est implémenté en C. Le moteur [Rhino](/fr/docs/Rhino), créé principalement par Norris Boyd (également chez Netscape) est une implémentation de JavaScript en Java. Comme SpiderMonkey, Rhino suit la spécification ECMA-262 Edition 5. -

Plusieurs optimisations ont été apportées au moteur JavaScript au fur et à mesure, parmi lesquelles on peut citer : TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) et IonMonkey.

+Plusieurs optimisations ont été apportées au moteur JavaScript au fur et à mesure, parmi lesquelles on peut citer : TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) et IonMonkey. -

En plus de ces implémentations, il existe d'autres moteurs JavaScript largement utilisés comme :

+En plus de ces implémentations, il existe d'autres moteurs JavaScript largement utilisés comme : -
    -
  • V8 de Google, qui est utilisé dans le navigateur Google Chrome et dans les versions récentes du navigateur Opéra.
  • -
  • JavaScriptCore (SquirrelFish/Nitro) utilisé dans certains navigateurs WebKit tels que Safari, d'Apple.
  • -
  • Carakan est utilisé dans les anciennes versions d'Opera.
  • -
  • Le moteur Chakra est utilisé dans Internet Explorer (bien que le langage qu'il implémente soit formellement appelé « JScript » pour des raisons de droits des marques).
  • -
+- [V8](https://code.google.com/p/v8/ "https://code.google.com/p/v8/") de Google, qui est utilisé dans le navigateur Google Chrome et dans les versions récentes du navigateur Opéra. +- [JavaScriptCore](https://www.webkit.org/projects/javascript/index.html "https://www.webkit.org/projects/javascript/index.html") (SquirrelFish/Nitro) utilisé dans certains navigateurs WebKit tels que Safari, d'Apple. +- [Carakan](https://my.opera.com/ODIN/blog/carakan-faq "https://my.opera.com/ODIN/blog/carakan-faq") est utilisé dans les anciennes versions d'Opera. +- Le moteur [Chakra](https://en.wikipedia.org/wiki/Chakra_%28JScript_engine%29 "https://en.wikipedia.org/wiki/Chakra_%28JScript_engine%29") est utilisé dans Internet Explorer (bien que le langage qu'il implémente soit formellement appelé « JScript » pour des raisons de droits des marques). -

Chacun des moteurs JavaScript de Mozilla expose une API publique que les applications peuvent appeler pour utiliser JavaScript. L'environnement hôte le plus courant pour JavaScript est, de loin, un navigateur Web. Les navigateurs utilisent typiquement l'API publique pour créer des « objets hôtes », reflétant le DOM en JavaScript.

+Chacun des moteurs JavaScript de Mozilla expose une API publique que les applications peuvent appeler pour utiliser JavaScript. L'environnement hôte le plus courant pour JavaScript est, de loin, un navigateur Web. Les navigateurs utilisent typiquement l'API publique pour créer des « objets hôtes », reflétant le [DOM](/fr/docs/DOM) en JavaScript. -

Une autre utilisation courante de JavaScript est d'être un langage de script côté serveur (Web). Un serveur web JavaScript exposerait, lui, des objets hôtes représentant les requêtes HTTP et leurs réponses, qui peuvent ensuite être manipulées par un programme JavaScript pour générer dynamiquement des pages Web.

+Une autre utilisation courante de JavaScript est d'être un langage de script côté serveur (Web). Un serveur web JavaScript exposerait, lui, des objets hôtes représentant les requêtes HTTP et leurs réponses, qui peuvent ensuite être manipulées par un programme JavaScript pour générer dynamiquement des pages Web. -

Ressources JavaScript

+## Ressources JavaScript -
-
SpiderMonkey
-
Informations concernant l'intégration du moteur JavaScript en C/C++ (SpiderMonkey).
-
Rhino
-
Informations concernant l'intégration du moteur JavaScript en Java (Rhino).
-
Ressources sur le langage JavaScript
-
Liens vers les standards JavaScript publiées.
-
Une réintroduction à JavaScript
-
Le guide JavaScript et la référence JavaScript
-
+- [SpiderMonkey](/fr/docs/SpiderMonkey) + - : Informations concernant l'intégration du moteur JavaScript en C/C++ (SpiderMonkey). +- [Rhino](/fr/docs/Rhino) + - : Informations concernant l'intégration du moteur JavaScript en Java (Rhino). +- [Ressources sur le langage JavaScript](/fr/docs/Web/JavaScript/Language_Resources) + - : Liens vers les standards JavaScript publiées. +- [Une réintroduction à JavaScript](/fr/docs/Web/JavaScript/Une_réintroduction_à_JavaScript) + - : [Le guide JavaScript](/fr/docs/Web/JavaScript/Guide) et [la référence JavaScript](/fr/docs/Web/JavaScript/Reference) -

JavaScript® est une marque déposée d'Oracle aux États-Unis et dans d'autres pays.

+JavaScript® est une marque déposée d'Oracle aux États-Unis et dans d'autres pays. diff --git a/files/fr/web/javascript/closures/index.md b/files/fr/web/javascript/closures/index.md index 85a39326f2..08f3ae7970 100644 --- a/files/fr/web/javascript/closures/index.md +++ b/files/fr/web/javascript/closures/index.md @@ -7,34 +7,37 @@ tags: - JavaScript translation_of: Web/JavaScript/Closures --- -
{{jsSidebar("Intermediate")}}
+{{jsSidebar("Intermediate")}} -

Une fermeture est la paire formée d'une fonction et des références à son état environnant (l'environnement lexical). En d'autres termes, une fermeture donne accès à la portée d'une fonction externe à partir d'une fonction interne (on dit aussi que la fonction « capture son environnement »). En JavaScript, une fermeture est créée chaque fois qu'une fonction est créée.

+Une **fermeture** est la paire formée d'une fonction et des références à son état environnant (**l'environnement lexical**). En d'autres termes, une fermeture donne accès à la portée d'une fonction externe à partir d'une fonction interne (on dit aussi que la fonction « capture son environnement »). En JavaScript, une fermeture est créée chaque fois qu'une fonction est créée. -

Portée

+## Portée -

Dans l'exemple suivant :

+Dans l'exemple suivant : -
function init() {
+```js
+function init() {
   var nom = "Mozilla"; // nom est une variable locale de init
   function afficheNom() { // afficheNom est une fonction interne de init
     console.log(nom); // ici nom est une variable libre (définie dans la fonction parente)
   }
   afficheNom();
 };
-init();
+init(); +``` -

La fonction init créé une variable locale nom et une fonction interne afficheNom. La fonction interne est seulement visible de l'intérieur de init. Contrairement à init, afficheNom ne possède pas de variable locale propre, mais elle utilise la variable nom de la fonction parente (ceci dit afficheNom pourrait utiliser ses variables locales propres si elle en avait).

+La fonction `init` créé une variable locale `nom` et une fonction interne `afficheNom`. La fonction interne est seulement visible de l'intérieur de `init`. Contrairement à `init`, `afficheNom` ne possède pas de variable locale propre, mais elle utilise la variable `nom` de la fonction parente (ceci dit `afficheNom` pourrait utiliser ses variables locales propres si elle en avait). -

{{JSFiddleEmbed("https://jsfiddle.net/78dg25ax/", "js,result", 250)}}

+{{JSFiddleEmbed("https://jsfiddle.net/78dg25ax/", "js,result", 250)}} -

Vous pouvez exécuter le code sur cette page pour voir son fonctionnement. On a ici un exemple de portée lexicale : en JavaScript, la portée d'une variable est définie par son emplacement dans le code source (elle apparaît de façon lexicale), les fonctions imbriquées ont ainsi accès aux variables déclarées dans les portées parentes.

+Vous pouvez exécuter le code sur cette [page](https://jsfiddle.net/4U5VD/) pour voir son fonctionnement. On a ici un exemple de portée lexicale : en JavaScript, la portée d'une variable est définie par son emplacement dans le code source (elle apparaît de façon _lexicale_), les fonctions imbriquées ont ainsi accès aux variables déclarées dans les portées parentes. -

Fermeture

+## Fermeture -

Étudions l'exemple suivant :

+Étudions l'exemple suivant : -
function creerFonction() {
+```js
+function creerFonction() {
   var nom = "Mozilla";
   function afficheNom() {
     console.log(nom);
@@ -44,17 +47,18 @@ init();
var maFonction = creerFonction(); maFonction(); - +``` -

Ce code produit le même résultat que l'appel à init() étudié précédemment : "Mozilla" est affiché dans la console. L'intérêt de ce code est qu'une fermeture contenant la fonction afficheNom est renvoyée par la fonction parente, avant d'être exécutée.

+Ce code produit le même résultat que l'appel à `init()` étudié précédemment : "Mozilla" est affiché dans la console. L'intérêt de ce code est qu'une fermeture contenant la fonction `afficheNom` est renvoyée par la fonction parente, avant d'être exécutée. -

Le code continue à fonctionner, ce qui peut paraître contre-intuitif au regard de la syntaxe utilisée. Usuellement, les variables locales d'une fonction n'existent que pendant l'exécution d'une fonction. Une fois que creerFonction() a fini son exécution, on aurait pû penser que la variable nom n'est plus accessible. Cependant, le code fonctionne : en JavaScript, la variable est donc accessible d'une certaine façon.

+Le code continue à fonctionner, ce qui peut paraître contre-intuitif au regard de la syntaxe utilisée. Usuellement, les variables locales d'une fonction n'existent que pendant l'exécution d'une fonction. Une fois que `creerFonction()` a fini son exécution, on aurait pû penser que la variable `nom` n'est plus accessible. Cependant, le code fonctionne : en JavaScript, la variable est donc accessible d'une certaine façon. -

L'explication est la suivante : maFonction est une fermeture. La fermeture combine la fonction afficheNom et son environnement. Cet environnement est composé de toutes les variables locales accessibles (dans la portée) à la création de la fermeture. Ici maFonction est une fermeture qui contient la fonction afficheNom et une référence à la variable var nom = "Mozilla" qui existait lorsque la fermeture a été créée. L'instance de afficheNom conserve une référence à son environnement lexical, dans lequel nom  existe. Pour cette raison, lorsque maFonction est invoquée, la variable nom reste disponible et "Mozilla" est transmis à console.log.

+L'explication est la suivante : `maFonction` est une fermeture. La fermeture combine la fonction `afficheNom` et son environnement. Cet environnement est composé de toutes les variables locales accessibles (dans la portée) à la création de la fermeture. Ici `maFonction` est une fermeture qui contient la fonction `afficheNom` et une référence à la variable `var nom = "Mozilla"` qui existait lorsque la fermeture a été créée. L'instance de `afficheNom` conserve une référence à son environnement lexical, dans lequel `nom`  existe. Pour cette raison, lorsque `maFonction` est invoquée, la variable `nom` reste disponible et "Mozilla" est transmis à `console.log`. -

Voici un exemple un peu plus intéressant—une fonction ajouterA :

+Voici un exemple un peu plus intéressant—une fonction `ajouterA` : -
function ajouterA(x) {
+```js
+function ajouterA(x) {
   return function(y) {
     return x + y;
   };
@@ -65,23 +69,24 @@ var ajouter_10 = ajouterA(10);
 
 console.log(ajouter_5(2));  // 7
 console.log(ajouter_10(2)); // 12
-
+``` -

On définit une fonction ajouterA(x) avec un seul argument x et qui renvoie une fonction anonyme. La fonction anonyme a un seul argument y, et renvoie la somme de x et y.

+On définit une fonction `ajouterA(x)` avec un seul argument `x` et qui renvoie une fonction anonyme. La fonction anonyme a un seul argument `y`, et renvoie la somme de `x` et `y`. -

La fonction ajouterA permet de créer des fermetures qui font la somme de leur argument et d'un nombre fixé. Dans l'exemple ci-dessus, on crée  ajouter_5 et ajouter_10. Elles partagent la même fonction, mais des environnements différents. Dans ajouter_5, x vaut 5 ; dans ajouter_10, x vaut 10.

+La fonction `ajouterA` permet de créer des fermetures qui font la somme de leur argument et d'un nombre fixé. Dans l'exemple ci-dessus, on crée  `ajouter_5` et `ajouter_10`. Elles partagent la même fonction, mais des environnements différents. Dans `ajouter_5`, `x` vaut 5 ; dans `ajouter_10`, `x` vaut 10. -

Les fermetures en pratique

+## Les fermetures en pratique -

On a vu la théorie décrivant les fermetures. Est-ce qu'elles sont utiles pour autant ? Une fermeture permet d'associer des données (l'environnement) avec une fonction qui agit sur ces données. On peut faire un parallèle avec la programmation orientée objet car les objets permettent d'associer des données (les propriétés) avec des méthodes.

+On a vu la théorie décrivant les fermetures. Est-ce qu'elles sont utiles pour autant ? Une fermeture permet d'associer des données (l'environnement) avec une fonction qui agit sur ces données. On peut faire un parallèle avec la programmation orientée objet car les objets permettent d'associer des données (les propriétés) avec des méthodes. -

Ainsi, on peut utiliser une fermeture pour tout endroit où on utiliserait un objet et ce avec une seule méthode.

+Ainsi, on peut utiliser une fermeture pour tout endroit où on utiliserait un objet et ce avec une seule méthode. -

Beaucoup de code JavaScript utilisé sur le Web gère des événements : on définit un comportement, puis on l'attache à un événement déclenché par l'utilisateur (tel un clic ou une frappe clavier). Notre code est généralement une fonction de rappel (ou callback) exécutée en réponse à l'événement.

+Beaucoup de code JavaScript utilisé sur le Web gère des événements : on définit un comportement, puis on l'attache à un événement déclenché par l'utilisateur (tel un clic ou une frappe clavier). Notre code est généralement une fonction de rappel (ou _callback_) exécutée en réponse à l'événement. -

Voici un exemple concret : si on souhaite ajouter des boutons à une page afin d'ajuster la taille du texte, on pourrait définir la taille de police de l'élément body en pixels, et celles des autres éléments relativement à cette première taille grâce à l'unité em :

+Voici un exemple concret : si on souhaite ajouter des boutons à une page afin d'ajuster la taille du texte, on pourrait définir la taille de police de l'élément `body` en pixels, et celles des autres éléments relativement à cette première taille grâce à l'unité `em` : -
body {
+```css
+body {
   font-family: Helvetica, Arial, sans-serif;
   font-size: 12px;
 }
@@ -92,13 +97,14 @@ h1 {
 h2 {
   font-size: 1.2em;
 }
-
+``` -

Les boutons vont ensuite changer la taille de la police de l'élément body, ce changement étant répercuté aux autres éléments grâce aux unités relatives.

+Les boutons vont ensuite changer la taille de la police de l'élément `body`, ce changement étant répercuté aux autres éléments grâce aux unités relatives. -

Voici le code JavaScript qui correspond :

+Voici le code JavaScript qui correspond : -
function fabriqueRedimensionneur(taille) {
+```js
+function fabriqueRedimensionneur(taille) {
   return function() {
     document.body.style.fontSize = taille + 'px';
   };
@@ -107,31 +113,34 @@ h2 {
 var taille12 = fabriqueRedimensionneur(12);
 var taille14 = fabriqueRedimensionneur(14);
 var taille16 = fabriqueRedimensionneur(16);
-
+``` -

taille12, taille14, et taille16 sont désormais des fermetures qui peuvent, respectivement, redimensionner le texte de l'élément body à 12, 14, ou 16 pixels. On peut les attacher aux boutons de la façon suivantes :

+`taille12`, `taille14`, et `taille16` sont désormais des fermetures qui peuvent, respectivement, redimensionner le texte de l'élément `body` à 12, 14, ou 16 pixels. On peut les attacher aux boutons de la façon suivantes : -
document.getElementById('taille-12').onclick = taille12;
+```js
+document.getElementById('taille-12').onclick = taille12;
 document.getElementById('taille-14').onclick = taille14;
 document.getElementById('taille-16').onclick = taille16;
-
+``` -
<a href="#" id="taille-12">12</a>
-<a href="#" id="taille-14">14</a>
-<a href="#" id="taille-16">16</a>
-
+```html +12 +14 +16 +``` -

{{JSFiddleEmbed("https://jsfiddle.net/vnkuZ/7726", "js,result", 200)}}

+{{JSFiddleEmbed("https://jsfiddle.net/vnkuZ/7726", "js,result", 200)}} -

Émuler des méthodes privées avec des fermetures

+## Émuler des méthodes privées avec des fermetures -

Certains langages de programmation, comme Java, permettent d'avoir des méthodes privées, c'est-à-dire qu'on ne peut les utiliser qu'au sein de la même classe.

+Certains langages de programmation, comme Java, permettent d'avoir des méthodes privées, c'est-à-dire qu'on ne peut les utiliser qu'au sein de la même classe. -

JavaScript ne permet pas de faire cela de façon native. En revanche, on peut émuler ce comportement grâce aux fermetures. Les méthodes privées ne sont pas seulement utiles en termes de restriction d'accès au code, elles permettent également de gérer un espace de nom (namespace) global qui isole les méthodes secondaires de l'interface publique du code ainsi rendu plus propre.

+JavaScript ne permet pas de faire cela de façon native. En revanche, on peut émuler ce comportement grâce aux fermetures. Les méthodes privées ne sont pas seulement utiles en termes de restriction d'accès au code, elles permettent également de gérer un espace de nom (_namespace_) global qui isole les méthodes secondaires de l'interface publique du code ainsi rendu plus propre. -

Voici comment définir une fonction publique accédant à des fonctions et des variables privées en utilisant des fermetures. Cette façon de procéder est également connue comme le patron de conception module :

+Voici comment définir une fonction publique accédant à des fonctions et des variables privées en utilisant des fermetures. Cette façon de procéder est également connue comme le patron de conception [module](https://en.wikipedia.org/wiki/Module_pattern) : -
var compteur = (function() {
+```js
+var compteur = (function() {
   var compteurPrive = 0;
   function changeValeur(val) {
     compteurPrive += val;
@@ -155,17 +164,18 @@ compteur.increment();
 console.log(compteur.valeur()); /* Affiche 2 */
 compteur.decrement();
 console.log(compteur.valeur()); /* Affiche 1 */
-
+``` -

Il y a beaucoup de différences par rapport aux exemples précédents. Au lieu de retourner une simple fonction, on retourne un objet anonyme qui contient 3 fonctions. Et ces 3 fonctions partagent le même environnement. L'objet retourné est affecté à la variable compteur, et les 3 fonctions sont alors accessibles sous les noms compteur.increment, compteur.decrement, et compteur.valeur.

+Il y a beaucoup de différences par rapport aux exemples précédents. Au lieu de retourner une simple fonction, on retourne un objet anonyme qui contient 3 fonctions. Et ces 3 fonctions partagent le même environnement. L'objet retourné est affecté à la variable `compteur`, et les 3 fonctions sont alors accessibles sous les noms `compteur.increment`, `compteur.decrement`, et `compteur.valeur`. -

L'environnement partagé vient du corps de la fonction anonyme qui est exécutée dès sa définition complète. L'environnement en question contient deux éléments privés : une variable compteurPrive et une fonction changeValeur. Aucun de ces deux éléments ne peut être utilisé en dehors de la fonction anonyme ; seules les trois fonctions renvoyées par la fonction anonyme sont publiques.

+L'environnement partagé vient du corps de la fonction anonyme qui est exécutée dès sa définition complète. L'environnement en question contient deux éléments privés : une variable `compteurPrive` et une fonction `changeValeur`. Aucun de ces deux éléments ne peut être utilisé en dehors de la fonction anonyme ; seules les trois fonctions renvoyées par la fonction anonyme sont publiques. -

Ces trois fonctions publiques sont des fermetures qui partagent le même environnement. Grâce à la portée lexicale, chacune a accès à compteurPrive et à changeValeur.

+Ces trois fonctions publiques sont des fermetures qui partagent le même environnement. Grâce à la portée lexicale, chacune a accès à` compteurPrive` et à `changeValeur`. -

On remarquera qu'on définit une fonction anonyme qui crée un compteur puis qu'on l'appelle immédiatement pour assigner le résultat à la variable compteur. On pourrait stocker cette fonction dans une variable puis l'appeler plusieurs fois afin de créer plusieurs compteurs.

+On remarquera qu'on définit une fonction anonyme qui crée un compteur puis qu'on l'appelle immédiatement pour assigner le résultat à la variable `compteur`. On pourrait stocker cette fonction dans une variable puis l'appeler plusieurs fois afin de créer plusieurs compteurs. -
var creerCompteur = function() {
+```js
+var creerCompteur = function() {
   var compteurPrive = 0;
   function changeValeur(val) {
     compteurPrive += val;
@@ -192,23 +202,25 @@ console.log(compteur1.valeur()); /* Affiche 2 */
 compteur1.decrement();
 console.log(compteur1.valeur()); /* Affiche 1 */
 console.log(compteur2.valeur()); /* Affiche 0 */
-
+``` -

Ici on peut voir que chacun des deux compteurs est indépendant de l'autre. Un nouvel environnement est instancié à chaque appel creerCompteur().

+Ici on peut voir que chacun des deux compteurs est indépendant de l'autre. Un nouvel environnement est instancié à chaque appel `creerCompteur()`. -

L'utilisation de fermetures permet ainsi de bénéficier de certains concepts liés à la programmation orientée objet comme l'encapsulation et la dissimulation de données.

+L'utilisation de fermetures permet ainsi de bénéficier de certains concepts liés à la programmation orientée objet comme l'encapsulation et la dissimulation de données. -

Les fermetures et les boucles : attention au mélange

+## Les fermetures et les boucles : attention au mélange -

Avant que le mot clé let ne soit introduit avec ECMAScript 2015, un problème se posait fréquemment lorsqu'on manipulait des fermetures au sein d'une boucle. Par exemple :

+Avant que le mot clé [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) ne soit introduit avec ECMAScript 2015, un problème se posait fréquemment lorsqu'on manipulait des fermetures au sein d'une boucle. Par exemple : -
<p id="aide">Des aides seront affichées ici</p>
-<p>E-mail : <input type="text" id="email" name="email"></p>
-<p>Nom : <input type="text" id="nom" name="nom"></p>
-<p>Âge : <input type="text" id="âge" name="âge"></p>
-
+```html +

Des aides seront affichées ici

+

E-mail :

+

Nom :

+

Âge :

+``` -
function afficherAide(aide) {
+```js
+function afficherAide(aide) {
   document.getElementById('aide').innerHTML = aide;
 }
 
@@ -219,7 +231,7 @@ function preparerAide() {
       {'id': 'âge', 'aide': 'Votre âge (plus de 16 ans requis)'}
     ];
 
-  for (var i = 0; i < texteAide.length; i++) {
+  for (var i = 0; i < texteAide.length; i++) {
     var item = texteAide[i];
     document.getElementById(item.id).onfocus = function() {
       afficherAide(item.aide);
@@ -228,17 +240,18 @@ function preparerAide() {
 }
 
 preparerAide();
-
+``` -

{{JSFiddleEmbed("https://jsfiddle.net/v7gjv/8164/", "", 200)}}

+{{JSFiddleEmbed("https://jsfiddle.net/v7gjv/8164/", "", 200)}} -

Lorsqu'on essaie ce code, on s'aperçoit qu'il ne fonctionne pas exactement comme on le souhaitait : en effet, quelque soit le champ sur lequel on se situe, c'est toujours le message d'aide concernant l'âge qui s'affiche.

+Lorsqu'on essaie ce code, on s'aperçoit qu'il ne fonctionne pas exactement comme on le souhaitait : en effet, quelque soit le champ sur lequel on se situe, c'est toujours le message d'aide concernant l'âge qui s'affiche. -

La cause de ce problème est que les fonctions attachées à onfocus sont des fermetures qui partagent le même environnement. À chaque itération de boucle, l'environnement de la fermeture créée contient une référence sur la même instance de la variable item. Ainsi, lorsque la fonction de rappel de onfocus est exécutée, la boucle a déjà été effectuée entièrement, et la variable item partagée par les trois fermetures pointe sur le dernier élément de texteAide.

+La cause de ce problème est que les fonctions attachées à `onfocus` sont des fermetures qui partagent le même environnement. À chaque itération de boucle, l'environnement de la fermeture créée contient une référence sur la même instance de la variable `item`. Ainsi, lorsque la fonction de rappel de `onfocus` est exécutée, la boucle a déjà été effectuée entièrement, et la variable `item` partagée par les trois fermetures pointe sur le dernier élément de `texteAide`. -

Une solution consiste à utiliser plus de fermetures et à appliquer une fabrique de fonction comme on a vu précédemment :

+Une solution consiste à utiliser plus de fermetures et à appliquer une fabrique de fonction comme on a vu précédemment : -
function afficheAide(aide) {
+```js
+function afficheAide(aide) {
   document.getElementById('aide').innerHTML = aide;
 }
 
@@ -255,18 +268,19 @@ function prepareAide() {
       {'id': 'âge', 'aide': 'Your age (you must be over 16)'}
     ];
 
-  for (var i = 0; i < texteAide.length; i++) {
+  for (var i = 0; i < texteAide.length; i++) {
     var item = texteAide[i];
     document.getElementById(item.id).onfocus = creerCallbackAide(item.aide);
   }
 }
 
 prepareAide();
-
+``` -

Voici une autre solution qui permet de ne pas utiliser plus de fermetures :

+Voici une autre solution qui permet de ne pas utiliser plus de fermetures : -
function afficheAide(aide) {
+```js
+function afficheAide(aide) {
   document.getElementById('aide').innerHTML = aide;
 }
 
@@ -277,7 +291,7 @@ function prepareAide() {
       {'id': 'âge', 'aide': 'Votre âge (vous devez être majeur)'}
     ];
 
-  for (var i = 0; i < texteAide.length; i++) {
+  for (var i = 0; i < texteAide.length; i++) {
     let item = texteAide[i];
     document.getElementById(item.id).onfocus = function() {
       afficheAide(item.aide);
@@ -285,15 +299,17 @@ function prepareAide() {
   }
 }
 
-prepareAide();
+prepareAide(); +``` -

Dans ce fragment de code, nous avons utilisé let au lieu de var afin que chaque fermeture soit liée avec les variable de bloc.

+Dans ce fragment de code, nous avons utilisé `let` au lieu de `var` afin que chaque fermeture soit liée avec les variable de bloc. -

{{JSFiddleEmbed("https://jsfiddle.net/v7gjv/9573/", "", 300)}}

+{{JSFiddleEmbed("https://jsfiddle.net/v7gjv/9573/", "", 300)}} -

Autrement, on aurait pu utiliser forEach() afin de parcourir le tableau texteAide et attacher un gestionnaire d'évènement sur chaque {{htmlelement("div")}} :

+Autrement, on aurait pu utiliser `forEach()` afin de parcourir le tableau `texteAide` et attacher un gestionnaire d'évènement sur chaque {{htmlelement("div")}} : -
function afficheAide(aide) {
+```js
+function afficheAide(aide) {
   document.getElementById('aide').innerHTML = aide;
 }
 
@@ -311,17 +327,19 @@ function prepareAide() {
   });
 }
 
-prepareAide();
+prepareAide(); +``` -

Les performances et les fermetures

+## Les performances et les fermetures -

Il est mal avisé de créer des fonctions imbriquées et des fermetures sans utilité. En effet, cela peut dégrader les performances en termes de vitesse d'exécution et de consommation de mémoire.

+Il est mal avisé de créer des fonctions imbriquées et des fermetures sans utilité. En effet, cela peut dégrader les performances en termes de vitesse d'exécution et de consommation de mémoire. -

Quand, par exemple, on crée un nouvel objet, les méthodes devraient être associées au prototype de l'objet et non pas définies dans le constructeur de l'objet. De cette façon, on évite que les méthodes soient réassignées à chaque fois qu'un nouvel objet est créé.

+Quand, par exemple, on crée un nouvel objet, les méthodes devraient être associées au prototype de l'objet et non pas définies dans le constructeur de l'objet. De cette façon, on évite que les méthodes soient réassignées à chaque fois qu'un nouvel objet est créé. -

Voici un exemple de la mauvaise façon de procéder :

+Voici un exemple de la mauvaise façon de procéder : -
function MonObjet(nom, message) {
+```js example-bad
+function MonObjet(nom, message) {
   this.nom = nom.toString();
   this.message = message.toString();
   this.getNom = function() {
@@ -332,11 +350,12 @@ prepareAide();
return this.message; }; } - +``` -

Le fragment de code précédent ne tire pas partie des avantages des fermetures. Il pourrait être mieux écrit ainsi :

+Le fragment de code précédent ne tire pas partie des avantages des fermetures. Il pourrait être mieux écrit ainsi : -
function MonObjet(nom, message) {
+```js
+function MonObjet(nom, message) {
   this.nom = nom.toString();
   this.message = message.toString();
 }
@@ -348,11 +367,12 @@ MonObjet.prototype = {
     return this.message;
   }
 };
-
+``` -

Cependant, redéfinir le prototype est déconseillé, donc encore meilleur serait d'ajouter les méthodes :

+Cependant, redéfinir le prototype est déconseillé, donc encore meilleur serait d'ajouter les méthodes : -
function MonObjet(nom, message) {
+```js
+function MonObjet(nom, message) {
   this.nom = nom.toString();
   this.message = message.toString();
 }
@@ -362,6 +382,6 @@ MonObjet.prototype.getNom = function() {
 MonObjet.prototype.getMessage = function() {
   return this.message;
 };
-
+``` -

Les deux derniers exemples permettent de voir que le prototype hérité est partagé par tous les objets construits et que les méthodes n'ont pas besoin d'être reconstruites pour chaque création d'objet. Veuillez consulter la page sur le modèle objet JavaScript en détails pour plus d'informations.

+Les deux derniers exemples permettent de voir que le prototype hérité est partagé par tous les objets construits et que les méthodes n'ont pas besoin d'être reconstruites pour chaque création d'objet. Veuillez consulter la page sur [le modèle objet JavaScript en détails](/fr/docs/Web/JavaScript/Guide/Le_mod%C3%A8le_objet_JavaScript_en_d%C3%A9tails) pour plus d'informations. diff --git a/files/fr/web/javascript/data_structures/index.md b/files/fr/web/javascript/data_structures/index.md index 7390a819aa..fc7e9c5b42 100644 --- a/files/fr/web/javascript/data_structures/index.md +++ b/files/fr/web/javascript/data_structures/index.md @@ -8,313 +8,204 @@ tags: translation_of: Web/JavaScript/Data_structures original_slug: Web/JavaScript/Structures_de_données --- -
{{jsSidebar("More")}}
+{{jsSidebar("More")}} -

Les langages de programmation disposent de structures de données natives. Selon les langages, les structures mises à disposition peuvent être différentes. Dans cet article, on listera les structures de données natives en JavaScript. On détaillera leurs propriétés et les façons de les utiliser voire de les combiner. Dans certains cas, on comparera ces structures avec celles d'autres langages.

+Les langages de programmation disposent de structures de données natives. Selon les langages, les structures mises à disposition peuvent être différentes. Dans cet article, on listera les structures de données natives en JavaScript. On détaillera leurs propriétés et les façons de les utiliser voire de les combiner. Dans certains cas, on comparera ces structures avec celles d'autres langages. -

Un typage dynamique

+## Un typage dynamique -

JavaScript est un langage dont le typage est faible et dynamique. Cela signifie qu'il n'est pas nécessaire de déclarer le type d'une variable avant de l'utiliser. Le type de la variable sera automatiquement déterminé lorsque le programme sera exécuté. Cela signifie également que la même variable pourra avoir différents types au cours de son existence :

+JavaScript est un langage dont le typage est _faible_ et _dynamique_. Cela signifie qu'il n'est pas nécessaire de déclarer le type d'une variable avant de l'utiliser. Le type de la variable sera automatiquement déterminé lorsque le programme sera exécuté. Cela signifie également que la même variable pourra avoir différents types au cours de son existence : -
var toto = 42;       // toto est un nombre
+```js
+var toto = 42;       // toto est un nombre
     toto = "machin"; // toto est une chaîne de caractères désormais
     toto = true;     // et maintenant, toto est un booléen
-
+``` -

Les types de données

+## Les types de données -

Le dernier standard ECMAScript définit 8 types de données :

+Le dernier standard ECMAScript définit 8 types de données : -
    -
  • Sept types de données {{Glossary("Primitive", "primitifs")}}: -
      -
    • {{Glossary("Boolean", "Booléen")}}
    • -
    • {{Glossary("Null")}}
    • -
    • {{Glossary("Undefined")}}
    • -
    • {{Glossary("Number", "Nombre")}}
    • -
    • {{Glossary("BigInt")}} (proposition pour ES2020)
    • -
    • {{Glossary("String", "Chaîne de caractères")}} (String)
    • -
    • {{Glossary("Symbol", "Symbole")}} (type introduit avec ECMAScript 6)
    • -
    -
  • -
  • et le type {{Glossary("Object", "Objet")}}
  • -
+- Sept types de données {{Glossary("Primitive", "primitifs")}}: -

Les valeurs primitives

+ - {{Glossary("Boolean", "Booléen")}} + - {{Glossary("Null")}} + - {{Glossary("Undefined")}} + - {{Glossary("Number", "Nombre")}} + - {{Glossary("BigInt")}} (proposition pour ES2020) + - {{Glossary("String", "Chaîne de caractères")}} (String) + - {{Glossary("Symbol", "Symbole")}} (type introduit avec ECMAScript 6) -

Tous les types, sauf les objets, définissent des valeurs immuables (qu'on ne peut modifier). Ainsi, contrairement au C, les chaînes de caractères sont immuables en JavaScript. Les valeurs immuables pour chacun de ces types sont appelées « valeurs primitives ».

+- et le type {{Glossary("Object", "Objet")}} -

Le type booléen

+## Les valeurs primitives -

Un booléen représente le résultat d'une assertion logique et peut avoir deux valeurs : true (pour le vrai logique) et false (pour le faux logique) (voir {{jsxref("Boolean")}} pour plus de détails sur la représentation objet de ce type).

+Tous les types, sauf les objets, définissent des valeurs immuables (qu'on ne peut modifier). Ainsi, contrairement au C, les chaînes de caractères sont immuables en JavaScript. Les valeurs immuables pour chacun de ces types sont appelées « valeurs primitives ». -

Le type nul

+### Le type booléen -

Le type nul ne possède qu'une valeur : null. Voir {{jsxref("null")}} et {{Glossary("Null")}} pour plus d'informations.

+Un booléen représente le résultat d'une assertion logique et peut avoir deux valeurs : `true` (pour le vrai logique) et `false` (pour le faux logique) (voir {{jsxref("Boolean")}} pour plus de détails sur la représentation objet de ce type). -

Le type indéfini

+### Le type nul -

Une variable à laquelle on n'a pas affecté de valeur vaudra undefined. Voir {{jsxref("undefined")}} et {{Glossary("Undefined")}} pour plus d'informations.

+Le type nul ne possède qu'une valeur : `null`. Voir {{jsxref("null")}} et {{Glossary("Null")}} pour plus d'informations. -

Le type nombre

+### Le type indéfini -

ECMAScript possède deux types numériques natifs : Number et BigInt (cf. ci-après)

+Une variable à laquelle on n'a pas affecté de valeur vaudra `undefined`. Voir {{jsxref("undefined")}} et {{Glossary("Undefined")}} pour plus d'informations. -

Le type Number est géré pour représenter les nombres : les nombres flottants à précision double, représentés sur 64 bits, selon le format IEEE 754 (les nombres compris entre -(2^53 -1) et 2^53 -1). Il n'y a donc pas de type à part pour représenter les nombres entiers. En plus de sa capacité à représenter les nombres décimaux, le type nombre possède trois valeurs symboliques : +Infinity, -Infinity, et {{jsxref("NaN")}} (Not A Number en anglais, qui signifie « n'est pas un nombre »).

+### Le type nombre -

Afin de vérifier que des valeurs sont supérieures/inférieures à +/-Infinity, on peut utiliser les constantes {{jsxref("Number.MAX_VALUE")}} et {{jsxref("Number.MIN_VALUE")}}. À partir d'ECMAScript 6, on peut également vérifier si un nombre est/sera compris dans l'intervalle de représentation pour les nombres flottants à précision double en utilisant la méthode {{jsxref("Number.isSafeInteger()")}} ainsi que les valeurs {{jsxref("Number.MAX_SAFE_INTEGER")}} et {{jsxref("Number.MIN_SAFE_INTEGER")}}. En dehors de cet intervalle et pour JavaScript, on considère que les nombres ne sont plus représentés correctement. On manipule alors une approximation de la valeur sous forme d'un nombre à virgule flottante à précision double.

+ECMAScript possède deux types numériques natifs : `Number` et `BigInt` (cf. ci-après) -

Le type nombre possède un seul entier pouvant être représenté de deux façons différentes : 0 qui peut être représenté par -0 et +0. ("0" étant un alias pour +0). En pratique, cela n'a généralement aucun impact et +0 === -0 vaut bien true. Malgré tout, on peut observer certaines différences quand on divise par zéro :

+Le type `Number` est géré pour représenter les nombres : [les nombres flottants à précision double, représentés sur 64 bits, selon le format IEEE 754](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) (les nombres compris entre -(2^53 -1) et 2^53 -1). **Il n'y a donc pas de type à part pour représenter les nombres entiers**. En plus de sa capacité à représenter les nombres décimaux, le type nombre possède trois valeurs symboliques : `+Infinity`, `-Infinity`, et {{jsxref("NaN")}} (_Not A Number_ en anglais, qui signifie « n'est pas un nombre »). -
42 / +0
+Afin de vérifier que des valeurs sont supérieures/inférieures à `+/-Infinity`, on peut utiliser les constantes {{jsxref("Number.MAX_VALUE")}} et {{jsxref("Number.MIN_VALUE")}}. À partir d'ECMAScript 6, on peut également vérifier si un nombre est/sera compris dans l'intervalle de représentation pour les nombres flottants à précision double en utilisant la méthode {{jsxref("Number.isSafeInteger()")}} ainsi que les valeurs {{jsxref("Number.MAX_SAFE_INTEGER")}} et {{jsxref("Number.MIN_SAFE_INTEGER")}}. En dehors de cet intervalle et pour JavaScript, on considère que les nombres ne sont plus représentés correctement. On manipule alors une approximation de la valeur sous forme d'un nombre à virgule flottante à précision double.
+
+Le type nombre possède un seul entier pouvant être représenté de deux façons différentes : 0 qui peut être représenté par -0 et +0. ("0" étant un alias pour +0). En pratique, cela n'a généralement aucun impact et` +0 === -0` vaut bien `true`. Malgré tout, on peut observer certaines différences quand on divise par zéro :
+
+```js
+42 / +0
 // Infinity
 
 42 / -0
 // -Infinity
-
+``` -

Dans la plupart des cas, un nombre représente sa propre valeur, malgré tout les opérateurs binaires peuvent être utilisés pour représenter plusieurs valeurs booléennes grâce à un seul nombre (on parle alors de masque de bits). Ceci est généralement une mauvaise pratique (lisibilité, maintenabilité) bien que ça puisse être utile lorsqu'on souhaite minimiser le nombre de bits qu'on utilise.

+Dans la plupart des cas, un nombre représente sa propre valeur, malgré tout les [opérateurs binaires](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires) peuvent être utilisés pour représenter plusieurs valeurs booléennes grâce à un seul nombre (on parle alors de [masque de bits](https://fr.wikipedia.org/wiki/Masquage)). Ceci est généralement une mauvaise pratique (lisibilité, maintenabilité) bien que ça puisse être utile lorsqu'on souhaite minimiser le nombre de bits qu'on utilise. -

Le type BigInt

+### Le type `BigInt` -

Le type {{jsxref("BigInt")}} permet de représenter des entiers avec une précision arbitraire. Avec ce type, on peut donc manipuler des entiers plus grands que ceux représentables avec Number. Pour créer un grand entier, on ajoutera un n après l'entier ou on appellera le constructeur {{jsxref("BigInt")}}.

+Le type {{jsxref("BigInt")}} permet de représenter des entiers avec une précision arbitraire. Avec ce type, on peut donc manipuler des entiers plus grands que ceux représentables avec _Number_. Pour créer un grand entier, on ajoutera un `n` après l'entier ou on appellera le constructeur {{jsxref("BigInt")}}. -

La plus grande valeur représentable avec le type Number est accessible avec la constante {{jsxref("Number.MAX_VALUE")}}. Avec l'apparition de BigInt, on peut représenter et manipuler des entiers plus grands.

+La plus grande valeur représentable avec le type _Number_ est accessible avec la constante {{jsxref("Number.MAX_VALUE")}}. Avec l'apparition de `BigInt`, on peut représenter et manipuler des entiers plus grands. -
const x = 2n ** 53n;
+```js
+const x = 2n ** 53n;
 9007199254740992n;
 const y = x + 1n;
 9007199254740993n
-
- -

À l'instar des nombres classiques, on peut utiliser les opérateurs +*, -, ** et %. Un grand entier ne sera pas strictement égal à un nombre mais on pourra avoir une égalité faible.

- -

Un grand entier se comportera comme un nombre lorsqu'il est converti en booléen avec if, ||, &&, Boolean et !.

- -

Il n'est pas possible d'utiliser des grands entiers et des nombres de façon interchangeable. Une exception {{jsxref("TypeError")}} sera déclenchée en cas d'incompatibilité.

- -

Le type chaîne de caractères (String)

- -

Ce type JavaScript est utilisé afin de représenter des données textuelles. C'est un ensemble d'« éléments » de valeurs entières non-signées représentées sur 16 bits. Chaque élément occupe une position au sein de cette chaîne de caractères. Le premier élément est situé à l'indice 0, le deuxième à l'indice 1 et ainsi de suite. La longueur d'une chaîne de caractères correspond au nombre d'éléments qu'elle contient.

- -

À la différence des chaînes de caractères dans le langage C, les chaînes de caractères JavaScript sont immuables. Cela signifie qu'une fois qu'une chaîne est créée, il est impossible de la modifier. En revanche, il est toujours possible de créer une autre chaîne basée sur la première grâce à des opérations. Par exemple :

- -
    -
  • Un fragment de la chaîne originelle en sélectionnant certaines lettres ou en utilisant {{jsxref("String.substr()")}}.
  • -
  • Une concaténation de deux chaînes de caractères en utilisant l'opérateur de concaténation (+) ou {{jsxref("String.concat()")}}.
  • -
- -

Attention à ne pas utiliser les chaînes pour tout et n'importe quoi !

- -

Ça peut être tentant de vouloir utiliser des chaînes afin de représenter des données complexes. En revanche, les avantages de cette méthode ne sont que très superficiels :

- -
    -
  • On peut facilement construire des chaînes complexes grâce à la concaténation.
  • -
  • On peut déboguer rapidement le contenu des chaînes de caractères.
  • -
  • Les chaînes de caractères sont utilisées à de multiples endroits dans beaucoup d'API (champs de saisie, valeurs en stockage local, réponses {{ domxref("XMLHttpRequest") }} avec responseText, etc.).
  • -
- -

En utilisant des conventions, il peut être possible de représenter n'importe quelle donnée sous forme d'une chaîne de caractères, en revanche cela n'est souvent pas la meilleure façon. (Par exemple, avec un séparateur, on pourrait émuler le comportement d'un tableau en « interdisant » que ce séparateur soit utilisé pour éléments, etc. on pourrait ensuite définir un caractère d'échappement, qui serait à son tour inutilisable dans les chaînes : toutes ces pseudo-conventions entraîneront de lourdes conséquences en termes de maintenance.)

- -

En résumé, les chaînes doivent être utilisées pour les données textuelles. Pour des données plus complexes, utilisez une abstraction adéquate et analysez/parsez les chaînes que vous recevez d'autres API.

- -

Le type symbole

- -

Les symboles sont une nouveautés du langage, apportée par ECMAScript 6. Un symbole est une valeur primitive unique et immuable pouvant être utilisée comme clé pour propriété d'un objet (voir ci-après). Dans d'autres langages de programmation, les symboles sont appelés atomes. Pour plus de détails, voir les pages {{Glossary("Symbol","Symbole")}} et le constructeur {{jsxref("Symbol")}} JavaScript.

- -

Les objets

- -

En informatique, un objet est une valeur conservée en mémoire à laquelle on fait référence grâce à un {{Glossary("Identifier", "identifiant")}}.

- -

Propriétés

- -

En JavaScript, les objets peuvent être considérés comme des collections de propriétés. En utilisant un littéral objet, il est possible d'initialiser un ensemble limité de propriétés ; d'autres propriétés peuvent ensuite être ajoutées et/ou retirées. Les valeurs des propriétés peuvent être de n'importe quel type, y compris des objets. Cela permet de construire des structures de données complexes. Les propriétés sont identifiées grâce à une « clé ». Une clé peut être une chaîne de caractères ou un symbole.

- -

Il existe deux types de propriétés qui ont certains attributs : des propriétés de données (data property) et des propriétés d'accesseur.

- -

Propriétés de données

- -

Elles associent une clé avec une valeur et possèdent les attributs suivants :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Attributs d'une propriété de données
AttributTypeDescriptionValeur par défaut
[[Value]]N'importe quelle valeur JavaScriptLa valeur obtenue lorsqu'on accède à la propriété.undefined
[[Writable]]BooléenS'il vaut false, la valeur de la propriété (l'attribut [[Value]]) ne peut être changé.false
[[Enumerable]]BooléenS'il vaut true, la propriété pourra être listée par une boucle for...in. Voir également l'article sur le caractère énumérable des propriétés.false
[[Configurable]]BooléenS'il vaut false, la propriété ne pourra pas être supprimée, elle ne pourra pas être changée en accesseur et les attributs autres que [[Value]] et [[Writable]] ne pourront pas être modifiés.false
- - - - - - - - - - - - - - - - - - - - - - - - - -
Attributes obsolètes (faisaient partie d'ECMAScript 3, renommés avec ECMAScript 5)
AttributTypeDescription
Read-onlyBooléenÉtat symétrique pour l'attribut ES5 [[Writable]].
DontEnumBooléenÉtat symétrique pour l'attribut ES5 [[Enumerable]].
DontDeleteBooléenÉtat symétrique pour l'attribut ES5 [[Configurable]].
- -

Propriétés d'accesseur

- -

Ces propriétés associent une clé avec une ou deux fonctions accesseur et mutateur qui permettent de récupérer ou d'enregistrer une valeur. Elles possèdent les attributs suivants :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Attributs d'une propriété d'accesseur
AttributTypeDescriptionValeur par défaut
[[Get]]Un objet Function ou undefinedLa fonction qui est appelée sans argument afin de récupérer la valeur de la propriété quand on souhaite y accéder. Voir aussi la page sur get.undefined
[[Set]]Un objet Function ou undefinedLa fonction, appelée avec un argument qui contient la valeur qu'on souhaite affecter à la valeur et qui est exécutée à chaque fois qu'on souhaite modifier la valeur. Voir aussi la page sur set.undefined
[[Enumerable]]BooléenS'il vaut true, la propriété sera listée dans les boucles for...in.false
[[Configurable]]BooléenS'il vaut false, la propriété ne pourra pas être supprimée et ne pourra pas être transformée en une propriété de données.false
- -
-

Note : Les attributs sont généralement utilisés par le moteur JavaScript plutôt qu'explicitement dans les scripts. Il est impossible d'y accéder directement (plus d'informations sur {{jsxref("Object.defineProperty()")}}. C'est pour cela que l'attribut est décrit entre double crochets (comme dans la spécification ECMAScript) plutôt qu'entre crochets simples qui pourraient laisser penser à une propriété « classique ».

-
- -

Les objets « normaux » et les fonctions

- -

Un objet JavaScript est un ensemble de correspondances entre des clés et des valeurs. Les clés sont représentées par des chaînes ou des symboles ({{jsxref("Symbol")}}). Les valeurs peuvent être de n'importe quel type. Grâce à cela, les objets peuvent, naturellement, être utilisés comme tables de hachage.

- -

Les fonctions sont des objets classiques à la seule différence qu'on peut les appeler.

- -

Les dates

- -

Lorsqu'on souhaite représenter des dates, il est tout indiqué d'utiliser le type utilitaire natif Date de JavaScript.

- -

Les collections indexées : les tableaux (Arrays) et les tableaux typés (Typed Arrays)

- -

Les tableaux (ou Arrays en anglais) sont des objets natifs qui permettent d'organiser des valeurs numérotées et qui ont une relation particulière avec la propriété length. De plus, les tableaux héritent de Array.prototype qui permet de bénéficier de plusieurs méthodes pour manipuler les tableaux. Par exemple, indexOf qui permet de rechercher une valeur dans le tableau ou push qui permet d'ajouter un élément au tableau. Les tableaux sont donc indiqués quand on souhaite représenter des listes de valeurs ou d'objets.

- -

Les tableaux typés (Typed Arrays en anglais) ont été ajoutés avec ECMAScript 6 et offrent une vue sous forme d'un tableau pour manipuler des tampons de données binaires. Le tableau qui suit illustre les types de données équivalents en C :

- -

{{page("fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray", "Les_objets_TypedArray", "", 0, 3)}}

- -

Les collections avec clés : Maps, Sets, WeakMaps, WeakSets

- -

Ces structures de données utilisent des clés pour référencer des objets. Elles ont été introduites avec ECMAScript 6. {{jsxref("Set")}} et {{jsxref("WeakSet")}} représentent des ensembles d'objets, {{jsxref("Map")}} et {{jsxref("WeakMap")}} associent une valeur à un objet. Il est possible d'énumérer les valeurs contenues dans un objet Map mais pas dans un objet WeakMap. Les WeakMaps quant à eux permettent certaines optimisations dans la gestion de la mémoire et le travail du ramasse-miettes.

- -

Il est possible d'implémenter les Maps et Sets grâce à ECMAScript 5. Cependant, comme les objets ne peuvent pas être comparés (avec une relation d'ordre par exemple), la complexité obtenue pour rechercher un élément serait nécessairement linéaire. Les implémentations natives (y compris celle des WeakMaps) permettent d'obtenir des performances logarithmiques voire constantes.

- -

Généralement, si on voulait lier des données à un nœud DOM, on pouvait utiliser les attributs data-* ou définir les propriétés à un même l'objet. Malheureusement, cela rendait les données disponibles à n'importe quel script fonctionnant dans le même contexte. Les Maps et WeakMaps permettent de gérer plus simplement une liaison « privée » entre des données et un objet.

- -

Les données structurées : JSON

- -

JSON (JavaScript Object Notation) est un format d'échange de données léger, dérivé de JavaScript et utilisé par plusieurs langages de programmation. JSON permet ainsi de construire des structures de données universelles pouvant être échangées entre programmes. Pour plus d'informations, voir les pages {{Glossary("JSON")}} et {{jsxref("JSON")}}.

- -

Les autres objets de la bibliothèque standard

- -

JavaScript possède une bibliothèque standard d'objets natifs. Veuillez lire la référence pour en savoir plus sur ces objets.

- -

Déterminer le type des objets grâce à l'opérateur typeof

- -

L'opérateur typeof peut vous aider à déterminer le type d'une variable. Pour plus d'informations et sur les cas particuliers, voir la page de la référence sur cet opérateur.

- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
{{SpecName('ES5.1', '#sec-8', 'Types')}}{{Spec2('ES5.1')}}
{{SpecName('ES2015', '#sec-ecmascript-data-types-and-values', 'ECMAScript Data Types and Values')}}{{Spec2('ES2015')}}Ajout des symboles ({{jsxref("Symbol")}}).
{{SpecName('ESDraft', '#sec-ecmascript-data-types-and-values', 'ECMAScript Data Types and Values')}}{{Spec2('ESDraft')}}
- -

Voir aussi

- - +``` + +À l'instar des nombres classiques, on peut utiliser les opérateurs `+`,  `*`, `-`, `**` et `%`. Un grand entier ne sera pas strictement égal à un nombre mais on pourra avoir une égalité faible. + +Un grand entier se comportera comme un nombre lorsqu'il est converti en booléen avec `if`, `||`, `&&`, `Boolean` et `!`. + +Il n'est pas possible d'utiliser des grands entiers et des nombres de façon interchangeable. Une exception {{jsxref("TypeError")}} sera déclenchée en cas d'incompatibilité. + +### Le type chaîne de caractères (_String_) + +Ce type JavaScript est utilisé afin de représenter des données textuelles. C'est un ensemble d'« éléments » de valeurs entières non-signées représentées sur 16 bits. Chaque élément occupe une position au sein de cette chaîne de caractères. Le premier élément est situé à l'indice 0, le deuxième à l'indice 1 et ainsi de suite. La longueur d'une chaîne de caractères correspond au nombre d'éléments qu'elle contient. + +À la différence des chaînes de caractères dans le langage C, les chaînes de caractères JavaScript sont immuables. Cela signifie qu'une fois qu'une chaîne est créée, il est impossible de la modifier. En revanche, il est toujours possible de créer une autre chaîne basée sur la première grâce à des opérations. Par exemple : + +- Un fragment de la chaîne originelle en sélectionnant certaines lettres ou en utilisant {{jsxref("String.substr()")}}. +- Une concaténation de deux chaînes de caractères en utilisant l'opérateur de concaténation (`+`) ou {{jsxref("String.concat()")}}. + +#### Attention à ne pas utiliser les chaînes pour tout et n'importe quoi ! + +Ça peut être tentant de vouloir utiliser des chaînes afin de représenter des données complexes. En revanche, les avantages de cette méthode ne sont que très superficiels : + +- On peut facilement construire des chaînes complexes grâce à la concaténation. +- On peut déboguer rapidement le contenu des chaînes de caractères. +- Les chaînes de caractères sont utilisées à de multiples endroits dans beaucoup d'API ([champs de saisie](/fr/docs/Web/API/HTMLInputElement), valeurs en [stockage local](/fr/docs/Storage), réponses {{ domxref("XMLHttpRequest") }} avec `responseText`, etc.). + +En utilisant des conventions, il peut être possible de représenter n'importe quelle donnée sous forme d'une chaîne de caractères, en revanche cela n'est souvent pas la meilleure façon. (Par exemple, avec un séparateur, on pourrait émuler le comportement d'un tableau en « interdisant » que ce séparateur soit utilisé pour éléments, etc. on pourrait ensuite définir un caractère d'échappement, qui serait à son tour inutilisable dans les chaînes : toutes ces pseudo-conventions entraîneront de lourdes conséquences en termes de maintenance.) + +En résumé, les chaînes doivent être utilisées pour les données textuelles. Pour des données plus complexes, utilisez une abstraction adéquate et analysez/parsez les chaînes que vous recevez d'autres API. + +### Le type symbole + +Les symboles sont une nouveautés du langage, apportée par ECMAScript 6. Un symbole est une valeur primitive **unique** et **immuable** pouvant être utilisée comme clé pour propriété d'un objet (voir ci-après). Dans d'autres langages de programmation, les symboles sont appelés atomes. Pour plus de détails, voir les pages {{Glossary("Symbol","Symbole")}} et le constructeur {{jsxref("Symbol")}} JavaScript. + +## Les objets + +En informatique, un objet est une valeur conservée en mémoire à laquelle on fait référence grâce à un {{Glossary("Identifier", "identifiant")}}. + +### Propriétés + +En JavaScript, les objets peuvent être considérés comme des collections de propriétés. En utilisant [un littéral objet](/fr/docs/Web/JavaScript/Guide/Valeurs,_variables,_et_littéraux#Les_litt.C3.A9raux_objets), il est possible d'initialiser un ensemble limité de propriétés ; d'autres propriétés peuvent ensuite être ajoutées et/ou retirées. Les valeurs des propriétés peuvent être de n'importe quel type, y compris des objets. Cela permet de construire des structures de données complexes. Les propriétés sont identifiées grâce à une « clé ». Une clé peut être une chaîne de caractères ou un symbole. + +Il existe deux types de propriétés qui ont certains attributs : des propriétés de données (_data property_) et des propriétés d'accesseur. + +#### Propriétés de données + +Elles associent une clé avec une valeur et possèdent les attributs suivants : + +| Attribut | Type | Description | Valeur par défaut | +| ---------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | +| [[Value]] | N'importe quelle valeur JavaScript | La valeur obtenue lorsqu'on accède à la propriété. | `undefined` | +| [[Writable]] | Booléen | S'il vaut `false`, la valeur de la propriété (l'attribut [[Value]]) ne peut être changé. | `false` | +| [[Enumerable]] | Booléen | S'il vaut `true`, la propriété pourra être listée par une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in). Voir également [l'article sur le caractère énumérable des propriétés](/fr/docs/Web/JavaScript/Caract%C3%A8re_%C3%A9num%C3%A9rable_des_propri%C3%A9t%C3%A9s_et_rattachement). | `false` | +| [[Configurable]] | Booléen | S'il vaut `false`, la propriété ne pourra pas être supprimée, elle ne pourra pas être changée en accesseur et les attributs autres que [[Value]] et [[Writable]] ne pourront pas être modifiés. | `false` | + +| Attribut | Type | Description | +| ---------- | ------- | ----------------------------------------------------- | +| Read-only | Booléen | État symétrique pour l'attribut ES5 [[Writable]]. | +| DontEnum | Booléen | État symétrique pour l'attribut ES5 [[Enumerable]]. | +| DontDelete | Booléen | État symétrique pour l'attribut ES5 [[Configurable]]. | + +#### Propriétés d'accesseur + +Ces propriétés associent une clé avec une ou deux fonctions accesseur et mutateur qui permettent de récupérer ou d'enregistrer une valeur. Elles possèdent les attributs suivants : + +| Attribut | Type | Description | Valeur par défaut | +| ---------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | +| [[Get]] | Un objet `Function` ou `undefined` | La fonction qui est appelée sans argument afin de récupérer la valeur de la propriété quand on souhaite y accéder. Voir aussi la page sur [`get`](/fr/docs/Web/JavaScript/Reference/Fonctions/get). | `undefined` | +| [[Set]] | Un objet `Function` ou `undefined` | La fonction, appelée avec un argument qui contient la valeur qu'on souhaite affecter à la valeur et qui est exécutée à chaque fois qu'on souhaite modifier la valeur. Voir aussi la page sur [`set`](/fr/docs/Web/JavaScript/Reference/Fonctions/set). | `undefined` | +| [[Enumerable]] | Booléen | S'il vaut `true`, la propriété sera listée dans les boucles [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in). | `false` | +| [[Configurable]] | Booléen | S'il vaut `false`, la propriété ne pourra pas être supprimée et ne pourra pas être transformée en une propriété de données. | `false` | + +> **Note :** Les attributs sont généralement utilisés par le moteur JavaScript plutôt qu'explicitement dans les scripts. Il est impossible d'y accéder directement (plus d'informations sur {{jsxref("Object.defineProperty()")}}. C'est pour cela que l'attribut est décrit entre double crochets (comme dans la spécification ECMAScript) plutôt qu'entre crochets simples qui pourraient laisser penser à une propriété « classique ». + +### Les objets « normaux » et les fonctions + +Un objet JavaScript est un ensemble de correspondances entre des clés et des valeurs. Les clés sont représentées par des chaînes ou des symboles ({{jsxref("Symbol")}}). Les valeurs peuvent être de n'importe quel type. Grâce à cela, les objets peuvent, naturellement, être utilisés comme[ tables de hachage](https://fr.wikipedia.org/wiki/Table_de_hachage). + +Les fonctions sont des objets classiques à la seule différence qu'on peut les appeler. + +### Les dates + +Lorsqu'on souhaite représenter des dates, il est tout indiqué d'utiliser le type utilitaire natif [`Date`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date) de JavaScript. + +### Les collections indexées : les tableaux (_Arrays_) et les tableaux typés (_Typed Arrays_) + +[Les tableaux](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array) (ou _Arrays_ en anglais) sont des objets natifs qui permettent d'organiser des valeurs numérotées et qui ont une relation particulière avec la propriété `length`. De plus, les tableaux héritent de `Array.prototype` qui permet de bénéficier de plusieurs méthodes pour manipuler les tableaux. Par exemple, [`indexOf`](/fr/docs/JavaScript/Reference/Objets_globaux/Array/indexOf) qui permet de rechercher une valeur dans le tableau ou [`push`](/fr/docs/JavaScript/Reference/Global_Objects/Array/push) qui permet d'ajouter un élément au tableau. Les tableaux sont donc indiqués quand on souhaite représenter des listes de valeurs ou d'objets. + +[Les tableaux typés](/fr/docs/JavaScript/Tableaux_typ%C3%A9s) (_Typed Arrays_ en anglais) ont été ajoutés avec ECMAScript 6 et offrent une vue sous forme d'un tableau pour manipuler des tampons de données binaires. Le tableau qui suit illustre les types de données équivalents en C : + +{{page("fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray", "Les_objets_TypedArray", "", 0, 3)}} + +### Les collections avec clés : Maps, Sets, WeakMaps, WeakSets + +Ces structures de données utilisent des clés pour référencer des objets. Elles ont été introduites avec ECMAScript 6. {{jsxref("Set")}} et {{jsxref("WeakSet")}} représentent des ensembles d'objets, {{jsxref("Map")}} et {{jsxref("WeakMap")}} associent une valeur à un objet. Il est possible d'énumérer les valeurs contenues dans un objet Map mais pas dans un objet WeakMap. Les WeakMaps quant à eux permettent certaines optimisations dans la gestion de la mémoire et le travail du ramasse-miettes. + +Il est possible d'implémenter les Maps et Sets grâce à ECMAScript 5. Cependant, comme les objets ne peuvent pas être comparés (avec une relation d'ordre par exemple), la complexité obtenue pour rechercher un élément serait nécessairement linéaire. Les implémentations natives (y compris celle des WeakMaps) permettent d'obtenir des performances logarithmiques voire constantes. + +Généralement, si on voulait lier des données à un nœud DOM, on pouvait utiliser les attributs `data-*` ou définir les propriétés à un même l'objet. Malheureusement, cela rendait les données disponibles à n'importe quel script fonctionnant dans le même contexte. Les Maps et WeakMaps permettent de gérer plus simplement une liaison « privée » entre des données et un objet. + +### Les données structurées : JSON + +JSON (JavaScript Object Notation) est un format d'échange de données léger, dérivé de JavaScript et utilisé par plusieurs langages de programmation. JSON permet ainsi de construire des structures de données universelles pouvant être échangées entre programmes. Pour plus d'informations, voir les pages {{Glossary("JSON")}} et {{jsxref("JSON")}}. + +### Les autres objets de la bibliothèque standard + +JavaScript possède une bibliothèque standard d'objets natifs. Veuillez lire la [référence](/fr/docs/Web/JavaScript/Reference/Objets_globaux) pour en savoir plus sur ces objets. + +## Déterminer le type des objets grâce à l'opérateur `typeof` + +L'opérateur `typeof` peut vous aider à déterminer le type d'une variable. Pour plus d'informations et sur les cas particuliers, voir la page de la référence sur [cet opérateur](/fr/docs/JavaScript/Reference/R%C3%A9f%C3%A9rence_JavaScript/Op%C3%A9rateurs/Op%C3%A9rateurs_sp%C3%A9ciaux/L'op%C3%A9rateur_typeof). + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-8', 'Types')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES2015', '#sec-ecmascript-data-types-and-values', 'ECMAScript Data Types and Values')}} | {{Spec2('ES2015')}} | Ajout des symboles ({{jsxref("Symbol")}}). | +| {{SpecName('ESDraft', '#sec-ecmascript-data-types-and-values', 'ECMAScript Data Types and Values')}} | {{Spec2('ESDraft')}} | | + +## Voir aussi + +- [Un ensemble de structures de données usuelles et d'algorithmes classiques, en JavaScript, par Nicholas Zakas](https://github.com/nzakas/computer-science-in-javascript/) (en anglais) +- [Implémentations de différentes structures de données et utilitaires de recherche en JavaScript](https://github.com/monmohan/DataStructures_In_Javascript) (en anglais) diff --git a/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md b/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md index a2a24711a8..cad3505a3d 100644 --- a/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md +++ b/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md @@ -8,161 +8,332 @@ tags: translation_of: Web/JavaScript/Enumerability_and_ownership_of_properties original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattachement --- -
{{JsSidebar("More")}}
+{{JsSidebar("More")}} -

Les propriétés dites « énumérables » sont celles pour lesquelles la caractéristique interne [[Enumerable]] vaut true. C'est le cas par défaut pour les propriétés qui sont créées grâce à une affectation simple ou grâce à un initialisateur de propriété. Les propriétés définies avec des méthodes analogues à {{jsxref("Object.defineProperty()")}} auront [[Enumerable]] à false). Les propriétés énumérables sont celles qui seront parcourues dans une boucle {{jsxref("Instructions/for...in","for..in")}} (sauf si le nom de la propriété est un {{jsxref("Symbol")}}).

+Les propriétés dites « énumérables » sont celles pour lesquelles la caractéristique interne `[[Enumerable]]` vaut `true`. C'est le cas par défaut pour les propriétés qui sont créées grâce à une affectation simple ou grâce à un initialisateur de propriété. Les propriétés définies avec des méthodes analogues à {{jsxref("Object.defineProperty()")}} auront `[[Enumerable]]` à `false`). Les propriétés énumérables sont celles qui seront parcourues dans une boucle {{jsxref("Instructions/for...in","for..in")}} (sauf si le nom de la propriété est un {{jsxref("Symbol")}}). -

Le rattachement des propriétés est détérminé selon que la propriété est directement rattachée à l'objet et non à sa chaîne de prototypes. Il est également possible de récupérer l'ensemble des propriétés d'un objet. Dans le tableau suivant, on détaille les moyens possibles pour détecter, parcourir, énumérer, récupérer les propriétés d'un objet.

+Le rattachement des propriétés est détérminé selon que la propriété est directement rattachée à l'objet et non à sa chaîne de prototypes. Il est également possible de récupérer l'ensemble des propriétés d'un objet. Dans le tableau suivant, on détaille les moyens possibles pour détecter, parcourir, énumérer, récupérer les propriétés d'un objet. - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caractère énumérable et rattachement - méthodes natives pour détecter, récupérer et parcourir les propriétés
FonctionnalitéRattachement direct à l'objetRattachement direct à l'objet et sur la chaîne de prototypesUniquement sur la chaîne de prototypes
Détection - - - - - - - - - - - - - - - -
ÉnumérablesNon-énumérablesToutes
-

propertyIsEnumerable()

- -

hasOwnProperty()

-
hasOwnProperty() - en utilisant propertyIsEnumerable() afin d'exclure les propriétés énumérableshasOwnProperty()
-
- - - - - - - - - - - - - - - -
ÉnumerablesNon-énumérablesToutes
Cette fonctionnalité n'est pas disponible sans code supplémentaire.Cette fonctionnalité n'est pas disponible sans code supplémentaire.in
-
Cette fonctionnalité n'est pas disponible sans code supplémentaire.
Récupération - - - - - - - - - - - - - - - -
ÉnumérablesNon-énumérablesToutes
-

Object.keys()

- -

getOwnPropertyNames()

- -

getOwnPropertySymbols()

-
getOwnPropertyNames() getOwnPropertySymbols() en utilisant propertyIsEnumerable() afin d'exclure les propriétés énumérables -

getOwnPropertyNames()

- -

getOwnPropertySymbols()

-
-
Cette fonctionnalité n'est pas disponible sans code supplémentaire.Cette fonctionnalité n'est pas disponible sans code supplémentaire.
Parcours - - - - - - - - - - - - - - - -
ÉnumérablesNon-énumérablesToutes
-

Object.keys()

- -

getOwnPropertyNames()

- -

getOwnPropertySymbols()

-
getOwnPropertyNames() - getOwnPropertySymbols()en utilisant propertyIsEnumerable() afin d'exclure les propriétés énumérables -

getOwnPropertyNames()

- -

getOwnPropertySymbols()

-
-
- - - - - - - - - - - - - - - -
ÉnumerablesNon-énumérablesToutes
for..inCette fonctionnalité n'est pas disponible sans code supplémentaire.Cette fonctionnalité n'est pas disponible sans code supplémentaire.
-
Cette fonctionnalité n'est pas disponible sans code supplémentaire.
+ Caractère énumérable et rattachement - méthodes natives pour détecter, + récupérer et parcourir les propriétés +
FonctionnalitéRattachement direct à l'objetRattachement direct à l'objet et sur la chaîne de prototypesUniquement sur la chaîne de prototypes
Détection + + + + + + + + + + + + + + + +
ÉnumérablesNon-énumérablesToutes
+

+ propertyIsEnumerable() +

+

+ hasOwnProperty() +

+
+ hasOwnProperty() + - en utilisant propertyIsEnumerable() + afin d'exclure les propriétés énumérables + + hasOwnProperty() +
+
+ + + + + + + + + + + + + + + +
ÉnumerablesNon-énumérablesToutes
+ Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + + in +
+
+ Cette fonctionnalité n'est pas disponible sans code supplémentaire. +
Récupération + + + + + + + + + + + + + + + +
ÉnumérablesNon-énumérablesToutes
+

+ Object.keys() +

+

+ getOwnPropertyNames() +

+

+ getOwnPropertySymbols() +

+
+ getOwnPropertyNames() + getOwnPropertySymbols() en utilisant propertyIsEnumerable() + afin d'exclure les propriétés énumérables + +

+ getOwnPropertyNames() +

+

+ getOwnPropertySymbols() +

+
+
+ Cette fonctionnalité n'est pas disponible sans code supplémentaire. + + Cette fonctionnalité n'est pas disponible sans code supplémentaire. +
Parcours + + + + + + + + + + + + + + + +
ÉnumérablesNon-énumérablesToutes
+

+ Object.keys() +

+

+ getOwnPropertyNames() +

+

+ getOwnPropertySymbols() +

+
+ getOwnPropertyNames() + - + getOwnPropertySymbols()en utilisant propertyIsEnumerable() + afin d'exclure les propriétés énumérables + +

+ getOwnPropertyNames() +

+

+ getOwnPropertySymbols() +

+
+
+ + + + + + + + + + + + + + + +
ÉnumerablesNon-énumérablesToutes
+ for..in + + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. +
+
+ Cette fonctionnalité n'est pas disponible sans code supplémentaire. +
-

Obtenir les propriétés selon leur caractère énumérable et selon leur rattachement

+## Obtenir les propriétés selon leur caractère énumérable et selon leur rattachement -

Dans la plupart des cas, ce n'est pas l'algorithme le plus efficace mais il est présenté ici à des fins explicatives.

+Dans la plupart des cas, ce n'est pas l'algorithme le plus efficace mais il est présenté ici à des fins explicatives. -
    -
  • On peut détecter la présence d'une propriété grâce à RecuperateurDePropriete.laMethodeSouhaitee(obj).indexOf(prop) > -1
  • -
  • On peut parcourir les propriétés souhaitées avec RecuperateurDePropriete.laMethodeSouhaitee(obj).forEach(function (value, prop) {}); (on peut aussi utiliser filter(), map(), etc.)
  • -
+- On peut détecter la présence d'une propriété grâce à `RecuperateurDePropriete.laMethodeSouhaitee(obj).indexOf(prop) > -1` +- On peut parcourir les propriétés souhaitées avec `RecuperateurDePropriete.laMethodeSouhaitee(obj).forEach(function (value, prop) {});` (on peut aussi utiliser `filter()`, `map()`, etc.) -
var RecuperateurDePropriete = {
+```js
+var RecuperateurDePropriete = {
     getOwnEnumerables: function (obj) {
         return this._getPropertyNames(obj, true, false, this._enumerable);
          // On pourrait également utiliser for..in qu'on filtre avec hasOwnProperty
@@ -211,7 +382,7 @@ original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattac
         do {
             if (iterateSelfBool) {
                 Object.getOwnPropertyNames(obj).forEach(function (prop) {
-                    if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) {
+                    if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) {
                         props.push(prop);
                     }
                 });
@@ -224,102 +395,101 @@ original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattac
 
         return props;
     }
-};
+}; +``` -

Tableau de détection

+## Tableau de détection - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
infor..inobj.hasOwnProperty()obj.propertyIsEnumerable()Object.keys()Object.getOwnPropertyNames()Object.getOwnPropertyDescriptors()Reflect.ownKeys()
Propriétés énumérablestruetruetruetruetruetruetruetrue
Propriétés non-énumérablestruefalsetruefalsefalsetruetruetrue
Propriétés dont les clés sont des symbolestruefalsetruefalsefalsefalsetruetrue
Propriétés héritées et énumérablestruetruefalsefalsefalsefalsefalsefalse
Propriétés héritées et non-énumérablestruefalsefalsefalsefalsefalsefalsefalse
Propriétés héritées dont les clés sont des symbolestruefalsefalsefalsefalsefalsefalsefalse
infor..inobj.hasOwnProperty()obj.propertyIsEnumerable()Object.keys()Object.getOwnPropertyNames()Object.getOwnPropertyDescriptors()Reflect.ownKeys()
Propriétés énumérablestruetruetruetruetruetruetruetrue
Propriétés non-énumérablestruefalsetruefalsefalsetruetruetrue
Propriétés dont les clés sont des symbolestruefalsetruefalsefalsefalsetruetrue
Propriétés héritées et énumérablestruetruefalsefalsefalsefalsefalsefalse
Propriétés héritées et non-énumérablestruefalsefalsefalsefalsefalsefalsefalse
Propriétés héritées dont les clés sont des symbolestruefalsefalsefalsefalsefalsefalsefalse
-

Voir aussi

+## Voir aussi -
    -
  • in
  • -
  • for..in
  • -
  • {{jsxref("Object.hasOwnProperty()")}}
  • -
  • {{jsxref("Object.propertyIsEnumerable()")}}
  • -
  • {{jsxref("Object.getOwnPropertyNames()")}}
  • -
  • {{jsxref("Object.keys()")}}
  • -
  • {{jsxref("Object.getOwnPropertyDescriptors()")}}
  • -
+- [`in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in) +- [`for..in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) +- {{jsxref("Object.hasOwnProperty()")}} +- {{jsxref("Object.propertyIsEnumerable()")}} +- {{jsxref("Object.getOwnPropertyNames()")}} +- {{jsxref("Object.keys()")}} +- {{jsxref("Object.getOwnPropertyDescriptors()")}} diff --git a/files/fr/web/javascript/equality_comparisons_and_sameness/index.md b/files/fr/web/javascript/equality_comparisons_and_sameness/index.md index d61690d512..7e47857033 100644 --- a/files/fr/web/javascript/equality_comparisons_and_sameness/index.md +++ b/files/fr/web/javascript/equality_comparisons_and_sameness/index.md @@ -8,54 +8,45 @@ tags: translation_of: Web/JavaScript/Equality_comparisons_and_sameness original_slug: Web/JavaScript/Les_différents_tests_d_égalité --- -
{{jsSidebar("Intermediate")}}
- -

JavaScript fournit trois opérations permettant de comparer des valeurs :

- -
    -
  • L'égalité stricte (ou identité ou « triple égal ») utilisant ===,
  • -
  • L'égalité faible (ou « double égal ») utilisant ==,
  • -
  • {{jsxref("Object.is")}} (ajouté avec ECMAScript 2015).
  • -
- -

Ces trois opérations sont associées à quatre algorithmes d'égalité (depuis ES2015) :

- - - -

Selon la comparaison qu'on souhaite effectuer, on choisira une de ces opérations.

- -

En résumé :

- -
    -
  • L'égalité faible (==) effectuera une conversion des deux éléments à comparer avant d'effectuer la comparaison
  • -
  • L'égalité stricte (===) effectuera la même comparaison mais sans conversion préalable (elle renverra toujours false si les types des deux valeurs comparées sont différents)
  • -
  • Enfin Object.is() se comportera comme l'égalité stricte sauf pour les valeurs NaN, -0 et +0 : pour Object.is(), -0 et +0 seront différents mais on aura Object.is(NaN, NaN) qui sera true. (Généralement, quand on compare NaN avec NaN en utilisant l'égalité stricte ou l'égalité faible, cela donne false afin de respecter la norme IEEE 754.)
  • -
- -

On notera que pour ces trois opérations, la comparaison s'effectue sur les valeurs des éléments qu'on compare, aucune de ces opérations ne permet de comparer la structure des paramètres. Pour des objets non primitifs, x et y qui ont la même structure mais qui sont des objets distincs, chacune des opérations présentées ci-avant sera évaluée à false.

- -

L'égalité stricte avec ===

- -

L'égalité stricte compare deux valeurs et teste leur égalité. Aucune des valeurs n'est convertie implicitement en une autre valeur avant que la comparaison soit effectuée. Si les valeurs sont typées différemment, elles sont considérées comme différentes. Si les valeurs sont de même type et ne sont pas des nombres, elles sont considérées égales si elles ont la même valeur. Si les deux valeurs sont des nombres, elles sont égales si elles ont la même valeur et que cette valeur n'est pas NaN ou si l'une vaut +0 et l'autre -0.

- -
var num = 0;
+{{jsSidebar("Intermediate")}}
+
+JavaScript fournit trois opérations permettant de comparer des valeurs :
+
+- L'égalité stricte (ou identité ou « triple égal ») utilisant [`===`](),
+- L'égalité faible (ou « double égal ») utilisant [`==`](),
+- {{jsxref("Object.is")}} (ajouté avec ECMAScript 2015).
+
+Ces trois opérations sont associées à quatre algorithmes d'égalité (depuis ES2015) :
+
+- [La comparaison d'égalité abstraite (`==`)](#faible)
+- [La comparaison d'égalité stricte (`===`)](#stricte)
+
+  - Utilisée par {{jsxref("Array.indexOf")}} et {{jsxref("Array.lastIndexOf")}} et la sensibilité à la casse
+
+- [_SameValueZero_ (l'égalité de valeurs nulles)](#SameValueZero)
+
+  - Utilisée par les constructeurs {{jsxref("TypedArray")}} et {{jsxref("ArrayBuffer")}} et par les opérations associées à {{jsxref("Map")}} et {{jsxref("Set")}}. Depuis ES2016, cet algorithme est également utilisé par {{jsxref("String.includes")}} et {{jsxref("Array.includes")}}
+
+- [_SameValue_ (l'égalité de valeurs)](#sameValue)
+
+  - Utilisée partout ailleurs
+
+Selon la comparaison qu'on souhaite effectuer, on choisira une de ces opérations.
+
+En résumé :
+
+- L'égalité faible (`==`) effectuera une conversion des deux éléments à comparer avant d'effectuer la comparaison
+- L'égalité stricte (`===`) effectuera la même comparaison mais sans conversion préalable (elle renverra toujours false si les types des deux valeurs comparées sont différents)
+- Enfin `Object.is()` se comportera comme l'égalité stricte sauf pour les valeurs `NaN`, `-0` et `+0` : pour `Object.is()`, `-0` et `+0` seront différents mais on aura `Object.is(NaN, NaN)` qui sera `true`. (Généralement, quand on compare `NaN` avec `NaN` en utilisant l'égalité stricte ou l'égalité faible, cela donne `false` afin de respecter la norme IEEE 754.)
+
+On notera que pour ces trois opérations, la comparaison s'effectue sur les valeurs des éléments qu'on compare, aucune de ces opérations ne permet de comparer la structure des paramètres. Pour des objets non primitifs, `x` et `y` qui ont la même structure mais qui sont des objets distincs, chacune des opérations présentées ci-avant sera évaluée à `false`.
+
+## L'égalité stricte avec `===`
+
+L'égalité stricte compare deux valeurs et teste leur égalité. Aucune des valeurs n'est convertie implicitement en une autre valeur avant que la comparaison soit effectuée. Si les valeurs sont typées différemment, elles sont considérées comme différentes. Si les valeurs sont de même type et ne sont pas des nombres, elles sont considérées égales si elles ont la même valeur. Si les deux valeurs sont des nombres, elles sont égales si elles ont la même valeur et que cette valeur n'est pas NaN ou si l'une vaut +0 et l'autre -0.
+
+```js
+var num = 0;
 var obj = new String("0");
 var str = "0";
 
@@ -69,99 +60,100 @@ console.log(obj === str); // false
 console.log(null === undefined); // false
 console.log(obj === null); // false
 console.log(obj === undefined); // false
-
+``` -

Ce test d'égalité stricte est presque toujours la meilleure des opérations à considérer pour ces tests. Excepté pour les nombres, la sémantique utilisée est simple : une valeur est uniquement égale à elle-même. En ce qui concerne les nombres, il y a deux cas aux limites à considérer. Le premier cas concerne le nombre zéro positif ou négatif. Cela peut être utile dans la représentation de problèmes mathématiques mais ne constitue pas une différence pour de nombreuses situations : le test d'égalité stricte considère que ce sont les mêmes valeurs. Le second cas concerne la valeur « n'est pas un nombre », NaN (pour « not a number » en anglais) permettant de représenter certaines entités mathématiques : la somme des deux infinis (positif et négatif) par exemple. Le test d'égalité stricte considère que NaN est différent de toutes les valeurs, y compris lui-même. (N.B. : Le seul cas de figure pour lequel on a (x !== x) qui renvoie true est lorsque x vaut NaN.)

+Ce test d'égalité stricte est presque toujours la meilleure des opérations à considérer pour ces tests. Excepté pour les nombres, la sémantique utilisée est simple : une valeur est uniquement égale à elle-même. En ce qui concerne les nombres, il y a deux cas aux limites à considérer. Le premier cas concerne le nombre zéro positif ou négatif. Cela peut être utile dans la représentation de problèmes mathématiques mais ne constitue pas une différence pour de nombreuses situations : le test d'égalité stricte considère que ce sont les mêmes valeurs. Le second cas concerne la valeur « n'est pas un nombre », `NaN` (pour « not a number » en anglais) permettant de représenter certaines entités mathématiques : la somme des deux infinis (positif et négatif) par exemple. Le test d'égalité stricte considère que `NaN` est différent de toutes les valeurs, y compris lui-même. (N.B. : Le seul cas de figure pour lequel on a `(x !== x)` qui renvoie `true` est lorsque x vaut `NaN`.) -

L'égalité faible avec ==

+## L'égalité faible avec `==` -

Le test d'égalité faible compare deux valeurs après les avoir converties en valeurs d'un même type. Une fois converties (la conversion peut s'effectuer pour l'une ou les deux valeurs), la comparaison finale est la même que celle effectuée par ===. L'égalité faible est symétrique : A == B aura toujours la même signification que B == A pour toute valeur de A et B.

+Le test d'égalité faible compare deux valeurs _après_ les avoir converties en valeurs d'un même type. Une fois converties (la conversion peut s'effectuer pour l'une ou les deux valeurs), la comparaison finale est la même que celle effectuée par `===`. L'égalité faible est _symétrique_ : `A == B` aura toujours la même signification que `B == A` pour toute valeur de A et B. -

La comparaison d'égalité est effectuée comme suit pour des opérandes de différents types :

+La comparaison d'égalité est effectuée comme suit pour des opérandes de différents types : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Opérande B
UndefinedNullNumberStringBooleanObject
Opérande AUndefinedtruetruefalsefalsefalsefalse
Nulltruetruefalsefalsefalsefalse
NumberfalsefalseA === BA === ToNumber(B)A === ToNumber(B)A == ToPrimitive(B)
StringfalsefalseToNumber(A) === BA === BToNumber(A) === ToNumber(B)A == ToPrimitive(B)
BooleanfalsefalseToNumber(A) === BToNumber(A) === ToNumber(B)A === Bfalse
ObjectfalsefalseToPrimitive(A) == BToPrimitive(A) == BToPrimitive(A) == ToNumber(B) -

A === B

-
Opérande B
UndefinedNullNumberStringBooleanObject
Opérande AUndefinedtruetruefalsefalsefalsefalse
Nulltruetruefalsefalsefalsefalse
NumberfalsefalseA === BA === ToNumber(B)A === ToNumber(B)A == ToPrimitive(B)
StringfalsefalseToNumber(A) === BA === BToNumber(A) === ToNumber(B)A == ToPrimitive(B)
BooleanfalsefalseToNumber(A) === BToNumber(A) === ToNumber(B)A === Bfalse
ObjectfalsefalseToPrimitive(A) == BToPrimitive(A) == BToPrimitive(A) == ToNumber(B) +

A === B

+
-

Dans le tableau ci-dessus, l'expression ToNumber(A) correspond à une tentative de convertir l'argument en un nombre avant la comparaison. Le résultat obtenu est équivalent à +A (l'opérateur unaire +). ToPrimitive(A) correspond à une tentative de convertir l'argument en une valeur primitive grâce à plusieurs méthodes comme A.toString et A.valueOf.

+Dans le tableau ci-dessus, l'expression `ToNumber(A)` correspond à une tentative de convertir l'argument en un nombre avant la comparaison. Le résultat obtenu est équivalent à `+A` (l'opérateur unaire +). `ToPrimitive(A)` correspond à une tentative de convertir l'argument en une valeur primitive grâce à plusieurs méthodes comme `A.toString` et `A.valueOf`. -

Selon ECMAScript, au sens de l'égalité faible, tous les objets sont différents de undefined et de null. Cependant, la plupart des navigateurs autorisent, dans certains contextes, unensemble restreint d'objets (notamment l'objet document.all), à agir comme s'ils émulaient la valeur undefined. L'égalité faible est un de ces contextes. Pour tous les autres cas, un objet ne sera jamais approximativement égal à undefined ou à null.

+Selon ECMAScript, au sens de l'égalité faible, tous les objets sont différents de `undefined` et de `null`. Cependant, la plupart des navigateurs autorisent, dans certains contextes, unensemble restreint d'objets (notamment l'objet `document.all`), à agir comme s'ils émulaient la valeur `undefined`. L'égalité faible est un de ces contextes. Pour tous les autres cas, un objet ne sera jamais approximativement égal à `undefined` ou à `null`. -
var num = 0;
+```js
+var num = 0;
 var obj = new String("0");
 var str = "0";
 
@@ -178,284 +170,97 @@ console.log(null == undefined); // true
 // sauf dans certains cas exceptionnels
 console.log(obj == null);
 console.log(obj == undefined);
-
+``` -

Certains développeurs considèrent que ce n'est jamais une bonne idée d'utiliser l'égalilté faible. Le résultat d'une comparaison utilisant l'égalité stricte est plus simple à appréhender et à prédire, de plus il n'y a aucune conversion implicite ce qui rend le test plus rapide.

+Certains développeurs considèrent que ce n'est jamais une bonne idée d'utiliser l'égalilté faible. Le résultat d'une comparaison utilisant l'égalité stricte est plus simple à appréhender et à prédire, de plus il n'y a aucune conversion implicite ce qui rend le test plus rapide. -

Égalité de valeurs

+## Égalité de valeurs -

L'égalité de valeurs répond à un dernier cas d'utilisation : savoir si deux valeurs sont fonctionnellement identiques pour tout contexte. (Ce cas d'utilisation est un exemple du principe de substitution de Liskov). On retrouve ce cas lorsqu'on essaie de changer une propriété immuable :

+L'égalité de valeurs répond à un dernier cas d'utilisation : savoir si deux valeurs sont fonctionnellement identiques pour tout contexte. (Ce cas d'utilisation est un exemple du [principe de substitution de Liskov](https://fr.wikipedia.org/wiki/Principe_de_substitution_de_Liskov)). On retrouve ce cas lorsqu'on essaie de changer une propriété immuable : -
// Ajouter la propriété immuable NEGATIVE_ZERO au constructor Number.
+```js
+// Ajouter la propriété immuable NEGATIVE_ZERO au constructor Number.
 Object.defineProperty(Number, "NEGATIVE_ZERO",
                       { value: -0, writable: false, configurable: false, enumerable: false });
 
 function attemptMutation(v) {
   Object.defineProperty(Number, "NEGATIVE_ZERO", { value: v });
 }
-
+``` -

Object.defineProperty lancera une exception pour tout changement de la propriété qui serait réellement un changement. Rien ne se passera si aucun changement n'est nécessaire. Ainsi, si v vaut -0, aucun changement n'est nécessaire et il n'y aura pas d'erreur. Mais si v vaut +0, Number.NEGATIVE_ZERO n'aurait plus la même valeur immuable. De façon interne à l'implémentation, la nouvelle valeur est comparée avec la valeur courante en utilisant une égalité de valeurs.

+`Object.defineProperty` lancera une exception pour tout changement de la propriété qui serait réellement un changement. Rien ne se passera si aucun changement n'est nécessaire. Ainsi, si `v` vaut `-0`, aucun changement n'est nécessaire et il n'y aura pas d'erreur. Mais si `v` vaut `+0`, `Number.NEGATIVE_ZERO` n'aurait plus la même valeur immuable. De façon interne à l'implémentation, la nouvelle valeur est comparée avec la valeur courante en utilisant une égalité de valeurs. -

L'égalité de valeurs peut être testée grâce à la méthode {{jsxref("Object.is")}}.

+L'égalité de valeurs peut être testée grâce à la méthode {{jsxref("Object.is")}}. -

Égalité de valeurs nulles

+## Égalité de valeurs nulles -

On utilise la même égalité que l'égalité de valeur et on considère que +0 et -0 sont égaux.

+On utilise la même égalité que l'égalité de valeur et on considère que `+0` et `-0` sont égaux. -

Égalité abstraite, égalité stricte et valeurs identiques : la spécification

+## Égalité abstraite, égalité stricte et valeurs identiques : la spécification -

Selon ES5, la comparaison effectuée par == est décrite dans la section 11.9.3 sur l'algorithme d'égalité abstraite (Abstract Equality Algorithm). La comparaison donnée par === est décrite dans la section 11.9.6 sur l'algorithme d'égalité stricte (Strict Equality Algorithm). Ces documents sont en anglais mais sont tout à fait abordables, ne pas hésiter à les consulter (conseil : d'abord commencer par l'algorithme d'égalité stricte). ES5 décrit également, dans la section 9.12 sur l'algorithme SameValue, l'opération utilisée en interne par le moteur JavaScript. Cet algorithme est principalement basé sur l'algorithme d'égalité stricte : 11.9.6.4 et 9.12.4 diffèrent en ce qui concerne les nombres. ES6 (ECMAScript 2015) permet d'utiliser cet algorithme grâce à la méthode {{jsxref("Object.is")}}.

+Selon ES5, la comparaison effectuée par [`==`]() est décrite dans [la section 11.9.3 sur l'algorithme d'égalité abstraite (_Abstract Equality Algorithm_)](https://ecma-international.org/ecma-262/5.1/#sec-11.9.3). La comparaison donnée par [`===`]() est décrite dans [la section 11.9.6 sur l'algorithme d'égalité stricte (_Strict Equality Algorithm_)](https://ecma-international.org/ecma-262/5.1/#sec-11.9.6). Ces documents sont en anglais mais sont tout à fait abordables, ne pas hésiter à les consulter (conseil : d'abord commencer par l'algorithme d'égalité stricte). ES5 décrit également, dans [la section 9.12 sur l'algorithme SameValue](https://ecma-international.org/ecma-262/5.1/#sec-9.12), l'opération utilisée en interne par le moteur JavaScript. Cet algorithme est principalement basé sur l'algorithme d'égalité stricte : 11.9.6.4 et 9.12.4 diffèrent en ce qui concerne les nombres. ES6 (ECMAScript 2015) permet d'utiliser cet algorithme grâce à la méthode {{jsxref("Object.is")}}. -

Dans ces documents, on peut voir que l'algorithme d'égalité stricte est un sous-ensemble de l'algorithme d'égalité abstraite (exception faite de la vérification du type) car 11.9.6.2–7 correspond exactement à 11.9.3.1.a–f.

+Dans ces documents, on peut voir que l'algorithme d'égalité stricte est un sous-ensemble de l'algorithme d'égalité abstraite (exception faite de la vérification du type) car 11.9.6.2–7 correspond exactement à 11.9.3.1.a–f. -

Un modèle pour mieux comprendre ?

+## Un modèle pour mieux comprendre ? -

Avant ES6 (ECMAScript 2015), il était courant de dire que l'égalité stricte avec le triple égal était une version « améliorée » de l'égalité faible (double égal) et vice versa. En effet, l'égalité faible ajoute une étape de conversion des types qui n'est pas fournie par l'égalité stricte (ce qui permet d'avoir 6 == "6"). On peut aussi dire que l'égalité stricte est une version améliorée de l'égalité simple car elle ajoute une fonctionnalité de vérification des types. Selon votre approche et votre problème, une de ces égalités se prêtera mieux à la résolution.

+Avant ES6 (ECMAScript 2015), il était courant de dire que l'égalité stricte avec le triple égal était une version « améliorée » de l'égalité faible (double égal) et vice versa. En effet, l'égalité faible ajoute une étape de conversion des types qui n'est pas fournie par l'égalité stricte (ce qui permet d'avoir `6 == "6"`). On peut aussi dire que l'égalité stricte est une version améliorée de l'égalité simple car elle ajoute une fonctionnalité de vérification des types. Selon votre approche et votre problème, une de ces égalités se prêtera mieux à la résolution. -

Cependant, ce « modèle de pensées » ne peut pas être étendu avec l'arrivée d'{{jsxref("Object.is")}} avec ES6 (ECMAScript 2015). En effet Object.is() n'est pas plus « faible » que l'égalité faible ou plus « stricte » que l'égalité stricte et il n'est pas non plus quelque part entre les deux. Dans le tableau de comparaison ci-après, on voit que la différence provient avant tout de la façon dont {{jsxref("Object.is")}} gère {{jsxref("NaN")}}. On note ici que si Object.is(NaN, NaN) valait false, on pourrait dire qu'Object.is() est plus stricte que == ou === car elle distingue -0 et +0. Cependant, ce n'est pas le cas et on a bien Object.is(NaN,NaN) qui vaut true. C'est pour cette raison qu'il faut considérer {{jsxref("Object.is")}} selon ses caractéristiques spécifiques plutôt que comme une version plus faible ou plus stricte des autres opérateurs d'égalité.

+Cependant, ce « modèle de pensées » ne peut pas être étendu avec l'arrivée d'{{jsxref("Object.is")}} avec ES6 (ECMAScript 2015). En effet `Object.is()` n'est pas plus « faible » que l'égalité faible ou plus « stricte » que l'égalité stricte et il n'est pas non plus quelque part entre les deux. Dans le tableau de comparaison ci-après, on voit que la différence provient avant tout de la façon dont {{jsxref("Object.is")}} gère {{jsxref("NaN")}}. On note ici que si `Object.is(NaN, NaN)` valait `false`, on pourrait dire qu'`Object.is()` est plus stricte que == ou === car elle distingue `-0` et `+0`. Cependant, ce n'est pas le cas et on a bien `Object.is(NaN,NaN)` qui vaut `true`. C'est pour cette raison qu'il faut considérer {{jsxref("Object.is")}} selon ses caractéristiques spécifiques plutôt que comme une version plus faible ou plus stricte des autres opérateurs d'égalité. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Comparaisons d'égalité
xy=====Object.isSameValueZero
undefinedundefinedtruetruetruetrue
nullnulltruetruetruetrue
truetruetruetruetruetrue
falsefalsetruetruetruetrue
'toto''toto'truetruetruetrue
00truetruetruetrue
+0-0truetruefalsetrue
+00truetruetruetrue
-00truetruefalsetrue
0falsetruefalsefalsefalse
""falsetruefalsefalsefalse
""0truefalsefalsefalse
'0'0truefalsefalsefalse
'17'17truefalsefalsefalse
[1, 2]'1,2'truefalsefalsefalse
new String('toto')'toto'truefalsefalsefalse
nullundefinedtruefalsefalsefalse
nullfalsefalsefalsefalsefalse
undefinedfalsefalsefalsefalsefalse
{ toto: 'truc' }{ toto: 'truc' }falsefalsefalsefalse
new String('toto')new String('toto')falsefalsefalsefalse
0nullfalsefalsefalsefalse
0NaNfalsefalsefalsefalse
'toto'NaNfalsefalsefalsefalse
NaNNaNfalsefalsetruetrue
+| x | y | `==` | `===` | `Object.is` | `SameValueZero` | +| -------------------- | -------------------- | ------- | ------- | ----------- | --------------- | +| `undefined` | `undefined` | `true` | `true` | `true` | `true` | +| `null` | `null` | `true` | `true` | `true` | `true` | +| `true` | `true` | `true` | `true` | `true` | `true` | +| `false` | `false` | `true` | `true` | `true` | `true` | +| `'toto'` | `'toto'` | `true` | `true` | `true` | `true` | +| `0` | `0` | `true` | `true` | `true` | `true` | +| `+0` | `-0` | `true` | `true` | `false` | `true` | +| `+0` | `0` | `true` | `true` | `true` | `true` | +| `-0` | `0` | `true` | `true` | `false` | `true` | +| `0` | `false` | `true` | `false` | `false` | `false` | +| `""` | `false` | `true` | `false` | `false` | `false` | +| `""` | `0` | `true` | `false` | `false` | `false` | +| `'0'` | `0` | `true` | `false` | `false` | `false` | +| `'17'` | `17` | `true` | `false` | `false` | `false` | +| `[1, 2]` | `'1,2'` | `true` | `false` | `false` | `false` | +| `new String('toto')` | `'toto'` | `true` | `false` | `false` | `false` | +| `null` | `undefined` | `true` | `false` | `false` | `false` | +| `null` | `false` | `false` | `false` | `false` | `false` | +| `undefined` | `false` | `false` | `false` | `false` | `false` | +| `{ toto: 'truc' }` | `{ toto: 'truc' }` | `false` | `false` | `false` | `false` | +| `new String('toto')` | `new String('toto')` | `false` | `false` | `false` | `false` | +| `0` | `null` | `false` | `false` | `false` | `false` | +| `0` | `NaN` | `false` | `false` | `false` | `false` | +| `'toto'` | `NaN` | `false` | `false` | `false` | `false` | +| `NaN` | `NaN` | `false` | `false` | `true` | `true` | + +## Quand utiliser {{jsxref("Object.is")}} et quand utiliser l'égalité stricte + +En plus de la façon dont {{jsxref("Object.is")}} traite `NaN`, la spécificité d'`Object.is()` réside dans sa façon de traiter les valeurs proches de zéro. Dans des cas d'utilisation où on a besoin d'effectuer de la méta-programmation, notamment pour imiter certaines caractéristiques de {{jsxref("Object.defineProperty")}}. Si le scénario d'utilisation ne nécessite pas ce comportement, il est conseillé d'utiliser [`===`](). Même si on souhaite pouvoir comparer `NaN` avec lui-même et que ce test vaille `true`, il sera plus simple d'utiliser la méthode {{jsxref("isNaN")}} disponible avec les versions antérieures d'ECMAScript. En effet, cela évite d'avoir à traiter des cas plus complexes où il faudrait gérer les signes des zéros dans les différentes comparaisons. + +Voici une liste (non exhaustive) d'opérateurs et de méthodes natives qui peuvent entraîner l'apparition des valeurs `-0` et `+0` dans le code : + +- [`-` (négation unaire)](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_arithmétiques#Négation_unaire) -

Quand utiliser {{jsxref("Object.is")}} et quand utiliser l'égalité stricte

+ - : Si on prend l'opposé de `0`, on aura, bien entendu,`-0`. Cependant, avec les expressions, cela peut faire que la valeur `-0` se glisse dans les variables sans qu'on s'en rende compte. Par exemple : -

En plus de la façon dont {{jsxref("Object.is")}} traite NaN, la spécificité d'Object.is() réside dans sa façon de traiter les valeurs proches de zéro. Dans des cas d'utilisation où on a besoin d'effectuer de la méta-programmation, notamment pour imiter certaines caractéristiques de {{jsxref("Object.defineProperty")}}. Si le scénario d'utilisation ne nécessite pas ce comportement, il est conseillé d'utiliser ===. Même si on souhaite pouvoir comparer NaN avec lui-même et que ce test vaille true, il sera plus simple d'utiliser la méthode {{jsxref("isNaN")}} disponible avec les versions antérieures d'ECMAScript. En effet, cela évite d'avoir à traiter des cas plus complexes où il faudrait gérer les signes des zéros dans les différentes comparaisons.

+ ```js + let forceArrêt = obj.masse * -obj.vitesse + ``` -

Voici une liste (non exhaustive) d'opérateurs et de méthodes natives qui peuvent entraîner l'apparition des valeurs -0 et +0 dans le code :

+ Si `obj.vitesse` vaut `0` (ou est évalué à `0`), un `-0` sera introduit, ce qui fera que `forceArrêt` pourra être négative. -
-
- (négation unaire)
-
-

Si on prend l'opposé de 0, on aura, bien entendu,-0. Cependant, avec les expressions, cela peut faire que la valeur -0 se glisse dans les variables sans qu'on s'en rende compte. Par exemple :

-
let forceArrêt = obj.masse * -obj.vitesse
-

Si obj.vitesse vaut 0 (ou est évalué à 0), un -0 sera introduit, ce qui fera que forceArrêt pourra être négative.

-
-
{{jsxref("Math.atan2")}}, {{jsxref("Math.ceil")}}, {{jsxref("Math.pow")}}, {{jsxref("Math.round")}}
-
Ces méthodes peuvent introduire -0 dans une expression lors de leur évaluation, même si -0 ne faisait pas partie des paramètres. Par exemple, si on utilise Math.pow() pour élever {{jsxref("Infinity", "-Infinity")}} à une puissance négative, on obtiendra -0 pour une puissance impaire. Pour plus de détails, voir la documentation de chaque méthode.
-
{{jsxref("Math.floor")}}, {{jsxref("Math.max")}}, {{jsxref("Math.min")}}, {{jsxref("Math.sin")}}, {{jsxref("Math.sqrt")}}, {{jsxref("Math.tan")}}
-
Ces méthodes peuvent renvoyer -0 dans certains cas où -0 est passé en paramètre. Par exemple, Math.min(-0, +0) fournira -0. Pour plus de détails, voir la documentation de chaque méthode.
-
~, <<, >>
-
Chacun de ces opérateurs utilise l'algorithme ToInt32 interne au moteur JavaScript. Étant donné qu'il n'y a qu'une seule représentation pour 0 sur les entiers exprimés avec le type interne sur 32 bits, -0 ne sera pas invariant pour deux opérations symétriques : Object.is(~~(-0), -0) et Object.is(-0 << 2 >> 2, -0) renverront tous les deux false.
-
+- {{jsxref("Math.atan2")}}, {{jsxref("Math.ceil")}}, {{jsxref("Math.pow")}}, {{jsxref("Math.round")}} + - : Ces méthodes peuvent introduire `-0` dans une expression lors de leur évaluation, même si `-0` ne faisait pas partie des paramètres. Par exemple, si on utilise `Math.pow()` pour élever {{jsxref("Infinity", "-Infinity")}} à une puissance négative, on obtiendra `-0` pour une puissance impaire. Pour plus de détails, voir la documentation de chaque méthode. +- {{jsxref("Math.floor")}}, {{jsxref("Math.max")}}, {{jsxref("Math.min")}}, {{jsxref("Math.sin")}}, {{jsxref("Math.sqrt")}}, {{jsxref("Math.tan")}} + - : Ces méthodes peuvent renvoyer `-0` dans certains cas où `-0` est passé en paramètre. Par exemple, `Math.min(-0, +0)` fournira `-0`. Pour plus de détails, voir la documentation de chaque méthode. +- [`~`](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires#.7E_.28NON_binaire.29), [`<<`](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires#.3C.3C_.28d.C3.A9calage_.C3.A0_gauche.29), [`>>`](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires#.3E.3E_.28d.C3.A9calage_.C3.A0_droite_avec_propagation_du_signe.29) + - : Chacun de ces opérateurs utilise l'algorithme ToInt32 interne au moteur JavaScript. Étant donné qu'il n'y a qu'une seule représentation pour 0 sur les entiers exprimés avec le type interne sur 32 bits, `-0` ne sera pas invariant pour deux opérations symétriques : `Object.is(~~(-0), -0)` et `Object.is(-0 << 2 >> 2, -0)` renverront tous les deux `false`. -

Si on utilise {{jsxref("Object.is")}} et qu'on ne souhaite pas gérer les cas aux limites autour de zéro, cela peut avoir des effet indésirés. En revanche, si on souhaite effectivement comparer -0 et +0, c'est la méthode à adopter.

+Si on utilise {{jsxref("Object.is")}} et qu'on ne souhaite pas gérer les cas aux limites autour de zéro, cela peut avoir des effet indésirés. En revanche, si on souhaite effectivement comparer `-0` et `+0`, c'est la méthode à adopter. -

Voir aussi

+## Voir aussi - +- [Tableau des comparaisons en JavaScript](https://dorey.github.io/JavaScript-Equality-Table/) diff --git a/files/fr/web/javascript/eventloop/index.md b/files/fr/web/javascript/eventloop/index.md index d349d9d056..967b2e0ea8 100644 --- a/files/fr/web/javascript/eventloop/index.md +++ b/files/fr/web/javascript/eventloop/index.md @@ -8,23 +8,24 @@ tags: translation_of: Web/JavaScript/EventLoop original_slug: Web/JavaScript/Concurrence_et_boucle_des_événements --- -
{{jsSidebar("Advanced")}}
+{{jsSidebar("Advanced")}} -

JavaScript gère la concurrence grâce à une « boucle d'événements ». Ce modèle est différent de la gestion faite par des langages comme C ou Java.

+JavaScript gère la concurrence grâce à une « boucle d'événements ». Ce modèle est différent de la gestion faite par des langages comme C ou Java. -

Notions liées à l'exécution

+## Notions liées à l'exécution -

Les sections qui suivent décrivent un modèle théorique. En réalité, les moteurs JavaScript implémentent et optimisent fortement la sémantique décrite ici.

+Les sections qui suivent décrivent un modèle théorique. En réalité, les moteurs JavaScript implémentent et optimisent fortement la sémantique décrite ici. -

Représentation visuelle

+### Représentation visuelle -

Stack, heap, queue

+![Stack, heap, queue](the_javascript_runtime_environment_example.svg) -

La pile d'appels (stack)

+### La pile d'appels (_stack_) -

Les appels de fonction forment une pile de cadre (frames).

+Les appels de fonction forment une pile de cadre (_frames_). -
function f(b){
+```js
+function f(b){
   var a = 12;
   return a + b + 35;
 }
@@ -35,47 +36,48 @@ function g(x){
 }
 
 console.log(g(21)); // affichera 131
-
+``` -

Lors de l'appel à g, on crée un premier cadre contenant les arguments de g ainsi que les variables locales. Quand g appelle f, un deuxième cadre est créé et placé sur le premier et contient les arguments de f ainsi que les variables locales. Lorsque f a fini et renvoyé son résultat, le cadre correspondant (celui qui est sur le dessus) est retiré de la pile (il reste donc le cadre lié à l'appel de g). Quand g a fini grâce aux informations transmises, la pile devient vide.

+Lors de l'appel à `g`, on crée un premier cadre contenant les arguments de `g` ainsi que les variables locales. Quand `g` appelle `f`, un deuxième cadre est créé et placé sur le premier et contient les arguments de `f` ainsi que les variables locales. Lorsque `f` a fini et renvoyé son résultat, le cadre correspondant (celui qui est sur le dessus) est retiré de la pile (il reste donc le cadre lié à l'appel de `g`). Quand `g` a fini grâce aux informations transmises, la pile devient vide. -

Le tas (heap)

+### Le tas (_heap_) -

Les objets sont alloués en mémoire dans un tas qui désigne une zone de la mémoire sans structure particulière.

+Les objets sont alloués en mémoire dans un tas qui désigne une zone de la mémoire sans structure particulière. -

La file (queue)

+### La file (_queue_) -

Un environnement d'exécution JavaScript (runtime) contient une queue de messages à traiter. Chaque message est associé à une fonction. Lorsque la pile est vide ou a suffisamment d'espace, on retire un message de la queue et on le traite. Le traitement consiste à appeler la fonction associée au message (et donc à créer le cadre dans la pile d'appel). Le traitement d'un message est fini lorsque la pile d'appels redevient vide.

+Un environnement d'exécution JavaScript (_runtime_) contient une queue de messages à traiter. Chaque message est associé à une fonction. Lorsque la pile est vide ou a suffisamment d'espace, on retire un message de la queue et on le traite. Le traitement consiste à appeler la fonction associée au message (et donc à créer le cadre dans la pile d'appel). Le traitement d'un message est fini lorsque la pile d'appels redevient vide. -

La boucle d'événements

+## La boucle d'événements -

La boucle d'événement tire principalement son nom de son implémentation. Celle-ci ressemble à :

+La boucle d'événement tire principalement son nom de son implémentation. Celle-ci ressemble à : -
while (queue.attendreMessage()){
+```js
+while (queue.attendreMessage()){
   queue.traiterProchainMessage();
-}
+} +``` -

queue.attendreMessage est un fonction synchrone qui attend un message même s'il n'y en a aucun à traiter.

+`queue.attendreMessage` est un fonction synchrone qui attend un message même s'il n'y en a aucun à traiter. -

Traiter de A à Z (run-to-completion)

+### Traiter de A à Z (_run-to-completion_) -

Chaque message sera traité complètement avant tout autre message. Cela permet de savoir que, lorsqu'une fonction s'exécute, on ne peut pas observer l'exécution d'un autre code qui prendrait le pas (modifiant les données de la fonction par exemple). Le modèle de thread utilisé par le langage C, par exemple, que la fonction puisse être interrompue à tout moment pour permettre à un autre thread d'exécuter un autre code.

+Chaque message sera traité complètement avant tout autre message. Cela permet de savoir que, lorsqu'une fonction s'exécute, on ne peut pas observer l'exécution d'un autre code qui prendrait le pas (modifiant les données de la fonction par exemple). Le modèle de _thread_ utilisé par le langage C, par exemple, que la fonction puisse être interrompue à tout moment pour permettre à un autre _thread_ d'exécuter un autre code. -

Ce modèle possède un désavantage : lorsqu'un message prend trop de temps à être traité, l'application ne peut plus gérer les interactions utilisateur comme les clics ou le défilement. Généralement, le navigateur affiche alors « Le script met trop de temps à répondre ». Une bonne pratique consiste à rendre le traîtement de message le plus court possible et à découper le message problématique en plusieurs messages.

+Ce modèle possède un désavantage : lorsqu'un message prend trop de temps à être traité, l'application ne peut plus gérer les interactions utilisateur comme les clics ou le défilement. Généralement, le navigateur affiche alors « Le script met trop de temps à répondre ». Une bonne pratique consiste à rendre le traîtement de message le plus court possible et à découper le message problématique en plusieurs messages. -

L'ajout de messages

+### L'ajout de messages -

Dans les navigateurs web, des messages sont ajoutés à chaque fois qu'un événement se produit et qu'un gestionnaire d'événements y est attaché. S'il n'y a pas d'écouteur (listener) pour intercepter l'événement, il est perdu. Ainsi, si on clique un élément qui possède un gestionnaire d'événements pour les clics, un message sera ajouté (il en va de même avec les autres événements).

+Dans les navigateurs web, des messages sont ajoutés à chaque fois qu'un événement se produit et qu'un gestionnaire d'événements y est attaché. S'il n'y a pas d'écouteur (_listener_) pour intercepter l'événement, il est perdu. Ainsi, si on clique un élément qui possède un gestionnaire d'événements pour les clics, un message sera ajouté (il en va de même avec les autres événements). -

La fonction setTimeout est appelée avec deux arguments : un message à la suite de la queue et la durée à attendre (optionnelle, par défaut elle vaut 0). La durée représente le temps minimal à attendre avant que le message soit placé dans la queue. S'il n'y a pas d'autre message dans la queue, le message sera traîté directement. En revanche, s'il y a d'autres messages auparavant, le message de setTimeout devra attendre la fin du traîtement des messages précédents déjà présents dans la queue. C'est pourquoi le deuxième argument de cette fonction indique une durée minimum et non une durée garantie.

+La fonction [`setTimeout`](/fr/docs/DOM/window.setTimeout) est appelée avec deux arguments : un message à la suite de la queue et la durée à attendre (optionnelle, par défaut elle vaut 0). La durée représente le temps minimal à attendre avant que le message soit placé dans la queue. S'il n'y a pas d'autre message dans la queue, le message sera traîté directement. En revanche, s'il y a d'autres messages auparavant, le message de `setTimeout` devra attendre la fin du traîtement des messages précédents déjà présents dans la queue. C'est pourquoi le deuxième argument de cette fonction indique une durée minimum et non une durée garantie. -
-

Attention : L'argument passé pour le délai à setTimeout ne correspond pas au temps exact. Cela correspond au délai minimum et non à un délai garanti. Par exemple setTimeout(maFonction(),100); indique uniquement que maFonction sera lancé au moins après 100 millisecondes.

-
+> **Attention :** L'argument passé pour le délai à `setTimeout` ne correspond pas au temps exact. Cela correspond au délai minimum et non à un délai garanti. Par exemple `setTimeout(maFonction(),100);` indique uniquement que `maFonction` sera lancé **au moins** après 100 millisecondes. -

Voici un exemple qui illustre ce concept (setTimeout ne s'exécute pas immédiatement après la fin du timer) :

+Voici un exemple qui illustre ce concept (`setTimeout` ne s'exécute pas immédiatement après la fin du _timer_) : -
const s = new Date().getSeconds();
+```js
+const s = new Date().getSeconds();
 
 setTimeout(function() {
   // prints
@@ -83,22 +85,23 @@ setTimeout(function() {
 }, 500);
 
 while(true) {
-  if(new Date().getSeconds() - s >= 2) {
+  if(new Date().getSeconds() - s >= 2) {
     console.log("Ouf, on a bouclé pendant 2 secondes");
     break;
   }
 }
-
+``` -

Zéro délai

+### Zéro délai -

Un délai à zéro ne signifie pas que le callback sera déclenché après zéro milliseconde. Appeler setTimeout avec un délai de 0 (zéro) milliseconde n'éxécute pas le callback après l'interval donné.

+Un délai à zéro ne signifie pas que le callback sera déclenché après zéro milliseconde. Appeler [`setTimeout`](https://developer.mozilla.org/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout "The documentation about this has not yet been written; please consider contributing!") avec un délai de `0` (zéro) milliseconde n'éxécute pas le callback après l'interval donné. -

L'exécution dépend du nombre de taches en attente dans la queue. Dans l'exemple ci-dessous, le message 'ceci est juste un message' sera affiché dans la console avant que le message dans le callback soit traité, parce que le délai est le temps minimum requis par l'environnement d'exécution (runtime) pour traiter la demande (pas un temps garanti).

+L'exécution dépend du nombre de taches en attente dans la queue. Dans l'exemple ci-dessous, le message `'ceci est juste un message'` sera affiché dans la console avant que le message dans le callback soit traité, parce que le délai est le temps *minimum* requis par l'environnement d'exécution (runtime) pour traiter la demande (pas un temps _garanti_). -

Fondamentalement, setTimeout doit attendre la fin de tout le code pour les messages en file d'attente, même si vous avez spécifié une limite de temps particulière pour votre setTimeout.

+Fondamentalement, `setTimeout` doit attendre la fin de tout le code pour les messages en file d'attente, même si vous avez spécifié une limite de temps particulière pour votre setTimeout. -
(function() {
+```js
+(function() {
 
   console.log('ceci est le début');
 
@@ -120,36 +123,22 @@ while(true) {
 // "ceci est juste un message"
 // "ceci est la fin"
 // "Callback 1: ceci est un msg depuis le callback"
-// "Callback 2: ceci est un msg depuis le callback"
- -

La communication entre plusieurs environnements d'exécution

- -

Un web worker ou une iframe d'origine multiple (cross origin) possède sa propre pile, son propre tas et sa propre queue de messages. Deux environnements d'exécution distincts peuvent uniquement communiquer via des messages envoyés par la méthode postMessage. Cette méthode permet d'ajouter un message à un autre environnement d'exécution si celui-ci « écoute » les événements message.

- -

Non bloquant

- -

Le modèle de la boucle d'événement possède une caractéristique intéressante : JavaScript, à  la différence d'autres langages, ne bloque jamais. La gestion des entrées-sorties (I/O) est généralement traitée par des événements et des callbacks. Ainsi, quand l'application attend le résultat d'une requête IndexedDB ou d'une requête XHR, il reste possible de traiter d'autres éléments comme les saisies utilisateur.

- -

Il existe certaines exceptions historiques comme alert ou des appels XHR synchrones. C'est une bonne pratique que de les éviter. Attention, certaines exceptions existent (mais relèvent généralement de bugs d'implémentation).

- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉ tatCommentaires
{{SpecName('HTML WHATWG', 'webappapis.html#event-loops', 'Event loops')}}{{Spec2('HTML WHATWG')}}
Boucle d'évènements pour Node.jsStandard évolutif
+// "Callback 2: ceci est un msg depuis le callback" +``` + +### La communication entre plusieurs environnements d'exécution + +Un web worker ou une `iframe` d'origine multiple (_cross origin_) possède sa propre pile, son propre tas et sa propre queue de messages. Deux environnements d'exécution distincts peuvent uniquement communiquer via des messages envoyés par la méthode [`postMessage`](/fr/docs/Web/API/window.postMessage). Cette méthode permet d'ajouter un message à un autre environnement d'exécution si celui-ci « écoute » les événements `message`. + +## Non bloquant + +Le modèle de la boucle d'événement possède une caractéristique intéressante : JavaScript, à  la différence d'autres langages, ne bloque jamais. La gestion des entrées-sorties (_I/O_) est généralement traitée par des événements et des callbacks. Ainsi, quand l'application attend le résultat d'une requête [IndexedDB](/fr/docs/IndexedDB) ou d'une requête [XHR](/fr/docs/XMLHttpRequest), il reste possible de traiter d'autres éléments comme les saisies utilisateur. + +Il existe certaines exceptions historiques comme `alert` ou des appels XHR synchrones. C'est une bonne pratique que de les éviter. Attention, [certaines exceptions existent](https://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded/2734311#2734311) (mais relèvent généralement de bugs d'implémentation). + +## Spécifications + +| Spécification | É tat | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------ | +| {{SpecName('HTML WHATWG', 'webappapis.html#event-loops', 'Event loops')}} | {{Spec2('HTML WHATWG')}} | | +| [Boucle d'évènements pour Node.js](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#what-is-the-event-loop) | Standard évolutif | | diff --git a/files/fr/web/javascript/guide/control_flow_and_error_handling/index.md b/files/fr/web/javascript/guide/control_flow_and_error_handling/index.md index 59ec009395..8e9f0a7d3a 100644 --- a/files/fr/web/javascript/guide/control_flow_and_error_handling/index.md +++ b/files/fr/web/javascript/guide/control_flow_and_error_handling/index.md @@ -15,68 +15,75 @@ tags: translation_of: Web/JavaScript/Guide/Control_flow_and_error_handling original_slug: Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}} -

JavaScript supporte nativement un ensemble d'instructions. Ces instructions permettent de définir les logiques des algorithmes, le flux des informations, etc. Ce chapitre fournit un aperçu sur le fonctionnement de ces différentes instructions JavaScript.

+JavaScript supporte nativement un ensemble d'instructions. Ces instructions permettent de définir les logiques des algorithmes, le flux des informations, etc. Ce chapitre fournit un aperçu sur le fonctionnement de ces différentes instructions JavaScript. -

Les Références de JavaScript contiennent plus de détails sur les différentes instructions décrites dans ce chapitre.

+Les [Références de JavaScript](/fr/docs/Web/JavaScript/Reference/Statements) contiennent plus de détails sur les différentes instructions décrites dans ce chapitre. -

Toute expression est une instruction, voir la page Expressions et opérateurs pour plus d'informations sur les expressions. En JavaScript, le point-virgule (;) est utilisé afin de séparer des instructions dans le code.

+Toute expression est une instruction, voir la page [Expressions et opérateurs](/fr/docs/Web/JavaScript/Guide/Expressions_and_Operators) pour plus d'informations sur les expressions. En JavaScript, le point-virgule (`;`) est utilisé afin de séparer des instructions dans le code. -

Les blocs d'instruction

+## Les blocs d'instruction -

L'instruction la plus simple est l'instruction de bloc qui permet de regrouper des instructions. Un bloc est délimité par une paire d'accolades :

+L'instruction la plus simple est l'instruction de bloc qui permet de regrouper des instructions. Un bloc est délimité par une paire d'accolades : -
{
+```js
+{
    instruction_1;
    instruction_2;
    ⋮
    instruction_n;
-}
+} +``` -

Exemple

+### Exemple -

Les instructions de blocs sont souvent utilisées avec les instructions conditionnelles et itératives telles que if, for, while.

+Les instructions de blocs sont souvent utilisées avec les instructions conditionnelles et itératives telles que `if`, `for`, `while`. -
while (x < 10) {
+```js
+while (x < 10) {
   x++;
-}
- -

Ici, { x++; } représente le bloc.

- -
-

Note : En JavaScript, avant ECMAScript 2015 (aussi appelé ES6), les blocs n'introduisaient pas de nouvelles portées. Les variables introduites dans le bloc avec l'instruction var font partie de la portée de la fonction englobante ou du script. Les effets de leur définition persistent en dehors du bloc. Les blocs seuls utilisés avec var (et non let) pourront laisser penser que ce bloc se comportera comme en C ou en Java. Par exemple :

- -
var x = 1;
-{
-  var x = 2;
 }
-console.log(x); // affichera 2
+``` -

Cella affichera 2 car l'instruction var x contenue dans le bloc fait partie de la même portée que l'instruction var x écrite avant le bloc. En C ou en Java, le code équivalent à cet exemple aurait produit 1.

+Ici, `{ x++; }` représente le bloc. -

Cela a évolué avec ECMAScript 2015 (ES6). Les instructions letet const permettent de déclarer des variables dont la portée est celle du bloc courant. Voir les pages des références let et const.

-
+> **Note :** En JavaScript, avant ECMAScript 2015 (aussi appelé ES6), les blocs **n'introduisaient pas de nouvelles portées**. Les variables introduites dans le bloc avec l'instruction `var` font partie de la portée de la fonction englobante ou du script. Les effets de leur définition persistent en dehors du bloc. Les blocs seuls utilisés avec `var` (et non `let`) pourront laisser penser que ce bloc se comportera comme en C ou en Java. Par exemple : +> +> ```js +> var x = 1; +> { +> var x = 2; +> } +> console.log(x); // affichera 2 +> ``` +> +> Cella affichera 2 car l'instruction `var x` contenue dans le bloc fait partie de la même portée que l'instruction `var x` écrite avant le bloc. En C ou en Java, le code équivalent à cet exemple aurait produit 1. +> +> Cela a évolué avec ECMAScript 2015 (ES6). Les instructions `let`et `const` permettent de déclarer des variables dont la portée est celle du bloc courant. Voir les pages des références [`let`](/fr/docs/Web/JavaScript/Reference/Statements/let) et [`const`](/fr/docs/Web/JavaScript/Reference/Statements/const). -

Les instructions conditionnelles

+## Les instructions conditionnelles -

Une instruction conditionnelle est un ensemble de commandes qui s'exécutent si une condition donnée est vérifiée. JavaScript possède deux instructions conditionnelles : if...else et switch.

+Une instruction conditionnelle est un ensemble de commandes qui s'exécutent si une condition donnée est vérifiée. JavaScript possède deux instructions conditionnelles : `if...else` et `switch`. -

Instruction if...else

+### Instruction `if...else` -

On utilise l'instruction if lorsqu'on souhaite exécuter une instruction si une condition logique est vérifiée (vraie). La clause else est optionnelle et permet de préciser les instructions à exécuter si la condition logique n'est pas vérifiée (l'assertion est fausse). Voici un exemple qui illustre l'utilisation de l'instruction if :

+On utilise l'instruction `if` lorsqu'on souhaite exécuter une instruction si une condition logique est vérifiée (vraie). La clause `else` est optionnelle et permet de préciser les instructions à exécuter si la condition logique n'est pas vérifiée (l'assertion est fausse). Voici un exemple qui illustre l'utilisation de l'instruction `if` : -
if (condition) {
+```js
+if (condition) {
   instruction_1;
 } else {
   instruction_2;
-}
+} +``` -

condition peut correspondre à n'importe quelle expression qui est évaluée à true (vrai) ou false (faux). Voir la page sur les booléens pour plus d'informations sur les évaluations qui fournissent les valeurs true ou false. Si la condition vaut true, instruction_1 est exécutée, sinon instruction_2 sera exécutée. instruction_1 et instruction_2 peuvent correspondre à n'importe quelle instruction, y compris d'autres instructions if.

+`condition` peut correspondre à n'importe quelle expression qui est évaluée à `true` (vrai) ou `false` (faux). Voir la page sur les [booléens](/fr/docs/Web/JavaScript/Reference/Global_Objects/Boolean#description) pour plus d'informations sur les évaluations qui fournissent les valeurs `true` ou `false`. Si la `condition` vaut `true`, `instruction_1` est exécutée, sinon `instruction_2` sera exécutée. `instruction_1` et `instruction_2` peuvent correspondre à n'importe quelle instruction, y compris d'autres instructions `if`. -

Si on doit tester différentes conditions les unes à la suite des autres, il est possible d'utiliser else if pour lier les différents tests. On l'utilise de la façon suivante :

+Si on doit tester différentes conditions les unes à la suite des autres, il est possible d'utiliser `else if` pour lier les différents tests. On l'utilise de la façon suivante : -
if (condition_1) {
+```js
+if (condition_1) {
   instruction_1;
 } else if (condition_2) {
   instruction_2;
@@ -84,66 +91,72 @@ console.log(x); // affichera 2
instruction_n; } else { dernière_instruction; -} +} +``` -

Afin d'exécuter plusieurs instructions, on peut les regrouper grâce aux blocs ({ ... }) vus précédemment. C'est une bonne pratique que de les utiliser, surtout si on imbrique plusieurs instructions if les unes dans les autres:

+Afin d'exécuter plusieurs instructions, on peut les regrouper grâce aux blocs (`{ ... }`) vus précédemment. C'est une bonne pratique que de les utiliser, surtout si on imbrique plusieurs instructions `if` les unes dans les autres: -

Meilleure pratique

+#### Meilleure pratique -

En général, il est bon de toujours utiliser des instructions de type bloc —surtout lorsqu'on imbrique des instructions if :

+En général, il est bon de toujours utiliser des instructions de type bloc —_surtout_ lorsqu'on imbrique des instructions `if` : -
if (condition) {
+```js
+if (condition) {
   instruction_1_exécutée_si_condition_vraie;
   instruction_2_exécutée_si_condition_vraie;
 } else {
   instruction_3_exécutée_si_condition_fausse;
   instruction_4_exécutée_si_condition_fausse;
-}
+} +``` -

Attention à ne pas utiliser des instructions d'affectation dans les expressions conditionnelles. On peut, en effet, très facilement confondre l'affectation et le test d'égalité en lisant le code.

+Attention à ne pas utiliser des instructions d'affectation dans les expressions conditionnelles. On peut, en effet, très facilement confondre l'affectation et le test d'égalité en lisant le code. -

Voici un exemple de ce qu'il ne faut pas faire :

+Voici un exemple de ce qu'il ne faut **pas** faire : -
if (x = y) {
+```js example-bad
+if (x = y) {
   /* exécuter des instructions */
-}
+} +``` -

Ici, on ne teste pas si x vaut y, on affecte la valeur de y à x ! Si vous devez à tout prix utiliser une affectation dans une expression conditionnelle, une bonne pratique sera d'ajouter des parenthèses en plus autour de l'affectation. Par exemple :

+Ici, on ne teste pas si x vaut y, on affecte la valeur de y à x ! Si vous devez à tout prix utiliser une affectation dans une expression conditionnelle, une bonne pratique sera d'ajouter des parenthèses en plus autour de l'affectation. Par exemple : -
if ((x = y)) {
+```js example-good
+if ((x = y)) {
   /* exécuter des instructions */
 }
-
+``` -

Valeurs équivalentes à false dans un contexte booléen (falsy values)

+#### Valeurs équivalentes à false dans un contexte booléen (_falsy_ values) -

Les valeurs suivantes sont évaluées à false (également connues sous le nom de valeurs Falsy) :

+Les valeurs suivantes sont évaluées à `false` (également connues sous le nom de [valeurs Falsy](/fr/docs/Glossary/Falsy)) : -
    -
  • false
  • -
  • undefined
  • -
  • null
  • -
  • 0
  • -
  • NaN
  • -
  • la chaîne de caractères vide ("")
  • -
+- `false` +- `undefined` +- `null` +- `0` +- `NaN` +- la chaîne de caractères vide (`""`) -

Les autres valeurs, y compris les objets, seront équivalents à true.

+Les autres valeurs, y compris les objets, seront équivalents à `true`. -
-

Attention : Ne pas confondre les valeurs booléennes « primitives » true et false avec les valeurs créées grâce à un objet Boolean.

-

Par exemple, on aura :

- -
var b = new Boolean(false);
-  if (b) // cette condition est bien vérifiée !
-  if (b === true) // cette condition n'est pas vérifiée !
-
+> **Attention :** Ne pas confondre les valeurs booléennes « primitives » `true` et `false` avec les valeurs créées grâce à un objet [`Boolean`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Boolean). +> +> Par exemple, on aura : +> +> ```js +> var b = new Boolean(false); +> if (b) // cette condition est bien vérifiée ! +> if (b === true) // cette condition n'est pas vérifiée ! +> ``` -

Exemple

+#### Exemple -

Dans l'exemple qui suit, la fonction checkData renvoie true si une chaîne de caractères mesure trois caractères. Sinon, elle affiche une alerte et renvoie false.

+Dans l'exemple qui suit, la fonction` checkData `renvoie `true` si une chaîne de caractères mesure trois caractères. Sinon, elle affiche une alerte et renvoie `false`. -
function checkData(maChaîne) {
+```js
+function checkData(maChaîne) {
   if (maChaîne.length == 3) {
     return true;
   } else {
@@ -151,15 +164,17 @@ console.log(x); // affichera 2
maChaîne + " n'est pas valide."); return false; } -} +} +``` -

L'instruction switch

+### L'instruction `switch` -

L'instruction switch permet à un programme d'évaluer une expression et d'effectuer des instructions en fonction des différents cas de figures correspondants aux différentes valeurs. Si un cas correspond au résultat de l'évaluation, le programme exécute l'instruction associée.

+L'instruction `switch` permet à un programme d'évaluer une expression et d'effectuer des instructions en fonction des différents cas de figures correspondants aux différentes valeurs. Si un cas correspond au résultat de l'évaluation, le programme exécute l'instruction associée. -

Voici un exemple utilisant une instruction switch :

+Voici un exemple utilisant une instruction `switch` : -
switch (expression) {
+```js
+switch (expression) {
   case label_1:
     instructions_1
     [break;]
@@ -171,30 +186,27 @@ console.log(x); // affichera 2
instructions_par_defaut [break;] } - +``` -

JavaScript évalue l'instruction de commutation ci-dessus comme suit :

+JavaScript évalue l'instruction de commutation ci-dessus comme suit : -
    -
  • Le programme recherche d'abord une clause case dont l'étiquette correspond à la valeur de l'expression, puis il transfère le contrôle à cette clause, en exécutant les instructions associées.
  • -
  • Si aucune étiquette correspondante n'est trouvée, le programme recherche la clause optionnelle default : -
      -
    • Si une clause default est trouvée, le programme transfère le contrôle à cette clause, exécutant les déclarations associées.
    • -
    • Si aucune clause default n'est trouvée, le programme reprend l'exécution à l'instruction qui suit la fin de switch.
    • -
    • (Par convention, la clause default est écrite comme la dernière clause, mais il n'est pas nécessaire que ce soit le cas).
    • -
    -
  • -
+- Le programme recherche d'abord une clause `case` dont l'étiquette correspond à la valeur de l'expression, puis il transfère le contrôle à cette clause, en exécutant les instructions associées. +- Si aucune étiquette correspondante n'est trouvée, le programme recherche la clause optionnelle `default` : -

L'instruction break

+ - Si une clause `default` est trouvée, le programme transfère le contrôle à cette clause, exécutant les déclarations associées. + - Si aucune clause `default` n'est trouvée, le programme reprend l'exécution à l'instruction qui suit la fin de `switch`. + - (Par convention, la clause `default` est écrite comme la dernière clause, mais il n'est pas nécessaire que ce soit le cas). -

L'instruction optionnelle break, éventuellement contenue pour chaque clause case, permet de ne pas exécuter les instructions pour les cas suivants. Si break n'est pas utilisé, le programme continuera son exécution avec les autres instructions contenues dans l'instruction switch.

+#### L'instruction break -
Exemple
+L'instruction optionnelle `break`, éventuellement contenue pour chaque clause `case`, permet de ne pas exécuter les instructions pour les cas suivants. Si `break` n'est pas utilisé, le programme continuera son exécution avec les autres instructions contenues dans l'instruction `switch`. -

Dans l'exemple suivant, si fruit vaut "Banane", le programme exécutera les instructions associées. Quand break est rencontré, le programme passe aux instructions décrites après switch. Ici, si break n'était pas présent, les instructions pour le cas "Cerise" auraient également été exécutées.

+##### Exemple -
switch (fruit) {
+Dans l'exemple suivant, si `fruit` vaut "Banane", le programme exécutera les instructions associées. Quand `break` est rencontré, le programme passe aux instructions décrites après `switch`. Ici, si `break` n'était pas présent, les instructions pour le cas "Cerise" auraient également été exécutées.
+
+```js
+switch (fruit) {
   case "Orange":
     console.log("Les oranges sont à 60 centimes le kilo.");
     break;
@@ -213,45 +225,44 @@ console.log(x); // affichera 2
default: console.log("Désolé, nous n'avons pas de " + fruittype + "."); } -console.log("Souhaitez-vous autre chose ?"); +console.log("Souhaitez-vous autre chose ?"); +``` -

Les instructions pour gérer les exceptions

+## Les instructions pour gérer les exceptions -

Il est possible de lever des exceptions avec l'instruction throw et de les gérer (les intercepter) avec des instructions try...catch.

+Il est possible de lever des exceptions avec l'instruction `throw` et de les gérer (les intercepter) avec des instructions `try...catch`. - +- [L'instruction throw](#throw_statement) +- [L'instruction `try...catch`](#try...catch_statement) -

Les types d'exception

+### Les types d'exception -

En JavaScript, n'importe quel objet peut être signalé comme une exception. Cependant, afin de respecter certaines conventions et de bénéficier de certaines informations, on pourra utiliser les types destinés à cet effet :

+En JavaScript, n'importe quel objet peut être signalé comme une exception. Cependant, afin de respecter certaines conventions et de bénéficier de certaines informations, on pourra utiliser les types destinés à cet effet : - +- [Les exceptions ECMAScript](/fr/docs/Web/JavaScript/Reference/Global_Objects/Error#error_types) +- [`DOMException`](/fr/docs/Web/API/DOMException) et [`DOMError`](/fr/docs/Web/API/DOMError) -

L'instruction throw

+### L'instruction `throw` -

L'instruction throw est utilisée afin de signaler une exception. Lorsqu'on signale une exception, on définit une expression qui contient la valeur à renvoyer pour l'exception :

+L'instruction `throw` est utilisée afin de signaler une exception. Lorsqu'on signale une exception, on définit une expression qui contient la valeur à renvoyer pour l'exception : -
throw expression;
+```js +throw expression; +``` -

Il est possible d'utiliser n'importe quelle expression, sans restriction de type. Le fragment de code qui suit illustre les différentes possibilités :

+Il est possible d'utiliser n'importe quelle expression, sans restriction de type. Le fragment de code qui suit illustre les différentes possibilités : -
throw "Erreur2";  //type String
+```js
+throw "Erreur2";  //type String
 throw 42;         //type Number
 throw true;       //type Boolean
 throw {toString: function () { return "je suis un objet !"; } };
-
+``` -
-

Note : Vous pouvez spécifier un objet lorsque vous lancez une exception. Vous pouvez alors faire référence aux propriétés de l'objet dans le bloc catch.

-
+> **Note :** Vous pouvez spécifier un objet lorsque vous lancez une exception. Vous pouvez alors faire référence aux propriétés de l'objet dans le bloc `catch`. -
// On crée le constructeur pour cet objet
+```js
+// On crée le constructeur pour cet objet
 function ExceptionUtilisateur(message) {
   this.message = message;
   this.name = "ExceptionUtilisateur";
@@ -265,19 +276,21 @@ ExceptionUtilisateur.prototype.toString = function() {
 
 // On crée une instance pour ce type d'objet
 // et on renvoie une exception avec cette instance
-throw new ExceptionUtilisateur("La valeur fournie est trop élevée.");
+throw new ExceptionUtilisateur("La valeur fournie est trop élevée."); +``` -

L'instruction try...catch

+### L'instruction `try...catch` -

L'instruction try...catch permet de définir un bloc d'instructions qu'on essaye (try en anglais) d'exécuter, ainsi qu'une ou plusieurs instructions à utiliser en cas d'erreur lorsqu'une exception se produit. Si une exception est signalée, l'instruction try...catch permettra de l' « attraper » (catch en anglais) et de définir ce qui se passe dans ce cas.

+L'instruction `try...catch` permet de définir un bloc d'instructions qu'on essaye (_try_ en anglais) d'exécuter, ainsi qu'une ou plusieurs instructions à utiliser en cas d'erreur lorsqu'une exception se produit. Si une exception est signalée, l'instruction `try...catch` permettra de l' « attraper » (_catch_ en anglais) et de définir ce qui se passe dans ce cas. -

L'instruction try...catch se compose d'un bloc try qui contient une ou plusieurs instructions et blocs catch qui contiennent les instructions à exécuter lorsqu'une exception se produit dans le bloc try.

+L'instruction `try...catch` se compose d'un bloc `try` qui contient une ou plusieurs instructions et blocs `catch` qui contiennent les instructions à exécuter lorsqu'une exception se produit dans le bloc `try`. -

Autrement dit, dans la plupart des cas pour le programme, on veut que les instructions du bloc try se déroulent normalement et en cas de problème, on passe le contrôle au bloc catch. Si une instruction contenue dans le bloc try renvoie une exception, le contrôle sera immédiatement transféré au bloc catch. Si aucune exception n'est signalée au sein du bloc try, le bloc catch ne sera pas utilisé. Cette instruction peut comporter un bloc finally qui s'exécute après les blocs try et catch mais avant les instructions suivant l'instruction try...catch.

+Autrement dit, dans la plupart des cas pour le programme, on veut que les instructions du bloc `try` se déroulent normalement et en cas de problème, on passe le contrôle au bloc `catch`. Si une instruction contenue dans le bloc `try` renvoie une exception, le contrôle sera immédiatement transféré au bloc `catch`. Si aucune exception n'est signalée au sein du bloc `try`, le bloc `catch` ne sera pas utilisé. Cette instruction peut comporter un bloc `finally` qui s'exécute après les blocs `try` et `catch` mais avant les instructions suivant l'instruction `try...catch`. -

Dans l'exemple qui suit, on utilise une instruction try...catch. On définit une fonction qui prend un nombre et renvoie le nom du mois correspondant à ce nombre. Si la valeur fournie n'est pas comprise entre 1 et 12, on signale une exception avec la valeur "NuméroMoisInvalide". Lorsque cette exception est gérée dans le bloc catch, la variable nomMois recevra la valeur "inconnu".

+Dans l'exemple qui suit, on utilise une instruction `try...catch`. On définit une fonction qui prend un nombre et renvoie le nom du mois correspondant à ce nombre. Si la valeur fournie n'est pas comprise entre 1 et 12, on signale une exception avec la valeur `"NuméroMoisInvalide"`. Lorsque cette exception est gérée dans le bloc `catch`, la variable `nomMois` recevra la valeur `"inconnu"`. -
function getNomMois(numMois) {
+```js
+function getNomMois(numMois) {
   numMois = numMois - 1; // On décale de 1 car les indices du tableaux commencent à 0
   var mois = ["Janvier", "Février", "Mars", "Avril" ,"Mai", "Juin", "Juillet",
               "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
@@ -293,44 +306,48 @@ try { // les instructions à essayer si tout se passe bien
 } catch (e) {
   nomMois = "inconnu";
   gestionErreurLog(e); // on gère l'erreur avec une fonction
-}
+} +``` -

Le bloc catch

+#### Le bloc `catch` -

Un bloc catch peut être utilisé afin de gérer les exceptions pouvant être générées par les instructions du bloc try.

+Un bloc `catch` peut être utilisé afin de gérer les exceptions pouvant être générées par les instructions du bloc `try`. -
catch (ident) {
+```js
+catch (ident) {
   statements
-}
+} +``` -

Le bloc catch définit un identifiant (ident dans le fragment de code précédent) qui contiendra la valeur passée par l'instruction throw. Cet identifiant peut être utilisé afin de récupérer des informations sur l'exception qui a été signalée.

+Le bloc `catch` définit un identifiant (`ident` dans le fragment de code précédent) qui contiendra la valeur passée par l'instruction `throw`. Cet identifiant peut être utilisé afin de récupérer des informations sur l'exception qui a été signalée. -

JavaScript crée cet identifiant lorsque le contrôle passe au bloc catch. L'identifiant ne « vit » qu'à l'intérieur du bloc catch et une fois que l'exécution du bloc catch est terminée, l'identifiant n'est plus disponible.

+JavaScript crée cet identifiant lorsque le contrôle passe au bloc `catch`. L'identifiant ne « vit » qu'à l'intérieur du bloc `catch` et une fois que l'exécution du bloc `catch` est terminée, l'identifiant n'est plus disponible. -

Dans l'exemple suivant, le code renvoie une exception. Lorsque celle-ci est signalée, le contrôle passe au bloc catch.

+Dans l'exemple suivant, le code renvoie une exception. Lorsque celle-ci est signalée, le contrôle passe au bloc `catch`. -
try {
+```js
+try {
   throw "monException"; // on génère une exception
 } catch (e) {
   // les instructions utilisées pour gérer les exceptions
   enregistrerErreurs(e); // on passe l'objet représentant l'exception à une fonction utilisée pour gérer les erreurs
-}
+} +``` -
-

Note : Quand on souhaite afficher des erreurs dans la console, on privilégiera console.error() plutôt que console.log(). En effet, cette première méthode est plus adaptée et indiquera plus d'informations.

-
+> **Note :** Quand on souhaite afficher des erreurs dans la console, on privilégiera [`console.error()`](/fr/docs/Web/API/Console/error) plutôt que [`console.log()`](/fr/docs/Web/API/Console/log). En effet, cette première méthode est plus adaptée et indiquera plus d'informations. -

Le bloc finally

+#### Le bloc `finally` -

Le bloc finally contient les instructions à exécuter après les blocs try et catch mais avant l'instruction suivant le try...catch...finally.

+Le bloc `finally` contient les instructions à exécuter après les blocs `try` et `catch` mais avant l'instruction suivant le `try...catch...finally`. -

Le bloc finally est exécuté dans tous les cas, qu'une exception ait été levée ou non. Si une exception est signalée et qu'il n'y a pas de bloc catch pour la gérer, les instructions du bloc finally seront tout de même exécutées.

+Le bloc `finally` est exécuté dans tous les cas, **qu'une exception ait été levée ou non**. Si une exception est signalée et qu'il n'y a pas de bloc `catch` pour la gérer, les instructions du bloc `finally` seront tout de même exécutées. -

Le bloc finally peut être utilisé afin de finir proprement l'exécution malgré une exception. On peut, par exemple, devoir libérer une ressource, ou fermer un flux, etc.

+Le bloc `finally` peut être utilisé afin de finir proprement l'exécution malgré une exception. On peut, par exemple, devoir libérer une ressource, ou fermer un flux, etc. -

Dans l'exemple suivant, on écrit dans un fichier, si une exception se produit lors de l'écriture, on utilisera le bloc finally afin de bien fermer le flux vers le fichier avant la fin du script.

+Dans l'exemple suivant, on écrit dans un fichier, si une exception se produit lors de l'écriture, on utilisera le bloc `finally` afin de bien fermer le flux vers le fichier avant la fin du script. -
ouvrirFichier();
+```js
+ouvrirFichier();
 try {
   écrireFichier(données); // Une erreur peut se produire
 } catch(e) {
@@ -338,11 +355,12 @@ try {
 } finally {
   fermerFichier(); // On n'oublie jamais de fermer le flux.
 }
-
+``` -

Si le bloc finally renvoie une valeur, cette valeur sera considérée comme la valeur de retour pour tout l'ensemble try-catch-finally, quelles que soient les instructions return éventuellement utilisées dans les blocs try et catch :

+Si le bloc `finally` renvoie une valeur, cette valeur sera considérée comme la valeur de retour pour tout l'ensemble `try-catch-finally`, quelles que soient les instructions `return` éventuellement utilisées dans les blocs `try` et `catch` : -
function f() {
+```js
+function f() {
   try {
     console.log(0);
     throw "bug";
@@ -360,11 +378,12 @@ try {
   console.log(5); // Ne pourra jamais être exécuté
 }
 f(); // affiche 0, 1, 3 puis renvoie false
-
+``` -

Lorsqu'on surcharge les valeurs de retour avec le bloc finally, cela s'applique également aux exceptions qui sont levées (ou retransmises) au sein du bloc catch :

+Lorsqu'on surcharge les valeurs de retour avec le bloc `finally`, cela s'applique également aux exceptions qui sont levées (ou retransmises) au sein du bloc `catch` : -
function f() {
+```js
+function f() {
   try {
     throw "problème";
   } catch(e) {
@@ -387,32 +406,32 @@ try {
 }
 
 // Sortie
-// "problème" interne attrapé
+// "problème" interne attrapé +``` -

Imbriquer des instructions try...catch

+#### Imbriquer des instructions `try...catch` -

Il est possible d'imbriquer une ou plusieurs instructions try...catch.

+Il est possible d'imbriquer une ou plusieurs instructions `try...catch`. -

Si un bloc try interne n'a pas de bloc catch correspondant :

+Si un bloc `try` interne n'a _pas_ de bloc `catch` correspondant : -
    -
  1. il doit contenir un bloc finally, et
  2. -
  3. le bloc try...catch de l'instruction catch englobante est vérifié pour une correspondance.
  4. -
+1. il _doit_ contenir un bloc `finally`, et +2. le bloc `try...catch` de l'instruction `catch` englobante est vérifié pour une correspondance. -

Pour plus d'informations, voir nested try-blocks sur la page de référence try...catch.

+Pour plus d'informations, voir [nested try-blocks](/fr/docs/Web/JavaScript/Référence/Statements/try...catch#nested_try-blocks) sur la page de référence [`try...catch`](/fr/docs/Web/JavaScript/Référence/Statements/try...catch). -

Utiliser les objets d'erreur

+### Utiliser les objets d'erreur -

En fonction du type d'erreur qui est créée, on pourra utiliser les propriétés name et message afin d'obtenir plus d'informations.

+En fonction du type d'erreur qui est créée, on pourra utiliser les propriétés `name` et `message` afin d'obtenir plus d'informations. -

Généralement on a name qui fournit le type d'erreur rencontrée (ex : DOMException ou Error). La propriété message, quant à elle fournit un message descriptif de l'erreur (qu'on utilisera généralement lorsqu'on voudra convertir/afficher le texte correspondant à une erreur).

+Généralement on a `name` qui fournit le type d'erreur rencontrée (ex : `DOMException` ou `Error`). La propriété `message`, quant à elle fournit un message descriptif de l'erreur (qu'on utilisera généralement lorsqu'on voudra convertir/afficher le texte correspondant à une erreur). -

Si vous construisez des erreurs, vous pouvez utiliser le constructeur Error afin de disposer de ces propriétés.

+Si vous construisez des erreurs, vous pouvez utiliser le constructeur [`Error`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Error) afin de disposer de ces propriétés. -

Ainsi, on pourra avoir :

+Ainsi, on pourra avoir : -
function causerErreurs() {
+```js
+function causerErreurs() {
   if (toutEstSourceDErreurs()) {
     throw (new Error('mon message'));
   } else {
@@ -425,6 +444,7 @@ try {
 } catch (e) {
   console.error(e.name);// affiche 'Error'
   console.error(e.message); // affiche 'mon message' ou un message d'erreur JavaScript
-}
+} +``` -
{{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
+{{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}} diff --git a/files/fr/web/javascript/guide/details_of_the_object_model/index.md b/files/fr/web/javascript/guide/details_of_the_object_model/index.md index 8cf9bf50ff..0176da2600 100644 --- a/files/fr/web/javascript/guide/details_of_the_object_model/index.md +++ b/files/fr/web/javascript/guide/details_of_the_object_model/index.md @@ -9,53 +9,50 @@ tags: translation_of: Web/JavaScript/Guide/Details_of_the_Object_Model original_slug: Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Using_promises")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Using_promises")}} -

JavaScript est un langage orienté objet basé sur des prototypes, plutôt que sur des classes. En raison de cette base différente, il peut être moins évident de comprendre comment JavaScript vous permet de créer des hiérarchies d'objets et d'avoir un héritage des propriétés et de leurs valeurs. Ce chapitre tente de clarifier la situation.

+JavaScript est un langage orienté objet basé sur des prototypes, plutôt que sur des classes. En raison de cette base différente, il peut être moins évident de comprendre comment JavaScript vous permet de créer des hiérarchies d'objets et d'avoir un héritage des propriétés et de leurs valeurs. Ce chapitre tente de clarifier la situation. -

Ce chapitre part du principe que vous avez déjà une certaine connaissance de JavaScript et que vous avez utilisé des fonctions JavaScript pour créer des objets simples.

+Ce chapitre part du principe que vous avez déjà une certaine connaissance de JavaScript et que vous avez utilisé des fonctions JavaScript pour créer des objets simples. -

Langages basés sur des classes ou des prototypes

+## Langages basés sur des classes ou des prototypes -

Les langages orientés objets, basés sur des classes, tels que Java et C++, sont fondés sur le concept de deux entités distinctes : les classes et les instances.

+Les langages orientés objets, basés sur des classes, tels que Java et C++, sont fondés sur le concept de deux entités distinctes : les classes et les instances. -
    -
  • Une classe définit toutes les propriétés qui caractérisent un certain ensemble d'objets (en considérant les méthodes et les champs en Java, ou les membres en C++, comme des propriétés). Une classe est abstraite par opposition à un membre particulier d'un ensemble d'objets qu'elle décrit. Par exemple, la classe Employee pourrait représenter l'ensemble de tous les employés.
  • -
  • Une instance, par contre, est l'instanciation d'une classe. Par exemple, Victoria pourrait être une instance de la classe Employee, représentant un individu particulier en tant qu'employé. Une instance possède exactement les mêmes propriétés que sa classe parente (ni plus, ni moins).
  • -
+- Une _classe_ définit toutes les propriétés qui caractérisent un certain ensemble d'objets (en considérant les méthodes et les champs en Java, ou les membres en C++, comme des propriétés). Une classe est abstraite par opposition à un membre particulier d'un ensemble d'objets qu'elle décrit. Par exemple, la classe `Employee` pourrait représenter l'ensemble de tous les employés. +- Une _instance_, par contre, est l'instanciation d'une classe. Par exemple, `Victoria` pourrait être une instance de la classe `Employee`, représentant un individu particulier en tant qu'employé. Une instance possède exactement les mêmes propriétés que sa classe parente (ni plus, ni moins). -

Un langage basé sur des prototypes, tel que JavaScript, ne fait pas cette distinction : il a des objets. Un langage basé sur des prototypes possède la notion d'un objet prototypique, un objet utilisé comme modèle à partir duquel on peut obtenir les propriétés initiales d'un nouvel objet. Tout objet peut spécifier ses propres propriétés, soit lors de sa création, soit au moment de l'exécution. En outre, tout objet peut être associé en tant que prototype d'un autre objet, permettant au second objet de partager les propriétés du premier.

+Un langage basé sur des prototypes, tel que JavaScript, ne fait pas cette distinction : il a des objets. Un langage basé sur des prototypes possède la notion d'un _objet prototypique_, un objet utilisé comme modèle à partir duquel on peut obtenir les propriétés initiales d'un nouvel objet. Tout objet peut spécifier ses propres propriétés, soit lors de sa création, soit au moment de l'exécution. En outre, tout objet peut être associé en tant que _prototype_ d'un autre objet, permettant au second objet de partager les propriétés du premier. -

La définition d'une classe

+### La définition d'une classe -

Dans les langages basés sur les classes, vous définissez une classe en utilisant une définition de classe distincte. Dans cette définition, vous pouvez spécifier des méthodes spéciales, appelées constructeur (et écrites « constructor »), pour créer des instances de la classe. Une méthode constructrice peut spécifier des valeurs initiales pour les propriétés de l'instance et effectuer d'autres traitements appropriés au moment de la création. Vous utilisez l'opérateur new en association avec la méthode constructrice pour créer des instances de la classe.

+Dans les langages basés sur les classes, vous définissez une classe en utilisant une _définition de classe_ distincte. Dans cette définition, vous pouvez spécifier des méthodes spéciales, appelées _constructeur_ (et écrites « constructor »), pour créer des instances de la classe. Une méthode constructrice peut spécifier des valeurs initiales pour les propriétés de l'instance et effectuer d'autres traitements appropriés au moment de la création. Vous utilisez l'opérateur `new` en association avec la méthode constructrice pour créer des instances de la classe. -

JavaScript suit un modèle similaire, mais ne dispose pas d'une définition de classe distincte de celle du constructeur. Au lieu de cela, vous définissez une fonction de construction pour créer des objets avec un ensemble initial particulier de propriétés et de valeurs. Toute fonction JavaScript peut être utilisée comme constructeur. Vous utilisez l'opérateur new avec une fonction « constructor » pour créer un nouvel objet.

+JavaScript suit un modèle similaire, mais ne dispose pas d'une définition de classe distincte de celle du constructeur. Au lieu de cela, vous définissez une fonction de construction pour créer des objets avec un ensemble initial particulier de propriétés et de valeurs. Toute fonction JavaScript peut être utilisée comme constructeur. Vous utilisez l'opérateur `new` avec une fonction « constructor » pour créer un nouvel objet. -
-

Note : ECMAScript 2015 introduit une déclaration de classe :

- -
-

Les classes JavaScript, introduites dans ECMAScript 2015, sont principalement un enrichissement syntaxique de l'héritage basé sur les prototypes existant dans JavaScript. La syntaxe des classes n'introduit pas un nouveau modèle d'héritage orienté objet dans JavaScript.

-
-
+> **Note :** ECMAScript 2015 introduit une [déclaration de classe](/fr/docs/Web/JavaScript/Reference/Classes) : +> +> > Les classes JavaScript, introduites dans ECMAScript 2015, sont principalement un enrichissement syntaxique de l'héritage basé sur les prototypes existant dans JavaScript. La syntaxe des classes n'introduit pas un nouveau modèle d'héritage orienté objet dans JavaScript. -

Classes enfants et héritage

+### Classes enfants et héritage -

Dans un langage basé sur les classes, vous créez une hiérarchie de classes par le biais des définitions de classes. Dans une définition de classe, vous pouvez spécifier que la nouvelle classe est une classe enfant d'une classe déjà existante. La classe enfant hérite de toutes les propriétés de la classe parente et peut en plus ajouter de nouvelles propriétés ou modifier celles héritées. Par exemple, supposons que la classe Employee ne comprend que les propriétés name (« nom ») et dept (« département »), et que Manager est une classe enfant de Employee qui ajoute la propriété reports (« rapports »). Dans ce cas, une instance de la classe Manager aurait les trois propriétés : name, dept, et reports.

+Dans un langage basé sur les classes, vous créez une hiérarchie de classes par le biais des définitions de classes. Dans une définition de classe, vous pouvez spécifier que la nouvelle classe est une _classe enfant_ d'une classe déjà existante. La classe enfant hérite de toutes les propriétés de la classe parente et peut en plus ajouter de nouvelles propriétés ou modifier celles héritées. Par exemple, supposons que la classe `Employee` ne comprend que les propriétés `name` (« nom ») et `dept` (« département »), et que `Manager` est une classe enfant de `Employee` qui ajoute la propriété `reports` (« rapports »). Dans ce cas, une instance de la classe `Manager` aurait les trois propriétés : `name`, `dept`, et `reports`. -

JavaScript met en œuvre l'héritage en vous permettant d'associer un objet prototypique à n'importe quelle fonction de construction. Ainsi, vous pouvez créer exactement l'exemple EmployeeManager, mais vous utilisez une terminologie légèrement différente. D'abord, vous définissez la fonction du constructeur Employee, en spécifiant les propriétés name et dept. Ensuite, vous définissez la fonction du constructeur Manager, en appelant le constructeur Employee et en spécifiant la propriété reports. Enfin, vous attribuez un nouvel objet dérivé de Employee.prototype comme prototype pour la fonction du constructeur Manager. Ensuite, lorsque vous créez un nouveau Manager, il hérite des propriétés name et dept de l'objet Employee.

+JavaScript met en œuvre l'héritage en vous permettant d'associer un objet prototypique à n'importe quelle fonction de construction. Ainsi, vous pouvez créer exactement l'exemple `Employee` — `Manager`, mais vous utilisez une terminologie légèrement différente. D'abord, vous définissez la fonction du constructeur `Employee`, en spécifiant les propriétés `name` et `dept`. Ensuite, vous définissez la fonction du constructeur `Manager`, en appelant le constructeur `Employee` et en spécifiant la propriété `reports`. Enfin, vous attribuez un nouvel objet dérivé de `Employee.prototype` comme `prototype` pour la fonction du constructeur `Manager`. Ensuite, lorsque vous créez un nouveau `Manager`, il hérite des propriétés `name` et `dept` de l'objet `Employee`. -

Ajouter ou retirer des propriétés

+### Ajouter ou retirer des propriétés -

Dans les langages basés sur les classes, vous créez généralement une classe au moment de la compilation, puis vous instanciez, des instances de la classe, soit au moment de la compilation, soit au moment de l'exécution. Vous ne pouvez pas modifier le nombre ou le type de propriétés d'une classe après avoir défini cette dernière. En JavaScript, cependant, au moment de l'exécution, vous pouvez ajouter ou supprimer des propriétés de tout objet. Si vous ajoutez une propriété à un objet qui est utilisé comme prototype pour un ensemble d'objets, les objets dont il est le prototype obtiennent également la nouvelle propriété.

+Dans les langages basés sur les classes, vous créez généralement une classe au moment de la compilation, puis vous instanciez, des instances de la classe, soit au moment de la compilation, soit au moment de l'exécution. Vous ne pouvez pas modifier le nombre ou le type de propriétés d'une classe après avoir défini cette dernière. En JavaScript, cependant, au moment de l'exécution, vous pouvez ajouter ou supprimer des propriétés de tout objet. Si vous ajoutez une propriété à un objet qui est utilisé comme prototype pour un ensemble d'objets, les objets dont il est le prototype obtiennent également la nouvelle propriété. -

Résumé des différences

+### Résumé des différences -

Le tableau suivant donne un bref résumé de certaines de ces différences. Le reste de ce chapitre décrit les détails de l'utilisation des constructeurs et prototypes JavaScript pour créer une hiérarchie d'objets et les compare à la façon dont vous le feriez en Java.

+Le tableau suivant donne un bref résumé de certaines de ces différences. Le reste de ce chapitre décrit les détails de l'utilisation des constructeurs et prototypes JavaScript pour créer une hiérarchie d'objets et les compare à la façon dont vous le feriez en Java. - + @@ -71,8 +68,14 @@ original_slug: Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails - - + + @@ -81,8 +84,14 @@ original_slug: Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails - - + + @@ -91,66 +100,80 @@ original_slug: Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails - - + +
Comparaison des systèmes d'objets basés sur des classes (Java) et des prototypes (JavaScript) + Comparaison des systèmes d'objets basés sur des classes (Java) et des + prototypes (JavaScript) +
Catégorie
DéfinitionDéfinir une classe avec une définition de classe ; instancier une classe avec des méthodes de construction.Définir et créer un ensemble d'objets avec des fonctions de construction. + Définir une classe avec une définition de classe ; instancier une classe + avec des méthodes de construction. + + Définir et créer un ensemble d'objets avec des fonctions de + construction. +
Création d'un nouvel objet
Construction de la hiérarchie des objetsConstruire une hiérarchie d'objets en utilisant des définitions de classes pour définir des classes enfants à partir de classes existantes.Construire une hiérarchie d'objets en assignant un objet comme prototype associé à une fonction de construction. + Construire une hiérarchie d'objets en utilisant des définitions de + classes pour définir des classes enfants à partir de classes existantes. + + Construire une hiérarchie d'objets en assignant un objet comme prototype + associé à une fonction de construction. +
Modèle d'héritage
Extension des propriétésLa définition de la classe spécifie toutes les propriétés de toutes les instances d'une classe. Impossible d'ajouter des propriétés dynamiquement au moment de l'exécution.La fonction ou le prototype du constructeur spécifie un ensemble initial de propriétés. On peut ajouter ou supprimer dynamiquement des propriétés à des objets individuels ou à l'ensemble des objets. + La définition de la classe spécifie toutes les propriétés de + toutes les instances d'une classe. Impossible d'ajouter des propriétés + dynamiquement au moment de l'exécution. + + La fonction ou le prototype du constructeur spécifie un + ensemble initial de propriétés. On peut ajouter ou supprimer + dynamiquement des propriétés à des objets individuels ou à l'ensemble + des objets. +
-

L'exemple de l'employé

+## L'exemple de l'employé -

Le reste de ce chapitre utilise la hiérarchie des employés présentée dans la figure suivante.

+Le reste de ce chapitre utilise la hiérarchie des employés présentée dans la figure suivante. -

+![](figure8.1.png) -

Cela montre une hiérarchie d'objets avec les objets suivants :

+Cela montre une hiérarchie d'objets avec les objets suivants : -
    -
  • Employee possède les propriétés name (« le nom » dont la valeur par défaut est la chaîne de caractères vide) et dept (« le département » dont la valeur par défaut est « général »).
  • -
  • Manager est basé sur Employee. Il ajoute la propriété reports (« les rapports » dont la valeur par défaut est un tableau vide, destiné à avoir pour valeur un tableau d'objets Employee).
  • -
  • WorkerBee est également basé sur Employee. Il ajoute la propriété projects (« les projets » dont la valeur par défaut est un tableau vide, destiné à avoir pour valeur un tableau de chaînes de caractères).
  • -
  • SalesPerson est basé sur WorkerBee. Il ajoute la propriété quota (dont la valeur par défaut est 100). Il surcharge la propriété dept avec la valeur « ventes », indiquant que tous les vendeurs sont dans le même département.
  • -
  • Engineer est basé sur WorkerBee. Il ajoute la propriété machine (dont la valeur par défaut est une chaîne de caractères vide) et surcharge également la propriété dept avec la valeur « ingénierie ».
  • -
+- `Employee` possède les propriétés `name` (« le nom » dont la valeur par défaut est la chaîne de caractères vide) et `dept` (« le département » dont la valeur par défaut est « général »). +- `Manager` est basé sur `Employee`. Il ajoute la propriété `reports` (« les rapports » dont la valeur par défaut est un tableau vide, destiné à avoir pour valeur un tableau d'objets `Employee`). +- `WorkerBee` est également basé sur `Employee`. Il ajoute la propriété `projects` (« les projets » dont la valeur par défaut est un tableau vide, destiné à avoir pour valeur un tableau de chaînes de caractères). +- `SalesPerson` est basé sur `WorkerBee`. Il ajoute la propriété `quota` (dont la valeur par défaut est 100). Il surcharge la propriété `dept` avec la valeur « ventes », indiquant que tous les vendeurs sont dans le même département. +- `Engineer` est basé sur `WorkerBee`. Il ajoute la propriété `machine` (dont la valeur par défaut est une chaîne de caractères vide) et surcharge également la propriété `dept` avec la valeur « ingénierie ». -

La création de la hiérarchie

+## La création de la hiérarchie -

Il existe plusieurs façons de définir des fonctions constructrices appropriées pour mettre en œuvre la hiérarchie des employés. La façon dont vous choisissez de les définir dépend en grande partie de ce que vous voulez être en mesure de faire dans votre application.

+Il existe plusieurs façons de définir des fonctions constructrices appropriées pour mettre en œuvre la hiérarchie des employés. La façon dont vous choisissez de les définir dépend en grande partie de ce que vous voulez être en mesure de faire dans votre application. -

Cette section montre comment utiliser des définitions très simples (et comparativement peu flexibles) pour démontrer comment faire fonctionner l'héritage. Dans ces définitions, vous ne pouvez spécifier aucune valeur de propriété lorsque vous créez un objet. L'objet nouvellement créé reçoit les valeurs par défaut, que vous pouvez modifier ultérieurement.

+Cette section montre comment utiliser des définitions très simples (et comparativement peu flexibles) pour démontrer comment faire fonctionner l'héritage. Dans ces définitions, vous ne pouvez spécifier aucune valeur de propriété lorsque vous créez un objet. L'objet nouvellement créé reçoit les valeurs par défaut, que vous pouvez modifier ultérieurement. -

Dans une application réelle, vous définiriez probablement des constructeurs qui vous permettent de fournir des valeurs de propriété au moment de la création de l'objet (voir Des constructeurs plus flexibles pour plus d'informations). Pour l'instant, ces définitions simples démontrent comment l'héritage se produit.

+Dans une application réelle, vous définiriez probablement des constructeurs qui vous permettent de fournir des valeurs de propriété au moment de la création de l'objet (voir [Des constructeurs plus flexibles](#more_flexible_constructors) pour plus d'informations). Pour l'instant, ces définitions simples démontrent comment l'héritage se produit. -

Les définitions suivantes en Java et en JavaScript de Employee sont similaires. La seule différence est que vous devez spécifier le type de chaque propriété en Java mais pas en JavaScript (ceci est dû au fait que Java est un langage fortement typé (en anglais) alors que JavaScript est un langage faiblement typé).

+Les définitions suivantes en Java et en JavaScript de `Employee` sont similaires. La seule différence est que vous devez spécifier le type de chaque propriété en Java mais pas en JavaScript (ceci est dû au fait que Java est un [langage fortement typé](https://en.wikipedia.org/wiki/Strong_and_weak_typing) (en anglais) alors que JavaScript est un langage faiblement typé). -

JavaScript (l'utilisation de cette option peut provoquer une erreur pour les exemples suivants)

+#### JavaScript (l'utilisation de cette option peut provoquer une erreur pour les exemples suivants) -
class Employee {
+```js
+class Employee {
   constructor() {
     this.name = '';
     this.dept = 'général';
   }
-}
+} +``` -

JavaScript ** (utilisez plutôt ceci)

+#### JavaScript \*\* (utilisez plutôt ceci) -
function Employee() {
+```js
+function Employee() {
     this.name = '';
     this.dept = 'général';
-}
+} +``` -

Java

+#### Java -
public class Employee {
+```java
+public class Employee {
    public String name = "";
    public String dept = "général";
-}
+} +``` -

Les définitions de Manager et de WorkerBee montrent la différence dans la façon de spécifier l'objet immédiatement supérieur dans la chaîne d'héritage. En JavaScript, vous ajoutez une instance prototypique comme valeur de la propriété prototype de la fonction du constructeur, puis vous surchargez le prototype.constructor de la fonction du constructeur. Vous pouvez le faire à tout moment après avoir défini le constructeur. En Java, vous spécifiez la superclasse dans la définition de la classe. Vous ne pouvez pas modifier la superclasse en dehors de la définition de la classe.

+Les définitions de `Manager` et de `WorkerBee` montrent la différence dans la façon de spécifier l'objet immédiatement supérieur dans la chaîne d'héritage. En JavaScript, vous ajoutez une instance prototypique comme valeur de la propriété `prototype` de la fonction du constructeur, puis vous surchargez le `prototype.constructor` de la fonction du constructeur. Vous pouvez le faire à tout moment après avoir défini le constructeur. En Java, vous spécifiez la superclasse dans la définition de la classe. Vous ne pouvez pas modifier la superclasse en dehors de la définition de la classe. -

JavaScript

+#### JavaScript -
function Manager() {
+```js
+function Manager() {
   Employee.call(this); // On étend l'objet parent
   this.reports = []; // On définit une propriété unique à Manager
 }
@@ -163,11 +186,12 @@ function WorkerBee() {
 }
 WorkerBee.prototype = Object.create(Employee.prototype); // On définit le constructeur dans prototype
 WorkerBee.prototype.constructor = WorkerBee; // On surchage le constructeur
-
+``` -

Java

+#### Java -
// La classe Manager étend la classe parente Employee
+```java
+// La classe Manager étend la classe parente Employee
 public class Manager extends Employee {
    public Employee[] reports = new Employee[0]; // On définit une propriété unique à Manager
 }
@@ -176,13 +200,14 @@ public class Manager extends Employee {
 public class WorkerBee extends Employee {
    public String[] projects = new String[0]; // On définit une propriété unique à WorkerBee
 }
-
+``` -

Les définitions Engineer et SalesPerson créent des objets qui descendent de WorkerBee et donc de Employee. Un objet de ces types possède les propriétés de tous les objets situés au-dessus de lui dans la hiérarchie. En outre, ces définitions remplacent la valeur héritée de la propriété dept par de nouvelles valeurs spécifiques à ces objets.

+Les définitions `Engineer` et `SalesPerson` créent des objets qui descendent de `WorkerBee` et donc de `Employee`. Un objet de ces types possède les propriétés de tous les objets situés au-dessus de lui dans la hiérarchie. En outre, ces définitions remplacent la valeur héritée de la propriété `dept` par de nouvelles valeurs spécifiques à ces objets. -

JavaScript

+#### JavaScript -
function SalesPerson() {
+```js
+function SalesPerson() {
    WorkerBee.call(this); // On étend l'objet WorkerBee
    this.dept = 'ventes'; // On réécrit la valeur de « dept »
    this.quota = 100; // On ajoute une propriété unique à SalesPerson
@@ -196,11 +221,13 @@ function Engineer() {
    this.machine = ''; // On ajoute une propriété unique à Engineer
 }
 Engineer.prototype = Object.create(WorkerBee.prototype);
-Engineer.prototype.constructor = Engineer;
+Engineer.prototype.constructor = Engineer; +``` -

Java

+#### Java -
// La classe a pour classe parente WorkerBee
+```java
+// La classe a pour classe parente WorkerBee
 public class SalesPerson extends WorkerBee {
    public String dept = "ventes"; // On réécrit la valeur de « dept »
    public double quota = 100.0; // On ajoute une propriété unique à SalesPerson
@@ -210,25 +237,25 @@ public class SalesPerson extends WorkerBee {
 public class Engineer extends WorkerBee {
    public String dept = "ingénierie"; // On réécrit la valeur de « dept »
    public String machine = ""; // On ajoute une propriété unique à Engineer
-}
+} +``` -

À l'aide de ces définitions, vous pouvez créer des instances de ces objets qui obtiennent les valeurs par défaut de leurs propriétés. La figure suivante illustre l'utilisation de ces définitions JavaScript pour créer de nouveaux objets et montre les valeurs des propriétés de ces nouveaux objets.

+À l'aide de ces définitions, vous pouvez créer des instances de ces objets qui obtiennent les valeurs par défaut de leurs propriétés. La figure suivante illustre l'utilisation de ces définitions JavaScript pour créer de nouveaux objets et montre les valeurs des propriétés de ces nouveaux objets. -
-

Note : Le terme instance a une signification technique spécifique dans les langages basés sur les classes. Dans ces langages, une instance est une instanciation individuelle d'une classe et est fondamentalement différente d'une classe. En JavaScript, « instance » n'a pas cette signification technique car JavaScript ne fait pas cette différence entre classes et instances. Toutefois, en parlant de JavaScript, le terme « instance » peut être utilisé de manière informelle pour désigner un objet créé à l'aide d'une fonction de construction particulière. Ainsi, dans cet exemple, vous pourriez dire de manière informelle que jane est une instance de Engineer. De même, bien que les termes parent (« Parent »), child (« Enfant »), ancestor (« Ancêtre ») et descendant (« Descendant ») n'aient pas de signification formelle en JavaScript ; vous pouvez les utiliser de manière informelle pour vous référer à des objets supérieurs ou inférieurs dans la chaîne des prototypes.

-
+> **Note :** Le terme _instance_ a une signification technique spécifique dans les langages basés sur les classes. Dans ces langages, une instance est une instanciation individuelle d'une classe et est fondamentalement différente d'une classe. En JavaScript, « instance » n'a pas cette signification technique car JavaScript ne fait pas cette différence entre classes et instances. Toutefois, en parlant de JavaScript, le terme « instance » peut être utilisé de manière informelle pour désigner un objet créé à l'aide d'une fonction de construction particulière. Ainsi, dans cet exemple, vous pourriez dire de manière informelle que `jane` est une instance de `Engineer`. De même, bien que les termes _parent_ (« Parent »), _child_ (« Enfant »), _ancestor_ (« Ancêtre ») et _descendant_ (« Descendant ») n'aient pas de signification formelle en JavaScript ; vous pouvez les utiliser de manière informelle pour vous référer à des objets supérieurs ou inférieurs dans la chaîne des prototypes. -

Création d'objets avec des définitions simples

+### Création d'objets avec des définitions simples -

Hiérarchie des objets

+#### Hiérarchie des objets -

La hiérarchie suivante est créée à l'aide du code situé ci-dessous.

+La hiérarchie suivante est créée à l'aide du code situé ci-dessous. -

+![](figure8.3.png) -

Objets individuels = Jim, Sally, Mark, Fred, Jane, etc.
« Instances » créées à partir du constructeur

+#### Objets individuels = Jim, Sally, Mark, Fred, Jane, etc.
« Instances » créées à partir du constructeur -
let jim = new Employee;
+```js
+let jim = new Employee;
 // Les parenthèses peuvent être omises si
 // le constructeur ne prend pas d'arguments.
 // jim.name correspond à ''
@@ -255,65 +282,78 @@ let jane = new Engineer;
 // jane.dept correspond à 'ingénierie'
 // jane.projects correspond à []
 // jane.machine correspond à ''
-
+``` -

Les propriétés d'un objet

+## Les propriétés d'un objet -

Cette section explique comment les objets héritent des propriétés d'autres objets dans la chaîne des prototypes et ce qui se passe lorsque vous ajoutez une propriété au moment de l'exécution.

+Cette section explique comment les objets héritent des propriétés d'autres objets dans la chaîne des prototypes et ce qui se passe lorsque vous ajoutez une propriété au moment de l'exécution. -

L'héritage de propriétés

+### L'héritage de propriétés -

Supposons que vous créez l'objet mark comme un WorkerBee avec l'instruction suivante :

+Supposons que vous créez l'objet `mark` comme un `WorkerBee` avec l'instruction suivante : -
let mark = new WorkerBee;
+```js +let mark = new WorkerBee; +``` -

Lorsque JavaScript voit l'opérateur new, il crée un nouvel objet générique et définit implicitement la valeur de la propriété interne [[Prototype]] à la valeur de WorkerBee.prototype et passe ce nouvel objet comme valeur du mot-clé this à la fonction du constructeur WorkerBee. La propriété interne [[Prototype]] détermine la chaîne de prototypes utilisée pour retourner les valeurs des propriétés. Une fois ces propriétés définies, JavaScript renvoie le nouvel objet et l'instruction d'affectation définit la variable mark à cet objet.

+Lorsque JavaScript voit l'opérateur `new`, il crée un nouvel objet générique et définit implicitement la valeur de la propriété interne \[\[Prototype]] à la valeur de `WorkerBee.prototype` et passe ce nouvel objet comme valeur du mot-clé _`this`_ à la fonction du constructeur `WorkerBee`. La propriété interne \[\[Prototype]] détermine la chaîne de prototypes utilisée pour retourner les valeurs des propriétés. Une fois ces propriétés définies, JavaScript renvoie le nouvel objet et l'instruction d'affectation définit la variable `mark` à cet objet. -

Ce processus ne met pas explicitement des valeurs dans l'objet mark (valeurs locales) pour les propriétés que mark hérite de la chaîne de prototypes. Lorsque vous demandez la valeur d'une propriété, JavaScript vérifie d'abord si la valeur existe dans cet objet. Si c'est le cas, cette valeur est retournée. Si la valeur n'existe pas localement, JavaScript vérifie la chaîne des prototypes (en utilisant la propriété interne [[Prototype]]). Si un objet de la chaîne des prototypes possède une valeur pour la propriété, cette valeur est renvoyée. Si aucune propriété de ce type n'est trouvée, JavaScript indique que l'objet ne possède pas la propriété. Ainsi, l'objet mark possède les propriétés et valeurs suivantes :

+Ce processus ne met pas explicitement des valeurs dans l'objet `mark` (valeurs _locales_) pour les propriétés que `mark` hérite de la chaîne de prototypes. Lorsque vous demandez la valeur d'une propriété, JavaScript vérifie d'abord si la valeur existe dans cet objet. Si c'est le cas, cette valeur est retournée. Si la valeur n'existe pas localement, JavaScript vérifie la chaîne des prototypes (en utilisant la propriété interne \[\[Prototype]]). Si un objet de la chaîne des prototypes possède une valeur pour la propriété, cette valeur est renvoyée. Si aucune propriété de ce type n'est trouvée, JavaScript indique que l'objet ne possède pas la propriété. Ainsi, l'objet `mark` possède les propriétés et valeurs suivantes : -
mark.name = '';
+```js
+mark.name = '';
 mark.dept = 'général';
-mark.projects = [];
+mark.projects = []; +``` -

L'objet mark se voit attribuer des valeurs locales pour les propriétés name et dept par le constructeur Employee. Une valeur locale lui est attribuée pour la propriété projects par le constructeur WorkerBee. On obtient ainsi l'héritage des propriétés et de leurs valeurs en JavaScript. Certaines subtilités de ce processus sont abordées dans L'héritage des propriétés, revisité.

+L'objet `mark` se voit attribuer des valeurs locales pour les propriétés `name` et `dept` par le constructeur `Employee`. Une valeur locale lui est attribuée pour la propriété `projects` par le constructeur `WorkerBee`. On obtient ainsi l'héritage des propriétés et de leurs valeurs en JavaScript. Certaines subtilités de ce processus sont abordées dans [L'héritage des propriétés, revisité](#property_inheritance_revisited). -

Comme ces constructeurs ne vous permettent pas de fournir des valeurs spécifiques à une instance, ces informations sont génériques. Les valeurs des propriétés sont celles par défaut partagées par tous les nouveaux objets créés à partir de WorkerBee. Vous pouvez, bien sûr, modifier les valeurs de n'importe laquelle de ces propriétés. Ainsi, vous pourriez donner des informations spécifiques pour mark comme suit :

+Comme ces constructeurs ne vous permettent pas de fournir des valeurs spécifiques à une instance, ces informations sont génériques. Les valeurs des propriétés sont celles par défaut partagées par tous les nouveaux objets créés à partir de `WorkerBee`. Vous pouvez, bien sûr, modifier les valeurs de n'importe laquelle de ces propriétés. Ainsi, vous pourriez donner des informations spécifiques pour `mark` comme suit : -
mark.name = 'Mark Eting';
+```js
+mark.name = 'Mark Eting';
 mark.dept = 'admin';
-mark.projects = ['navigateur'];
+mark.projects = ['navigateur']; +``` -

L'ajout de propriétés

+### L'ajout de propriétés -

En JavaScript, vous pouvez ajouter des propriétés à tout objet au moment de l'exécution. Vous n'êtes pas contraint d'utiliser uniquement les propriétés fournies par la fonction du constructeur. Pour ajouter une propriété spécifique à un seul objet, vous attribuez une valeur à l'objet, comme suit :

+En JavaScript, vous pouvez ajouter des propriétés à tout objet au moment de l'exécution. Vous n'êtes pas contraint d'utiliser uniquement les propriétés fournies par la fonction du constructeur. Pour ajouter une propriété spécifique à un seul objet, vous attribuez une valeur à l'objet, comme suit : -
mark.bonus = 3000;
+```js +mark.bonus = 3000; +``` -

Maintenant, l'objet mark possède une propriété bonus, mais aucun autre objet WorkerBee ne possède cette propriété.

+Maintenant, l'objet `mark` possède une propriété `bonus`, mais aucun autre objet `WorkerBee` ne possède cette propriété. -

Si vous ajoutez une nouvelle propriété à un objet qui est utilisé comme prototype pour une fonction du constructeur, vous ajoutez cette propriété à tous les objets qui héritent des propriétés du prototype. Par exemple, vous pouvez ajouter une propriété specialty à tous les employés avec l'instruction suivante :

+Si vous ajoutez une nouvelle propriété à un objet qui est utilisé comme prototype pour une fonction du constructeur, vous ajoutez cette propriété à tous les objets qui héritent des propriétés du prototype. Par exemple, vous pouvez ajouter une propriété `specialty` à tous les employés avec l'instruction suivante : -
Employee.prototype.specialty = 'aucune';
+```js +Employee.prototype.specialty = 'aucune'; +``` -

Dès que JavaScript exécute cette instruction, l'objet mark possède également la propriété specialty avec la valeur "aucune". La figure suivante montre l'effet de l'ajout de cette propriété au prototype Employee, puis de sa surcharge pour le prototype Engineer.

+Dès que JavaScript exécute cette instruction, l'objet `mark` possède également la propriété `specialty` avec la valeur `"aucune"`. La figure suivante montre l'effet de l'ajout de cette propriété au prototype `Employee`, puis de sa surcharge pour le prototype `Engineer`. -

Ajout de propriétés

+![Ajout de propriétés](figure8.4.png) -

Des constructeurs plus flexibles

+## Des constructeurs plus flexibles -

Les fonctions correctrices présentées jusqu'à présent ne vous permettent pas de spécifier les valeurs des propriétés lorsque vous créez une instance. Comme avec Java, vous pouvez fournir des arguments aux constructeurs pour initialiser les valeurs des propriétés des instances. La figure suivante montre une façon de le faire.

+Les fonctions correctrices présentées jusqu'à présent ne vous permettent pas de spécifier les valeurs des propriétés lorsque vous créez une instance. Comme avec Java, vous pouvez fournir des arguments aux constructeurs pour initialiser les valeurs des propriétés des instances. La figure suivante montre une façon de le faire. -

Spécifier des propriétés dans un constructeur, prise 1

+![Spécifier des propriétés dans un constructeur, prise 1](figure8.5.png) -

Les paires d'exemples suivantes montrent les définitions Java et JavaScript de ces objets.

+Les paires d'exemples suivantes montrent les définitions Java et JavaScript de ces objets. -
// JavaScript
+```js
+// JavaScript
 function Employee(name, dept) {
   this.name = name || ''; // L'argument donné OU la valeur par défaut
   this.dept = dept || 'général'; // L'argument donné OU la valeur par défaut
-}
+} +``` -
// Java
+```java
+// Java
 public class Employee {
   public String name;
   public String dept;
@@ -330,15 +370,19 @@ public class Employee {
     this.name = name;
     this.dept = dept;
   }
-}
+} +``` -
// JavaScript
+```js
+// JavaScript
 function WorkerBee(projs) {
   this.projects = projs || []; // L'argument donné OU la valeur par défaut
 }
-WorkerBee.prototype = new Employee;
+WorkerBee.prototype = new Employee; +``` -
// Java
+```java
+// Java
 public class WorkerBee extends Employee {
    public String[] projects;
    // On assigne une valeur par défaut à la propriété
@@ -349,16 +393,20 @@ public class WorkerBee extends Employee {
    public WorkerBee (String[] projs) {
       projects = projs;
    }
-}
+} +``` -
// JavaScript
+```js
+// JavaScript
 function Engineer(mach) {
   this.dept = 'engineering'; // On réécrit la valeur de « dept »
   this.machine = mach || ''; // L'argument donné OU la valeur par défaut
 }
-Engineer.prototype = new WorkerBee;
+Engineer.prototype = new WorkerBee; +``` -
// Java
+```java
+// Java
 public class Engineer extends WorkerBee {
    public String machine;
    public Engineer () {
@@ -369,74 +417,83 @@ public class Engineer extends WorkerBee {
       dept = "engineering"; // On réécrit la valeur de « dept »
       machine = mach; // On assigne l'argument donné à la propriété
    }
-}
+} +``` -

Ces définitions JavaScript utilisent un idiome spécial pour définir les valeurs par défaut :

+Ces définitions JavaScript utilisent un idiome spécial pour définir les valeurs par défaut : -
this.nom = nom || "";
+```js +this.nom = nom || ""; +``` -

L'opérateur logique OU de JavaScript (||) évalue son premier argument. Si cet argument se transforme en vrai, l'opérateur le retourne. Sinon, l'opérateur renvoie la valeur du deuxième argument. Par conséquent, cette ligne de code teste pour voir si name a une valeur utile pour la propriété name. Si c'est le cas, elle définit this.name à cette valeur. Sinon, elle définit this.name à la chaîne de caractères vide. Ce chapitre utilise cet idiome par souci de concision ; cependant, il peut être déroutant au premier abord.

+L'opérateur logique OU de JavaScript (`||`) évalue son premier argument. Si cet argument se transforme en vrai, l'opérateur le retourne. Sinon, l'opérateur renvoie la valeur du deuxième argument. Par conséquent, cette ligne de code teste pour voir si `name` a une valeur utile pour la propriété `name`. Si c'est le cas, elle définit `this.name` à cette valeur. Sinon, elle définit `this.name` à la chaîne de caractères vide. Ce chapitre utilise cet idiome par souci de concision ; cependant, il peut être déroutant au premier abord. -
-

Note : Cela peut ne pas fonctionner comme prévu si la fonction du constructeur est appelée avec des arguments qui se convertissent en false (comme 0 (zéro) et la chaîne vide ("")). Dans ce cas, la valeur par défaut sera choisie.

-
+> **Note :** Cela peut ne pas fonctionner comme prévu si la fonction du constructeur est appelée avec des arguments qui se convertissent en `false` (comme `0` (zéro) et la chaîne vide (`""`)). Dans ce cas, la valeur par défaut sera choisie. -

Avec ces définitions, lorsque vous créez une instance d'un objet, vous pouvez spécifier des valeurs pour les propriétés définies localement. Vous pouvez utiliser l'instruction suivante pour créer un nouvel Engineer :

+Avec ces définitions, lorsque vous créez une instance d'un objet, vous pouvez spécifier des valeurs pour les propriétés définies localement. Vous pouvez utiliser l'instruction suivante pour créer un nouvel `Engineer` : -
let jane = new Engineer('belau');
+```js +let jane = new Engineer('belau'); +``` -

Les propriétés de Jane sont maintenant :

+Les propriétés de `Jane` sont maintenant : -
jane.name == '';
+```js
+jane.name == '';
 jane.dept == 'engineering';
 jane.projects == [];
-jane.machine == 'belau';
+jane.machine == 'belau'; +``` -

Remarquez qu'avec ces définitions, vous ne pouvez pas spécifier une valeur initiale pour une propriété héritée telle que name. Si vous voulez spécifier une valeur initiale pour les propriétés héritées en JavaScript, vous devez ajouter du code supplémentaire à la fonction du constructeur.

+Remarquez qu'avec ces définitions, vous ne pouvez pas spécifier une valeur initiale pour une propriété héritée telle que `name`. Si vous voulez spécifier une valeur initiale pour les propriétés héritées en JavaScript, vous devez ajouter du code supplémentaire à la fonction du constructeur. -

Jusqu'à présent, la fonction du constructeur a créé un objet générique, puis a spécifié les propriétés et valeurs locales du nouvel objet. Vous pouvez demander au constructeur d'ajouter d'autres propriétés en appelant directement la fonction du constructeur d'un objet situé plus haut dans la chaîne des prototypes. La figure suivante montre ces nouvelles définitions.

+Jusqu'à présent, la fonction du constructeur a créé un objet générique, puis a spécifié les propriétés et valeurs locales du nouvel objet. Vous pouvez demander au constructeur d'ajouter d'autres propriétés en appelant directement la fonction du constructeur d'un objet situé plus haut dans la chaîne des prototypes. La figure suivante montre ces nouvelles définitions. -

Spécifier des propriétés dans un constructeur, prise 2

+![Spécifier des propriétés dans un constructeur, prise 2](figure8.6.png) -

Examinons l'une de ces définitions en détails. Voici la nouvelle définition pour le constructeur Engineer :

+Examinons l'une de ces définitions en détails. Voici la nouvelle définition pour le constructeur `Engineer` : -
function Engineer(name, projs, mach) {
+```js
+function Engineer(name, projs, mach) {
   this.base = WorkerBee;
   this.base(name, 'ingénierie', projs);
   this.machine = mach || '';
-}
+} +``` -

Supposons que vous créez un nouvel objet Engineer comme suit :

+Supposons que vous créez un nouvel objet `Engineer` comme suit : -
let jane = new Engineer('Jane Dupont', ['navigateur', 'javascript'], 'belau');
-
+```js +let jane = new Engineer('Jane Dupont', ['navigateur', 'javascript'], 'belau'); +``` -

JavaScript suit les étapes suivantes :

+JavaScript suit les étapes suivantes : -
    -
  1. L'opérateur new crée un objet générique et définit sa propriété __proto__ à Engineer.prototype.
  2. -
  3. L'opérateur new transmet le nouvel objet au constructeur Engineer comme valeur du mot clé this.
  4. -
  5. Le constructeur crée une nouvelle propriété appelée base pour cet objet et affecte la valeur du constructeur WorkerBee à la propriété base. Cela fait du constructeur WorkerBee une méthode de l'objet Engineer. Le nom de la propriété base n'est pas spécial. Vous pouvez utiliser n'importe quel nom de propriété légal ; base est évocateur de son but.
  6. -
  7. Le constructeur appelle la méthode base, en passant comme arguments deux des arguments passés au constructeur ("Jane Dupont" et ["navigateur", "javascript"]) et également la chaîne "ingénierie". L'utilisation explicite de "ingénierie" dans le constructeur indique que tous les objets Engineer ont la même valeur pour la propriété dept héritée, et cette valeur remplace la valeur héritée de Employee.
  8. -
  9. Parce que base est une méthode de Engineer, dans l'appel à base, JavaScript lie le mot-clé this à l'objet créé à l'étape 1. Ainsi, la fonction WorkerBee transmet à son tour les arguments "Jane Dupont" et "ingénierie" à la fonction du constructeur Employee. Au retour de la fonction du constructeur Employee, la fonction WorkerBee utilise l'argument restant pour définir la propriété projects.
  10. -
  11. Au retour de la méthode base, le constructeur Engineer initialise la propriété machine de l'objet à "belau".
  12. -
  13. Au retour du constructeur, JavaScript affecte le nouvel objet à la variable jane.
  14. -
+1. L'opérateur `new` crée un objet générique et définit sa propriété `__proto__` à `Engineer.prototype`. +2. L'opérateur `new` transmet le nouvel objet au constructeur `Engineer` comme valeur du mot clé `this`. +3. Le constructeur crée une nouvelle propriété appelée `base` pour cet objet et affecte la valeur du constructeur `WorkerBee` à la propriété `base`. Cela fait du constructeur `WorkerBee` une méthode de l'objet `Engineer`. Le nom de la propriété `base` n'est pas spécial. Vous pouvez utiliser n'importe quel nom de propriété légal ; `base` est évocateur de son but. +4. Le constructeur appelle la méthode `base`, en passant comme arguments deux des arguments passés au constructeur (`"Jane Dupont"` et `["navigateur", "javascript"]`) et également la chaîne `"ingénierie"`. L'utilisation explicite de `"ingénierie"` dans le constructeur indique que tous les objets `Engineer` ont la même valeur pour la propriété `dept` héritée, et cette valeur remplace la valeur héritée de `Employee`. +5. Parce que `base` est une méthode de `Engineer`, dans l'appel à `base`, JavaScript lie le mot-clé `this` à l'objet créé à l'étape 1. Ainsi, la fonction `WorkerBee` transmet à son tour les arguments `"Jane Dupont"` et `"ingénierie"` à la fonction du constructeur `Employee`. Au retour de la fonction du constructeur `Employee`, la fonction `WorkerBee` utilise l'argument restant pour définir la propriété `projects`. +6. Au retour de la méthode `base`, le constructeur `Engineer` initialise la propriété `machine` de l'objet à `"belau"`. +7. Au retour du constructeur, JavaScript affecte le nouvel objet à la variable `jane`. -

Vous pourriez penser que, ayant appelé le constructeur WorkerBee à partir de l'intérieur du constructeur Engineer, vous avez mis en place l'héritage de manière appropriée pour les objets Engineer. Ce n'est pas le cas. L'appel du constructeur WorkerBee garantit qu'un objet Engineer commence avec les propriétés spécifiées dans toutes les fonctions des constructeurs qui sont appelées. Cependant, si vous ajoutez ultérieurement des propriétés aux prototypes Employee ou WorkerBee, ces propriétés ne sont pas héritées par l'objet Engineer. Par exemple, supposons que vous ayez les déclarations suivantes :

+Vous pourriez penser que, ayant appelé le constructeur `WorkerBee` à partir de l'intérieur du constructeur `Engineer`, vous avez mis en place l'héritage de manière appropriée pour les objets `Engineer`. Ce n'est pas le cas. L'appel du constructeur `WorkerBee` garantit qu'un objet `Engineer` commence avec les propriétés spécifiées dans toutes les fonctions des constructeurs qui sont appelées. Cependant, si vous ajoutez ultérieurement des propriétés aux prototypes `Employee` ou `WorkerBee`, ces propriétés ne sont pas héritées par l'objet `Engineer`. Par exemple, supposons que vous ayez les déclarations suivantes : -
function Engineer(name, projs, mach) {
+```js
+function Engineer(name, projs, mach) {
   this.base = WorkerBee;
   this.base(name, 'ingénierie', projs);
   this.machine = mach || '';
 }
 
 let jane = new Engineer('Jane Dupont', ['navigateur', 'javascript'], 'belau');
-Employee.prototype.specialty = 'aucune';
+Employee.prototype.specialty = 'aucune'; +``` -

L'objet jane n'hérite pas de la propriété specialty. Vous devez encore configurer explicitement le prototype pour assurer un héritage dynamique. Supposons plutôt que vous ayez ces déclarations :

+L'objet `jane` n'hérite pas de la propriété `specialty`. Vous devez encore configurer explicitement le prototype pour assurer un héritage dynamique. Supposons plutôt que vous ayez ces déclarations : -
function Engineer(name, projs, mach) {
+```js
+function Engineer(name, projs, mach) {
   this.base = WorkerBee;
   this.base(name, 'ingénierie', projs);
   this.machine = mach || '';
@@ -444,43 +501,47 @@ Employee.prototype.specialty = 'aucune';
Engineer.prototype = new WorkerBee; let jane = new Engineer('Jane Dupont', ['navigateur', 'javascript'], 'belau'); -Employee.prototype.specialty = 'aucune'; +Employee.prototype.specialty = 'aucune'; +``` -

Maintenant la valeur de la propriété jane de l'objet specialty est « aucune ».

+Maintenant la valeur de la propriété `jane` de l'objet `specialty` est « aucune ». -

Une autre façon d'hériter est d'utiliser les méthodes call() / apply(). Les méthodes ci-dessous sont équivalentes :

+Une autre façon d'hériter est d'utiliser les méthodes [`call()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function/call) / [`apply()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function/apply). Les méthodes ci-dessous sont équivalentes : -
function Engineer(name, projs, mach) {
+```js
+function Engineer(name, projs, mach) {
   this.base = WorkerBee;
   this.base(name, 'ingénierie', projs);
   this.machine = mach || '';
-}
+} +``` -
function Engineer(name, projs, mach) {
+```js
+function Engineer(name, projs, mach) {
   WorkerBee.call(this, name, 'ingénierie', projs);
   this.machine = mach || '';
-}
+} +``` -

L'utilisation de la méthode JavaScript call() rend une implémentation plus propre car base n'est plus nécessaire.

+L'utilisation de la méthode JavaScript `call()` rend une implémentation plus propre car `base` n'est plus nécessaire. -

L'héritage des propriétés, revisité

+## L'héritage des propriétés, revisité -

Les sections précédentes ont décrit comment les constructeurs et prototypes JavaScript fournissent des hiérarchies et de l'héritage. Cette section aborde certaines subtilités qui n'étaient pas nécessairement apparentes dans les discussions précédentes.

+Les sections précédentes ont décrit comment les constructeurs et prototypes JavaScript fournissent des hiérarchies et de l'héritage. Cette section aborde certaines subtilités qui n'étaient pas nécessairement apparentes dans les discussions précédentes. -

Valeurs locales et valeurs héritées

+### Valeurs locales et valeurs héritées -

Lorsque vous accédez à une propriété d'objet, JavaScript effectue les étapes suivantes, comme décrit précédemment dans ce chapitre :

+Lorsque vous accédez à une propriété d'objet, JavaScript effectue les étapes suivantes, comme décrit précédemment dans ce chapitre : -
    -
  1. Vérifiez si la valeur existe localement. Si c'est le cas, elle est retournée.
  2. -
  3. S'il n'y a pas de valeur locale, vérifiez la chaîne de prototypes (en utilisant la propriété __proto__).
  4. -
  5. Si un objet de la chaîne de prototypes possède une valeur pour la propriété spécifiée, renvoyer cette valeur.
  6. -
  7. Si aucune propriété de ce type n'est trouvée, l'objet ne possède pas cette propriété.
  8. -
+1. Vérifiez si la valeur existe localement. Si c'est le cas, elle est retournée. +2. S'il n'y a pas de valeur locale, vérifiez la chaîne de prototypes (en utilisant la propriété `__proto__`). +3. Si un objet de la chaîne de prototypes possède une valeur pour la propriété spécifiée, renvoyer cette valeur. +4. Si aucune propriété de ce type n'est trouvée, l'objet ne possède pas cette propriété. -

Le résultat de ces étapes dépend de la façon dont vous définissez les choses en cours de route. L'exemple original avait ces définitions :

+Le résultat de ces étapes dépend de la façon dont vous définissez les choses en cours de route. L'exemple original avait ces définitions : -
function Employee() {
+```js
+function Employee() {
   this.name = '';
   this.dept = 'général';
 }
@@ -488,29 +549,37 @@ Employee.prototype.specialty = 'aucune';
function WorkerBee() { this.projects = []; } -WorkerBee.prototype = new Employee; +WorkerBee.prototype = new Employee; +``` -

Avec ces définitions, supposons que vous créez amy comme une instance de WorkerBee avec l'instruction suivante :

+Avec ces définitions, supposons que vous créez `amy` comme une instance de `WorkerBee` avec l'instruction suivante : -
let amy = new WorkerBee;
+```js +let amy = new WorkerBee; +``` -

L'objet amy possède une propriété locale, projects. Les valeurs des propriétés name et dept ne sont pas locales à amy et héritent donc dans la propriété amy de l'objet __proto__. Ainsi, amy possède ces valeurs de propriétés :

+L'objet `amy` possède une propriété locale, `projects`. Les valeurs des propriétés `name` et `dept` ne sont pas locales à `amy` et héritent donc dans la propriété `amy` de l'objet `__proto__`. Ainsi, `amy` possède ces valeurs de propriétés : -
amy.name == '';
+```js
+amy.name == '';
 amy.dept == 'général';
-amy.projects == [];
+amy.projects == []; +``` -

Supposons maintenant que vous modifiez la valeur de la propriété name dans le prototype associé à Employee :

+Supposons maintenant que vous modifiez la valeur de la propriété `name` dans le prototype associé à `Employee` : -
Employee.prototype.name = 'Inconnu·e';
+```js +Employee.prototype.name = 'Inconnu·e'; +``` -

À première vue, on pourrait s'attendre à ce que cette nouvelle valeur se propage vers le bas à toutes les instances de Employee. Cependant, ce n'est pas le cas.

+À première vue, on pourrait s'attendre à ce que cette nouvelle valeur se propage vers le bas à toutes les instances de `Employee`. Cependant, ce n'est pas le cas. -

Lorsque vous créez n'importe quelle instance de l'objet Employee, cette instance obtient une valeur locale pour la propriété name (la chaîne de caractères vide). Cela signifie que lorsque vous définissez le prototype de WorkerBee en créant un nouvel objet Employee, WorkerBee.prototype a une valeur locale pour la propriété name. Par conséquent, lorsque JavaScript recherche la propriété name de l'objet amy (une instance de WorkerBee), JavaScript trouve la valeur locale de cette propriété dans WorkerBee.prototype. Il ne cherche donc pas plus haut dans la chaîne jusqu'à Employee.prototype.

+Lorsque vous créez _n'importe quelle_ instance de l'objet `Employee`, cette instance obtient une **valeur locale** pour la propriété `name` (la chaîne de caractères vide). Cela signifie que lorsque vous définissez le prototype de `WorkerBee` en créant un nouvel objet `Employee`, `WorkerBee.prototype` a une valeur locale pour la propriété `name`. Par conséquent, lorsque JavaScript recherche la propriété `name` de l'objet `amy` (une instance de `WorkerBee`), JavaScript trouve la valeur locale de cette propriété dans `WorkerBee.prototype`. Il ne cherche donc pas plus haut dans la chaîne jusqu'à `Employee.prototype`. -

Si vous souhaitez modifier la valeur d'une propriété d'un objet au moment de l'exécution et que la nouvelle valeur soit héritée par tous les descendants de l'objet, vous ne pouvez pas définir la propriété dans la fonction du constructeur de l'objet. Vous devez plutôt l'ajouter au prototype associé au constructeur. Par exemple, supposons que vous remplaciez le code précédent par le suivant :

+Si vous souhaitez modifier la valeur d'une propriété d'un objet au moment de l'exécution et que la nouvelle valeur soit héritée par tous les descendants de l'objet, vous ne pouvez pas définir la propriété dans la fonction du constructeur de l'objet. Vous devez plutôt l'ajouter au prototype associé au constructeur. Par exemple, supposons que vous remplaciez le code précédent par le suivant : -
function Employee() {
+```js
+function Employee() {
   this.dept = 'général'; // Notez que this.name (une variable locale) n'apparaît pas ici
 }
 Employee.prototype.name = ''; // Un seul exemplaire
@@ -522,38 +591,46 @@ WorkerBee.prototype = new Employee;
 
 let amy = new WorkerBee;
 
-Employee.prototype.name = 'Inconnu·e';
+Employee.prototype.name = 'Inconnu·e'; +``` + +Dans ce cas, la propriété `name` de `amy` devient « Inconnu·e ». + +Comme le montrent ces exemples, si vous souhaitez définir des valeurs par défaut pour les propriétés d'un objet et que vous voulez pouvoir modifier ces valeurs au moment de l'exécution, vous devez définir les propriétés dans le prototype du constructeur, et non dans la fonction du constructeur elle-même. -

Dans ce cas, la propriété name de amy devient « Inconnu·e ».

+### Déterminer les relations entre les instances -

Comme le montrent ces exemples, si vous souhaitez définir des valeurs par défaut pour les propriétés d'un objet et que vous voulez pouvoir modifier ces valeurs au moment de l'exécution, vous devez définir les propriétés dans le prototype du constructeur, et non dans la fonction du constructeur elle-même.

+La recherche de propriétés en JavaScript s'effectue dans les propriétés propres d'un objet et, si le nom de la propriété n'est pas trouvé, elle s'effectue dans la propriété spéciale de l'objet `__proto__`. Cette opération se poursuit de manière récursive ; le processus est appelé « recherche dans la chaîne des prototypes ». -

Déterminer les relations entre les instances

+La propriété spéciale `__proto__` est définie lorsqu'un objet est construit ; elle prend la valeur de la propriété `prototype` du constructeur. Ainsi, l'expression `new Riri()` crée un objet avec `__proto__ == Riri.prototype`. Par conséquent, les modifications apportées aux propriétés de `Riri.prototype` modifient la recherche de propriétés pour tous les objets qui ont été créés par `new Riri()`. -

La recherche de propriétés en JavaScript s'effectue dans les propriétés propres d'un objet et, si le nom de la propriété n'est pas trouvé, elle s'effectue dans la propriété spéciale de l'objet __proto__. Cette opération se poursuit de manière récursive ; le processus est appelé « recherche dans la chaîne des prototypes ».

+Chaque objet a une propriété `__proto__` (sauf `Object`) ; chaque fonction a une propriété `prototype`. Les objets peuvent donc être liés par « héritage de prototype » à d'autres objets. Vous pouvez tester l'héritage en comparant le `__proto__` d'un objet avec l'objet `prototype` d'une fonction. JavaScript fournit un raccourci : l'opérateur `instanceof` teste un objet par rapport à une fonction et renvoie vrai si l'objet hérite du prototype de la fonction. Par exemple, -

La propriété spéciale __proto__ est définie lorsqu'un objet est construit ; elle prend la valeur de la propriété prototype du constructeur. Ainsi, l'expression new Riri() crée un objet avec __proto__ == Riri.prototype. Par conséquent, les modifications apportées aux propriétés de Riri.prototype modifient la recherche de propriétés pour tous les objets qui ont été créés par new Riri().

+```js +let f = new Riri(); +let isTrue = (f instanceof Riri); +``` -

Chaque objet a une propriété __proto__ (sauf Object) ; chaque fonction a une propriété prototype. Les objets peuvent donc être liés par « héritage de prototype » à d'autres objets. Vous pouvez tester l'héritage en comparant le __proto__ d'un objet avec l'objet prototype d'une fonction. JavaScript fournit un raccourci : l'opérateur instanceof teste un objet par rapport à une fonction et renvoie vrai si l'objet hérite du prototype de la fonction. Par exemple,

+Pour un exemple plus détaillé, supposons que vous ayez le même ensemble de définitions que celui présenté dans [Héritage des propriétés](#inheriting_properties). Créez un objet `Engineer` comme suit : -
let f = new Riri();
-let isTrue = (f instanceof Riri);
- -

Pour un exemple plus détaillé, supposons que vous ayez le même ensemble de définitions que celui présenté dans Héritage des propriétés. Créez un objet Engineer comme suit :

- -
let chris = new Engineer('Chris Anthème', ['jsd'], 'fiji');
+```js +let chris = new Engineer('Chris Anthème', ['jsd'], 'fiji'); +``` -

Avec cet objet, les affirmations suivantes sont toutes vraies :

+Avec cet objet, les affirmations suivantes sont toutes vraies : -
chris.__proto__ == Engineer.prototype;
+```js
+chris.__proto__ == Engineer.prototype;
 chris.__proto__.__proto__ == WorkerBee.prototype;
 chris.__proto__.__proto__.__proto__ == Employee.prototype;
 chris.__proto__.__proto__.__proto__.__proto__ == Object.prototype;
-chris.__proto__.__proto__.__proto__.__proto__.__proto__ == null;
+chris.__proto__.__proto__.__proto__.__proto__.__proto__ == null; +``` -

Compte tenu de cela, vous pourriez écrire une fonction instanceOf comme suit :

+Compte tenu de cela, vous pourriez écrire une fonction `instanceOf` comme suit : -
function instanceOf(object, constructor) {
+```js
+function instanceOf(object, constructor) {
    object = object.__proto__;
    while (object != null) {
       if (object == constructor.prototype)
@@ -564,43 +641,51 @@ chris.__proto__.__proto__.__proto__.__proto__.__proto__ == null;
object = object.__proto__; } return false; -} +} +``` -
-

Note : L'implémentation ci-dessus vérifie le type de l'objet par rapport à « xml » afin de contourner une bizarrerie de la façon dont les objets XML sont représentés dans les versions récentes de JavaScript. Voir bug 634150 si vous voulez connaître les détails.

-
+> **Note :** L'implémentation ci-dessus vérifie le type de l'objet par rapport à « xml » afin de contourner une bizarrerie de la façon dont les objets XML sont représentés dans les versions récentes de JavaScript. Voir [bug 634150](https://bugzilla.mozilla.org/show_bug.cgi?id=634150) si vous voulez connaître les détails. -

En utilisant la fonction instanceOf définie ci-dessus, ces expressions sont vraies :

+En utilisant la fonction `instanceOf` définie ci-dessus, ces expressions sont vraies : -
instanceOf(chris, Engineer)
+```js
+instanceOf(chris, Engineer)
 instanceOf(chris, WorkerBee)
 instanceOf(chris, Employee)
-instanceOf(chris, Object)
+instanceOf(chris, Object) +``` -

Mais l'expression suivante est fausse :

+Mais l'expression suivante est fausse : -
instanceOf(chris, SalesPerson)
+```js +instanceOf(chris, SalesPerson) +``` -

Les informations globales dans les constructeurs

+### Les informations globales dans les constructeurs -

Lorsque vous créez des constructeurs, vous devez faire attention si vous définissez des informations globales dans le constructeur. Par exemple, supposons que vous souhaitez qu'un identifiant unique soit automatiquement attribué à chaque nouvel employé. Vous pourriez utiliser la définition suivante pour Employee :

+Lorsque vous créez des constructeurs, vous devez faire attention si vous définissez des informations globales dans le constructeur. Par exemple, supposons que vous souhaitez qu'un identifiant unique soit automatiquement attribué à chaque nouvel employé. Vous pourriez utiliser la définition suivante pour `Employee` : -
let idCounter = 1; // On définit un compteur d'identifiant
+```js
+let idCounter = 1; // On définit un compteur d'identifiant
 
 function Employee(name, dept) {
   this.name = name || '';
   this.dept = dept || 'général';
   this.id = idCounter++; // On assigne la valeur et on incrémente le compteur
-}
+} +``` -

Avec cette définition, lorsque vous créez un nouvel Employee, le constructeur lui attribue l'ID suivant dans la séquence, puis incrémente le compteur d'ID global. Ainsi, si votre déclaration est la suivante, victoria.id vaut 1 et harry.id vaut 2 :

+Avec cette définition, lorsque vous créez un nouvel `Employee`, le constructeur lui attribue l'ID suivant dans la séquence, puis incrémente le compteur d'ID global. Ainsi, si votre déclaration est la suivante, `victoria.id` vaut 1 et `harry.id` vaut 2 : -
let victoria = new Employee('Victoria Lamar', 'pubs');
-let harry = new Employee('Harry Stocrate', 'ventes');
+```js +let victoria = new Employee('Victoria Lamar', 'pubs'); +let harry = new Employee('Harry Stocrate', 'ventes'); +``` -

À première vue, cela semble correct. Cependant, idCounter est incrémenté à chaque fois qu'un objet Employee est créé, pour quelque raison que ce soit. Si vous créez toute la hiérarchie Employee présentée dans ce chapitre, le constructeur Employee est appelé chaque fois que vous mettez en place un prototype. Supposons que vous ayez le code suivant :

+À première vue, cela semble correct. Cependant, `idCounter` est incrémenté à chaque fois qu'un objet `Employee` est créé, pour quelque raison que ce soit. Si vous créez toute la hiérarchie `Employee` présentée dans ce chapitre, le constructeur `Employee` est appelé chaque fois que vous mettez en place un prototype. Supposons que vous ayez le code suivant : -
let idCounter = 1;
+```js
+let idCounter = 1;
 
 function Employee(name, dept) {
   this.name = name || '';
@@ -620,13 +705,15 @@ Engineer.prototype = new WorkerBee;
 function SalesPerson(name, projs, quota) {...}
 SalesPerson.prototype = new WorkerBee;
 
-let mac = new Engineer('Mac Fly');
+let mac = new Engineer('Mac Fly'); +``` -

Supposons en outre que les définitions omises ici possèdent la propriété base et appellent le constructeur situé au-dessus d'elles dans la chaîne des prototypes. Dans ce cas, au moment où l'objet mac est créé, mac.id est 5.

+Supposons en outre que les définitions omises ici possèdent la propriété `base` et appellent le constructeur situé au-dessus d'elles dans la chaîne des prototypes. Dans ce cas, au moment où l'objet `mac` est créé, `mac.id` est 5. -

Selon l'application, il peut être important ou non que le compteur ait été incrémenté ces fois supplémentaires. Si vous vous souciez de la valeur exacte de ce compteur, une solution possible consiste à utiliser plutôt le constructeur suivant :

+Selon l'application, il peut être important ou non que le compteur ait été incrémenté ces fois supplémentaires. Si vous vous souciez de la valeur exacte de ce compteur, une solution possible consiste à utiliser plutôt le constructeur suivant : -
function Employee(name, dept) {
+```js
+function Employee(name, dept) {
   this.name = name || '';
   this.dept = dept || 'general';
   // Ceci est une écriture raccourcie de l'opérateur if
@@ -635,24 +722,27 @@ let mac = new Engineer('Mac Fly');
this.id = idCounter++; } } - +``` -

Lorsque vous créez une instance de Employee pour l'utiliser comme prototype, vous ne fournissez pas d'arguments au constructeur. En utilisant cette définition du constructeur, lorsque vous ne fournissez pas d'arguments, le constructeur n'attribue pas de valeur à l'id et ne met pas à jour le compteur. Par conséquent, pour qu'un Employee obtienne un id, vous devez spécifier un nom pour l'employé. Dans cet exemple, mac.id serait 1.

+Lorsque vous créez une instance de `Employee` pour l'utiliser comme prototype, vous ne fournissez pas d'arguments au constructeur. En utilisant cette définition du constructeur, lorsque vous ne fournissez pas d'arguments, le constructeur n'attribue pas de valeur à l'id et ne met pas à jour le compteur. Par conséquent, pour qu'un `Employee` obtienne un id, vous devez spécifier un nom pour l'employé. Dans cet exemple, `mac.id` serait 1. -

Vous pouvez également créer une copie de l'objet prototype de l'employé pour l'affecter à WorkerBee :

+Vous pouvez également créer une copie de l'objet prototype de l'employé pour l'affecter à WorkerBee : -
WorkerBee.prototype = Object.create(Employee.prototype);
-// au lieu de WorkerBee.prototype = new Employee
+```js +WorkerBee.prototype = Object.create(Employee.prototype); +// au lieu de WorkerBee.prototype = new Employee +``` -

Pas d'héritage multiple

+### Pas d'héritage multiple -

Certains langages orientés objets permettent l'héritage multiple. C'est-à-dire qu'un objet peut hériter des propriétés et des valeurs d'objets parents non apparentés. JavaScript ne prend pas en charge l'héritage multiple.

+Certains langages orientés objets permettent l'héritage multiple. C'est-à-dire qu'un objet peut hériter des propriétés et des valeurs d'objets parents non apparentés. JavaScript ne prend pas en charge l'héritage multiple. -

L'héritage des valeurs des propriétés se produit au moment de l'exécution, lorsque JavaScript recherche une valeur dans la chaîne de prototypes d'un objet. Comme un objet n'a qu'un seul prototype associé, JavaScript ne peut pas hériter dynamiquement de plus d'une chaîne de prototypes.

+L'héritage des valeurs des propriétés se produit au moment de l'exécution, lorsque JavaScript recherche une valeur dans la chaîne de prototypes d'un objet. Comme un objet n'a qu'un seul prototype associé, JavaScript ne peut pas hériter dynamiquement de plus d'une chaîne de prototypes. -

En JavaScript, vous pouvez faire en sorte qu'une fonction de construction appelle plusieurs autres fonctions de construction en son sein. Cela donne l'illusion d'un héritage multiple. Par exemple, considérez les déclarations suivantes :

+En JavaScript, vous pouvez faire en sorte qu'une fonction de construction appelle plusieurs autres fonctions de construction en son sein. Cela donne l'illusion d'un héritage multiple. Par exemple, considérez les déclarations suivantes : -
function Hobbyist(hobby) {
+```js
+function Hobbyist(hobby) {
   this.hobby = hobby || 'plongée';
 }
 
@@ -666,20 +756,24 @@ function Engineer(name, projs, mach, hobby) {
 Engineer.prototype = new WorkerBee;
 
 let dennis = new Engineer('Dennis Ah', ['collaborateur'], 'hugo');
-
+``` -

Supposons en outre que la définition de WorkerBee soit celle utilisée précédemment dans ce chapitre. Dans ce cas, l'objet dennis possède ces propriétés :

+Supposons en outre que la définition de `WorkerBee` soit celle utilisée précédemment dans ce chapitre. Dans ce cas, l'objet `dennis` possède ces propriétés : -
dennis.name == 'Dennis Ah';
+```js
+dennis.name == 'Dennis Ah';
 dennis.dept == 'ingénierie';
 dennis.projects == ['collaborateur'];
 dennis.machine == 'hugo';
-dennis.hobby == 'plongée';
+dennis.hobby == 'plongée'; +``` -

Donc dennis obtient bien la propriété hobby du constructeur Hobbyist. Cependant, supposons que vous ajoutez ensuite une propriété au prototype du constructeur Hobbyist :

+Donc `dennis` obtient bien la propriété `hobby` du constructeur `Hobbyist`. Cependant, supposons que vous ajoutez ensuite une propriété au prototype du constructeur `Hobbyist` : -
Hobbyist.prototype.equipment = ['masque', 'palmes', 'régulateur', 'bcd'];
+```js +Hobbyist.prototype.equipment = ['masque', 'palmes', 'régulateur', 'bcd']; +``` -

L'objet dennis n'héritera pas de cette nouvelle propriété.

+L'objet `dennis` n'héritera pas de cette nouvelle propriété. -
{{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Using_promises")}}
+{{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Using_promises")}} diff --git a/files/fr/web/javascript/guide/expressions_and_operators/index.md b/files/fr/web/javascript/guide/expressions_and_operators/index.md index d9837ef8e4..531199cc8a 100644 --- a/files/fr/web/javascript/guide/expressions_and_operators/index.md +++ b/files/fr/web/javascript/guide/expressions_and_operators/index.md @@ -10,135 +10,71 @@ tags: translation_of: Web/JavaScript/Guide/Expressions_and_Operators original_slug: Web/JavaScript/Guide/Expressions_et_Opérateurs --- -

{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Fonctions", "Web/JavaScript/Guide/Nombres_et_dates")}}

+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Fonctions", "Web/JavaScript/Guide/Nombres_et_dates")}} -

Ce chapitre décrit les expressions et les opérateurs en JavaScript, il inclut des notions sur les opérateurs d'affectation, de comparaison, les opérateurs arithmétiques, binaires, logiques, ceux qui s'appliquent sur les chaînes de caractères ainsi que les opérateurs spéciaux.

+Ce chapitre décrit les expressions et les opérateurs en JavaScript, il inclut des notions sur les opérateurs d'affectation, de comparaison, les opérateurs arithmétiques, binaires, logiques, ceux qui s'appliquent sur les chaînes de caractères ainsi que les opérateurs spéciaux. -

Une liste complète et détaillée des opérateurs JavaScript est disponible dans la référence JavaScript.

+Une liste complète et détaillée des opérateurs JavaScript est disponible dans [la référence JavaScript](/fr/docs/Web/JavaScript/Reference/Opérateurs). -

Opérateurs

+## Opérateurs -

JavaScript possède différents types d'opérateurs. Cette section décrit les opérateurs et certaines informations sur les priorités entre opérateurs.

+JavaScript possède différents types d'opérateurs. Cette section décrit les opérateurs et certaines informations sur les priorités entre opérateurs. - +- [Les opérateurs d'affectation](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_d'affectation) +- [Les opérateurs de comparaison](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_de_comparaison) +- [Les opérateurs arithmétiques](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_arithmétiques) +- [Les opérateurs binaires](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_binaires) +- [Les opérateurs logiques](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_logiques) +- [Les opérateurs de chaînes](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_de_chaînes_de_caractères) +- [L'opérateur (ternaire) conditionnel](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateur_conditionnel_ternaire) +- [L'opérateur virgule](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#La_virgule_comme_opérateur) +- [Les opérateurs unaires](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_unaires) +- [Les opérateurs relationnels](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs#Opérateurs_relationnels) -

JavaScript utilise des opérateurs binaires et unaires, ainsi qu'un opérateur ternaire spécial (l'opérateur conditionnel). Un opérateur binaire utilise deux opérandes, un précédant l'opérateur et un lui succédant :

+JavaScript utilise des opérateurs _binaires_ et _unaires_, ainsi qu'un opérateur ternaire spécial (l'opérateur conditionnel). Un opérateur binaire utilise deux opérandes, un précédant l'opérateur et un lui succédant : -
opérande1 opérateur opérande2
-
+ opérande1 opérateur opérande2 -

Par exemple : « 3+4 » ou « x*y ».

+Par exemple : « `3+4` » ou « `x*y` ». -

Un opérateur unaire ne nécessite qu'un opérande, avant ou après l'opérateur :

+Un opérateur unaire ne nécessite qu'un opérande, avant ou après l'opérateur : -
opérateur opérande
+ opérateur opérande -

ou

+ou -
opérande opérateur
+ opérande opérateur -

Comme « x++ » ou « ++x ».

+Comme « `x++` » ou « `++x` ». -

Opérateurs d'affectation

+### Opérateurs d'affectation -

Un opérateur d'affectation assigne une valeur à son opérande gauche, valeur basée sur celle de l'opérande droit. L'opérateur d'affectation simple est le signe égal (=), il assigne la valeur de l'opérande droit à l'opérande gauche. Autrement dit, avec « x = y » on affecte la valeur y à x.

+Un [opérateur d'affectation](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation) assigne une valeur à son opérande gauche, valeur basée sur celle de l'opérande droit. L'opérateur d'affectation simple est le signe égal (=), il assigne la valeur de l'opérande droit à l'opérande gauche. Autrement dit, avec « x = y » on affecte la valeur y à x. -

D'autres opérateurs d'affectation sont des raccourcis correspondant à certaines opérations composées, ils sont énumérés dans le tableau qui suit :

+D'autres opérateurs d'affectation sont des raccourcis correspondant à certaines opérations composées, ils sont énumérés dans le tableau qui suit : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Opérateurs d'affectation
NomOpérateur composéSignification
Affectationx = yx = y
Affectation après additionx += yx = x + y
Affectation après soustractionx -= yx = x - y
Affectation après multiplicationx *= yx = x * y
Affectation après divisionx /= yx = x / y
Affectation du restex %= yx = x % y
Affectation après exponentiation{{experimental_inline}}x **=yx = x ** y
Affectation après décalage à gauchex <<= yx = x << y
Affectation après décalage à droitex >>= yx = x >> y
Affectation après décalage à droite non signéx >>>= yx = x >>> y
Affectation après ET binairex &= yx = x & y
Affectation après OU exclusif binairex ^= yx = x ^ y
Affectation après OU binairex |= yx = x | y
+| Nom | Opérateur composé | Signification | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------- | +| [Affectation](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_d_affectation#Affectation) | `x = y` | `x = y` | +| [Affectation après addition](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_d_affectation#Affectation_apr%C3%A8s_addition) | `x += y` | `x = x + y` | +| [Affectation après soustraction](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_d_affectation#Affectation_apr%C3%A8s_soustraction) | `x -= y` | `x = x - y` | +| [Affectation après multiplication](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_d_affectation#Affectation_apr%C3%A8s_multiplication) | `x *= y` | `x = x * y` | +| [Affectation après division](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_division) | `x /= y` | `x = x / y` | +| [Affectation du reste](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_du_reste) | `x %= y` | `x = x % y` | +| [Affectation après exponentiation](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_exponentiation){{experimental_inline}} | `x **=y` | `x = x ** y` | +| [Affectation après décalage à gauche](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_décalage_à_gauche) | `x <<= y` | `x = x << y` | +| [Affectation après décalage à droite](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_décalage_à_droite) | `x >>= y` | `x = x >> y` | +| [Affectation après décalage à droite non signé](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_décalage_à_droite_non-signé) | `x >>>= y` | `x = x >>> y` | +| [Affectation après ET binaire](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_ET_binaire) | `x &= y` | `x = x & y` | +| [Affectation après OU exclusif binaire]() | `x ^= y` | `x = x ^ y` | +| [Affectation après OU binaire](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation#Affectation_après_OU_binaire) | `x \|= y` | `x = x \| y` | -

Décomposition

+#### Décomposition -

Lors d'affectations plus complexes, on peut utiliser l'affectation par décomposition. C'est une expression qui permet d'extraire des données depuis des tableaux ou des objets avec une syntaxe symétrique de littéraux de tableaux ou d'objets pour affecter des variables.

+Lors d'affectations plus complexes, on peut utiliser [l'affectation par décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Affecter_par_décomposition). C'est une expression qui permet d'extraire des données depuis des tableaux ou des objets avec une syntaxe symétrique de littéraux de tableaux ou d'objets pour affecter des variables. -
var toto = ["un", "deux", "trois"];
+```js
+var toto = ["un", "deux", "trois"];
 
 // sans décomposition
 var un = toto[0];
@@ -146,422 +82,578 @@ var deux = toto[1];
 var trois = toto[2];
 
 // avec la décomposition
-var [un, deux, trois] = toto;
+var [un, deux, trois] = toto; +``` -

Opérateurs de comparaison

+### Opérateurs de comparaison -

Un opérateur de comparaison compare ses deux opérandes et renvoie un valeur booléenne correspondant au résultat de la comparaison (vraie ou fausse). Les opérandes peuvent être des nombres, des chaînes de caractères, des booléens ou des objets. Les chaînes de caractères sont comparées selon l'ordre lexicographique usuel en utilisant les valeurs Unicode. Dans la plupart des cas, si les deux opérandes ne sont pas du même type, JavaScript tentera de les convertir vers un type approprié. Cette méthode aboutira souvent à une comparaison numérique. Les seules exceptions à cette conversion implicite sont les opérateurs === et !== , qui testent des égalités et inégalités strictes. Ces opérateurs n'effectuent pas de conversion de type. Le tableau qui suit décrit les opérateurs de comparaisons relativement à ce fragment de code :

+Un [opérateur de comparaison](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison) compare ses deux opérandes et renvoie un valeur booléenne correspondant au résultat de la comparaison (vraie ou fausse). Les opérandes peuvent être des nombres, des chaînes de caractères, des booléens ou des objets. Les chaînes de caractères sont comparées selon l'ordre lexicographique usuel en utilisant les valeurs Unicode. Dans la plupart des cas, si les deux opérandes ne sont pas du même type, JavaScript tentera de les convertir vers un type approprié. Cette méthode aboutira souvent à une comparaison numérique. Les seules exceptions à cette conversion implicite sont les opérateurs `===` et `!==` , qui testent des égalités et inégalités strictes. Ces opérateurs n'effectuent pas de conversion de type. Le tableau qui suit décrit les opérateurs de comparaisons relativement à ce fragment de code : -
var var1 = 3;
+```js
+var var1 = 3;
 var var2 = 4;
-
+``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Opérateurs de comparaison
OpérateurDescriptionExemples qui renvoient true
Égalité (==)Renvoie true si les opérandes sont égaux après conversion en valeurs de mêmes types.3 == var1 -

"3" == var1

- 3 == '3'
Inégalité (!=)Renvoie true si les opérandes sont différents.var1 != 4
- var2 != "3"
Égalité stricte (===)Renvoie true si les opérandes sont égaux et de même type. Voir {{jsxref("Object.is","Object.is()")}} et égalité de type en JavaScript.3 === var1
Inégalité stricte (!==)Renvoie true si les opérandes ne sont pas égaux ou s'ils ne sont pas de même type.var1 !== "3"
- 3 !== '3'
Supériorité stricte (>)Renvoie true si l'opérande gauche est supérieur (strictement) à l'opérande droit.var2 > var1
- "12" > 2
Supériorité ou égalité (>=)Renvoie true si l'opérande gauche est supérieur ou égal à l'opérande droit.var2 >= var1
- var1 >= 3
Infériorité stricte (<)Renvoie true si l'opérande gauche est inférieur (strictement) à l'opérande droit.var1 < var2
- "2" < "12"
Infériorité ou égalité (<=)Renvoie true si l'opérande gauche est inférieur ou égal à l'opérande droit.var1 <= var2
- var2 <= 5
+ Opérateurs de comparaison +
OpérateurDescriptionExemples qui renvoient true
+ Égalité + (==) + + Renvoie true si les opérandes sont égaux après conversion + en valeurs de mêmes types. + + 3 == var1 +

"3" == var1

+ 3 == '3' +
+ Inégalité + (!=) + Renvoie true si les opérandes sont différents. + var1 != 4
var2 != "3"
+
+ Égalité stricte (===) + + Renvoie true si les opérandes sont égaux et de même type. + Voir {{jsxref("Object.is","Object.is()")}} et + égalité de type en JavaScript. + 3 === var1
+ Inégalité stricte + (!==) + + Renvoie true si les opérandes ne sont pas égaux ou s'ils ne + sont pas de même type. + + var1 !== "3"
3 !== '3'
+
+ Supériorité stricte + (>) + + Renvoie true si l'opérande gauche est supérieur + (strictement) à l'opérande droit. + + var2 > var1
"12" > 2
+
+ Supériorité ou égalité + (>=) + + Renvoie true si l'opérande gauche est supérieur ou égal à + l'opérande droit. + + var2 >= var1
var1 >= 3
+
+ Infériorité stricte + (<) + + Renvoie true si l'opérande gauche est inférieur + (strictement) à l'opérande droit. + + var1 < var2
"2" < "12"
+
+ Infériorité ou égalité + (<=) + + Renvoie true si l'opérande gauche est inférieur ou égal à + l'opérande droit. + + var1 <= var2
var2 <= 5
+
-
-

Note : => n'est pas un opérateur. Il s'agit de la notation utilisée pour les fonctions fléchées.

-
+> **Note :** `=>` n'est pas un opérateur. Il s'agit de la notation utilisée pour [les fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es). -

Opérateurs arithmétiques

+### Opérateurs arithmétiques -

Les opérateurs arithmétiques ont pour opérandes des valeurs numériques (des littéraux ou des variables) et renvoient une valeur numérique. Les opérateurs arithmétiques standards sont l'addition (+), la soustraction (-), la multiplication (*), et la division (/). Ces opérateurs fonctionnent comme pour la plupart des langages de programmation lorsqu'ils sont utilisés avec des nombres décimaux (on notera que la division par zéro a pour résultat {{jsxref("Infinity")}}). Ainsi :

+Les [opérateurs arithmétiques](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_arithmétiques) ont pour opérandes des valeurs numériques (des littéraux ou des variables) et renvoient une valeur numérique. Les opérateurs arithmétiques standards sont l'addition (+), la soustraction (-), la multiplication (\*), et la division (/). Ces opérateurs fonctionnent comme pour la plupart des langages de programmation lorsqu'ils sont utilisés avec des nombres décimaux (on notera que la division par zéro a pour résultat {{jsxref("Infinity")}}). Ainsi : -
1 / 2; // 0.5
+```js
+1 / 2; // 0.5
 1 / 2 == 1.0 / 2.0; // true
-
+``` -

En plus des opérations arithmétiques standards (+,-,*,/), JavaScript fournit également d'autres opérateurs arithmétiques, listés dans le tableau qui suit :

+En plus des opérations arithmétiques standards (+,-,\*,/), JavaScript fournit également d'autres opérateurs arithmétiques, listés dans le tableau qui suit : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Opérateurs arithmétiques
OpérateurDescriptionExemple
Reste (%)
-  
Opérateur binaire. Renvoie le reste entier de la division entre les deux opérandes.12 % 5 renvoie 2.
Incrément (++)Opérateur unaire. Ajoute un à son opérande. S'il est utilisé en préfixe (++x), il renvoie la valeur de l'opérande après avoir ajouté un, s'il est utilisé comme opérateur de suffixe (x++), il renvoie la valeur de l'opérande avant d'ajouter un.Si x vaut 3, ++x incrémente x à 4 et renvoie 4, x++ renvoie 3 et seulement ensuite ajoute un à x.
Décrément (--)Opérateur unaire. Il soustrait un à son opérande. Il fonctionne de manière analogue à l'opérateur d'incrément.Si x vaut 3, --x décrémente x à 2 puis renvoie2, x-- renvoie 3 puis décrémente la valeur de x.
Négation unaire (-)Opérateur unaire. Renvoie la valeur opposée de l'opérande.Si x vaut 3, alors -x renvoie -3.
Plus unaire (+)Opérateur unaire. Si l'opérande n'est pas un nombre, il tente de le convertir en une valeur numérique. -

+"3" renvoie 3.

- -

+true renvoie 1.

-
Opérateur d'exponentiation (**) (puissance) {{experimental_inline}}Calcule un nombre (base) élevé à une puissance donnée (soit base^puissance) -

2 ** 3 renvoie 8

- -

10 ** -1 renvoie 0.1

-
+ Opérateurs arithmétiques +
OpérateurDescriptionExemple
+ Reste + (%)
  +
+ Opérateur binaire. Renvoie le reste entier de la division entre les deux + opérandes. + 12 % 5 renvoie 2.
+ Incrément + (++) + + Opérateur unaire. Ajoute un à son opérande. S'il est utilisé en préfixe + (++x), il renvoie la valeur de l'opérande après avoir + ajouté un, s'il est utilisé comme opérateur de suffixe + (x++), il renvoie la valeur de l'opérande avant d'ajouter + un. + + Si x vaut 3, ++x incrémente x à 4 + et renvoie 4, x++ renvoie 3 et seulement ensuite ajoute un + à x. +
+ Décrément + (--) + + Opérateur unaire. Il soustrait un à son opérande. Il fonctionne de + manière analogue à l'opérateur d'incrément. + + Si x vaut 3, --x décrémente x à 2 + puis renvoie2, x-- renvoie 3 puis décrémente la valeur de + x. +
+ Négation unaire + (-) + Opérateur unaire. Renvoie la valeur opposée de l'opérande.Si x vaut 3, alors -x renvoie -3.
+ Plus unaire (+) + + Opérateur unaire. Si l'opérande n'est pas un nombre, il tente de le + convertir en une valeur numérique. + +

+"3" renvoie 3.

+

+true renvoie 1.

+
+ Opérateur d'exponentiation + (**) (puissance) {{experimental_inline}} + + Calcule un nombre (base) élevé à une puissance donnée (soit + base^puissance) + +

2 ** 3 renvoie 8

+

10 ** -1 renvoie 0.1

+
-

Opérateurs binaires

+### Opérateurs binaires -

Les opérateurs binaires voient leurs opérandes comme des ensembles de 32 bits (des zéros et des uns), et non pas comme des nombres décimaux, octaux ou hexadécimaux. Ainsi, le nombre décimal neuf aura une représentation binaire de 1001. Les opérateurs binaires effectuent des opérations sur des représentations binaires mais renvoies des valeurs numériques JavaScript standards.

+Les [opérateurs binaires](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires) voient leurs opérandes comme des ensembles de 32 bits (des zéros et des uns), et non pas comme des nombres décimaux, octaux ou hexadécimaux. Ainsi, le nombre décimal neuf aura une représentation binaire de 1001. Les opérateurs binaires effectuent des opérations sur des représentations binaires mais renvoies des valeurs numériques JavaScript standards. -

Le tableau qui suit résume les opérateurs binaires JavaScript :

+Le tableau qui suit résume les opérateurs binaires JavaScript : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Opérateurs binaires
OpérateurUtilisationDescription
AND (ET) binairea & bRenvoie un 1 à chaque position binaire pour laquelle les bits des deux opérandes sont à 1.
OR (OU) binairea | bRenvoie un zéro à chaque position binaire pour laquelle les bits des deux opérandes sont à 0.
XOR (OU exclusif) binairea ^ bRenvoie un zéro à chaque position binaire pour laquelle les bits sont les mêmes (et un 1 pour chacun des bits qui est différent).
NOT (NON) binaire~ aInverse les bits de l'opérande.
Décalage binaire à gauchea << bDécale la représentation binaire de b bits sur la gauche et complète avec des zéros à droite.
Décalage binaire à droitea >> bDécale la représentation binaire de b bits sur la droite en ignorant les bits perdus.
Décalage binaire à droite en complétant avec des zérosa >>> bDécale la représentation binaire de b bits sur la droite en ignorant les bits perdus et ajoute des zéros sur la gauche.
+| Opérateur | Utilisation | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- | +| [AND (ET) binaire](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#&_.28ET_binaire.29) | `a & b` | Renvoie un 1 à chaque position binaire pour laquelle les bits des deux opérandes sont à 1. | +| [OR (OU) binaire](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#|_.28OU_binaire.29) | `a \| b` | Renvoie un zéro à chaque position binaire pour laquelle les bits des deux opérandes sont à 0. | +| [XOR (OU exclusif) binaire](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#.5E_.28XOR_binaire.29) | `a ^ b` | Renvoie un zéro à chaque position binaire pour laquelle les bits sont les mêmes (et un 1 pour chacun des bits qui est différent). | +| [NOT (NON) binaire](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#.7E_.28NON_binaire.29) | `~ a` | Inverse les bits de l'opérande. | +| [Décalage binaire à gauche](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#.3C.3C_.28d.C3.A9calage_.C3.A0_gauche.29) | `a << b` | Décale la représentation binaire de `b` bits sur la gauche et complète avec des zéros à droite. | +| [Décalage binaire à droite](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#.3E.3E_.28d.C3.A9calage_.C3.A0_droite_avec_propagation_du_signe.29) | `a >> b` | Décale la représentation binaire de `b` bits sur la droite en ignorant les bits perdus. | +| [Décalage binaire à droite en complétant avec des zéros](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires#.3E.3E.3E_.28d.C3.A9calage_.C3.A0_droite_avec_insertion_de_z.C3.A9ros.29) | `a >>> b` | Décale la représentation binaire de `b` bits sur la droite en ignorant les bits perdus et ajoute des zéros sur la gauche. | -

Opérateurs binaires logiques

+#### Opérateurs binaires logiques -

Les opérateurs binaires logiques fonctionnent de cette façon :

+Les opérateurs binaires logiques fonctionnent de cette façon : -
    -
  • Les opérandes sont convertis en entiers sur 32 bits et exprimés comme une série de bits (des 1 et des 0). Les nombres sur plus de 32 bits voient leurs bits supplémentaires supprimés : -
    Avant : 11100110111110100000000000000110000000000001
    -Après :             10100000000000000110000000000001
    -
  • -
  • Chaque bit du premier opérande est associé avec le bit correspondant du second opérande (le premier bit du premier opérande avec le premier bit du second opérande, le second avec le second et ainsi de suite)
  • -
  • L'opérateur est appliqué pour chaque paire de bits ainsi constituée et le résultat est reconstruit sous forme binaire.
  • -
+- Les opérandes sont convertis en entiers sur 32 bits et exprimés comme une série de bits (des 1 et des 0). Les nombres sur plus de 32 bits voient leurs bits supplémentaires supprimés : -

Le chiffre neuf est par exemple représenté comme 1001, et le nombre quinze comme 1111. Ainsi, quand les opérateurs binaires sont appliqués sur ces valeurs, on a les résultats qui suivent :

+ ```js + Avant : 11100110111110100000000000000110000000000001 + Après : 10100000000000000110000000000001 + ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Exemples utilisant les opérateurs binaires
ExpressionRésultatDescription binaire
15 & 991111 & 1001 = 1001
15 | 9151111 | 1001 = 1111
15 ^ 961111 ^ 1001 = 0110
~15-16~00000000...00001111 = 11111111...11110000
~9-10~00000000...00001001 = 11111111...11110110
+- Chaque bit du premier opérande est associé avec le bit correspondant du second opérande (le premier bit du premier opérande avec le premier bit du second opérande, le second avec le second et ainsi de suite) +- L'opérateur est appliqué pour chaque paire de bits ainsi constituée et le résultat est reconstruit sous forme binaire. -

Il faut remarquer que tous les bits sont échangés lorsque l'opérateur binaire NOT est utilisé. Il est donc utile de savoir que les valeurs dont le bit le plus fort (le plus à gauche) vaut 1 sont des nombres négatifs (représentation en complément à deux). L'évaluation de ~x aura le même résultat que l'évaluation de -x - 1.

+Le chiffre neuf est par exemple représenté comme 1001, et le nombre quinze comme 1111. Ainsi, quand les opérateurs binaires sont appliqués sur ces valeurs, on a les résultats qui suivent : -

Opérateurs binaires de décalage

+| Expression | Résultat | Description binaire | +| ---------- | -------- | ----------------------------------------------------------------- | +| `15 & 9` | `9` | `1111 & 1001 = 1001` | +| `15 \| 9` | `15` | `1111 \| 1001 = 1111` | +| `15 ^ 9` | `6` | `1111 ^ 1001 = 0110` | +| `~15` | `-16` | ` ~``00000000...`` 00001111 = ``1111``1111``...``11110000 ` | +| `~9` | `-10` | ` ~``00000000``...``0000`` 1001 = ``1111``1111``...``1111``0110 ` | -

Les opérateurs binaires de décalage utilisent deux opérandes : le premier indiquant la quantité à décaler et le second indiquant de combien de bits on décale le premier opérande. La direction du décalage est spécifiée grâce à l'opérateur.

+Il faut remarquer que tous les bits sont échangés lorsque l'opérateur binaire NOT est utilisé. Il est donc utile de savoir que les valeurs dont le bit le plus fort (le plus à gauche) vaut 1 sont des nombres négatifs (représentation en complément à deux). L'évaluation de `~x` aura le même résultat que l'évaluation de `-x - 1`. -

Les opérateurs binaires de décalage convertissent leurs opérandes en entiers sur 32 bits et renvoient un résultat dont le type est le même que l'opérande gauche.

+#### Opérateurs binaires de décalage -

Les opérateurs de décalage sont énumérés dans le tableau qui suit.

+Les opérateurs binaires de décalage utilisent deux opérandes : le premier indiquant la quantité à décaler et le second indiquant de combien de bits on décale le premier opérande. La direction du décalage est spécifiée grâce à l'opérateur. + +Les opérateurs binaires de décalage convertissent leurs opérandes en entiers sur 32 bits et renvoient un résultat dont le type est le même que l'opérande gauche. + +Les opérateurs de décalage sont énumérés dans le tableau qui suit. - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
Opérateurs binaires de décalage
OpérateurDescriptionExemple
Décalage à gauche (<<)Cet opérateur décale le premier opérande d'un nombre de bits donné sur la gauche. Les bits en trop sont ignorés et des bits à zéro sont introduits à droite.9<<2 renvoie 36, car 1001, décalé de 2 bits à gauche, devient  100100, dont la représentation en base 10 est  36.
Décalage à droite avec propagation du signe (>>)Cet opérateur décale le premier opérande d'un nombre de bits donné sur la droite. Les bits en trop sont ignorés et des bits correspondants au bit de signe sont introduits à gauche.9>>2 renvoie 2, car 1001, décalé de 2 bits à droite, devient 10 représentant 2. De même  -9>>2 renvoie -3, car le signe est préservé.
Décalage à droite avec zéros (>>>)Cet opérateur décale le premier opérande d'un nombre de bits donné sur la droite. Les bits en trop sont ignorés et des bits à 0 sont introduits à gauche.19>>>2 renvoie 4, car 10011, décalé de 2 bits, devient 100 qui représente 4. Pour les nombres positifs, cet opérateur et l'opérateur précédent renvoient les mêmes résultats.
+ Opérateurs binaires de décalage +
OpérateurDescriptionExemple
+ Décalage à gauche (<<) + + Cet opérateur décale le premier opérande d'un nombre de bits donné sur + la gauche. Les bits en trop sont ignorés et des bits à zéro sont + introduits à droite. + + 9<<2 renvoie 36, car 1001, décalé de 2 bits à + gauche, devient  100100, dont la représentation en base 10 est  36. +
+ Décalage à droite avec propagation du signe (>>) + + Cet opérateur décale le premier opérande d'un nombre de bits donné sur + la droite. Les bits en trop sont ignorés et des bits correspondants au + bit de signe sont introduits à gauche. + + 9>>2 renvoie 2, car 1001, décalé de 2 bits à droite, + devient 10 représentant 2. De même  -9>>2 renvoie -3, car + le signe est préservé. +
+ Décalage à droite avec zéros (>>>) + + Cet opérateur décale le premier opérande d'un nombre de bits donné sur + la droite. Les bits en trop sont ignorés et des bits à 0 sont introduits + à gauche. + + 19>>>2 renvoie 4, car 10011, décalé de 2 bits, devient 100 + qui représente 4. Pour les nombres positifs, cet opérateur et + l'opérateur précédent renvoient les mêmes résultats. +
-

Opérateurs logiques

+### Opérateurs logiques -

Les opérateurs logiques sont généralement utilisés avec des valeurs booléennes. Dans ce cas, il renvoient une valeur booléenne. Les opérateurs && et || renvoient en fait une valeurs d'un des opérandes et si ces opérateurs sont utilisés avec des valeurs non-booléennées, ils pourront renvoyer une valeur non-booléenne. Les opérateurs logiques sont décrits dans le tableau qui suit.

+Les [opérateurs logiques](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_logiques) sont généralement utilisés avec des valeurs booléennes. Dans ce cas, il renvoient une valeur booléenne. Les opérateurs `&&` et `||` renvoient en fait une valeurs d'un des opérandes et si ces opérateurs sont utilisés avec des valeurs non-booléennées, ils pourront renvoyer une valeur non-booléenne. Les opérateurs logiques sont décrits dans le tableau qui suit. - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
Opérateurs logiques
OpérateurUsageDescription
ET logique (&&)expr1 && expr2Renvoie expr1 s'il peut être converti à false, sinon renvoie expr2. Dans le cas où on utilise des opérandes booléens, && renvoie true si les deux opérandes valent true, false sinon.
OU logique (||)expr1 || expr2Renvoie expr1 s'il peut être converti à true, sinon renvoie expr2. Dans le cas où on utilise des opérandes booléens, || renvoie true si l'un des opérandes vaut true, si les deux valent false, il renvoie false.
NON logique (!)!exprRenvoie false si son unique opérande peut être converti en true, sinon il renvoie true.
+ Opérateurs logiques +
OpérateurUsageDescription
+ ET logique + (&&) + expr1 && expr2 + Renvoie expr1 s'il peut être converti à false, sinon + renvoie expr2. Dans le cas où on utilise des opérandes + booléens, && renvoie true si les + deux opérandes valent true, false sinon. +
+ OU logique + (||) + expr1 || expr2 + Renvoie expr1 s'il peut être converti à true, + sinon renvoie expr2. Dans le cas où on utilise des + opérandes booléens, || renvoie true si l'un + des opérandes vaut true, si les deux valent + false, il renvoie false. +
+ NON logique (!) + !expr + Renvoie false si son unique opérande peut être converti en + true, sinon il renvoie true. +
-

Les exemples d'expressions qui peuvent être converties à false sont celles qui sont évaluées à null, 0, NaN, la chaîne de caractères vide (""), ou undefined.

+Les exemples d'expressions qui peuvent être converties à `false` sont celles qui sont évaluées à `null`, 0, `NaN`, la chaîne de caractères vide (""), ou `undefined`. -

Le code qui suit montre des exemples de l'utilisation de l'opérateur logique ET (&&).

+Le code qui suit montre des exemples de l'utilisation de l'opérateur logique ET (&&). -
var a1 =   true && true;     // t && t renvoie true
-var a2 =   true && false;    // t && f renvoie false
-var a3 =  false && true;     // f && t renvoie false
-var a4 =  false && (3 == 4); // f && f renvoie false
-var a5 = "Chat" && "Chien";  // t && t renvoie Chien
-var a6 =  false && "Chat";   // f && t renvoie false
-var a7 = "Chat" && false;    // t && f renvoie false
-
+```js +var a1 = true && true; // t && t renvoie true +var a2 = true && false; // t && f renvoie false +var a3 = false && true; // f && t renvoie false +var a4 = false && (3 == 4); // f && f renvoie false +var a5 = "Chat" && "Chien"; // t && t renvoie Chien +var a6 = false && "Chat"; // f && t renvoie false +var a7 = "Chat" && false; // t && f renvoie false +``` -

Les exemples suivants montrent l'utilisation de l'opérateur logique OU (||).

+Les exemples suivants montrent l'utilisation de l'opérateur logique OU (||). -
var o1 =   true || true;     // t || t renvoie true
+```js
+var o1 =   true || true;     // t || t renvoie true
 var o2 =  false || true;     // f || t renvoie true
 var o3 =   true || false;    // t || f renvoie true
 var o4 =  false || (3 == 4); // f || f renvoie false
 var o5 = "Chat" || "Chien";  // t || t renvoie Chat
 var o6 =  false || "Chat";   // f || t renvoie Chat
 var o7 = "Chat" || false;    // t || f renvoie Chat
-
+``` -

Les exemples suivants montrent l'utilisation de l'opérateur logique NON (!).

+Les exemples suivants montrent l'utilisation de l'opérateur logique NON (!). -
var n1 = !true;   // !t renvoie false
+```js
+var n1 = !true;   // !t renvoie false
 var n2 = !false;  // !f renvoie true
 var n3 = !"Chat"; // !t renvoie false
-
+``` -

Evaluation rapide

+#### Evaluation rapide -

Les expressions logiques sont évaluées de gauche à droite. Cette évaluation utilise des tests pour savoir s'il est possible d'utiliser des « raccourcis » correspondant aux règles suivantes :

+Les expressions logiques sont évaluées de gauche à droite. Cette évaluation utilise des tests pour savoir s'il est possible d'utiliser des « raccourcis » correspondant aux règles suivantes : -
    -
  • false && n'importe quoi sera évalué à false.
  • -
  • true || n'importe quoi sera évalué à true.
  • -
+- `false` && _n'importe quoi_ sera évalué à `false`. +- `true` || _n'importe quoi_ sera évalué à `true`. -

Les règles logiques garantissent la validité de ces évaluations, il faut noter que le second opérande n'est pas du tout évalué, empêchant ainsi les effets de bords cachés, liés à cette évaluation.

+Les règles logiques garantissent la validité de ces évaluations, il faut noter que le second opérande n'est pas du tout évalué, empêchant ainsi les effets de bords cachés, liés à cette évaluation. -

Opérateurs de chaînes de caractères

+### Opérateurs de chaînes de caractères -

En plus des opérateurs de comparaisons qui peuvent être utilisés sur des chaînes de caractères, il existe l'opérateur de concaténation (+) permettant de concaténer deux chaînes de caractères. Le résultat de cette opération est la fusion des deux opérandes en une même chaîne de caractères. Ainsi :

+En plus des opérateurs de comparaisons qui peuvent être utilisés sur des chaînes de caractères, il existe l'opérateur de concaténation (+) permettant de concaténer deux chaînes de caractères. Le résultat de cette opération est la fusion des deux opérandes en une même chaîne de caractères. Ainsi : -
console.log("ma " + "chaîne"); // affichera "ma chaîne" dans la console
+```js +console.log("ma " + "chaîne"); // affichera "ma chaîne" dans la console +``` -

L'opérateur court += peut également être utilisé pour concaténer des chaînes. Par exemple :

+L'opérateur court += peut également être utilisé pour concaténer des chaînes. Par exemple : -
var maChaîne = "alpha";
+```js
+var maChaîne = "alpha";
 maChaîne += "bet"; // l'expression sera évaluée en "alphabet"
-                   // et cette valeur sera affectée à maChaîne
+ // et cette valeur sera affectée à maChaîne +``` -

Opérateur conditionnel ternaire

+### Opérateur conditionnel ternaire -

L'opérateur conditionnel est le seul opérateur JavaScript qui utilise trois opérandes. L'expression utilisant l'opérateur peut prendre une valeur parmi deux selon une condition donnée. Cet opérateur s'utilise avec la syntaxe suivante :

+L'[opérateur conditionnel](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_conditionnel) est le seul opérateur JavaScript qui utilise trois opérandes. L'expression utilisant l'opérateur peut prendre une valeur parmi deux selon une condition donnée. Cet opérateur s'utilise avec la syntaxe suivante : -
condition ? val1 : val2
-
+ condition ? val1 : val2 -

Si condition vaut true, l'opérateur vaudra val1. Sinon il vaudra val2. Il est possible d'utiliser l'opérateur conditionnel aux mêmes endroits qu'un opérateur standard.

+Si `condition` vaut `true`, l'opérateur vaudra `val1`. Sinon il vaudra `val2`. Il est possible d'utiliser l'opérateur conditionnel aux mêmes endroits qu'un opérateur standard. -

On peut par exemple avoir :

+On peut par exemple avoir : -
var statut = (âge >= 18) ? "adulte" : "mineur";
-
+```js +var statut = (âge >= 18) ? "adulte" : "mineur"; +``` -

Cette instruction assigne la valeur "adulte" à la variable status si la variable âge est supérieure ou égale à 18. Sinon, on lui affecte la valeur "mineur".

+Cette instruction assigne la valeur "adulte" à la variable `status` si la variable `âge` est supérieure ou égale à 18. Sinon, on lui affecte la valeur "mineur". -

La virgule comme opérateur

+### La virgule comme opérateur -

L'opérateur virgule (,) évalue ses deux opérandes et renvoie la valeur du second opérande. Cet opérateur est principalement utilisé dans les boucles for pour permettre à plusieurs variables d'être modifiées à chaque itération de la boucle.

+L'[opérateur virgule](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_virgule) (`,`) évalue ses deux opérandes et renvoie la valeur du second opérande. Cet opérateur est principalement utilisé dans les boucles for pour permettre à plusieurs variables d'être modifiées à chaque itération de la boucle. -

Ainsi, si on a un tableau à 2 dimensions avec 10 lignes et colonnes, on peut utiliser la virgule comme opérateur pour incrémenter deux variables à la fois. Le code qui suit imprime les valeurs contenues sur la diagonale du tableau :

+Ainsi, si on a un tableau à 2 dimensions avec 10 lignes et colonnes, on peut utiliser la virgule comme opérateur pour incrémenter deux variables à la fois. Le code qui suit imprime les valeurs contenues sur la diagonale du tableau : -
var x = [0,1,2,3,4,5,6,7,8,9]
+```js
+var x = [0,1,2,3,4,5,6,7,8,9]
 var a = [x, x, x, x, x];
 
-for (var i = 0, j = 9; i <= j; i++, j--)
+for (var i = 0, j = 9; i <= j; i++, j--)
   console.log("a[" + i + "][" + j + "]= " + a[i][j]);
-
+``` -

Opérateurs unaires

+### Opérateurs unaires -

delete

+#### `delete` -

L'opérateur delete supprime un objet, une propriété d'un objet ou un élément d'un tableau à partir de sa position dans le tableau. La syntaxe de cet opérateur est la suivante :

+L'opérateur [delete](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete) supprime un objet, une propriété d'un objet ou un élément d'un tableau à partir de sa position dans le tableau. La syntaxe de cet opérateur est la suivante : -
delete monObjet;
+```js
+delete monObjet;
 delete monObjet.propriété;
 delete monObjet[index];
 delete propriété; // uniquement valide au sein d'une instruction with
-
+``` -

où on a monObjet qui est le nom de l'objet, propriété qui est une propriété existante et index un entier indiquant la position d'un élément dans un tableau.

+où on a `monObjet` qui est le nom de l'objet, `propriété` qui est une propriété existante et `index` un entier indiquant la position d'un élément dans un tableau. -

La quatrième instruction n'est valide qu'au sein d'une instruction with et permet de supprimer une propriété d'un objet.

+La quatrième instruction n'est valide qu'au sein d'une instruction [`with`](/fr/docs/Web/JavaScript/Reference/Instructions/with) et permet de supprimer une propriété d'un objet. -

Il est possible d'utiliser l'opérateur delete pour supprimer les variables déclarées implicitement mais pas celles déclarées avec var. Si l'opérateur fonctionne correctement, il change la propriété ou l'élément vers la valeur undefined. L'opérateur delete renvoie true si l'opération de suppression est possible, false sinon.

+Il est possible d'utiliser l'opérateur `delete` pour supprimer les variables déclarées implicitement mais pas celles déclarées avec `var`. Si l'opérateur fonctionne correctement, il change la propriété ou l'élément vers la valeur `undefined`. L'opérateur `delete` renvoie `true` si l'opération de suppression est possible, `false` sinon. -
x = 42;
+```js
+x = 42;
 var y = 43;
 monobj = new Number();
 monobj.h = 4;    // création de la propriété h
@@ -570,146 +662,143 @@ delete y;        // renvoie false (suppression impossible si déclaration avec v
 delete Math.PI;  // renvoie false (suppression impossible pour les propriétés pré-définies)
 delete monobj.h; // renvoie true (suppression possible des propriétés définies par l'utilisateur)
 delete monobj;   // renvoie true (suppression possible si déclaration implicite)
-
+``` -
Suppression d'éléments d'un tableau
+##### Suppression d'éléments d'un tableau -

Lorsqu'on supprime un élément d'un tableau, la longueur du tableau n'est pas modifiée. Ainsi, si on supprime a[3], a[4] restera a[4] (même position et valeur) alors que a[3] sera undefined.

+Lorsqu'on supprime un élément d'un tableau, la longueur du tableau n'est pas modifiée. Ainsi, si on supprime `a[3]`, `a[4]` restera `a[4]` (même position et valeur) alors que `a[3]` sera `undefined`. -

Lorsque l'opérateur delete supprime un élément d'un tableau, cet élément n'appartient plus au tableau. Dans l'exemple qui suit, arbres[3] est supprimé mais il est toujours accessible et renvoie undefined.

+Lorsque l'opérateur `delete` supprime un élément d'un tableau, cet élément n'appartient plus au tableau. Dans l'exemple qui suit, `arbres[3]` est supprimé mais il est toujours accessible et renvoie `undefined`. -
var arbres = new Array("sequoia", "laurier", "cèdre", "chêne", "érable");
+```js
+var arbres = new Array("sequoia", "laurier", "cèdre", "chêne", "érable");
 delete arbres[3];
 if (3 in arbres) {
   // Ceci ne sera pas exécuté
 }
-
+``` -

Pour qu'un élément continue à exister mais qu'il vaille undefined, on utilisera le mot-clé undefined plutôt que l'opérateur delete. Dans l'exemple qui suit, arbres[3] est modifié pour valoir undefined et l'élément du tableau continue à exister :

+Pour qu'un élément continue à exister mais qu'il vaille `undefined`, on utilisera le mot-clé` undefined` plutôt que l'opérateur `delete`. Dans l'exemple qui suit, arbres`[3]` est modifié pour valoir `undefined` et l'élément du tableau continue à exister : -
var arbres = new Array("sequoia", "laurier", "cèdre", "chêne", "érable");
+```js
+var arbres = new Array("sequoia", "laurier", "cèdre", "chêne", "érable");
 arbres[3] = undefined;
 if (3 in arbres) {
   // Ceci sera exécuté
 }
-
+``` -

typeof

+#### `typeof` -

L'opérateur typeof peut être utilisé de deux façons distinctes :

+L'[opérateur `typeof`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_typeof) peut être utilisé de deux façons distinctes : -
    -
  1. -
    typeof opérande
    -
  2. -
  3. -
    typeof (opérande)
    -
    -
  4. -
+1. typeof opérande +2. typeof (opérande) -

L'opérateur typeof renvoie une chaîne de caractères indiquant le type de l'opérande (qui n'est pas évalué). opérande correspond à la chaîne de caractère, la variable, le mot-clé ou l'objet dont on souhaite renvoyer le type. L'utilisation des parenthèses est facultative.

+L'opérateur `typeof` renvoie une chaîne de caractères indiquant le type de l'opérande (qui n'est pas évalué). `opérande` correspond à la chaîne de caractère, la variable, le mot-clé ou l'objet dont on souhaite renvoyer le type. L'utilisation des parenthèses est facultative. -

Soient les définitions de variables suivantes :

+Soient les définitions de variables suivantes : -
var maFonction = new Function("5 + 2");
+```js
+var maFonction = new Function("5 + 2");
 var forme = "round";
 var taille = 1;
 var toto = ["Pomme", "Poire", "Orange"];
 var jour = new Date();
-
+``` -

L'opérateur typeof renverra les résultats suivants :

+L'opérateur `typeof` renverra les résultats suivants : -
typeof maFonction; // renvoie "function"
+```js
+typeof maFonction; // renvoie "function"
 typeof forme;      // renvoie "string"
 typeof taille;     // renvoie "number"
 typeof toto;       // renvoie "object"
 typeof jour;       // renvoie "object"
 typeof inexistant; // renvoie "undefined"
-
+``` -

En ce qui concerne les mots-clés true et null, l'opérateur typeof renvoie les résultats suivants :

+En ce qui concerne les mots-clés `true` et `null`, l'opérateur `typeof` renvoie les résultats suivants : -
typeof true; // renvoie "boolean"
+```js
+typeof true; // renvoie "boolean"
 typeof null; // renvoie "object"
-
+``` -

Pour une chaîne de caractères ou un nombre, typeof renvoie les résultats suivants :

+Pour une chaîne de caractères ou un nombre, `typeof` renvoie les résultats suivants : -
typeof 62;            // renvoie "number"
+```js
+typeof 62;            // renvoie "number"
 typeof 'Hello world'; // renvoie "string"
-
+``` -

L'opérateur typeof, lorsqu'il est utilisé avec des propriétés, renvoie le type de valeur contenue dans la propriété :

+L'opérateur `typeof`, lorsqu'il est utilisé avec des propriétés, renvoie le type de valeur contenue dans la propriété : -
typeof document.lastModified; // renvoie "string"
+```js
+typeof document.lastModified; // renvoie "string"
 typeof window.length;         // renvoie "number"
 typeof Math.LN2;              // renvoie "number"
-
+``` -

Pour les méthodes et les fonctions, l'opérateur typeof renvoie les résultats suivants :

+Pour les méthodes et les fonctions, l'opérateur `typeof` renvoie les résultats suivants : -
typeof blur;        // renvoie "function"
+```js
+typeof blur;        // renvoie "function"
 typeof eval;        // renvoie "function"
 typeof parseInt;    // renvoie "function"
 typeof shape.split; // renvoie "function"
-
+``` -

Pour les objets pré-définis, l'opérateur typeof fonctionne ainsi :

+Pour les objets pré-définis, l'opérateur `typeof` fonctionne ainsi : -
typeof Date;     // renvoie "function"
+```js
+typeof Date;     // renvoie "function"
 typeof Function; // renvoie "function"
 typeof Math;     // renvoie "object"
 typeof Option;   // renvoie "function"
 typeof String;   // renvoie "function"
-
+``` -

void

+#### `void` -

L'opérateur void peut être utilisé de deux façons :

+L'[opérateur `void`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_void) peut être utilisé de deux façons : -
    -
  1. -
    void (expression)
    -
    -
  2. -
  3. -
    void expression
    -
    -
  4. -
+1. void (expression) +2. void expression -

L'opérateur void indique qu'une expression doit être évaluée sans retourner de valeur. expression étant une expression JavaScript à évaluer. Les parenthèses sont facultatives mais les utiliser permet d'avoir une meilleur lisibilité du code.

+L'opérateur `void` indique qu'une expression doit être évaluée sans retourner de valeur. `expression` étant une expression JavaScript à évaluer. Les parenthèses sont facultatives mais les utiliser permet d'avoir une meilleur lisibilité du code. -

L'opérateur void peut être utilisé pour spécifier une expression comme un lien hypertexte, l'expression est évaluée mais n'est pas chargée à la place du document actuel.

+L'opérateur `void` peut être utilisé pour spécifier une expression comme un lien hypertexte, l'expression est évaluée mais n'est pas chargée à la place du document actuel. -

Le fragment de code  qui suit crée un lien hypertexte qui ne fait rien lorsque l'utilisateur clique dessus. Lorsqu'on clique sur le lien, void(0) est évalué à undefined, n'ayant aucun effet.

+Le fragment de code  qui suit crée un lien hypertexte qui ne fait rien lorsque l'utilisateur clique dessus. Lorsqu'on clique sur le lien, `void(0)` est évalué à `undefined`, n'ayant aucun effet. -
<A HREF="javascript:void(0)">Cliquer ici pour ne rien faire</A>
-
+```html +Cliquer ici pour ne rien faire +``` -

Le code suivant crée un lien hypertexte qui envoie un formulaire lorsque l'utilisateur clique dessus.

+Le code suivant crée un lien hypertexte qui envoie un formulaire lorsque l'utilisateur clique dessus. -
<A HREF="javascript:void(document.form.submit())">
-Cliquer ici pour envoyer</A>
+```html + +Cliquer ici pour envoyer +``` -

Opérateurs relationnels

+### Opérateurs relationnels -

Un opérateur relationnel compare ses opérandes et renvoie une valeur booléenne selon que le résultat de la comparaison est vrai ou faux.

+Un opérateur relationnel compare ses opérandes et renvoie une valeur booléenne selon que le résultat de la comparaison est vrai ou faux. -

in

+#### `in` -

L'opérateur in renvoie true si la propriété indiquée fait partie de l'objet donné. Cet opérateur s'utilise avec la syntaxe suivante :

+L'[opérateur `in`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_in) renvoie `true` si la propriété indiquée fait partie de l'objet donné. Cet opérateur s'utilise avec la syntaxe suivante : -
nomOuNumeroPropriete in monObjet
-
+ nomOuNumeroPropriete in monObjet -

avec nomOuNumeroPropriete qui est une chaîne de caractères, une expression numérique ou un symbole correspondant au nom d'une propriété ou un indice de tableau, monObjet est le nom d'un objet.

+avec `nomOuNumeroPropriete` qui est une chaîne de caractères, une expression numérique ou un symbole correspondant au nom d'une propriété ou un indice de tableau, `monObjet` est le nom d'un objet. -

Les exemples qui suivent utilisent cet opérateur in.

+Les exemples qui suivent utilisent cet opérateur `in`. -
// Tableaux
+```js
+// Tableaux
 var arbres = new Array("sequoia", "laurier", "cèdre", "chêne", "érable");
 0 in arbres;         // renvoie true
 3 in arbres;         // renvoie true
@@ -727,161 +816,105 @@ var myString = new String("coral");
 var maVoiture = {fabricant: "Honda", modèle: "Accord", year: 1998};
 "fabricant" in maVoiture; // renvoie true
 "modèle" in maVoiture;    // renvoie true
-
+``` -

instanceof

+#### `instanceof` -

L'opérateur instanceof renvoie true si l'objet donné est du type spécifié. Cet opérateur s'utilise avec la syntaxe suivante :

+L'[opérateur instanceof](/fr/docs/Web/JavaScript/Reference/Opérateurs/instanceof) renvoie `true` si l'objet donné est du type spécifié. Cet opérateur s'utilise avec la syntaxe suivante : -
nomObjet instanceof typeObjet
-
+ nomObjet instanceof typeObjet -

avec nomObjet qui est le nom de l'objet dont on souhaite comparer le type à typeObjet, typeObjet étant un type d'objet tel que {{jsxref("Date")}} ou {{jsxref("Array")}}.

+avec `nomObjet` qui est le nom de l'objet dont on souhaite comparer le type à `typeObjet`, `typeObjet` étant un type d'objet tel que {{jsxref("Date")}} ou {{jsxref("Array")}}. -

instanceof peut être utilisé pour confirmer le type d'un objet pendant l'exécution. Ainsi, on peut gérer les exceptions en prévoyant différents cas pour différents types d'exception éventuellement levées.

+`instanceof` peut être utilisé pour confirmer le type d'un objet pendant l'exécution. Ainsi, on peut gérer les exceptions en prévoyant différents cas pour différents types d'exception éventuellement levées. -

Dans l'exemple qui suit, le code utilise l'opérateur instanceof afin de déterminer si jour est un objet Date. C'est le cas, les instructions contenues dans le bloc après l'instruction if sont donc exécutées.

+Dans l'exemple qui suit, le code utilise l'opérateur `instanceof` afin de déterminer si `jour` est un objet `Date`. C'est le cas, les instructions contenues dans le bloc après l'instruction `if` sont donc exécutées. -
var jour = new Date(2007, 01, 22);
+```js
+var jour = new Date(2007, 01, 22);
 if (jour instanceof Date) {
   // instructions à exécuter
 }
-
+``` -

Précédence des opérateurs

+### Précédence des opérateurs -

La précédence des opérateurs indique l'ordre dans lequel ils sont appliqués lors de l'évaluation d'une expression. L'utilisation de parenthèses permet de surcharger la relation de précédence.

+La _précédence_ des opérateurs indique l'ordre dans lequel ils sont appliqués lors de l'évaluation d'une expression. L'utilisation de parenthèses permet de surcharger la relation de précédence. -

Le tableau qui suit décrit les précédences des opérateurs, dans l'ordre décroissant.

+Le tableau qui suit décrit les précédences des opérateurs, dans l'ordre décroissant. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Précédence des opérateurs
Type d'opérateurOpérateurs individuels
membre. []
appel/création d'instance() new
négation/incrémentation! ~ - + ++ -- typeof void delete
multiplication/division* / %
addition/soustraction+ -
décalage binaire<< >> >>>
relationnel< <= > >= in instanceof
égalité== != === !==
ET binaire&
OU exclusif binaire^
OU binaire|
ET logique&&
OU logique||
conditionnel?:
assignation= += -= *= /= %= <<= >>= >>>= &= ^= |=
virgule,
+| Type d'opérateur | Opérateurs individuels | +| ------------------------- | ----------------------------------------- | +| membre | `. []` | +| appel/création d'instance | `() new` | +| négation/incrémentation | `! ~ - + ++ -- typeof void delete` | +| multiplication/division | `* / %` | +| addition/soustraction | `+ -` | +| décalage binaire | `<< >> >>>` | +| relationnel | `< <= > >= in instanceof` | +| égalité | `== != === !==` | +| ET binaire | `&` | +| OU exclusif binaire | `^` | +| OU binaire | `\|` | +| ET logique | `&&` | +| OU logique | `\|\|` | +| conditionnel | `?:` | +| assignation | `= += -= *= /= %= <<= >>= >>>= &= ^= \|=` | +| virgule | `,` | -

Une version plus détaillée de cette table peut être trouvée dans la référence JavaScript.

+Une version plus détaillée de cette table peut être trouvée dans la [référence JavaScript](/fr/docs/Web/JavaScript/Reference/Opérateurs/Précédence_des_opérateurs#Table). -

Expressions

+## Expressions -

Un expression correspond à une unité de code valide qui est résolue en une valeur.

+Un expression correspond à une unité de code valide qui est résolue en une valeur. -

D'un point de vue syntaxique, toute expression valide se résout en une valeur. D'un point de vue conceptuel cependant, il y a deux types d'expressions : celles avec des effets de bord (qui, par exemple, affectent une valeur à une variable) et celles qui, d'une certaine façon, sont évaluées et sont résolues en une valeur.

+D'un point de vue syntaxique, toute expression valide se résout en une valeur. D'un point de vue conceptuel cependant, il y a deux types d'expressions : celles avec des effets de bord (qui, par exemple, affectent une valeur à une variable) et celles qui, d'une certaine façon, sont évaluées et sont résolues en une valeur. -

L'expression x = 7 affecte une valeur (premier type). Dans celle-ci, on utilise l'opérateur = pour affecter la valeur 7 à la variable x. L'expression elle-même est évaluée à 7.

+L'expression `x = 7` affecte une valeur (premier type). Dans celle-ci, on utilise l'opérateur `=` pour affecter la valeur 7 à la variable `x`. L'expression elle-même est évaluée à 7. -

Le code 3 + 4 correspond au second type d'expression. On utilise ici l'opérateur + pour ajouter trois à quatre sans affecter le résultat (7) à une variable.

+Le code `3 + 4` correspond au second type d'expression. On utilise ici l'opérateur `+` pour ajouter trois à quatre sans affecter le résultat (7) à une variable. -

Les expressions JavaScript peuvent être rangées selon différentes catégories :

+Les expressions JavaScript peuvent être rangées selon différentes catégories : -
    -
  • Arithmétiques : l'expression est évaluée en un nombre (par exemple 3.14159)
  • -
  • Textuelles : l'expression est évaluée en une chaîne de caractères
  • -
  • Logiques : l'expression est évaluée en true ou false
  • -
  • Primaires : Les mots-clés basiques et les expressions générales en JavaScript
  • -
  • Expressions vers la gauche : Les valeurs à gauche sont la cible d'une affectation
  • -
+- Arithmétiques : l'expression est évaluée en un nombre (par exemple 3.14159) +- Textuelles : l'expression est évaluée en une chaîne de caractères +- Logiques : l'expression est évaluée en `true` ou `false` +- Primaires : Les mots-clés basiques et les expressions générales en JavaScript +- Expressions vers la gauche : Les valeurs à gauche sont la cible d'une affectation -

Expressions primaires

+### Expressions primaires -

Ces expressions correspondent aux mots-clés et aux expressions générales en JavaScript.

+Ces expressions correspondent aux mots-clés et aux expressions générales en JavaScript. -

this

+#### `this` -

Le mot-clé this permet de faire référence à l'objet courant. En général, on l'utilise au sein d'une méthode pour faire référence à l'objet qui a utilisé la méthode. Il s'utilise de cette façon :

+Le [mot-clé `this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this) permet de faire référence à l'objet courant. En général, on l'utilise au sein d'une méthode pour faire référence à l'objet qui a utilisé la méthode. Il s'utilise de cette façon : -
this["nomPropriété"]
-this.nomPropriété
+ this["nomPropriété"] + this.nomPropriété -

Soit une fonction qui valide un objet si sa propriété value est comprise entre deux valeurs :

+Soit une fonction qui valide un objet si sa propriété `value` est comprise entre deux valeurs : -
function valide(obj, valMin, valMax){
-  if ((obj.value < valMin) || (obj.value > valMax))
+```js
+function valide(obj, valMin, valMax){
+  if ((obj.value < valMin) || (obj.value > valMax))
     console.log("Valeur incorrecte !");
 }
-
+``` -

Il est possible d'appeler valide pour chaque gestionnaire d'événement onChange des éléments du formulaire, et d'utiliser le mot-clé this pour passer l'élément même en argument :

+Il est possible d'appeler `valide` pour chaque gestionnaire d'événement `onChange` des éléments du formulaire, et d'utiliser le mot-clé `this` pour passer l'élément même en argument : -
<p>Entrez un nombre entre 18 et 99 :</p>
-<input type="text" nom="age" size=3 onChange="valide(this, 18, 99);">
-
+```html +

Entrez un nombre entre 18 et 99 :

+ +``` -

Opérateur de groupement

+#### Opérateur de groupement -

L'opérateur de groupement ( ) permet de contrôler la précédence de l'évaluation dans les expressions. On peut ainsi forcer l'évaluation d'une addition avant l'évaluation d'une multiplication ou d'une division.

+L'opérateur de groupement `( )` permet de contrôler la précédence de l'évaluation dans les expressions. On peut ainsi forcer l'évaluation d'une addition avant l'évaluation d'une multiplication ou d'une division. -
var a = 1;
+```js
+var a = 1;
 var b = 2;
 var c = 3;
 
@@ -896,40 +929,44 @@ a + (b * c); // 7
 
 // ce qui équivaut à :
 a * c + b * c; // 9
-
+``` -

Expressions vers la gauche

+### Expressions vers la gauche -

Les valeurs à gauches de ces expressions sont la cible d'une affectation.

+Les valeurs à gauches de ces expressions sont la cible d'une affectation. -

new

+#### `new` -

L'opérateur new permet de créer une instance d'un objet défini par l'utilisateur ou d'un objet dont le type est un des types d'objets natifs. Cet opérateur utilise la syntaxe suivante :

+L'[opérateur `new`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_new) permet de créer une instance d'un objet défini par l'utilisateur ou d'un objet dont le type est un des types d'objets natifs. Cet opérateur utilise la syntaxe suivante : -
var nomObjet = new typeObjet([param1, param2, ..., paramN]);
-
+```js +var nomObjet = new typeObjet([param1, param2, ..., paramN]); +``` -

super

+#### super -

Le mot-clé super est utilisé afin d'appeler des fonctions disponibles sur un objet parent. Il peut notamment être utilisé avec les classes pour appeler le constructeur parent.

+Le [mot-clé `super`](/fr/docs/Web/JavaScript/Reference/Opérateurs/super) est utilisé afin d'appeler des fonctions disponibles sur un objet parent. Il peut notamment être utilisé avec les [classes](/fr/docs/Web/JavaScript/Reference/Classes) pour appeler le constructeur parent. -
super([arguments]); // invoque le constructeur parent
-super.functionParent([arguments]);
-
+ super([arguments]); // invoque le constructeur parent + super.functionParent([arguments]); -

Opérateur de décomposition

+#### Opérateur de décomposition -

L'opérateur de décomposition permet de développer une expression là où plusieurs argument (pour les appels de fonction) ou plusieurs éléments (pour les littéraux de tableaux) sont attendus.

+L'[opérateur de décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateur_de_décomposition) permet de développer une expression là où plusieurs argument (pour les appels de fonction) ou plusieurs éléments (pour les littéraux de tableaux) sont attendus. -

Par exemple, si on a tableau et qu'on souhaite créer un nouveau tableau qui contient l'ancien, on peut soit utiliser une combinaison des méthodes push, splice, concat, soit utiliser la syntaxe de décomposition qui s'avère plus concise :

+Par exemple, si on a tableau et qu'on souhaite créer un nouveau tableau qui contient l'ancien, on peut soit utiliser une combinaison des méthodes `push`, `splice`, `concat`, soit utiliser la syntaxe de décomposition qui s'avère plus concise : -
var parts = ['shoulders', 'knees'];
-var lyrics = ['head', ...parts, 'and', 'toes'];
+```js +var parts = ['shoulders', 'knees']; +var lyrics = ['head', ...parts, 'and', 'toes']; +``` -

L'opérateur de décomposition fonctionne de façon semblable avec les appels de fonction :

+L'opérateur de décomposition fonctionne de façon semblable avec les appels de fonction : -
function f(x, y, z) { }
+```js
+function f(x, y, z) { }
 var args = [0, 1, 2];
-f(...args);
+f(...args); +``` -

{{PreviousNext("Web/JavaScript/Guide/Fonctions", "Web/JavaScript/Guide/Nombres_et_dates")}}

+{{PreviousNext("Web/JavaScript/Guide/Fonctions", "Web/JavaScript/Guide/Nombres_et_dates")}} diff --git a/files/fr/web/javascript/guide/functions/index.md b/files/fr/web/javascript/guide/functions/index.md index 972c9f6286..3c909fba2c 100644 --- a/files/fr/web/javascript/guide/functions/index.md +++ b/files/fr/web/javascript/guide/functions/index.md @@ -9,41 +9,42 @@ tags: translation_of: Web/JavaScript/Guide/Functions original_slug: Web/JavaScript/Guide/Fonctions --- -

{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Boucles_et_it%C3%A9ration", "Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs")}}

+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Boucles_et_it%C3%A9ration", "Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs")}} -

Les fonctions font partie des briques fondamentales de JavaScript. Une fonction est une procédure JavaScript, un ensemble d'instructions effectuant une tâche ou calculant une valeur. Afin d'utiliser une fonction, il est nécessaire de l'avoir auparavant définie au sein de la portée dans laquelle on souhaite l'appeler.

+Les fonctions font partie des briques fondamentales de JavaScript. Une fonction est une procédure JavaScript, un ensemble d'instructions effectuant une tâche ou calculant une valeur. Afin d'utiliser une fonction, il est nécessaire de l'avoir auparavant définie au sein de la portée dans laquelle on souhaite l'appeler. -

On pourra également lire le chapitre de la référence JavaScript sur les fonctions pour étudier plus en détails ce concept

+On pourra également lire [le chapitre de la référence JavaScript sur les fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) pour étudier plus en détails ce concept -

Définir des fonctions

+## Définir des fonctions -

Les déclarations de fonctions

+### Les déclarations de fonctions -

Une définition de fonction (aussi appelée déclaration de fonction ou instruction de fonction) est construite avec le mot-clé function, suivi par :

+Une **définition de fonction** (aussi appelée **déclaration de fonction** ou **instruction de fonction**) est construite avec le mot-clé [`function`](/fr/docs/Web/JavaScript/Reference/Instructions/function), suivi par : -
    -
  • Le nom de la fonction.
  • -
  • Une liste d'arguments à passer à la fonction, entre parenthèses et séparés par des virgules.
  • -
  • Les instructions JavaScript définissant la fonction, entre accolades, { }.
  • -
+- Le nom de la fonction. +- Une liste d'arguments à passer à la fonction, entre parenthèses et séparés par des virgules. +- Les instructions JavaScript définissant la fonction, entre accolades, `{ }`. -

Le code suivant, par exemple, définit une fonction intitulée carré :

+Le code suivant, par exemple, définit une fonction intitulée `carré` : -
function carré(nombre) {
+```js
+function carré(nombre) {
   return nombre * nombre;
 }
-
+``` -

La fonction carré prend un seul argument, appelé nombre. La fonction est composée d'une seule instruction qui renvoie l'argument de la fonction (nombre) multiplié par lui-même. L'instruction return spécifie la valeur qui est renvoyée par la fonction.

+La fonction `carré` prend un seul argument, appelé `nombre`. La fonction est composée d'une seule instruction qui renvoie l'argument de la fonction (`nombre`) multiplié par lui-même. L'instruction [`return`](/fr/docs/Web/JavaScript/Reference/Instructions/return) spécifie la valeur qui est renvoyée par la fonction. -
return nombre * nombre;
-
+```js +return nombre * nombre; +``` -

Les paramètres primitifs (comme les nombres) sont passés à la fonction par valeur. La valeur est passée à la fonction mais si cette dernière change la valeur du paramètre, cela n'aura pas d'impact au niveau global ou au niveau de ce qui a appelé la fonction.

+Les paramètres primitifs (comme les nombres) sont passés à la fonction **par valeur**. La valeur est passée à la fonction mais si cette dernière change la valeur du paramètre, cela n'aura pas d'impact au niveau global ou au niveau de ce qui a appelé la fonction. -

Si l'argument passé à la fonction est un objet (une valeur non-primitive, comme un objet {{jsxref("Array")}} ou un objet défini par l'utilisateur), et que la fonction change les propriétés de cet objet, ces changements seront visibles en dehors de la fonction. Par exemple :

+Si l'argument passé à la fonction est un objet (une valeur non-primitive, comme un objet {{jsxref("Array")}} ou un objet défini par l'utilisateur), et que la fonction change les propriétés de cet objet, ces changements seront visibles en dehors de la fonction. Par exemple : -
function maFonction(monObjet) {
+```js
+function maFonction(monObjet) {
   monObjet.fabricant = "Toyota";
 }
 
@@ -55,13 +56,12 @@ x = mavoiture.fabricant;     // x aura la valeur "Honda"
 maFonction(mavoiture);
 y = mavoiture.fabricant; // y aura la valeur "Toyota"
                          // (la propriété fabricant a été modifiée par la fonction)
-
+``` -
-

Note : Affecter un nouvel objet au paramètre n'aura pas d'effet en dehors de la fonction car cela revient à changer la valeur du paramètre plutôt que la valeur d'une des propriétés de l'objet. Par exemple :

-
+> **Note :** Affecter un nouvel objet au paramètre n'aura **pas** d'effet en dehors de la fonction car cela revient à changer la valeur du paramètre plutôt que la valeur d'une des propriétés de l'objet. Par exemple : -
function maFonction(monObjet) {
+```js
+function maFonction(monObjet) {
   monObjet = {fabricant: "Ford", modèle: "Focus", année: 2006};
 }
 
@@ -72,78 +72,86 @@ x = mavoiture.fabricant;     // x reçoit la valeur "Honda"
 
 maFonction(mavoiture);
 y = mavoiture.fabricant;     // y reçoit la valeur "Honda"
-
+``` -

Dans le premier exemple, l'objet mavoiture était passé à la fonction maFonction qui le modifiait. Dans le second exemple, la fonction n'a pas modifié l'objet qui avait été passé en argument, elle a créé une nouvelle variable locale, possédant le même nom que l'objet global passé en argument : il n'y a donc pas de modifications sur cet objet global.

+Dans le premier exemple, l'objet `mavoiture `était passé à la fonction `maFonction` qui le modifiait. Dans le second exemple, la fonction n'a pas modifié l'objet qui avait été passé en argument, elle a créé une nouvelle variable locale, possédant le même nom que l'objet global passé en argument : il n'y a donc pas de modifications sur cet objet global. -

Les expressions de fonction

+### Les expressions de fonction -

Syntaxiquement, la déclaration de fonction utilisée ci-dessus est une instruction. On peut également créer une fonction grâce à une expression de fonction. De telles fonctions peuvent être anonymes (ne pas avoir de nom correspondant). La fonction carré aurait pu être définie de la façon suivante :

+Syntaxiquement, la déclaration de fonction utilisée ci-dessus est une instruction. On peut également créer une fonction grâce à une **[expression de fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_function)**. De telles fonctions peuvent être **anonymes** (ne pas avoir de nom correspondant). La fonction `carré `aurait pu être définie de la façon suivante : -
var carré = function (nombre) { return nombre * nombre };
-var x = carré(4); //x reçoit la valeur 16
+```js +var carré = function (nombre) { return nombre * nombre }; +var x = carré(4); //x reçoit la valeur 16 +``` -

Cependant, un nom peut être utilisé dans une expression de fonction, ce afin de l'utiliser dans la fonction (récursivité) ou afin de l'identifier dans les appels tracés par un éventuel débogueur :

+Cependant, un nom peut être utilisé dans une expression de fonction, ce afin de l'utiliser dans la fonction (récursivité) ou afin de l'identifier dans les appels tracés par un éventuel débogueur : -
var factorielle = function fac(n) { return n < 2 ? 1 : n * fac(n - 1) };
+```js
+var factorielle = function fac(n) { return n < 2 ? 1 : n * fac(n - 1) };
 
 console.log(factorielle(3));
-
+``` -

Les expressions de fonction sont pratiques lorsqu'il s'agit de passer une fonction comme argument d'une autre fonction. Dans l'exemple qui suit, la fonction map est définie et appelée avec une fonction anonyme comme premier argument :

+Les expressions de fonction sont pratiques lorsqu'il s'agit de passer une fonction comme argument d'une autre fonction. Dans l'exemple qui suit, la fonction `map` est définie et appelée avec une fonction anonyme comme premier argument : -
function map(f, a) {
+```js
+function map(f, a) {
   var resultat = []; // Créer un nouveau tableau Array
   for (var i = 0; i != a.length; i++)
     resultat[i] = f(a[i]);
   return resultat;
 }
-
+``` -

Le code suivant applique la fonction cube sur chacun des éléments du tableau :

+Le code suivant applique la fonction `cube` sur chacun des éléments du tableau : -
var cube = function(x) { return x * x * x}; // Une expression de fonction
+```js
+var cube = function(x) { return x * x * x}; // Une expression de fonction
 map(cube, [0, 1, 2, 5, 10]);
-
+``` -

Le résultat de la dernière instruction est le tableau [0, 1, 8, 125, 1000].

+Le résultat de la dernière instruction est le tableau \[0, 1, 8, 125, 1000]. -

En JavaScript, une fonction peut être définie selon une condition. Le fragment de code qui suit définit une fonction seulement si num vaut 0 :

+En JavaScript, une fonction peut être définie selon une condition. Le fragment de code qui suit définit une fonction seulement si `num` vaut 0 : -
var maFonction;
+```js
+var maFonction;
 if (num === 0){
   maFonction = function(monObjet) {
     monObjet.fabricant = "Toyota"
   }
-}
+} +``` -

Une autre façon de définir des fonctions est d'utiliser le constructeur de l'objet {{jsxref("Function")}} afin de créer des fonctions à partir d'une chaîne lors de l'exécution, de la même façon que {{jsxref("Objets_globaux/eval", "eval()")}}.

+Une autre façon de définir des fonctions est d'utiliser le constructeur de l'objet {{jsxref("Function")}} afin de créer des fonctions à partir d'une chaîne lors de l'exécution, de la même façon que {{jsxref("Objets_globaux/eval", "eval()")}}. -

Une méthode est une fonction étant une propriété d'un objet. Vous trouverez plus de détails sur ces éléments dans le chapitre suivant du guide : Utiliser les objets.

+Une **méthode** est une fonction étant une propriété d'un objet. Vous trouverez plus de détails sur ces éléments dans le chapitre suivant du guide : [Utiliser les objets](/fr/docs/JavaScript/Guide/Utiliser_les_objets). -

Appeler des fonctions

+## Appeler des fonctions -

La seule définition d'une fonction ne permet pas d'exécuter la fonction. Cela permet de lui donner un nom et de définir ce qui doit être fait lorsque la fonction est appelée. Appeler la fonction permet d'effectuer les actions des instructions avec les paramètres indiqués. Par exemple, si on définit la fonction carré, on peut l'appeler de la façon suivante :

+La seule définition d'une fonction ne permet pas d'exécuter la fonction. Cela permet de lui donner un nom et de définir ce qui doit être fait lorsque la fonction est appelée. **Appeler** la fonction permet d'effectuer les actions des instructions avec les paramètres indiqués. Par exemple, si on définit la fonction `carré`, on peut l'appeler de la façon suivante : -
carré(5);
-
+```js +carré(5); +``` -

Cette instruction appellera la fonction avec un argument valant 5. La fonction exécute ses instructions et renvoie la valeur 25.

+Cette instruction appellera la fonction avec un argument valant 5. La fonction exécute ses instructions et renvoie la valeur 25. -

Les fonctions doivent appartenir à la portée dans laquelle elles sont appelées. En revanche, la déclaration d'une fonction peut être faite après l'appel :

+Les fonctions doivent appartenir à la portée dans laquelle elles sont appelées. En revanche, la déclaration d'une fonction peut être faite après l'appel : -
console.log(carré(5));
+```js
+console.log(carré(5));
 /* ... */
 function carré(n) { return n*n }
-
+``` -

La portée d'une fonction est la fonction dans laquelle elle est déclarée ou le programme entier si elle est déclarée au niveau le plus haut.

+La portée d'une fonction est la fonction dans laquelle elle est déclarée ou le programme entier si elle est déclarée au niveau le plus haut. -
-

Note : Cela ne fonctionne que si la définition de la fonction utilise la syntaxe précédente (function nomFonction(){}). Le code ci-dessous ne fonctionnera pas :

-
+> **Note :** Cela ne fonctionne que si la définition de la fonction utilise la syntaxe précédente (`function nomFonction(){}`). Le code ci-dessous ne fonctionnera pas : -
console.log(carré); // La fonction carré est remontée/hoisted mais vaut undefined
+```js example-bad
+console.log(carré); // La fonction carré est remontée/hoisted mais vaut undefined
 console.log(carré(5)); // TypeError: carré is not a function
 var carré = function (n) {
   return n * n;
@@ -157,37 +165,40 @@ console.log(carré2(5)); // TypeError: carré2 is not a function
 let carré2 = function (n) {
   return n * n;
 }
-
+``` -

Les arguments d'une fonction ne sont pas limités aux chaînes de caractères et aux nombres. Il est possible de passer des objets. La fonction show_props (définie dans le chapitre sur l'utilisation des objets) est un exemple de fonction utilisant un argument qui est un objet.

+Les arguments d'une fonction ne sont pas limités aux chaînes de caractères et aux nombres. Il est possible de passer des objets. La fonction `show_props` (définie dans le chapitre sur [l'utilisation des objets](/fr/docs/JavaScript/Guide/Utiliser_les_objets)) est un exemple de fonction utilisant un argument qui est un objet. -

Une fonction peut être récursive, c'est-à-dire qu'elle peut s'appeler elle-même. Voici la fonction qui calcule récursivement la factorielle d'un nombre :

+Une fonction peut être récursive, c'est-à-dire qu'elle peut s'appeler elle-même. Voici la fonction qui calcule récursivement la factorielle d'un nombre : -
function factorielle(n){
+```js
+function factorielle(n){
   if ((n === 0) || (n === 1))
     return 1;
   else
     return (n * factorielle(n - 1));
 }
-
+``` -

On peut ensuite calculer les factorielles des nombres 1 à 5 :

+On peut ensuite calculer les factorielles des nombres 1 à 5 : -
var a, b, c, d, e;
+```js
+var a, b, c, d, e;
 a = factorielle(1); // a reçoit la valeur 1
 b = factorielle(2); // b reçoit la valeur 2
 c = factorielle(3); // c reçoit la valeur 6
 d = factorielle(4); // d reçoit la valeur 24
 e = factorielle(5); // e reçoit la valeur 120
-
+``` -

Il existe d'autres façons d'appeler des fonctions. Il existe souvent des cas où une fonction doit être appelée dynamiquement, où le nombre d'arguments peut varier, où le contexte de l'appel d'une fonction doit être créé en fonction d'un objet déterminé lors de l'exécution. Les fonctions sont des objets, en tant que tels, elles possèdent des méthodes (voir la page sur l'objet {{jsxref("Function")}}). L'une d'entre elles, {{jsxref("Function.apply","apply()")}} peut être utilisée pour réaliser le dernier cas de figure (exécution d'une fonction avec un objet déterminé à l'exécution).

+Il existe d'autres façons d'appeler des fonctions. Il existe souvent des cas où une fonction doit être appelée dynamiquement, où le nombre d'arguments peut varier, où le contexte de l'appel d'une fonction doit être créé en fonction d'un objet déterminé lors de l'exécution. Les fonctions sont des objets, en tant que tels, elles possèdent des méthodes (voir la page sur l'objet {{jsxref("Function")}}). L'une d'entre elles, {{jsxref("Function.apply","apply()")}} peut être utilisée pour réaliser le dernier cas de figure (exécution d'une fonction avec un objet déterminé à l'exécution). -

Portée d'une fonction

+## Portée d'une fonction -

On ne peut pas accéder aux variables définies dans une fonction en dehors de cette fonction : ces variables n'existent que dans la portée de la fonction. En revanche, une fonction peut accéder aux différentes variables et fonctions qui appartiennent à la portée dans laquelle elle est définie. Une fonction définie dans une autre fonction peut également accéder à toutes les variables de la fonction « parente » et à toute autre variable accessible depuis la fonction « parente ».

+On ne peut pas accéder aux variables définies dans une fonction en dehors de cette fonction : ces variables n'existent que dans la portée de la fonction. En revanche, une fonction peut accéder aux différentes variables et fonctions qui appartiennent à la portée dans laquelle elle est définie. Une fonction définie dans une autre fonction peut également accéder à toutes les variables de la fonction « parente » et à toute autre variable accessible depuis la fonction « parente ». -
// Les variables suivantes sont globales
+```js
+// Les variables suivantes sont globales
 var num1 = 20,
     num2 = 3,
     nom = "Licorne";
@@ -212,112 +223,117 @@ function getScore () {
 }
 
 getScore(); // Renvoie "Licorne a marqué 5"
-
+``` -

Portée et pile de fonctions

+## Portée et pile de fonctions -

La récursivité

+### La récursivité -

Une fonction peut faire référence à elle-même et s'appeler elle-même. Il existe trois moyens pour qu'une fonction fasse référence à elle-même :

+Une fonction peut faire référence à elle-même et s'appeler elle-même. Il existe trois moyens pour qu'une fonction fasse référence à elle-même : -
    -
  1. Le nom de la fonction
  2. -
  3. arguments.callee
  4. -
  5. Une variable de la portée qui fait référence à la fonction
  6. -
+1. Le nom de la fonction +2. [`arguments.callee`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/callee) +3. Une variable de la portée qui fait référence à la fonction -

Par exemple, avec la définition de fonction suivante :

+Par exemple, avec la définition de fonction suivante : -
var toto = function truc() {
+```js
+var toto = function truc() {
    // les instructions de la fonction
-};
+}; +``` -

Dans le corps de la fonction, ces trois éléments seront équivalents :

+Dans le corps de la fonction, ces trois éléments seront équivalents : -
    -
  1. truc()
  2. -
  3. arguments.callee()
  4. -
  5. toto()
  6. -
+1. `truc()` +2. `arguments.callee()` +3. `toto()` -

Une fonction qui s'appelle elle-même est appelée une fonction récursive. Sous certains aspects, une récursion est semblable à une boucle : toutes les deux exécutent le même code plusieurs fois et toutes les deux requièrent une condition d'arrêt (pour éviter une boucle ou une récursion infinie). Par exemple, ce fragment de code utilisant une boucle :

+Une fonction qui s'appelle elle-même est appelée une fonction _récursive_. Sous certains aspects, une récursion est semblable à une boucle : toutes les deux exécutent le même code plusieurs fois et toutes les deux requièrent une condition d'arrêt (pour éviter une boucle ou une récursion infinie). Par exemple, ce fragment de code utilisant une boucle : -
var x = 0;
-while (x < 10) { // "x < 10" représente la condition d'arrêt
+```js
+var x = 0;
+while (x < 10) { // "x < 10" représente la condition d'arrêt
   // faire quelque chose
   x++;
-}
+} +``` -

pourra être converti en une fonction récursive de la façon suivante :

+pourra être converti en une fonction récursive de la façon suivante : -
function boucle(x) {
-  if (x >= 10) // "x >= 10" représente la condition d'arrêt (équivalent à "!(x < 10)")
+```js
+function boucle(x) {
+  if (x >= 10) // "x >= 10" représente la condition d'arrêt (équivalent à "!(x < 10)")
     return;
   // faire quelque chose
   boucle(x + 1); // l'appel récursif
 }
-boucle(0);
+boucle(0); +``` -

Malgré cela, certains algorithmes ne peuvent pas être convertis en boucles itératives. Ainsi, récupérer l'ensemble des nœuds d'un arbre (le DOM par exemple) se fait plus simplement en utilisant la récursivité :

+Malgré cela, certains algorithmes ne peuvent pas être convertis en boucles itératives. Ainsi, récupérer l'ensemble des nœuds d'un arbre (le [DOM](/fr/docs/Web/API/Référence_du_DOM_Gecko) par exemple) se fait plus simplement en utilisant la récursivité : -
function parcourirArbre(noeud) {
+```js
+function parcourirArbre(noeud) {
   if (noeud === null) //
     return;
   // faire quelque chose avec le noeud
-  for (var i = 0; i < noeud.childNodes.length; i++) {
+  for (var i = 0; i < noeud.childNodes.length; i++) {
     parcourirArbre(noeud.childNodes[i]);
   }
-}
+} +``` -

Contrairement à l'exemple précédent avec la fonction boucle, ici, chaque appel récursif entraîne lui-même plusieurs appels (et non un seul).

+Contrairement à l'exemple précédent avec la fonction `boucle`, ici, chaque appel récursif entraîne lui-même plusieurs appels (et non un seul). -

Théoriquement, il est possible de convertir tout algorithme récursif en un algorithme non récursif (avec des boucles par exemple). Généralement, la logique obtenue est plus complexe et nécessite l'utilisation d'une pile. La récursivité utilise également une pile, la pile de fonction.

+Théoriquement, il est possible de convertir tout algorithme récursif en un algorithme non récursif (avec des boucles par exemple). Généralement, la logique obtenue est plus complexe et nécessite l'utilisation d'une [pile](https://fr.wikipedia.org/wiki/Pile_%28informatique%29). La récursivité utilise également une pile, la pile de fonction. -

Ce type de « comportement » peut-être observé avec l'exemple suivant :

+Ce type de « comportement » peut-être observé avec l'exemple suivant : -
function toto(i) {
-  if (i < 0)
+```js
+function toto(i) {
+  if (i < 0)
     return;
   console.log('début : ' + i);
   toto(i - 1);
   console.log('fin : ' + i);
 }
-toto(3);
+toto(3); +``` -

qui affichera :

+qui affichera : -
début : 3
+```js
+début : 3
 début : 2
 début : 1
 début : 0
 fin : 0
 fin : 1
 fin : 2
-fin : 3
+fin : 3 +``` -

Fonctions imbriquées et fermetures

+### Fonctions imbriquées et fermetures -

Il est possible d'imbriquer une fonction dans une autre fonction. La portée de la fonction fille (celle qui est imbriquée) n'est pas contenue dans la portée de la fonction parente. En revanche, la fonction fille bénéficie bien des informations de la fonction parente grâce à sa portée. On a ce qu'on appelle une fermeture (closure en anglais). Une fermeture est une expression (généralement une fonction) qui accède à des variables libres ainsi qu'à un environnement qui lie ces variables (ce qui « ferme » l'expression).

+Il est possible d'imbriquer une fonction dans une autre fonction. La portée de la fonction fille (celle qui est imbriquée) n'est pas contenue dans la portée de la fonction parente. En revanche, la fonction fille bénéficie bien des informations de la fonction parente grâce à sa portée. On a ce qu'on appelle une fermeture (_closure_ en anglais). Une fermeture est une expression (généralement une fonction) qui accède à des variables libres ainsi qu'à un environnement qui lie ces variables (ce qui « ferme » l'expression). -

Une fonction imbriquée étant une fermeture, cela signifie qu'une fonction imbriquée peut en quelque sorte hériter des arguments et des variables de la fonction parente.

+Une fonction imbriquée étant une fermeture, cela signifie qu'une fonction imbriquée peut en quelque sorte hériter des arguments et des variables de la fonction parente. -

En résumé :

+En résumé : -
    -
  • La fonction imbriquée ne peut être utilisée qu'à partir des instructions de la fonction parente.
  • -
+- La fonction imbriquée ne peut être utilisée qu'à partir des instructions de la fonction parente. -
    -
  • La fonction imbriquée forme une fermeture : elle peut utiliser les arguments et les variables de la fonction parente. En revanche, la fonction parente ne peut pas utiliser les arguments et les variables de la fonction fille.
  • -
+ -
-

Note : Sur les fermetures, voir également l'article à ce sujet.

-
+- La fonction imbriquée forme une fermeture : elle peut utiliser les arguments et les variables de la fonction parente. En revanche, la fonction parente ne peut pas utiliser les arguments et les variables de la fonction fille. -

L'exemple qui suit illustre l'imbrication de fonctions :

+> **Note :** Sur les fermetures, voir également [l'article à ce sujet](/fr/docs/Web/JavaScript/Closures). -
function ajouteCarrés(a, b) {
+L'exemple qui suit illustre l'imbrication de fonctions :
+
+```js
+function ajouteCarrés(a, b) {
   function carré(x) {
     return x * x;
   }
@@ -325,11 +341,13 @@ fin : 3
} a = ajouteCarrés(2,3); // renvoie 13 b = ajouteCarrés(3,4); // renvoie 25 -c = ajouteCarrés(4,5); // renvoie 41 +c = ajouteCarrés(4,5); // renvoie 41 +``` -

La fonction interne étant une fermeture, on peut appeler la fonction parente afin de définir les arguments pour la fonction englobante et ceux de la fonction fille :

+La fonction interne étant une fermeture, on peut appeler la fonction parente afin de définir les arguments pour la fonction englobante et ceux de la fonction fille : -
function parente(x) {
+```js
+function parente(x) {
   function fille(y) {
     return x + y;
   }
@@ -338,21 +356,23 @@ c = ajouteCarrés(4,5); // renvoie 41
fn_fille = parente(3); // Fournit une fonction qui ajoute 3 à ce qu'on lui donnera résultat = fn_fille(5); // renvoie 8 -résultat1 = parente(3)(5); // renvoie 8 +résultat1 = parente(3)(5); // renvoie 8 +``` -

Préservation des variables

+### Préservation des variables -

Dans l'exemple précédent, x a été « préservé » lorsque la fonction fille a été renvoyée. Une fermeture conserve les arguments et les variables de chaque portée qu'elle référence. Chaque appel à la fonction parente pouvant fournir un contexte différents selon les arguments, cela entraînera la création d'une nouvelle fermeture. La mémoire associée ne pourra être libérée que lorsque la fonction fille ne sera plus accessible.

+Dans l'exemple précédent, `x` a été « préservé » lorsque la fonction `fille` a été renvoyée. Une fermeture conserve les arguments et les variables de chaque portée qu'elle référence. Chaque appel à la fonction parente pouvant fournir un contexte différents selon les arguments, cela entraînera la création d'une nouvelle fermeture. La mémoire associée ne pourra être libérée que lorsque la fonction `fille` ne sera plus accessible. -

Ce mode de fonctionnement n'est pas différent de celui des références vers les objets. Cependant, il est souvent plus compliqué à détecter car les références ne sont pas définies explicitement dans le code et car il n'est pas possible de les inspecter.

+Ce mode de fonctionnement n'est pas différent de celui des références vers les objets. Cependant, il est souvent plus compliqué à détecter car les références ne sont pas définies explicitement dans le code et car il n'est pas possible de les inspecter. -

Imbriquer plusieurs fonctions

+### Imbriquer plusieurs fonctions -

Il est possible d'imbriquer des fonctions sur plus de deux niveaux, par exemple, on peut avoir une fonction A qui contient une fonction B qui contient une fonction C. Les fonctions B et C sont des fermetures et B peut accéder à la portée de A, C peut accéder à la portée de B. Ainsi, C accède à la portée de B qui lui accède à la portée de A, C accède donc à la portée de A (transitivité). Les fermetures peuvent donc contenir plusieurs portées, c'est ce qu'on appelle le chaînage de portées.

+Il est possible d'imbriquer des fonctions sur plus de deux niveaux, par exemple, on peut avoir une fonction A qui contient une fonction B qui contient une fonction C. Les fonctions B et C sont des fermetures et B peut accéder à la portée de A, C peut accéder à la portée de B. Ainsi, C accède à la portée de B qui lui accède à la portée de A, C accède donc à la portée de A (transitivité). Les fermetures peuvent donc contenir plusieurs portées, c'est ce qu'on appelle le _chaînage_ de portées. -

Par exemple :

+Par exemple : -
function A(x) {
+```js
+function A(x) {
   function B(y) {
     function C(z) {
       console.log(x + y + z);
@@ -361,38 +381,40 @@ résultat1 = parente(3)(5); // renvoie 8
} B(2); } -A(1); // affichera 6 (1 + 2 + 3) +A(1); // affichera 6 (1 + 2 + 3) +``` -

Dans cet exemple C accède au y de B et au x de A. Ceci est rendu possible car :

+Dans cet exemple `C` accède au `y` de `B` et au `x` de `A`. Ceci est rendu possible car : -
    -
  1. B est une fermeture qui contient A, autrement dit B peut accéder aux arguments et aux variables de A.
  2. -
  3. C est une fermeture qui contient B.
  4. -
  5. La fermeture de B contient A donc la fermeture de C contient A, C peut ainsi accéder aux arguments et aux variables de B et A. On dit que C chaîne les portées de B et de A (dans cet ordre).
  6. -
+1. `B` est une fermeture qui contient `A`, autrement dit `B` peut accéder aux arguments et aux variables de `A`. +2. `C` est une fermeture qui contient `B`. +3. La fermeture de `B` contient `A` donc la fermeture de `C` contient `A`, `C` peut ainsi accéder aux arguments et aux variables de `B` _et_ `A`. On dit que `C` _chaîne_ les portées de `B` et de `A` (dans cet ordre). -

La réciproque n'est pas vraie. A ne peut pas accéder à C, car A ne peut pas accéder aux arguments ou aux variables de B, or C est une variable de B. De cette façon, C reste privée en dehors de B.

+La réciproque n'est pas vraie. `A` ne peut pas accéder à `C`, car `A` ne peut pas accéder aux arguments ou aux variables de `B`, or `C` est une variable de `B`. De cette façon, `C` reste privée en dehors de `B`. -

Conflits de nommage

+### Conflits de nommage -

Lorsque deux arguments ou variables des portées d'une fermeture ont le même nom, il y a un conflit de noms. Dans ces cas, ce sera la portée la plus imbriquée qui prendra la priorité sur le nom, la portée la plus « externe » aura la priorité la plus faible pour les noms de variables. Du point de vue de la chaîne des portées, la première portée sur la chaîne est la portée la plus imbriquée et la dernière est la portée située le plus à l'extérieur :

+Lorsque deux arguments ou variables des portées d'une fermeture ont le même nom, il y a un conflit de noms. Dans ces cas, ce sera la portée la plus imbriquée qui prendra la priorité sur le nom, la portée la plus « externe » aura la priorité la plus faible pour les noms de variables. Du point de vue de la chaîne des portées, la première portée sur la chaîne est la portée la plus imbriquée et la dernière est la portée située le plus à l'extérieur : -
function externe() {
+```js
+function externe() {
   var x = 10;
   function interne(x) {
     return x;
   }
   return interne;
 }
-résultat = externe()(20); // renvoie 20 et pas 10
+résultat = externe()(20); // renvoie 20 et pas 10 +``` -

Le conflit se produit à l'instruction return x entre le paramètre x de la fonction interne et la variable x de la fonction externe. La chaîne de portée est ici {interne, externe, objet global}. Ainsi, le paramètre x de interne a la priorité sur la variable x de la fonction externe, le résultat obtenu est donc 20 et non 10.

+Le conflit se produit à l'instruction `return x` entre le paramètre x de la fonction `interne` et la variable `x` de la fonction `externe`. La chaîne de portée est ici {`interne`, `externe`, objet global}. Ainsi, le paramètre `x` de `interne` a la priorité sur la variable `x` de la fonction `externe`, le résultat obtenu est donc 20 et non 10. -

Fermetures (closures)

+## Fermetures (_closures_) -

Les fermetures sont l'une des fonctionnalités les plus intéressantes de JavaScript. Comme on l'a vu précédemment, JavaScript permet d'imbriquer des fonctions et la fonction interne aura accès aux variables et paramètres de la fonction parente. À l'inverse, la fonction parente ne pourra pas accéder aux variables liées à la fonction interne. Cela fournit une certaine sécurité pour les variables de la fonction interne. De plus, si la fonction interne peut exister plus longtemps que la fonction parente, les variables et fonctions de la fonction parente pourront exister au travers de la fonction interne. On crée une fermeture lorsque la fonction interne est disponible en dehors de la fonction parente.

+Les fermetures sont l'une des fonctionnalités les plus intéressantes de JavaScript. Comme on l'a vu précédemment, JavaScript permet d'imbriquer des fonctions et la fonction interne aura accès aux variables et paramètres de la fonction parente. À l'inverse, la fonction parente ne pourra pas accéder aux variables liées à la fonction interne. Cela fournit une certaine sécurité pour les variables de la fonction interne. De plus, si la fonction interne peut exister plus longtemps que la fonction parente, les variables et fonctions de la fonction parente pourront exister au travers de la fonction interne. On crée une fermeture lorsque la fonction interne est disponible en dehors de la fonction parente. -
var animal = function(nom) {   // La fonction externe utilise un paramètre "nom"
+```js
+var animal = function(nom) {   // La fonction externe utilise un paramètre "nom"
   var getNom = function () {
     return nom;                // La fonction interne accède à la variable "nom" de la fonction externe
   }
@@ -401,11 +423,13 @@ résultat = externe()(20); // renvoie 20 et pas 10
monAnimal = animal("Licorne"); -monAnimal(); // Renvoie "Licorne" +monAnimal(); // Renvoie "Licorne" +``` -

Bien entendu, dans la pratique, les cas peuvent être plus complexes. On peut renvoyer un objet qui contient des méthodes manipulant les variables internes de la fonction parente.

+Bien entendu, dans la pratique, les cas peuvent être plus complexes. On peut renvoyer un objet qui contient des méthodes manipulant les variables internes de la fonction parente. -
var créerAnimal  = function (nom) {
+```js
+var créerAnimal  = function (nom) {
   var sexe;
 
   return {
@@ -422,7 +446,7 @@ monAnimal();                   // Renvoie "Licorne"
}, setSexe: function(nouveauSexe) { - if (typeof nouveauSexe == "string" && (nouveauSexe.toLowerCase() == "mâle" || nouveauSexe.toLowerCase() == "femelle")) { + if (typeof nouveauSexe == "string" && (nouveauSexe.toLowerCase() == "mâle" || nouveauSexe.toLowerCase() == "femelle")) { sexe = nouveauSexe; } } @@ -435,126 +459,141 @@ animal.getNom(); // Licorne animal.setNom("Bobby"); animal.setSexe("mâle"); animal.getSexe(); // mâle -animal.getNom(); // Bobby +animal.getNom(); // Bobby +``` -

Dans le code précédent, la variable nom est de la fonction externe est accessible depuis les fonctions internes. Il est impossible d'accéder aux variables internes en dehors des fonctions internes. Les variables internes agissent comme des coffres-forts pour les fonctions internes. Elles permettent d'avoir un accès persistent et encapsulé aux données internes. Pour les fonctions, il n'est pas nécessaire de les affecter à une variable ou même de les nommer.

+Dans le code précédent, la variable `nom` est de la fonction externe est accessible depuis les fonctions internes. Il est impossible d'accéder aux variables internes en dehors des fonctions internes. Les variables internes agissent comme des coffres-forts pour les fonctions internes. Elles permettent d'avoir un accès persistent et encapsulé aux données internes. Pour les fonctions, il n'est pas nécessaire de les affecter à une variable ou même de les nommer. -
var getCode = (function (){
-  var codeAPI = "0]Eal(eh&2";    // Un code qu'on ne souhaite pas diffuser ni modifier
+```js
+var getCode = (function (){
+  var codeAPI = "0]Eal(eh&2";    // Un code qu'on ne souhaite pas diffuser ni modifier
 
   return function () {
     return codeAPI;
   };
 })();
 
-getCode();    // Renvoie la valeur du code
+getCode(); // Renvoie la valeur du code +``` -

Il y a malgré tout quelques pièges auxquels il faut faire attention lorsqu'on utilise les fermetures. Si une fonction imbriquée définit une variable avec le même nom que le nom d'une variable de la portée externe, il n'y aura plus aucun moyen d'accéder à la variable.

+Il y a malgré tout quelques pièges auxquels il faut faire attention lorsqu'on utilise les fermetures. Si une fonction imbriquée définit une variable avec le même nom que le nom d'une variable de la portée externe, il n'y aura plus aucun moyen d'accéder à la variable. -
var créerAnimal = function(nom) {  // La fonction externe définit une variable appelée "nom"
+```js
+var créerAnimal = function(nom) {  // La fonction externe définit une variable appelée "nom"
   return {
     setNom: function(nom) {    // La fonction imbriquée définit une variable appelée "nom"
       nom = nom;               // ??? comment accéder à la variable "nom" définie par la fonction externe
     }
   }
-}
+} +``` -

L'opérateur this doit être traité avec précaution dans les fermetures. Attention, this fait référence au contexte où la fonction est appelée et non à l'endroit où il est défini.

+L`'opérateur `[`this`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this) doit être traité avec précaution dans les fermetures. Attention, `this` fait référence au contexte où la fonction est appelée et non à l'endroit où il est défini. -

Utiliser l'objet arguments

+## Utiliser l'objet `arguments` -

Les arguments d'une fonction sont maintenus dans un objet semblable à un tableau. Dans une fonction, il est possible d'utiliser les arguments passés à la fonction de la façon suivante :

+Les arguments d'une fonction sont maintenus dans un objet semblable à un tableau. Dans une fonction, il est possible d'utiliser les arguments passés à la fonction de la façon suivante : -
arguments[i]
+```js +arguments[i] +``` -

i représente l'index ordinal de l'argument (le premier argument ayant un indice à 0). On accède donc au premier argument avec arguments[0]. Le nombre total d'arguments est fourni grâce à arguments.length.

+où `i` représente l'index ordinal de l'argument (le premier argument ayant un indice à 0). On accède donc au premier argument avec `arguments[0]`. Le nombre total d'arguments est fourni grâce à `arguments.length`. -

En utilisant l'objet arguments, il est possible de recenser les arguments supplémentaires fournis à la fonction si jamais il y a plus d'arguments fournis que requis. Cet objet est souvent utile si on ne connaît pas le nombre d'arguments passés à la fonction. La propriété arguments.length permet de déterminer le nombre d'arguments réellement passés à la fonction. On peut donc ensuite accéder aux différents arguments en parcourant l'objet arguments.

+En utilisant l'objet `arguments`, il est possible de recenser les arguments supplémentaires fournis à la fonction si jamais il y a plus d'arguments fournis que requis. Cet objet est souvent utile si on ne connaît pas le nombre d'arguments passés à la fonction. La propriété `arguments.length` permet de déterminer le nombre d'arguments réellement passés à la fonction. On peut donc ensuite accéder aux différents arguments en parcourant l'objet `arguments`. -

Par exemple, on peut construire une fonction qui concatène plusieurs chaînes. Le seul argument formellement défini sera la chaîne utilisée pour concaténer les différentes chaînes. On peut définir la fonction de la façon suivante :

+Par exemple, on peut construire une fonction qui concatène plusieurs chaînes. Le seul argument formellement défini sera la chaîne utilisée pour concaténer les différentes chaînes. On peut définir la fonction de la façon suivante : -
function monConcat(séparateur) {
+```js
+function monConcat(séparateur) {
    var result = ""; // on initialise la liste
    var i;
    // on parcourt les arguments
-   for (i = 1; i < arguments.length; i++) {
+   for (i = 1; i < arguments.length; i++) {
       result += arguments[i] + séparateur;
    }
    return result;
-}
+} +``` -

On peut passer autant d'arguments que nécessaire à cette fonction. Ils seront tous concaténés dans une chaîne finale. Ainsi, on aura :

+On peut passer autant d'arguments que nécessaire à cette fonction. Ils seront tous concaténés dans une chaîne finale. Ainsi, on aura : -
// renverra "rouge, orange, bleu, "
+```js
+// renverra "rouge, orange, bleu, "
 monConcat(", ", "red", "orange", "blue");
 
 // renverra "éléphant; girafe; lion; singe; "
 monConcat("; ", "éléphant", "girafe", "lion", "singe");
 
 // renverra "sauge. basilic. origan. poivre. échalotte. "
-monConcat(". ", "sauge", "basilic", "origan", "poivre", "échalotte");
+monConcat(". ", "sauge", "basilic", "origan", "poivre", "échalotte"); +``` -
-

Note : arguments est une variable « semblable » à un tableau. Mais ce n'est pas un tableau au sens strict. En effet, il possède un index numéroté ainsi qu'une propriété length. En revanche, il ne possède pas les méthodes classiques de manipulation des tableaux (Array).

-
+> **Note :** `arguments` est une variable « semblable » à un tableau. Mais ce n'est pas un tableau au sens strict. En effet, il possède un index numéroté ainsi qu'une propriété `length`. En revanche, il ne possède pas les méthodes classiques de manipulation des tableaux (Array). -

Voir la page sur l'objet {{jsxref("Function")}} dans la référence JavaScript pour plus d'informations.

+Voir la page sur l'objet {{jsxref("Function")}} dans la référence JavaScript pour plus d'informations. -

Paramètres des fonctions

+## Paramètres des fonctions -

À partir d'ECMAScript 2015, deux sortes de paramètres sont introduites : les paramètres par défaut et les paramètres du reste.

+À partir d'ECMAScript 2015, deux sortes de paramètres sont introduites : les paramètres par défaut et les paramètres du reste. -

Les paramètres par défaut

+### Les paramètres par défaut -

En JavaScript, par défaut, les paramètres des fonctions vaudront undefined. Il peut toutefois être utile de définir une valeur par défaut différente. Les paramètres par défaut permettent de répondre à ce besoin.

+En JavaScript, par défaut, les paramètres des fonctions vaudront `undefined`. Il peut toutefois être utile de définir une valeur par défaut différente. Les paramètres par défaut permettent de répondre à ce besoin. -

Avant ECMAScript 2015, la stratégie pour manipuler des valeurs par défaut adaptées était de tester si la valeur du paramètre était indéfinie puis de lui affecter la valeur souhaitée si c'était le cas. Par exemple, dans le code qui suit, on ne fournit pas de valeur pour b dans l'appel, la valeur sera undefined lors de l'évaluation de a*b et l'appel à multiplier aurait renvoyé NaN. Pour éviter ça, la deuxième ligne définit une valeur par défaut au cas où b n'est pas renseigné :

+Avant ECMAScript 2015, la stratégie pour manipuler des valeurs par défaut adaptées était de tester si la valeur du paramètre était indéfinie puis de lui affecter la valeur souhaitée si c'était le cas. Par exemple, dans le code qui suit, on ne fournit pas de valeur pour `b` dans l'appel, la valeur sera `undefined` lors de l'évaluation de `a*b` et l'appel à `multiplier` aurait renvoyé `NaN`. Pour éviter ça, la deuxième ligne définit une valeur par défaut au cas où `b` n'est pas renseigné : -
function multiplier(a, b) {
+```js
+function multiplier(a, b) {
   b = typeof b !== 'undefined' ?  b : 1;
 
   return a*b;
 }
 
 multiplier(5); // 5
-
+``` -

Si on peut utiliser les paramètres par défaut, il n'est plus nécessaire de faire l'opération à l'intérieur du corps de la fonction, il suffit de déclarer que la valeur par défaut pour b est 1 dans la signature de la fonction :

+Si on peut utiliser les paramètres par défaut, il n'est plus nécessaire de faire l'opération à l'intérieur du corps de la fonction, il suffit de déclarer que la valeur par défaut pour `b` est 1 dans la signature de la fonction : -
function multiplier(a, b = 1) {
+```js
+function multiplier(a, b = 1) {
   return a*b;
 }
 
-multiplier(5); // 5
+multiplier(5); // 5 +``` -

Pour plus de détails, voir la page sur les paramètres par défaut dans la référence.

+Pour plus de détails, voir [la page sur les paramètres par défaut](/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments) dans la référence. -

Les paramètres du reste

+### Les paramètres du reste -

La syntaxe des paramètres du reste permet de représenter un nombre indéfini d'arguments contenus dans un tableau. Dans l'exemple suivant, on utilise les paramètres du reste pour collecter les arguments à partir du deuxième et jusqu'au dernier. Ces arguments sont multipliés par le premier. Dans cet exemple, on utilise une fonction fléchée, concept qui est présenté et illustré dans la section qui suit.

+La syntaxe des [paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste) permet de représenter un nombre indéfini d'arguments contenus dans un tableau. Dans l'exemple suivant, on utilise les paramètres du reste pour collecter les arguments à partir du deuxième et jusqu'au dernier. Ces arguments sont multipliés par le premier. Dans cet exemple, on utilise une fonction fléchée, concept qui est présenté et illustré dans la section qui suit. -
function multiplier(facteur, ...lesArgs) {
-  return lesArgs.map(x => facteur * x);
+```js
+function multiplier(facteur, ...lesArgs) {
+  return lesArgs.map(x => facteur * x);
 }
 
 var arr = multiplier(2, 1, 2, 3);
-console.log(arr); // [2, 4, 6]
+console.log(arr); // [2, 4, 6] +``` + +## Fonctions fléchées -

Fonctions fléchées

+[Une expression de fonction fléchée](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées) permet d'utiliser une syntaxe plus concise que les expressions de fonctions classiques. Une telle fonction ne possède alors pas de valeur propre pour [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this), [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments), [`super`](/fr/docs/Web/JavaScript/Reference/Opérateurs/super) ou [`new.target`](/fr/docs/Web/JavaScript/Reference/Opérateurs/new.target). Les fonctions fléchées sont nécessairement anonymes. -

Une expression de fonction fléchée permet d'utiliser une syntaxe plus concise que les expressions de fonctions classiques. Une telle fonction ne possède alors pas de valeur propre pour thisargumentssuper ou new.target. Les fonctions fléchées sont nécessairement anonymes.

+Les fonctions fléchées ont été introduites pour deux raisons principales : une syntaxe plus courte et l'absence de `this` rattaché à la fonction. Voir aussi [ce billet sur tech.mozfr.org sur les fonctions fléchées](https://tech.mozfr.org/post/2015/06/10/ES6-en-details-%3A-les-fonctions-flechees). -

Les fonctions fléchées ont été introduites pour deux raisons principales : une syntaxe plus courte et l'absence de this rattaché à la fonction. Voir aussi ce billet sur tech.mozfr.org sur les fonctions fléchées.

-

 

-

 

-

Concision de la syntaxe

-

Dans certaines constructions fonctionnelles, on peut apprécier une syntaxe courte. Par exemple, si on compare les deux dernières lignes de ce fragment de code :

+### Concision de la syntaxe -
var a = [
+Dans certaines constructions fonctionnelles, on peut apprécier une syntaxe courte. Par exemple, si on compare les deux dernières lignes de ce fragment de code :
+
+```js
+var a = [
   "Hydrogen",
   "Helium",
   "Lithium",
@@ -563,14 +602,16 @@ console.log(arr); // [2, 4, 6]
var a2 = a.map(function(s){ return s.length }); console.log(a2); // affiche [8, 6, 7, 9] -var a3 = a.map( s => s.length ); -console.log(a3); // affiche [8, 6, 7, 9] +var a3 = a.map( s => s.length ); +console.log(a3); // affiche [8, 6, 7, 9] +``` -

Pas de this distinct

+### Pas de `this` distinct -

Avant les fonctions fléchées, chaque nouvelle fonction définissait sa propre valeur this (un nouvel objet dans le cas d'un constructeur, undefined lors des appels en mode strict, l'objet courant dans le cas d'une méthode, etc.). Cela pouvait poser quelques problèmes avec un style de programmation orienté objet.

+Avant les fonctions fléchées, chaque nouvelle fonction définissait sa propre valeur [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this) (un nouvel objet dans le cas d'un constructeur, `undefined` lors des appels en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), l'objet courant dans le cas d'une méthode, etc.). Cela pouvait poser quelques problèmes avec un style de programmation orienté objet. -
function Personne() {
+```js
+function Personne() {
   // Le constructeur Personne() utilise `this` comme lui-même.
   this.âge = 0;
 
@@ -582,11 +623,13 @@ console.log(a3); // affiche [8, 6, 7, 9]
}, 1000); } -var p = new Personne(); +var p = new Personne(); +``` -

Avec ECMAScript 3/5, ce problème fut résolu avec l'affectation de la valeur de this dans une variable a variable that could be closed over.

+Avec ECMAScript 3/5, ce problème fut résolu avec l'affectation de la valeur de `this` dans une variable a variable that could be closed over. -
function Personne() {
+```js
+function Personne() {
   var self = this; // Certains utilisent `that`, d'autres `self`.
                    // On utilisera l'un des deux et on pas
                    // l'autre pour être cohérent.
@@ -597,75 +640,52 @@ var p = new Personne();
// qui est bien la valeur attendue liée à l'objet. self.âge++; }, 1000); -} +} +``` -

On aurait aussi pu créer une fonction liée afin que la « bonne » valeur de this soit passée à la fonction grandir().

+On aurait aussi pu créer une fonction liée afin que la « bonne » valeur de `this` soit passée à la fonction `grandir()`. -

Les fonctions fléchées capturent la valeur de this dans le contexte englobant et cela permet de manipuler la valeur pertinente ici :

+Les fonctions fléchées capturent la valeur de `this` dans le contexte englobant et cela permet de manipuler la valeur pertinente ici : -
function Personne(){
+```js
+function Personne(){
   this.âge = 0;
 
-  setInterval(() => {
+  setInterval(() => {
     this.âge++; // this fait référence à l'objet personne
   }, 1000);
 }
 
-var p = new Personne();
- -

Fonctions prédéfinies

- -

JavaScript possède plusieurs fonctions natives, disponibles au plus haut niveau :

- -
-
{{jsxref("Objets_globaux/eval","eval()")}}
-
-

La fonction eval() permet d'évaluer du code JavaScript contenu dans une chaîne de caractères.

-
-
{{jsxref("Objets_globaux/uneval","uneval()")}} {{non-standard_inline}}
-
-

La fonction uneval() crée une représentation sous la forme d'une chaîne de caractères pour le code source d'un objet.

-
-
{{jsxref("Objets_globaux/isFinite","isFinite()")}}
-
-

La fonction isFinite() détermine si la valeur passée est un nombre fini. Si nécessaire, le paramètre sera converti en un nombre.

-
-
{{jsxref("Objets_globaux/isNaN","isNaN()")}}
-
-

La fonction isNaN() détermine si une valeur est {{jsxref("NaN")}} ou non. Note : On pourra également utiliser {{jsxref("Number.isNaN()")}} défini avec ECMAScript 6 ou utiliser typeof afin de déterminer si la valeur est Not-A-Number.

-
-
{{jsxref("Objets_globaux/parseFloat","parseFloat()")}}
-
-

La fonction parseFloat() convertit une chaîne de caractères en un nombre flottant.

-
-
{{jsxref("Objets_globaux/parseInt","parseInt()")}}
-
-

La fonction parseInt() convertit une chaîne de caractères et renvoie un entier dans la base donnée.

-
-
{{jsxref("Objets_globaux/decodeURI","decodeURI()")}}
-
-

La fonction decodeURI() décode un Uniform Resource Identifier (URI) créé par {{jsxref("Objets_globaux/encodeURI","encodeURI()")}} ou une méthode similaire.

-
-
{{jsxref("Objets_globaux/decodeURIComponent","decodeURIComponent()")}}
-
-

La fonction decodeURIComponent() décode un composant d'un Uniform Resource Identifier (URI) créé par {{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent")}} ou une méthode similaire.

-
-
{{jsxref("Objets_globaux/encodeURI","encodeURI()")}}
-
-

La fonction encodeURI() encode un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par un, deux, trois voire quatre séquences d'échappement représentant l'encodage UTF-8 du caractères (quatre séquences seront utilisées uniquement lorsque le caractère est composé d'une paire de deux demi-codets).

-
-
{{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent()")}}
-
-

La fonction encodeURIComponent() encode un composant d'un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par un, deux, trois voire quatre séquences d'échappement représentant l'encodage UTF-8 du caractères (quatre séquences seront utilisées uniquement lorsque le caractère est composé d'une paire de deux demi-codets).

-
-
{{jsxref("Objets_globaux/escape","escape()")}} {{deprecated_inline}}
-
-

La fonction dépréciée escape() calcule une nouvelle chaîne de caractères pour laquelle certains caractères ont été remplacés par leur séquence d'échappement hexadécimale. Les fonctions {{jsxref("Objets_globaux/encodeURI","encodeURI()")}} ou {{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent()")}} doivent être utilisées à la place.

-
-
{{jsxref("Objets_globaux/unescape","unescape()")}} {{deprecated_inline}}
-
-

La fonction dépréciée unescape() calcule une nouvelle chaîne de caractères pour laquelle les séquences d'échappement hexadécimales sont remplacées par les caractères qu'elles représentent. Les séquences d'échappement introduites peuvent provenir d'une fonction telle que {{jsxref("Objets_globaux/escape","escape()")}}. unescape est dépréciée et doit être remplacée par {{jsxref("Objets_globaux/decodeURI","decodeURI()")}} ou {{jsxref("Objets_globaux/decodeURIComponent","decodeURIComponent()")}}.

-
-
- -

{{PreviousNext("Web/JavaScript/Guide/Boucles_et_it%C3%A9ration", "Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs")}}

+var p = new Personne(); +``` + +## Fonctions prédéfinies + +JavaScript possède plusieurs fonctions natives, disponibles au plus haut niveau : + +- {{jsxref("Objets_globaux/eval","eval()")}} + - : La fonction **`eval()`** permet d'évaluer du code JavaScript contenu dans une chaîne de caractères. +- {{jsxref("Objets_globaux/uneval","uneval()")}} {{non-standard_inline}} + - : La fonction **`uneval()`** crée une représentation sous la forme d'une chaîne de caractères pour le code source d'un objet. +- {{jsxref("Objets_globaux/isFinite","isFinite()")}} + - : La fonction **`isFinite()`** détermine si la valeur passée est un nombre fini. Si nécessaire, le paramètre sera converti en un nombre. +- {{jsxref("Objets_globaux/isNaN","isNaN()")}} + - : La fonction **`isNaN()`** détermine si une valeur est {{jsxref("NaN")}} ou non. Note : On pourra également utiliser {{jsxref("Number.isNaN()")}} défini avec ECMAScript 6 ou utiliser [`typeof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof) afin de déterminer si la valeur est **\*N**ot-**A**-**N**umber\*. +- {{jsxref("Objets_globaux/parseFloat","parseFloat()")}} + - : La fonction **`parseFloat()`** convertit une chaîne de caractères en un nombre flottant. +- {{jsxref("Objets_globaux/parseInt","parseInt()")}} + - : La fonction **`parseInt()`** convertit une chaîne de caractères et renvoie un entier dans la base donnée. +- {{jsxref("Objets_globaux/decodeURI","decodeURI()")}} + - : La fonction **`decodeURI()`** décode un Uniform Resource Identifier (URI) créé par {{jsxref("Objets_globaux/encodeURI","encodeURI()")}} ou une méthode similaire. +- {{jsxref("Objets_globaux/decodeURIComponent","decodeURIComponent()")}} + - : La fonction **`decodeURIComponent()`** décode un composant d'un Uniform Resource Identifier (URI) créé par {{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent")}} ou une méthode similaire. +- {{jsxref("Objets_globaux/encodeURI","encodeURI()")}} + - : La fonction **`encodeURI()`** encode un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par un, deux, trois voire quatre séquences d'échappement représentant l'encodage UTF-8 du caractères (quatre séquences seront utilisées uniquement lorsque le caractère est composé d'une paire de deux demi-codets). +- {{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent()")}} + - : La fonction **`encodeURIComponent()`** encode un composant d'un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par un, deux, trois voire quatre séquences d'échappement représentant l'encodage UTF-8 du caractères (quatre séquences seront utilisées uniquement lorsque le caractère est composé d'une paire de deux demi-codets). +- {{jsxref("Objets_globaux/escape","escape()")}} {{deprecated_inline}} + - : La fonction dépréciée **`escape()`** calcule une nouvelle chaîne de caractères pour laquelle certains caractères ont été remplacés par leur séquence d'échappement hexadécimale. Les fonctions {{jsxref("Objets_globaux/encodeURI","encodeURI()")}} ou {{jsxref("Objets_globaux/encodeURIComponent","encodeURIComponent()")}} doivent être utilisées à la place. +- {{jsxref("Objets_globaux/unescape","unescape()")}} {{deprecated_inline}} + - : La fonction dépréciée **`unescape()`** calcule une nouvelle chaîne de caractères pour laquelle les séquences d'échappement hexadécimales sont remplacées par les caractères qu'elles représentent. Les séquences d'échappement introduites peuvent provenir d'une fonction telle que {{jsxref("Objets_globaux/escape","escape()")}}. `unescape` est dépréciée et doit être remplacée par {{jsxref("Objets_globaux/decodeURI","decodeURI()")}} ou {{jsxref("Objets_globaux/decodeURIComponent","decodeURIComponent()")}}. + +{{PreviousNext("Web/JavaScript/Guide/Boucles_et_it%C3%A9ration", "Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs")}} diff --git a/files/fr/web/javascript/guide/grammar_and_types/index.md b/files/fr/web/javascript/guide/grammar_and_types/index.md index ce13618846..2205e65b20 100644 --- a/files/fr/web/javascript/guide/grammar_and_types/index.md +++ b/files/fr/web/javascript/guide/grammar_and_types/index.md @@ -7,85 +7,82 @@ tags: translation_of: Web/JavaScript/Guide/Grammar_and_types original_slug: Web/JavaScript/Guide/Types_et_grammaire --- -
 {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs")}} -

Ce chapitre décrit les bases de la grammaire et des types de données JavaScript.

+Ce chapitre décrit les bases de la grammaire et des types de données JavaScript. -

Les bases du langage

+## Les bases du langage -

JavaScript emprunte la plupart des éléments de sa syntaxe à Java, C et C++ mais sa syntaxe est également influencée par Awk, Perl et Python.

+JavaScript emprunte la plupart des éléments de sa syntaxe à Java, C et C++ mais sa syntaxe est également influencée par Awk, Perl et Python. -

JavaScript est sensible à la casse et utilise l'ensemble de caractères Unicode. On pourrait donc tout à fait utiliser le mot früh comme nom de variable :

+JavaScript est **sensible à la casse** et utilise l'ensemble de caractères **Unicode**. On pourrait donc tout à fait utiliser le mot früh comme nom de variable : -
var früh = "toto";
+```js
+var früh = "toto";
 typeof Früh; // undefined car JavaScript est sensible à la casse
-
+``` -

En JavaScript, les instructions sont appelées ({{Glossary("Statement", "statements")}}) et sont séparées par des points-virgules.

+En JavaScript, les instructions sont appelées ({{Glossary("Statement", "statements")}}) et sont séparées par des points-virgules. -

Il n'est pas nécessaire d'inclure un point-virgule si l'on écrit une instruction sur une nouvelle ligne. Mais si vous voulez écrire plus d'une déclaration sur une seule ligne, alors elles doivent être séparées par un point-virgule. Ceci étant dit, la bonne pratique est d'inclure un point-virgule après chaque instruction. Les espaces, les tabulations et les caractères de nouvelles lignes sont considérés comme des blancs. Il existe aussi un ensemble de règles pour ajouter automatiquement des points-virgules à la fin des instructions (ASI pour Automatic Semicolon Insertion). Cependant, il est conseillé de toujours ajouter des points-virgules à la fin des instructions afin d'éviter des effets de bord néfastes.

+Il n'est pas nécessaire d'inclure un point-virgule si l'on écrit une instruction sur une nouvelle ligne. Mais si vous voulez écrire plus d'une déclaration sur une seule ligne, alors elles doivent être séparées par un point-virgule. Ceci étant dit, la bonne pratique est d'inclure un point-virgule après chaque instruction. Les espaces, les tabulations et les caractères de nouvelles lignes sont considérés comme des blancs. Il existe aussi un ensemble de règles pour ajouter automatiquement des points-virgules à la fin des instructions ([ASI](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Insertion_automatique_de_points-virgules) pour _Automatic Semicolon Insertion_). Cependant, il est conseillé de toujours ajouter des points-virgules à la fin des instructions afin d'éviter des effets de bord néfastes. -

Le texte d'un code source JavaScript est analysé de gauche à droite et est converti en une série d'unités lexicales, de caractères de contrôle, de fins de lignes, de commentaires et de blancs. ECMAScript définit également certains mots-clés et littéraux. Pour plus d'informations, voir la page sur la grammaire lexicale de JavaScript dans la référence JavaScript.

+Le texte d'un code source JavaScript est analysé de gauche à droite et est converti en une série d'unités lexicales, de caractères de contrôle, de fins de lignes, de commentaires et de blancs. ECMAScript définit également certains mots-clés et littéraux. Pour plus d'informations, voir la page sur [la grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) dans la référence JavaScript. -

Commentaires

+## Commentaires -

La syntaxe utilisée pour les commentaires est la même que celle utilisée par le C++ et d'autres langages :

+La syntaxe utilisée pour **les commentaires** est la même que celle utilisée par le C++ et d'autres langages : -
// un commentaire sur une ligne
+```js
+// un commentaire sur une ligne
 
 /* un commentaire plus
    long sur plusieurs lignes
  */
 
 /* Par contre on ne peut pas /* imbriquer des commentaires */ SyntaxError */
-
+``` -
-

Note : Vous pourrez également rencontrer une troisième forme de commentaires au début de certains fichiers JavaScript comme #!/usr/bin/env node. Ce type de commentaire indique le chemin d'un interpréteur JavaScript spécifique pour exécuter le script. Pour plus de détails, voir la page sur les commentaires d'environnement.

-
+> **Note :** Vous pourrez également rencontrer une troisième forme de commentaires au début de certains fichiers JavaScript comme `#!/usr/bin/env node`. Ce type de commentaire indique le chemin d'un interpréteur JavaScript spécifique pour exécuter le script. Pour plus de détails, voir la page sur [les commentaires d'environnement](). -

Déclarations

+## Déclarations -

Il existe trois types de déclarations de variable en JavaScript.

+Il existe trois types de déclarations de variable en JavaScript. -
-
{{jsxref("Instructions/var", "var")}}
-
On déclare une variable, éventuellement en initialisant sa valeur.
-
{{jsxref("Instructions/let", "let")}}
-
On déclare une variable dont la portée est celle du bloc courant, éventuellement en initialisant sa valeur.
-
{{jsxref("Instructions/const", "const")}}
-
On déclare une constante nommée, dont la portée est celle du bloc courant, accessible en lecture seule.
-
+- {{jsxref("Instructions/var", "var")}} + - : On déclare une variable, éventuellement en initialisant sa valeur. +- {{jsxref("Instructions/let", "let")}} + - : On déclare une variable dont la portée est celle du bloc courant, éventuellement en initialisant sa valeur. +- {{jsxref("Instructions/const", "const")}} + - : On déclare une constante nommée, dont la portée est celle du bloc courant, accessible en lecture seule. -

Variables

+### Variables -

Les variables sont utilisées comme des noms symboliques désignant les valeurs utilisées dans l'application. Les noms des variables sont appelés identifiants. Ces identifiants doivent respecter certaines règles.

+Les variables sont utilisées comme des noms symboliques désignant les valeurs utilisées dans l'application. Les noms des variables sont appelés _identifiants_. Ces identifiants doivent respecter certaines règles. -

Un identifiant JavaScript doit commencer par une lettre, un tiret bas (_) ou un symbole dollar ($). Les caractères qui suivent peuvent être des chiffres (0 à 9).
-À noter : puisque Javascript est sensible aux majuscules et minuscules: les lettres peuvent comprendre les caractères de « A » à « Z » (en majuscule) mais aussi les caractères  de « a » à « z » (en minuscule).

+Un identifiant JavaScript doit commencer par une lettre, un tiret bas (\_) ou un symbole dollar ($). Les caractères qui suivent peuvent être des chiffres (0 à 9). +À noter : puisque Javascript est sensible aux majuscules et minuscules: les lettres peuvent comprendre les caractères de « A » à « Z » (en majuscule) mais aussi les caractères  de « a » à « z » (en minuscule). -

On peut aussi utiliser la plupart lettres Unicode ou ISO 8859-1 (comme å et ü, pour plus de détails, voir ce billet de blog, en anglais) au sein des identifiants. Il est également possible d'utiliser les \uXXXX séquences d'échappement Unicode comme caractères dans les identifiants.

+On peut aussi utiliser la plupart lettres Unicode ou ISO 8859-1 (comme å et ü, pour plus de détails, voir [ce billet de blog, en anglais](https://mathiasbynens.be/notes/javascript-identifiers-es6)) au sein des identifiants. Il est également possible d'utiliser les \uXXXX [séquences d'échappement Unicode](<#littéraux chaînes>) comme caractères dans les identifiants. -

Voici des exemples d'identifiants valides : Nombre_touches, temp99, $credit, et _nom.

+Voici des exemples d'identifiants valides : `Nombre_touches`, `temp99`, `$credit`, et `_nom`. -

Déclaration de variables

+### Déclaration de variables -

Il est possible de déclarer des variables de plusieurs façons :

+Il est possible de déclarer des variables de plusieurs façons : -
    -
  • En utilisant le mot-clé {{jsxref("Instructions/var","var")}}, par exemple : var x = 42. Cette syntaxe peut être utilisée pour déclarer des variables locales ou globales selon le contexte d'exécution.
  • -
  • En utilisant le mot-clé {{jsxref("Instructions/const","const")}} ou le mot-clé {{jsxref("Instructions/let","let")}}, par exemple avec let y = 13. Cette syntaxe peut être utilisée pour déclarer une variable dont la portée sera celle du bloc. Voir le paragraphe sur les portées des variables ci-après.
  • -
+- En utilisant le mot-clé {{jsxref("Instructions/var","var")}}, par exemple : `var x = 42`. Cette syntaxe peut être utilisée pour déclarer des variables [locales ou globales](#Portées) selon le contexte d'exécution. +- En utilisant le mot-clé {{jsxref("Instructions/const","const")}} ou le mot-clé {{jsxref("Instructions/let","let")}}, par exemple avec `let y = 13`. Cette syntaxe peut être utilisée pour déclarer une variable dont la portée sera celle du bloc. Voir le paragraphe sur [les portées des variables](#Portées) ci-après. -

Il est également possible d'affecter une valeur à une variable sans utiliser de mot-clé (ex. x = 42). Cela créera une variable globale non-déclarée. Cette forme génèrera également un avertissement avec le mode strict. Attention, les variables globales non-déclarées peuvent mener à des comportements inattendus et sont considérées comme une mauvaise pratique.

+Il est également possible d'affecter une valeur à une variable sans utiliser de mot-clé (ex. `x = 42`). Cela créera une variable globale non-déclarée. Cette forme génèrera également un avertissement avec [le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). Attention, les variables globales non-déclarées peuvent mener à des comportements inattendus et sont considérées comme une mauvaise pratique. -

Évaluation de variables

+### Évaluation de variables -

Une variable déclarée grâce à l'instruction var ou let sans valeur initiale définie vaudra {{jsxref("undefined")}}.

+Une variable déclarée grâce à l'instruction `var` ou `let` sans valeur initiale définie vaudra {{jsxref("undefined")}}. -

Tenter d'accéder à une variable qui n'a pas été déclarée ou tenter d'accéder à un identifiant déclaré avec let avant son initialisation provoquera l'envoi d'une exception {{jsxref("ReferenceError")}}.

+Tenter d'accéder à une variable qui n'a pas été déclarée ou tenter d'accéder à un identifiant déclaré avec `let` avant son initialisation provoquera l'envoi d'une exception {{jsxref("ReferenceError")}}. -
var a;
+```js
+var a;
 console.log("La valeur de a est " + a); // La valeur de a est undefined
 
 console.log("La valeur de b est " + b); // La valeur de b est undefined
@@ -95,61 +92,70 @@ console.log("La valeur de x est " + x); // signale une exception ReferenceError
 let x;
 let y;
 console.log("La valeur de y est " + y); // La valeur de y est undefined
-
+``` -

Il est possible d'utiliser undefined pour déterminer si une variable possède une valeur. Dans l'exemple qui suit, la condition de l'instruction if sera validée car la variable n'a pas été initialisée (elle a simplement été déclarée) :

+Il est possible d'utiliser `undefined` pour déterminer si une variable possède une valeur. Dans l'exemple qui suit, la condition de l'instruction [`if`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else) sera validée car la variable n'a pas été initialisée (elle a simplement été déclarée) : -
var input;
+```js
+var input;
 if (input === undefined){
   faireCeci();
 } else {
   faireCela();
 }
-
+``` -

La valeur undefined se comporte comme le booléen false lorsqu'elle est utilisée dans un contexte booléen. Ainsi, le fragment de code qui suit exécutera la fonction maFonction puisque le premier élément de monTableau n'est pas défini :

+La valeur `undefined` se comporte comme le booléen `false` lorsqu'elle est utilisée dans un contexte booléen. Ainsi, le fragment de code qui suit exécutera la fonction `maFonction` puisque le premier élément de `monTableau` n'est pas défini : -
var monTableau = new Array();
+```js
+var monTableau = new Array();
 if (!monTableau[0]){
   maFunction();
 }
-
+``` -

La valeur undefined est convertie en {{jsxref("NaN")}} (pour Not a Number : « n'est pas un nombre ») lorsqu'elle est utilisée dans un contexte numérique.

+La valeur `undefined` est convertie en {{jsxref("NaN")}} (pour _Not a Number_ : « n'est pas un nombre ») lorsqu'elle est utilisée dans un contexte numérique. -
var a;
-a + 2; // NaN
+```js +var a; +a + 2; // NaN +``` -

Une variable valant null sera toujours considérée comme 0 dans un contexte numérique et comme false dans un contexte booléen. Par exemple, on aura :

+Une variable valant `null` sera toujours considérée comme 0 dans un contexte numérique et comme `false` dans un contexte booléen. Par exemple, on aura : -
var n = null;
-console.log(n * 32); // Le log affichera 0
+```js +var n = null; +console.log(n * 32); // Le log affichera 0 +``` -

Les portées de variables

+### Les portées de variables -

Lorsqu'une variable est déclarée avec var en dehors des fonctions, elle est appelée variable globale car elle est disponible pour tout le code contenu dans le document. Lorsqu'une variable est déclarée dans une fonction, elle est appelée variable locale car elle n'est disponible qu'au sein de cette fonction.

+Lorsqu'une variable est déclarée avec `var` en dehors des fonctions, elle est appelée variable *global*e car elle est disponible pour tout le code contenu dans le document. Lorsqu'une variable est déclarée dans une fonction, elle est appelée variable _locale_ car elle n'est disponible qu'au sein de cette fonction. -

Avant ECMAScript 2015 (ES6), JavaScript ne définissait pas de portée pour une instruction de bloc ; les éléments du bloc seront locaux pour le code qui contient le bloc (que ce soit une fonction ou le contexte global). Ainsi, l'exemple qui suit affichera 5 car la portée de x est la fonction (ou le contexte global) dans lequel x est déclaré, pas le bloc (correspondant à l'instruction if dans ce cas) :

+Avant ECMAScript 2015 (ES6), JavaScript ne définissait pas de portée pour une [instruction de bloc](/fr/docs/Web/JavaScript/Reference/Instructions/bloc) ; les éléments du bloc seront locaux pour le code qui contient le bloc (que ce soit une fonction ou le contexte global). Ainsi, l'exemple qui suit affichera 5 car la portée de `x` est la fonction (ou le contexte global) dans lequel `x` est déclaré, pas le bloc (correspondant à l'instruction `if` dans ce cas) : -
if (true) {
+```js
+if (true) {
   var x = 5;
 }
 console.log(x); // x vaut 5
-
+``` -

La déclaration {{jsxref("Instructions/let","let")}}, introduite avec ECMAScript 2015, ajoute un nouveau comportement :

+La déclaration {{jsxref("Instructions/let","let")}}, introduite avec ECMAScript 2015, ajoute un nouveau comportement : -
if (true) {
+```js
+if (true) {
   let y = 5;
 }
 console.log(y); // ReferenceError: y is not defined
-
+``` -

Remontée de variables (hoisting)

+### Remontée de variables (_hoisting_) -

Une autre chose peut paraître étrange en JavaScript : il est possible, sans recevoir d'exception, de faire référence à une variable qui est déclarée plus tard. Ce concept est appelé « remontée » (hoisting en anglais) car, d'une certaine façon, les variables sont remontées en haut de la fonction ou de l'instruction. En revanche, les variables qui n'ont pas encore été initialisées renverront la valeur undefined. Ainsi, même si on déclare une variable et qu'on l'initialise après l'avoir utilisée ou y avoir fait référence, la valeur utilisée « la plus haute » sera toujours undefined.

+Une autre chose peut paraître étrange en JavaScript : il est possible, sans recevoir d'exception, de faire référence à une variable qui est déclarée plus tard. Ce concept est appelé « remontée » (_hoisting_ en anglais) car, d'une certaine façon, les variables sont remontées en haut de la fonction ou de l'instruction. En revanche, les variables qui n'ont pas encore été initialisées renverront la valeur `undefined`. Ainsi, même si on déclare une variable et qu'on l'initialise après l'avoir utilisée ou y avoir fait référence, la valeur utilisée « la plus haute » sera toujours `undefined`. -
/**
+```js
+/**
  * Exemple 1
  */
 console.log(x === undefined); // donne "true"
@@ -165,11 +171,12 @@ var maVar = "ma valeur";
   console.log(maVar); // undefined
   var maVar = "valeur locale";
 })();
-
+``` -

Les exemples précédents peuvent être reformulés plus explicitement ainsi :

+Les exemples précédents peuvent être reformulés plus explicitement ainsi : -
/**
+```js
+/**
  * Exemple 1
  */
 var x;
@@ -186,22 +193,25 @@ var maVar = "ma valeur";
   console.log(maVar); // undefined
   maVar = "valeur locale";
 })();
-
+``` -

C'est pourquoi il est conseillé de placer les instructions var dès que possible dans le code. De plus, cette bonne pratique aide à rendre le code plus lisible.

+C'est pourquoi il est conseillé de placer les instructions `var` dès que possible dans le code. De plus, cette bonne pratique aide à rendre le code plus lisible. -

Avec ECMAScript 2015, let (const) remontera la variable en haut du bloc mais ne l'initialisera pas. Aussi, si on fait référence à la variable dans le bloc avant la déclaration, on obtient une {{jsxref("ReferenceError")}} car la variable est dans une « zone morte temporelle ». entre le début du bloc et le traitement de la déclaration

+Avec ECMAScript 2015, `let (const)` **remontera la variable en haut du bloc mais ne l'initialisera pas**. Aussi, si on fait référence à la variable dans le bloc avant la déclaration, on obtient une {{jsxref("ReferenceError")}} car la variable est dans une « zone morte temporelle ». entre le début du bloc et le traitement de la déclaration -
function faire_quelquechose() {
+```js
+function faire_quelquechose() {
   console.log(toto); // ReferenceError
   let toto = 2;
-}
+} +``` -

Remontée de fonctions

+### Remontée de fonctions -

En ce qui concerne les fonctions, seules les déclarations de fonctions sont remontées. Pour les expressions de fonctions, il n'y a pas de telle remontée car la variable associée n'a pas encore été affectée avec la valeur finale (comme vu avant) :

+En ce qui concerne les fonctions, seules les déclarations de fonctions sont remontées. Pour les expressions de fonctions, il n'y a pas de telle remontée car la variable associée n'a pas encore été affectée avec la valeur finale (comme vu avant) : -
/* Déclaration de fonction */
+```js
+/* Déclaration de fonction */
 toto();  // "truc"
 function toto(){
   console.log("truc");
@@ -212,28 +222,30 @@ machin();      // erreur TypeError : machin n'est pas une fonction
 var machin = function() {
   console.log("titi");
 }
-
+``` -

Les variables globales

+### Les variables globales -

Les variables globales sont en réalité des propriétés de l'objet global. Dans les pages web, l'objet global est {{domxref("window")}}, et on peut donc accéder ou modifier la valeur de variables globales en utilisant la syntaxe suivante : window.variable .

+Les variables globales sont en réalité des propriétés de l'_objet global_. Dans les pages web, l'objet global est {{domxref("window")}}, et on peut donc accéder ou modifier la valeur de variables globales en utilisant la syntaxe suivante : `window.variable` . -

Ainsi, il est possible d'accéder à des variables déclarées dans une fenêtre ou dans un cadre depuis une autre fenêtre ou depuis un autre cadre (frame) en spécifiant son nom. Si, par exemple, une variable appelée numTéléphone est déclarée dans un document FRAMESET, il est possible d'y faire référence, depuis un cadre fils, avec la syntaxe parent.numTéléphone.

+Ainsi, il est possible d'accéder à des variables déclarées dans une fenêtre ou dans un cadre depuis une autre fenêtre ou depuis un autre cadre (_frame_) en spécifiant son nom. Si, par exemple, une variable appelée `numTéléphone` est déclarée dans un document `FRAMESET`, il est possible d'y faire référence, depuis un cadre fils, avec la syntaxe `parent.numTéléphone`. -

Constantes

+### Constantes -

Il est possible de créer des constantes en lecture seule en utilisant le mot-clé {{jsxref("Instructions/const","const")}}. La syntaxe d'un identifiant pour une constante est la même que pour les variables (elle doit débuter avec une lettre, un tiret du bas, un symbole dollar et peut contenir des caractères numériques, alphabétiques et des tirets bas voire des caractères Unicode).

+Il est possible de créer des constantes en lecture seule en utilisant le mot-clé {{jsxref("Instructions/const","const")}}. La syntaxe d'un identifiant pour une constante est la même que pour les variables (elle doit débuter avec une lettre, un tiret du bas, un symbole dollar et peut contenir des caractères numériques, alphabétiques et des tirets bas voire des caractères Unicode). -
const préfixe = '212';
-
+```js +const préfixe = '212'; +``` -

Une constante ne peut pas changer de valeur grâce à une affectation ou être re-déclarée pendant l'exécution du script.

+Une constante ne peut pas changer de valeur grâce à une affectation ou être re-déclarée pendant l'exécution du script. -

Les règles de portée des constantes sont les mêmes que pour les variables, à l'exception du mot-clé const qui est obligatoire. S'il est oublié, l'identifiant sera considéré comme celui d'une variable.

+Les règles de portée des constantes sont les mêmes que pour les variables, à l'exception du mot-clé `const` qui est obligatoire. S'il est oublié, l'identifiant sera considéré comme celui d'une variable. -

Il est impossible de déclarer une constante avec le même nom qu'une autre variable ou fonction dans la même portée.

+Il est impossible de déclarer une constante avec le même nom qu'une autre variable ou fonction dans la même portée. -
// Renverra une erreur
+```js example-bad
+// Renverra une erreur
 function f() {};
 const f = 5;
 
@@ -244,216 +256,210 @@ function f() {
 
   //instructions
 }
-
+``` -

Cependant, les propriétés des objets qui sont affectés comme constantes ne sont pas protégées, on pourra ainsi exécuter sans problème le code suivant :

+Cependant, les propriétés des objets qui sont affectés comme constantes ne sont pas protégées, on pourra ainsi exécuter sans problème le code suivant : -
const MON_OBJET = {"clé": "valeur"};
-MON_OBJET.clé = "autreValeur";
+```js +const MON_OBJET = {"clé": "valeur"}; +MON_OBJET.clé = "autreValeur"; +``` -

De même, le contenu d'un tableau peut être modifié sans alerte :

+De même, le contenu d'un tableau peut être modifié sans alerte : -
const MON_TABLEAU = ["HTML", "CSS"];
+```js
+const MON_TABLEAU = ["HTML", "CSS"];
 MON_TABLEAU.push("JavaScript");
 console.log(MON_TABLEAU); // ["HTML", "CSS", "JavaScript"]
-
+``` -

Structures de données et types

+## Structures de données et types -

Types de données

+### Types de données -

La dernière version du standard ECMAScript définit sept types de données :

+La dernière version du standard ECMAScript définit sept types de données : -
    -
  • Six types de données primitifs : -
      -
    • Type booléen : true et false.
    • -
    • Type nul (null), un mot-clé spécial pour indiquer une valeur nulle (au sens informatique). JavaScript étant sensible à la casse, null n'est pas Null, NULL, ou toute autre variante.
    • -
    • Un type pour les valeurs indéfinies (undefined).
    • -
    • Un type pour les nombres entiers ou décimaux. Par exemple : 42 ou 3.14159.
    • -
    • Un type pour représenter les grands nombres entiers BigInt, par exemple 9007199254740992n.
    • -
    • Un type pour les chaînes de caractères, une séquence de caractères qui représente une valeur textuelle. Par exemple : "Coucou"
    • -
    • Un type pour les symboles, apparus avec ECMAScript 2015 (ES6). Ce type est utilisé pour représenter des données immuables et uniques.
    • -
    -
  • -
  • et un type pour les objets (Object)
  • -
+- Six types de données primitifs : -

Bien que cette description couvre peu de types de données, ceux-ci vous permettent d'implémenter une grande variété de fonctions au sein de vos applications. Les objets et les fonctions sont parmi les briques fondamentales du langage. On peut considérer, à première vue, les objets comme des conteneurs de valeurs et de fonctions pour une application.

+ - Type booléen : `true` et `false`. + - Type nul (`null`), un mot-clé spécial pour indiquer une valeur nulle (au sens informatique). JavaScript étant sensible à la casse, `null` n'est pas `Null`, `NULL`, ou toute autre variante. + - Un type pour les valeurs indéfinies (`undefined`). + - Un type pour les nombres entiers ou décimaux. Par exemple : `42` ou `3.14159`. + - Un type pour représenter les grands nombres entiers `BigInt`, par exemple `9007199254740992n`. + - Un type pour les chaînes de caractères, une séquence de caractères qui représente une valeur textuelle. Par exemple : "Coucou" + - Un type pour les symboles, apparus avec ECMAScript 2015 (ES6). Ce type est utilisé pour représenter des données immuables et uniques. -

Conversion de types de données

+- et un type pour les objets (_Object_) -

JavaScript est un langage à typage dynamique. Cela signifie qu'il n'est pas nécessaire de spécifier le type de données d'une variable lors de sa déclaration. Les types de données sont convertis automatiquement durant l'exécution du script. Ainsi, il est possible de définir une variable de cette façon :

+Bien que cette description couvre peu de types de données, ceux-ci vous permettent d'implémenter une grande variété de fonctions au sein de vos applications. [Les objets](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object) et [les fonctions](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function) sont parmi les briques fondamentales du langage. On peut considérer, à première vue, les objets comme des conteneurs de valeurs et de fonctions pour une application. -
-
var réponse = 42;
-
-
+### Conversion de types de données -

Et plus tard, d'affecter une chaîne de caractères à cette même variable :

+JavaScript est un langage à typage dynamique. Cela signifie qu'il n'est pas nécessaire de spécifier le type de données d'une variable lors de sa déclaration. Les types de données sont convertis automatiquement durant l'exécution du script. Ainsi, il est possible de définir une variable de cette façon : -
-
réponse = "Merci pour le dîner...";
-
-
+```js +var réponse = 42; +``` -

JavaScript utilisant un typage dynamique, cette dernière instruction ne renverra pas d'erreur.

+Et plus tard, d'affecter une chaîne de caractères à cette même variable : -

Lorsque des expressions impliquent des chaînes de caractères et des valeurs numériques ainsi que l'opérateur +, JavaScript convertit les nombres en chaînes de caractères :

+```js +réponse = "Merci pour le dîner..."; +``` -
x = "La réponse est " + 42; // "La réponse est 42"
+JavaScript utilisant un typage dynamique, cette dernière instruction ne renverra pas d'erreur.
+
+Lorsque des expressions impliquent des chaînes de caractères et des valeurs numériques ainsi que l'opérateur +, JavaScript convertit les nombres en chaînes de caractères :
+
+```js
+x = "La réponse est " + 42; // "La réponse est 42"
 y = 42 + " est la réponse"; // "42 est la réponse"
-
+``` -

Avec des instructions impliquant d'autres opérateurs, JavaScript ne convertit pas nécessairement les valeurs numériques en chaînes de caractères. Ainsi, on aura :

+Avec des instructions impliquant d'autres opérateurs, JavaScript ne convertit pas nécessairement les valeurs numériques en chaînes de caractères. Ainsi, on aura : -
"37" - 7; // 30
+```js
+"37" - 7; // 30
 "37" + 7; // "377"
-
+``` -

Conversion de chaînes de caractères en nombres

+### Conversion de chaînes de caractères en nombres -

Si un nombre est représenté en mémoire par une chaîne de caractères, il y a des méthodes pour effectuer la bonne conversion :

+Si un nombre est représenté en mémoire par une chaîne de caractères, il y a des méthodes pour effectuer la bonne conversion : -
    -
  • {{jsxref("Objets_globaux/parseInt", "parseInt()")}}
  • -
  • {{jsxref("Objets_globaux/parseFloat", "parseFloat()")}}
  • -
+- {{jsxref("Objets_globaux/parseInt", "parseInt()")}} +- {{jsxref("Objets_globaux/parseFloat", "parseFloat()")}} -

parseInt renverra uniquement des nombres entiers, étant ainsi inappropriée pour la manipulation de nombre décimaux. Une bonne pratique pour cette fonction est de toujours inclure l'argument qui indique dans quelle base numérique le résultat doit être renvoyé (base 2, base 10...).

+`parseInt` renverra uniquement des nombres entiers, étant ainsi inappropriée pour la manipulation de nombre décimaux. Une bonne pratique pour cette fonction est de toujours inclure l'argument qui indique dans quelle base numérique le résultat doit être renvoyé (base 2, base 10...). -
parseInt("101", 2); // 5
+```js +parseInt("101", 2); // 5 +``` -

L'opérateur + unaire

+#### L'opérateur + unaire -

Une autre méthode pour récupérer un nombre à partir d'une chaîne de caractères consiste à utiliser l'opérateur +.

+Une autre méthode pour récupérer un nombre à partir d'une chaîne de caractères consiste à utiliser l'opérateur +. -
"1.1" + "1.1" = "1.11.1"
+```js
+"1.1" + "1.1" = "1.11.1"
 +"1.1" = 1.1 // fonctionne seulement avec le + unaire
-
+``` -

Littéraux

+## Littéraux -

Les littéraux sont utilisés pour représenter des valeurs en JavaScript. Ce sont des valeurs fixes, pas des variables, qui sont fournies littéralement au script. Cette section décrit les différents types de littéraux :

+Les littéraux sont utilisés pour représenter des valeurs en JavaScript. Ce sont des valeurs fixes, pas des variables, qui sont fournies _littéralement_ au script. Cette section décrit les différents types de littéraux : - +- [Littéraux de tableaux](<#littéraux tableaux>) +- [Littéraux booléens](<#littéraux booléens>) +- [Littéraux de nombres flottants](<#littéraux décimaux>) +- [Littéraux numériques](<#littéraux numériques>) +- [Littéraux d'objets](<#littéraux objets>) +- [Littéraux d'expressions rationnelles](#regexp) +- [Littéraux de chaînes de caractères](<#littéraux chaînes>) -

Les littéraux de tableaux

+### Les littéraux de tableaux -

Un littéral de tableau est une liste de zéro ou plusieurs expressions, dont chacune représente l'élément d'un tableau, encadrées par des crochets ([]). Lorsqu'un tableau est créé à partir d'un littéral, il est initialisé avec les valeurs spécifiées qui sont ses éléments, sa longueur correspondant au nombre d'arguments donnés.

+Un littéral de tableau est une liste de zéro ou plusieurs expressions, dont chacune représente l'élément d'un tableau, encadrées par des crochets (`[]`). Lorsqu'un tableau est créé à partir d'un littéral, il est initialisé avec les valeurs spécifiées qui sont ses éléments, sa longueur correspondant au nombre d'arguments donnés. -

L'exemple suivant crée ainsi le tableau cafés avec trois éléments et une taille égale à 3 :

+L'exemple suivant crée ainsi le tableau `cafés` avec trois éléments et une taille égale à 3 : -
var cafés = ["Brésilien", "Colombien", "Kona"];
-
+```js +var cafés = ["Brésilien", "Colombien", "Kona"]; +``` -
-

Note : Un littéral de tableau est du type d'un initialisateur d'objets. Voir l'utilisation d'initialisateurs d'objets.

-
+> **Note :** Un littéral de tableau est du type d'un initialisateur d'objets. Voir [l'utilisation d'initialisateurs d'objets](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Initialisateur_objet). -

Si un tableau est créé en utilisant un littéral dans un script du plus haut niveau, JavaScript interprète le tableau chaque fois qu'il évalue l'expression contenant le littéral. De plus, un littéral utilisé dans une fonction est créé chaque fois que la fonction est appelée.

+Si un tableau est créé en utilisant un littéral dans un script du plus haut niveau, JavaScript interprète le tableau chaque fois qu'il évalue l'expression contenant le littéral. De plus, un littéral utilisé dans une fonction est créé chaque fois que la fonction est appelée. -

Les littéraux de tableaux sont également des objets Array. Voir la page sur l'objet Array pour plus de détails.

+Les littéraux de tableaux sont également des objets `Array`. Voir la page sur l'objet [`Array`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array) pour plus de détails. -

Les virgules supplémentaires

+#### Les virgules supplémentaires -

Il n'est pas nécessaire de définir tous les éléments dans un littéral de tableau. Si vous utilisez deux virgules, l'une à la suite de l'autre, le tableau utilisera la valeur undefined pour les éléments non définis. L'exemple qui suit utilise le tableau poisson :

+Il n'est pas nécessaire de définir tous les éléments dans un littéral de tableau. Si vous utilisez deux virgules, l'une à la suite de l'autre, le tableau utilisera la valeur `undefined` pour les éléments non définis. L'exemple qui suit utilise le tableau poisson : -
var poisson = ["Clown", , "Chat"];
-
+```js +var poisson = ["Clown", , "Chat"]; +``` -

Ce tableau possède deux éléments ayant une valeur et un élément vide (poisson[0] vaut "Clown", poisson[1] vaut undefined, et poisson[2] vaut "Chat").

+Ce tableau possède deux éléments ayant une valeur et un élément vide (`poisson[0]` vaut "Clown", `poisson[1]` vaut `undefined`, et `poisson[2]` vaut "Chat"). -

Si une virgule est ajoutée à la fin de la liste des éléments, elle est ignorée. Dans le prochain exemple, la longueur du tableau est égale à 3. Il n'y a pas d'élément maListe[3]. Les autres virgules indiquent un nouvel élément.

+Si une virgule est ajoutée à la fin de la liste des éléments, elle est ignorée. Dans le prochain exemple, la longueur du tableau est égale à 3. Il n'y a pas d'élément `maListe[3]`. Les autres virgules indiquent un nouvel élément. -
-

Note : Avec d'anciennes versions de navigateurs, les virgules de fin peuvent causer des erreurs, il est fortement conseillé de les retirer.

-
+> **Note :** Avec d'anciennes versions de navigateurs, les virgules de fin peuvent causer des erreurs, il est fortement conseillé de les retirer. -
var maListe = ['maison', , 'école', ];
-
+```js +var maListe = ['maison', , 'école', ]; +``` -

Dans l'exemple qui suit, la longueur du tableau est égale à 4 et maListe[0] et maListe[2] sont manquants.

+Dans l'exemple qui suit, la longueur du tableau est égale à 4 et `maListe[0]` et `maListe[2]` sont manquants. -
var maListe = [ , 'maison', , 'école'];
-
+```js +var maListe = [ , 'maison', , 'école']; +``` -

Dans l'exemple qui suit, la longueur du tableau est égale à 4 et maListe[1] et maListe[3] sont manquants.

+Dans l'exemple qui suit, la longueur du tableau est égale à 4 et `maListe[1]` et `maListe[3]` sont manquants. -
var maListe = ['maison', , 'école', , ];
-
+```js +var maListe = ['maison', , 'école', , ]; +``` -

Comprendre le fonctionnement des virgules supplémentaires est important. Cependant, lorsque vous écrivez du code, veillez, dès que c'est possible, à déclarer les éléments manquants avec undefined : cela améliorera la lisibilité de votre code et il sera ainsi plus facile à maintenir.

+Comprendre le fonctionnement des virgules supplémentaires est important. Cependant, lorsque vous écrivez du code, veillez, dès que c'est possible, à déclarer les éléments manquants avec `undefined` : cela améliorera la lisibilité de votre code et il sera ainsi plus facile à maintenir. -

Les littéraux booléens

+### Les littéraux booléens -

Le type booléen possède deux valeurs littérales : true et false.

+Le type booléen possède deux valeurs littérales : `true` et `false`. -

Il ne faut pas confondre les valeurs true et false du type primitif booléen et les valeurs true et false de l'objet Boolean. L'objet Boolean permet de créer un objet autour du type de donnée booléen. Voir la page sur l'objet Boolean pour plus d'informations.

+Il ne faut pas confondre les valeurs `true` et `false` du type primitif booléen et les valeurs true et false de l'objet `Boolean`. L'objet `Boolean` permet de créer un objet autour du type de donnée booléen. Voir la page sur l'objet[ `Boolean`](/fr/docs/JavaScript/Reference/Objets_globaux/Boolean) pour plus d'informations. -

Les littéraux numériques

+### Les littéraux numériques -

Les nombres {{jsxref("Number")}} et les grands entiers {{jsxref("BigInt")}} peuvent être exprimés en notation décimale (base 10), hexadécimale (base 16), octale (base 8) et binaire (base 2).

+Les nombres {{jsxref("Number")}} et les grands entiers {{jsxref("BigInt")}} peuvent être exprimés en notation décimale (base 10), hexadécimale (base 16), octale (base 8) et binaire (base 2). -
    -
  • Les littéraux représentant des entiers décimaux sont une suite de chiffres qui ne commence pas par un 0 (zéro)
  • -
  • Un 0 (zéro) en préfixe indique que le littéral est en notation octale. Ces nombres ne peuvent être composés que des chiffres de 0 (zéro) à 7 (sept).
  • -
  • Un préfixe 0x (ou 0X) indique une notation hexadécimale. Les nombres hexadécimaux peuvent être composés de chiffres (0-9) et des lettres A à F (minuscules et majuscules) (la casse d'un caractère ne modifie pas sa valeur : 0xa = 0xA = 10 et 0xf = 0xF = 15).
  • -
  • Un préfixe 0b (ou 0B) indique une notation binaire. Les nombres binaires peuvent être composés de 0 ou de 1 uniquement.
  • -
+- Les littéraux représentant des entiers décimaux sont une suite de chiffres qui ne commence pas par un 0 (zéro) +- Un 0 (zéro) en préfixe indique que le littéral est en notation octale. Ces nombres ne peuvent être composés que des chiffres de 0 (zéro) à 7 (sept). +- Un préfixe 0x (ou 0X) indique une notation hexadécimale. Les nombres hexadécimaux peuvent être composés de chiffres (0-9) et des lettres A à F (minuscules et majuscules) (la casse d'un caractère ne modifie pas sa valeur : `0xa = 0xA = 10` et `0xf = 0xF = 15`). +- Un préfixe 0b (ou 0B) indique une notation binaire. Les nombres binaires peuvent être composés de 0 ou de 1 uniquement. -

Voici des exemples pour ces littéraux :

+Voici des exemples pour ces littéraux : -
0, 117, -345, 123456789123456789n (notation décimale, base 10)
-015, 0001, -077, 0o7777777777777n (notation octale, base 8)
-0x1123, 0x00111, -0xF1A7, 0x123456789ABCDEFn (notation hexadécimale, base 16)
-0b11, 0B0011, -0b11, 0b11101001010101010101n (notation binaire, base 2)
-
+ 0, 117, -345, 123456789123456789n (notation décimale, base 10) + 015, 0001, -077, 0o7777777777777n (notation octale, base 8) + 0x1123, 0x00111, -0xF1A7, 0x123456789ABCDEFn (notation hexadécimale, base 16) + 0b11, 0B0011, -0b11, 0b11101001010101010101n (notation binaire, base 2) -

Pour plus d'informations, voir les littéraux numériques dans la grammaire lexicale de JavaScript.

+Pour plus d'informations, voir [les littéraux numériques dans la grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Littéraux_numériques). -

Les littéraux de nombres décimaux

+### Les littéraux de nombres décimaux -

Un littéral de nombre décimal peut être composé de ces différentes parties :

+Un littéral de nombre décimal peut être composé de ces différentes parties : -
    -
  • Un entier, pouvant être signé (précédé d'un « + » ou d'un « - »),
  • -
  • Un point, séparateur décimal (« . »),
  • -
  • La partie décimale (un autre nombre)
  • -
  • Un exposant.
  • -
+- Un entier, pouvant être signé (précédé d'un « + » ou d'un « - »), +- Un point, séparateur décimal (« . »), +- La partie décimale (un autre nombre) +- Un exposant. -

L'exposant est la partie du nombre décimal commençant par un « e » ou un « E », suivie d'un entier pouvant être signé (précédé d'un « + » ou d'un « - »). Un littéral de nombre décimal doit comporter au moins un chiffre et soit un point (séparateur décimal) soit un « e » ou un « E ».

+L'exposant est la partie du nombre décimal commençant par un « e » ou un « E », suivie d'un entier pouvant être signé (précédé d'un « + » ou d'un « - »). Un littéral de nombre décimal doit comporter au moins un chiffre et soit un point (séparateur décimal) soit un « e » ou un « E ». -

Des exemples sont : 3.1415, -3.1E12, .1e12, et 2E-12.

+Des exemples sont : 3.1415, -3.1E12, .1e12, et 2E-12. -

On peut raccourcir cette syntaxe en :

+On peut raccourcir cette syntaxe en : -
[(+|-)][chiffres].[chiffres][(E|e)[(+|-)]chiffres]
-
+ [(+|-)][chiffres].[chiffres][(E|e)[(+|-)]chiffres] -

Par exemple :

+Par exemple : -
3.14
-2345.789
-.3333333333333333333
-
+ 3.14 + 2345.789 + .3333333333333333333 -

Les littéraux d'objets

+### Les littéraux d'objets -

Un littéral d'objet - ou 'objet littéral' - est une liste de zéro ou plusieurs propriétés définies par des paires de noms/valeurs. Ces paires sont délimitées par des accolades ({}). N'utilisez pas un tel littéral en début d'instruction. En effet, l'accolade ouvrante sera mal interprétée (début de bloc) et causera une erreur ou un comportement incohérent.

+Un littéral d'objet - ou 'objet littéral' - est une liste de zéro ou plusieurs propriétés définies par des paires de noms/valeurs. Ces paires sont délimitées par des accolades (`{}`). N'utilisez pas un tel littéral en début d'instruction. En effet, l'accolade ouvrante sera mal interprétée (début de bloc) et causera une erreur ou un comportement incohérent. -

L'exemple qui suit montre l'utilisation d'un littéral d'objet. Le premier élément de l'objet voiture définit une propriété maVoiture, le deuxième élément : la propriété getVoiture invoque une fonction (carTypes("Honda")), le troisième élément, la propriété special utilise une variable existante (soldes).

+L'exemple qui suit montre l'utilisation d'un littéral d'objet. Le premier élément de l'objet `voiture` définit une propriété `maVoiture`, le deuxième élément : la propriété `getVoiture` invoque une fonction `(carTypes("Honda")),` le troisième élément, la propriété `special` utilise une variable existante (`soldes`). -
var soldes = "Toyota";
+```js
+var soldes = "Toyota";
 
 function carTypes(nom) {
   return (nom === "Honda") ?
@@ -466,19 +472,21 @@ var voiture = { maVoiture: "Saturn", getVoiture: carTypes("Honda"), spécial: so
 console.log(voiture.maVoiture);   // Saturn
 console.log(voiture.getVoiture);  // Honda
 console.log(voiture.spécial); // Toyota
-
+``` -

Il est également possible d'utiliser un littéral numérique ou un littéral de chaîne de caractères pour désigner le nom d'une propriété ou pour imbriquer un objet dans un autre. L'exemple qui suit illustre cette possibilité :

+Il est également possible d'utiliser un littéral numérique ou un littéral de chaîne de caractères pour désigner le nom d'une propriété ou pour imbriquer un objet dans un autre. L'exemple qui suit illustre cette possibilité : -
var voiture = { plusieursVoitures: {a: "Saab", b: "Jeep"}, 7: "Mazda" };
+```js
+var voiture = { plusieursVoitures: {a: "Saab", b: "Jeep"}, 7: "Mazda" };
 
 console.log(voiture.plusieursVoitures.b); // Jeep
 console.log(voiture[7]); // Mazda
-
+``` -

Les noms des propriétés d'objets peuvent être n'importe quelle chaîne de caractères, y compris la chaîne vide. Si le nom de la propriété n'est pas un identifiant valide, il faudra qu'il soit placé entre guillemets. Les noms de propriétés qui ne sont pas des identifiants valides ne peuvent pas être utilisés pour accéder à la valeur en utilisant la notation pointée (objet.propriété). En revanche, il est possible d'y accéder avec la notation utilisant les crochets ("[]") comme pour les tableaux.

+Les noms des propriétés d'objets peuvent être n'importe quelle chaîne de caractères, y compris la chaîne vide. Si le nom de la propriété n'est pas un [identifiant](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Variables) valide, il faudra qu'il soit placé entre guillemets. Les noms de propriétés qui ne sont pas des identifiants valides ne peuvent pas être utilisés pour accéder à la valeur en utilisant la notation pointée (objet.propriété). En revanche, il est possible d'y accéder avec la notation utilisant les crochets ("`[]`") comme pour les tableaux. -
var nomsBizarres = {
+```js
+var nomsBizarres = {
   "": "Chaîne vide",
   "!": "Bang !"
 }
@@ -486,14 +494,14 @@ console.log(nomsBizarres."");   // SyntaxError: Unexpected string
 console.log(nomsBizarres[""]);  // Chaîne vide
 console.log(nomsBizarres.!);    // SyntaxError: Unexpected token !
 console.log(nomsBizarres["!"]); // Bang !
+```
 
-
- -

Augmentation des littéraux d'objets avec ES2015/ES6

+#### Augmentation des littéraux d'objets avec ES2015/ES6 -

Avec ES2015, les littéraux d'objets permettent de définir le prototype lors de la construction de l'objet, permettent d'utiliser les affectations en notation raccourcie : toto: toto, de définir des méthodes, d'appeler les méthodes de l'objet parent avec super et d'utiliser des noms de propriétés calculées.

+Avec ES2015, les littéraux d'objets permettent de définir le prototype lors de la construction de l'objet, permettent d'utiliser les affectations en notation raccourcie : `toto: toto`, de définir des méthodes, d'appeler les méthodes de l'objet parent avec `super` et d'utiliser des noms de propriétés calculées. -
var obj = {
+```js
+var obj = {
     // __proto__
     __proto__: lePrototypeDeLObjet,
     // Notation raccourcie pour ‘handler: handler’
@@ -504,50 +512,54 @@ console.log(nomsBizarres["!"]); // Bang !
      return "d " + super.toString();
     },
     // Noms de propriétés calculés dynamiquement
-    [ 'prop_' + (() => 42)() ]: 42
-};
+ [ 'prop_' + (() => 42)() ]: 42 +}; +``` -

Attention :

+Attention : -
var toto = {a: "alpha", 2: "deux"};
+```js
+var toto = {a: "alpha", 2: "deux"};
 console.log(toto.a);    // alpha
 console.log(toto[2]);   // deux
 //console.log(toto.2);  // Erreur: parenthèse ) manquante après la liste d'argument
 //console.log(toto[a]); // Erreur: a n'est pas défini
 console.log(toto["a"]); // alpha
 console.log(toto["2"]); // deux
-
+``` -

Les littéraux d'expressions rationnelles

+### Les littéraux d'expressions rationnelles -

Un littéral d'expression rationnelle est un motif encadré par deux barres obliques. Par exemple :

+Un littéral d'[expression rationnelle](/fr/docs/Web/JavaScript/Guide/Expressions_r%C3%A9guli%C3%A8res) est un motif encadré par deux barres obliques. Par exemple : -
var re = /ab+c/;
+```js +var re = /ab+c/; +``` -

Les littéraux de chaînes de caractères

+### Les littéraux de chaînes de caractères -

Un littéral de chaîne de caractères consiste en zéro ou plusieurs caractères encadrés par des guillemets droits doubles (") ou des guillemets droits simples ('). Une chaîne de caractères doit être encadrée par des symboles du même type (guillemets droits doubles ou guillemets droits simples) :

+Un littéral de chaîne de caractères consiste en zéro ou plusieurs caractères encadrés par des guillemets droits doubles (`"`) ou des guillemets droits simples (`'`). Une chaîne de caractères doit être encadrée par des symboles du même type (guillemets droits doubles ou guillemets droits simples) : -
    -
  • "toto"
  • -
  • 'truc'
  • -
  • "1234"
  • -
  • "Une ligne \n une autre ligne"
  • -
  • "Aujourd'hui j'ai mangé une pomme"
  • -
+- `"toto"` +- `'truc'` +- `"1234"` +- `"Une ligne \n une autre ligne"` +- `"Aujourd'hui j'ai mangé une pomme"` -

Il est possible d'utiliser les méthodes de String sur un tel littéral. JavaScript convertira automatiquement le littéral en un objet String, appellera la méthode puis détruira l'objet String. On peut également utiliser la propriété String.length sur un littéral de chaîne de caractère :

+Il est possible d'utiliser les méthodes de [`String`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/String) sur un tel littéral. JavaScript convertira automatiquement le littéral en un objet `String`, appellera la méthode puis détruira l'objet `String`. On peut également utiliser la propriété `String.length` sur un littéral de chaîne de caractère : -
console.log("j'ai mangé une pomme".length)
+```js
+console.log("j'ai mangé une pomme".length)
 // Affichera le nombre de caractères (y compris les blancs).
 // Dans ce cas, 20.
-
+``` -

Il est préférable d'utiliser des littéraux de chaînes de caractères s'il n'est pas spécifiquement nécessaire d'utiliser un objet String. Voir la page sur l'objet String pour plus de détails sur les objets String.

+Il est préférable d'utiliser des littéraux de chaînes de caractères s'il n'est pas spécifiquement nécessaire d'utiliser un objet `String`. Voir la page sur l'objet [`String`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/String) pour plus de détails sur les objets `String`. -

Avec ECMAScript 2015, on peut également utiliser des littéraux sous forme de gabarits (templates) en utilisant le caractère accent grave (`) comme séparateur. Les gabarits de chaînes de caractères sont semblables aux fonctionnalités d'interpolation existantes en Python, Perl, etc. Ces gabarits permettent d'utiliser des balises afin d'adapter la construction de chaînes.

+Avec ECMAScript 2015, on peut également utiliser des littéraux sous forme de _gabarits_ (_templates_) en utilisant le caractère accent grave (\`) comme séparateur. Les gabarits de chaînes de caractères sont semblables aux fonctionnalités d'interpolation existantes en Python, Perl, etc. Ces gabarits permettent d'utiliser des balises afin d'adapter la construction de chaînes. -
// Littéral simple pour une chaîne
+```js
+// Littéral simple pour une chaîne
 `Un saut de ligne '\n' en JavaScript.`
 
 // On peut écrire une chaîne sur plusieurs
@@ -562,149 +574,102 @@ var nom = "Robert", jour = "aujourd'hui";
 // On peut construire un préfixe HTTP
 // afin de construire plus facilement
 // des requêtes via des substitutions
-POST`http://toto.org/truc?a=${a}&b=${b}
+POST`http://toto.org/truc?a=${a}&b=${b}
      Content-Type: application/json
      X-Credentials: ${credentials}
      { "toto": ${toto},
-       "truc": ${truc}}`(myOnReadyStateChangeHandler);
- -

Utilisation des caractères spéciaux

- -

En plus des caractères « classiques », il est possible d'insérer des caractères spéciaux dans les chaînes de caractères. Voici un exemple :

- -
"une ligne \n une autre ligne"
-
- -

Voici un tableau listant les caractères spéciaux qu'il est possible d'utiliser dans les chaînes de caractères JavaScript :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caractères spéciaux en JavaScript
CaractèreSignification
\0Octet null
\bRetour arrière
\fSaut de page
\nNouvelle ligne
\rRetour chariot
\tTabulation
\vTabulation verticale
\'Apostrophe ou guillemet droit simple
\"Guillemet droit double
\\Barre oblique inversée
\XXXLe caractère dont l'encodage Latin-1 est spécifié grâce à, au plus, 3 chiffres octaux XXX entre 0 et 377. \251, par exemple représente le caractère copyright.
\xXXLe caractère dont l'encodage Latin-1 est spécifié par deux chiffres hexadécimaux entre 00 et FF. Ainsi, \xA9 correspond à la séquence hexadécimale pour le caractère copyright.
\uXXXXLe caractère Unicode spécifié par quatre chiffres hexadécimaux XXXX. Ainsi, \u00A9 correspondra à la séquence Unicode du symbole copyright. Voir {{anch("Unicode escape sequences")}}.
\u{XXXXX}Échappement de codes Unicode. Par exemple, \u{2F804} est équivalent à la combinaison d'échappements « simples » \uD87E\uDC04.
- -

Les caractères d'échappement

- -

Pour les caractères qui ne font pas partie du tableau précédent, les barres obliques inversées (backslash) les précédant sont ignorées. Cependant, cet usage est obsolète et devrait être évité.

- -

En précédant d'une barre oblique inversée les guillemets droits doubles, on échappe ces caractères. Voici un exemple :

- -
var citation = "Il lit \"Bug Jargal\" de V. Hugo.";
+       "truc": ${truc}}`(myOnReadyStateChangeHandler);
+```
+
+#### Utilisation des caractères spéciaux
+
+En plus des caractères « classiques », il est possible d'insérer des caractères spéciaux dans les chaînes de caractères. Voici un exemple :
+
+```js
+"une ligne \n une autre ligne"
+```
+
+Voici un tableau listant les caractères spéciaux qu'il est possible d'utiliser dans les chaînes de caractères JavaScript :
+
+| Caractère   | Signification                                                                                                                                                                                        |
+| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `\0`        | Octet null                                                                                                                                                                                           |
+| `\b`        | Retour arrière                                                                                                                                                                                       |
+| `\f`        | Saut de page                                                                                                                                                                                         |
+| `\n`        | Nouvelle ligne                                                                                                                                                                                       |
+| `\r`        | Retour chariot                                                                                                                                                                                       |
+| `\t`        | Tabulation                                                                                                                                                                                           |
+| `\v`        | Tabulation verticale                                                                                                                                                                                 |
+| `\'`        | Apostrophe ou guillemet droit simple                                                                                                                                                                 |
+| `\"`        | Guillemet droit double                                                                                                                                                                               |
+| `\\`        | Barre oblique inversée                                                                                                                                                                               |
+| `\XXX`      | Le caractère dont l'encodage Latin-1 est spécifié grâce à, au plus, 3 chiffres octaux _XXX_ entre 0 et 377. \251, par exemple représente le caractère copyright.                                     |
+|             |                                                                                                                                                                                                      |
+| `\xXX`      | Le caractère dont l'encodage Latin-1 est spécifié par deux chiffres hexadécimaux entre 00 et FF. Ainsi, \xA9 correspond à la séquence hexadécimale pour le caractère copyright.                      |
+|             |                                                                                                                                                                                                      |
+| `\uXXXX`    | Le caractère Unicode spécifié par quatre chiffres hexadécimaux _XXXX_. Ainsi, \u00A9 correspondra à la séquence Unicode du symbole copyright. Voir {{anch("Unicode escape sequences")}}. |
+| `\u{XXXXX}` | Échappement de codes Unicode. Par exemple, \u{2F804} est équivalent à la combinaison d'échappements « simples » \uD87E\uDC04.                                                                        |
+
+#### Les caractères d'échappement
+
+Pour les caractères qui ne font pas partie du tableau précédent, les barres obliques inversées (_backslash_) les précédant sont ignorées. Cependant, cet usage est obsolète et devrait être évité.
+
+En précédant d'une barre oblique inversée les guillemets droits doubles, on _échappe_ ces caractères. Voici un exemple :
+
+```js
+var citation = "Il lit \"Bug Jargal\" de V. Hugo.";
 console.log(citation);
-
+``` -

Le résultat serait alors

+Le résultat serait alors -
Il lit "Bug Jargal" de V. Hugo.
+ Il lit "Bug Jargal" de V. Hugo. -

Pour inclure une barre oblique inversée dans une chaîne de caractères, il faut aussi l'échapper. Par exemple, pour stocker le chemin c:\temp dans une chaîne de caractères, on utilisera le code suivant :

+Pour inclure une barre oblique inversée dans une chaîne de caractères, il faut aussi l'échapper. Par exemple, pour stocker le chemin `c:\temp` dans une chaîne de caractères, on utilisera le code suivant : -
var chemin = "c:\\temp";
-
+```js +var chemin = "c:\\temp"; +``` -

Il est également possible d'échapper des sauts de lignes de la même façon. La barre oblique inversée et le saut de ligne seront alors ignorés dans la valeur de la chaîne de caractères.

+Il est également possible d'échapper des sauts de lignes de la même façon. La barre oblique inversée et le saut de ligne seront alors ignorés dans la valeur de la chaîne de caractères. -
var str = "cette chaîne \
+```js
+var str = "cette chaîne \
 est cassée \
 sur plusieurs \
 lignes."
 console.log(str);   // cette chaîne est cassée sur plusieurs lignes.
-
+``` -

Avant ECMAScript 2015 (ES6), JavaScript ne disposait pas d'une syntaxe permettant de traiter les chaînes de caractères comme des contenus de fichier, il est possible d'ajouter un caractère de saut de ligne échappé et un saut de ligne en fin de ligne en utilisant cette façon :

+Avant ECMAScript 2015 (ES6), JavaScript ne disposait pas d'une syntaxe permettant de traiter les chaînes de caractères comme des contenus de fichier, il est possible d'ajouter un caractère de saut de ligne échappé et un saut de ligne en fin de ligne en utilisant cette façon : -
var poème =
+```js
+var poème =
 "Les roses sont rouges,\n\
 Les violettes sont bleues.\n\
 Le miel est sucré,\n\
 Et moi je suis."
-
+``` -

Grâce à ES6, on peut utiliser des littéraux de gabarits qui offrent de nouvelles fonctionnalités dont une qui permet d'avoir des chaînes de caractères écrites sur plusieurs lignes :

+Grâce à ES6, on peut utiliser des [littéraux de gabarits qui offrent de nouvelles fonctionnalités](https://tech.mozfr.org/post/2015/05/27/ES6-en-details-%3A-les-gabarits-de-chaines-de-caracteres) dont une qui permet d'avoir des chaînes de caractères écrites sur plusieurs lignes : -
var poème =
+```js
+var poème =
 `Les roses sont rouges,
 Les violettes sont bleues,
 Le miel est sucré,
-Et moi je suis.`
+Et moi je suis.` +``` -

En savoir plus

+## En savoir plus -

Ce chapitre est centré sur les bases de la syntaxe, les déclarations et les types utilisés en JavaScript. Pour en savoir plus sur les différents composants du langage, voir les chapitres suivants du guide:

+Ce chapitre est centré sur les bases de la syntaxe, les déclarations et les types utilisés en JavaScript. Pour en savoir plus sur les différents composants du langage, voir les chapitres suivants du guide: - +- [Contrôle du flux et gestion des erreurs](/fr/docs/Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs) +- [Boucles et itération](/fr/docs/Web/JavaScript/Guide/Boucles_et_itération) +- [Fonctions](/fr/docs/Web/JavaScript/Guide/Fonctions) +- [Expressions et opérateurs](/fr/docs/Web/JavaScript/Guide/Expressions_et_Opérateurs) -

Dans le chapitre suivant, on abordera les structures conditionnelles, permettant de diriger le flux d'instructions et la gestion des erreurs.

+Dans le chapitre suivant, on abordera les structures conditionnelles, permettant de diriger le flux d'instructions et la gestion des erreurs. -

{{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs")}}

+{{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Contrôle_du_flux_Gestion_des_erreurs")}} diff --git a/files/fr/web/javascript/guide/index.md b/files/fr/web/javascript/guide/index.md index ef708eef08..bcf109d502 100644 --- a/files/fr/web/javascript/guide/index.md +++ b/files/fr/web/javascript/guide/index.md @@ -6,164 +6,131 @@ tags: - JavaScript translation_of: Web/JavaScript/Guide --- -
{{jsSidebar("JavaScript Guide")}}
- -

Le guide JavaScript illustre comment utiliser JavaScript et fournit un aperçu des fonctionnalités du langage. Pour des informations exhaustives à propos des fonctionnalités du langage, voir la référence JavaScript.

- -

Chapitres

- -

Ce guide est divisé en plusieurs chapitres :

- -

Introduction

- - - -

Grammaire et types

- - - -

Contrôle du flux et gestion des erreurs

- - - -

Itération et boucles

- - - -

Fonctions

- - - -

Expressions et opérateurs

- - - -

Nombres et dates

- - - -

Formatage du texte

- - - - -

Collections indexées

- - - -

Collections avec clés - Map

- - - -

Utiliser les objets

- - - -

Le modèle objet JavaScript en détails

- - - -

Promesses

- - - -

Itérateurs et générateurs

- - - -

Métaprogrammation

- - - -

Modules JavaScript

- - - -

{{Next("Web/JavaScript/Guide/Introduction")}}

+{{jsSidebar("JavaScript Guide")}} + +Le guide JavaScript illustre comment utiliser [JavaScript](/fr/docs/Web/JavaScript) et fournit un aperçu des fonctionnalités du langage. Pour des informations exhaustives à propos des fonctionnalités du langage, voir la [référence JavaScript](/fr/docs/Web/JavaScript/Reference). + +## Chapitres + +Ce guide est divisé en plusieurs chapitres : + +## [Introduction](/fr/docs/Web/JavaScript/Guide/Introduction) + +- [À propos de ce guide](/fr/docs/Web/JavaScript/Guide/Introduction#o.c3.b9_trouver_des_informations_concernant_javascript) +- [À propos de JavaScript](/fr/docs/Web/JavaScript/Guide/Introduction#qu'est-ce_que_javascript_.3f) +- [JavaScript et Java](/fr/docs/Web/JavaScript/Guide/Introduction#javascript_and_java) +- [ECMAScript](/fr/docs/Web/JavaScript/Guide/Introduction#javascript_and_the_ecmascript_specification) +- [Les outils](/fr/docs/Web/JavaScript/Guide/Introduction#d.c3.a9marrer_avec_javascript) +- [Hello World]() + +## [Grammaire et types](/fr/docs/Web/JavaScript/Guide/Grammar_and_types) + +- [Syntaxe de base et commentaires](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#les_bases_du_langage) +- [Déclarations](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#d.c3.a9clarations) +- [Portées des variables](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#les_port.c3.a9es_de_variables) +- [Remontée des variables]() +- [Structures de données et types](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#structures_de_donn.c3.a9es_et_types) +- [Littéraux](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#litt.c3.a9raux) + +## [Contrôle du flux et gestion des erreurs](/fr/docs/Web/JavaScript/Guide/Control_flow_and_error_handling) + +- [`if...else`](/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs#Instruction_if...else) +- [`switch`](/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs#L%27instruction_switch) +- [`try/catch/throw`](/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs#L%27instruction_try...catch) +- [Objets `Error`](/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs#Utiliser_les_objets_Error) + +## [Itération et boucles](/fr/docs/Web/JavaScript/Guide/Loops_and_iteration) + +- [`for`](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_for) +- [`while`](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_while) +- [`do...while`](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_do...while) +- [`break`](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_break)/[continue](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_continue) +- [`for..in`](/fr/docs/Web/JavaScript/Guide/Boucles_et_it%C3%A9ration#L%27instruction_for...in) +- [`for..of`](/fr/docs/Web/JavaScript/Guide/Loops_and_iteration#l'instruction_for...of) + +## [Fonctions](/fr/docs/Web/JavaScript/Guide/Functions) + +- [Définir des fonctions](/fr/docs/Web/JavaScript/Guide/Functions#d.c3.a9finir_des_fonctions) +- [Appeler des fonctions](/fr/docs/Web/JavaScript/Guide/Functions#appeler_des_fonctions) +- [Portées des fonctions](/fr/docs/Web/JavaScript/Guide/Functions#port.c3.a9e_d'une_fonction) +- [Fermetures (_closures_)]() +- [Arguments](/fr/docs/Web/JavaScript/Guide/Functions#utiliser_l'objet_arguments) et [paramètres](/fr/docs/Web/JavaScript/Guide/Functions#param.c3.a8tres_des_fonctions) +- [Fonctions fléchées](/fr/docs/Web/JavaScript/Guide/Functions#fonctions_fl.c3.a9ch.c3.a9es) + +## [Expressions et opérateurs](/fr/docs/Web/JavaScript/Guide/Expressions_and_Operators) + +- [Affectation](/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Op.C3.A9rateurs_d%27affectation) et [comparaisons](/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Op.C3.A9rateurs_de_comparaison) +- [Opérateurs arithmétiques](/fr/docs/Web/JavaScript/Guide/Expressions_and_Operators#op.c3.a9rateurs_arithm.c3.a9tiques) +- [Opérateurs binaires](/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Op.C3.A9rateurs_binaires) et [logiques](/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Op.C3.A9rateurs_logiques) +- [Opérateur conditionnel](/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Op.C3.A9rateur_conditionnel_ternaire) + +## [Nombres et dates](/fr/docs/Web/JavaScript/Guide/Numbers_and_dates) + +- [Littéraux numériques](/fr/docs/Web/JavaScript/Guide/Numbers_and_dates#nombres) +- [Objet `Number`](/fr/docs/Web/JavaScript/Guide/Numbers_and_dates#l'objet_number) +- [Objet `Math`](/fr/docs/Web/JavaScript/Guide/Numbers_and_dates#l'objet_math) +- [Objet `Date`](/fr/docs/Web/JavaScript/Guide/Numbers_and_dates#l'objet_date) + +## [Formatage du texte](/fr/docs/Web/JavaScript/Guide/Text_formatting) + +- [Littéraux de chaînes de caractères](/fr/docs/Web/JavaScript/Guide/Text_formatting#les_litt.c3.a9raux_de_cha.c3.aenes_de_caract.c3.a8res) +- [Objet `String`](/fr/docs/Web/JavaScript/Guide/Text_formatting#les_objets_string) +- [Littéraux de gabarits](/fr/docs/Web/JavaScript/Guide/Text_formatting#les_litt%c3%a9raux_de_gabarits) +- [Internationalisation](/fr/docs/Web/JavaScript/Guide/Text_formatting#internationalisation) +- [Expressions rationnelles](/fr/docs/Web/JavaScript/Guide/Text_formatting#les_expressions_rationnelles) + +## [Collections indexées](/fr/docs/Web/JavaScript/Guide/Indexed_collections#le_type_array) + +- [Tableaux](/en-US/docs/Web/JavaScript/Guide/Indexed_collections#array_object) +- [Tableaux typés](/fr/docs/Web/JavaScript/Guide/Indexed_collections#les_tableaux_typ.c3.a9s) + +## [Collections avec clés](/fr/docs/Web/JavaScript/Guide/Keyed_collections) - [`Map`](/fr/docs/Web/JavaScript/Guide/Keyed_collections#le_type_map) + +- [`WeakMap`](/en-US/docs/Web/JavaScript/Guide/Keyed_collections#weakmap_object) +- [`Set`](/fr/docs/Web/JavaScript/Guide/Keyed_collections#le_type_set) +- [`WeakSet`](/fr/docs/Web/JavaScript/Guide/Keyed_collections#le_type_weakset) + +## [Utiliser les objets](/fr/docs/Web/JavaScript/Guide/Working_with_Objects) + +- [Objets et propriétés](/fr/docs/Web/JavaScript/Guide/Working_with_Objects#les_objets_et_les_propri.c3.a9t.c3.a9s) +- [Création d'objets](/fr/docs/Web/JavaScript/Guide/Working_with_Objects#cr.c3.a9er_de_nouveaux_objets) +- [Définition de méthodes](/fr/docs/Web/JavaScript/Guide/Working_with_Objects#d.c3.a9finir_des_m.c3.a9thodes) +- [Accesseurs et mutateurs]() + +## [Le modèle objet JavaScript en détails](/fr/docs/Web/JavaScript/Guide/Details_of_the_Object_Model) + +- [Modèle à base de prototypes](/fr/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#langages_de_prototypes_.2f_langages_de_classes) +- [Créer des hiérarchies d'objets](/fr/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#la_cr.c3.a9ation_de_la_hi.c3.a9rarchie) +- [Héritage](/fr/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#l'h.c3.a9ritage_de_propri.c3.a9t.c3.a9s_.3a_les_subtilit.c3.a9s) + +## [Promesses](/fr/docs/Web/JavaScript/Guide/Using_promises) + +- [Garanties](/fr/docs/Web/JavaScript/Guide/Using_promises#garanties) +- [Chaînage](/fr/docs/Web/JavaScript/Guide/Using_promises#cha%c3%aenage_des_promesses) +- [Propagation des erreurs](/fr/docs/Web/JavaScript/Guide/Using_promises#propagation_des_erreurs) +- [Composition](/fr/docs/Web/JavaScript/Guide/Using_promises#composition) +- [Gestion du temps](/fr/docs/Web/JavaScript/Guide/Using_promises#gestion_du_temps) + +## [Itérateurs et générateurs](/fr/docs/Web/JavaScript/Guide/Iterators_and_Generators) + +- [Itérateurs](/fr/docs/Web/JavaScript/Guide/Iterators_and_Generators#it.c3.a9rateurs) +- [Itérables](/fr/docs/Web/JavaScript/Guide/Iterators_and_Generators#it.c3.a9rables) +- [Générateurs](/fr/docs/Web/JavaScript/Guide/Iterators_and_Generators#g.c3.a9n.c3.a9rateurs) + +## [Métaprogrammation](/fr/docs/Web/JavaScript/Guide/Meta_programming) + +- [`Proxy`](/fr/docs/Web/JavaScript/Guide/Meta_programming#les_proxies) +- [Gestionnaires et trappes](/fr/docs/Web/JavaScript/Guide/Meta_programming#les_gestionnaires_et_les_trappes) +- [Proxy révocable](/fr/docs/Web/JavaScript/Guide/Meta_programming#proxies_r.c3.a9vocables) +- [`Reflect`](/fr/docs/Web/JavaScript/Guide/Meta_programming#r.c3.a9flexion) + +## [Modules JavaScript](/fr/docs/Web/JavaScript/Guide/Modules) + +- [Exporter](/fr/docs/Web/JavaScript/Guide/Modules#exporting_module_features) +- [Importer](/fr/docs/Web/JavaScript/Guide/Modules#importing_features_into_your_script) +- [Exports par défaut](/fr/docs/Web/JavaScript/Guide/Modules#default_exports_versus_named_exports) +- [Renommage](/fr/docs/Web/JavaScript/Guide/Modules#renaming_imports_and_exports) +- [Agrégation de modules](/fr/docs/Web/JavaScript/Guide/Modules#aggregating_modules) +- [Chargement dynamique de modules](/fr/docs/Web/JavaScript/Guide/Modules#dynamic_module_loading) + +{{Next("Web/JavaScript/Guide/Introduction")}} diff --git a/files/fr/web/javascript/guide/indexed_collections/index.md b/files/fr/web/javascript/guide/indexed_collections/index.md index 739de18bcc..8e1f789563 100644 --- a/files/fr/web/javascript/guide/indexed_collections/index.md +++ b/files/fr/web/javascript/guide/indexed_collections/index.md @@ -8,131 +8,139 @@ tags: translation_of: Web/JavaScript/Guide/Indexed_collections original_slug: Web/JavaScript/Guide/Collections_indexées --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Expressions_régulières", "Web/JavaScript/Guide/Collections_avec_clés")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Expressions_régulières", "Web/JavaScript/Guide/Collections_avec_clés")}} -

Ce chapitre présente les collections de données qui sont ordonnées par un indice. Cela inclue les tableaux et les objets semblables à des tableaux que sont les objets {{jsxref("Array")}} et les objets {{jsxref("TypedArray")}}.

+Ce chapitre présente les collections de données qui sont ordonnées par un indice. Cela inclue les tableaux et les objets semblables à des tableaux que sont les objets {{jsxref("Array")}} et les objets {{jsxref("TypedArray")}}. -

Le type Array

+## Le type `Array` -

Un tableau (array en anglais) est un ensemble ordonné de valeurs auxquelles on peut faire référence avec un nom et un indice. Par exemple, si on a un tableau emp qui contient les noms d'employés indexés par leurs numéros d'employé, on pourrait utiliser emp[1] pour accéder à l'employé n°1, emp[2] pour accéder au deuxième et ainsi de suite.

+Un _tableau_ (_array_ en anglais) est un ensemble ordonné de valeurs auxquelles on peut faire référence avec un nom et un indice. Par exemple, si on a un tableau `emp` qui contient les noms d'employés indexés par leurs numéros d'employé, on pourrait utiliser `emp[1]` pour accéder à l'employé n°1, `emp[2]` pour accéder au deuxième et ainsi de suite. -

JavaScript ne possède pas de type particulier pour représenter un tableau de données. En revanche, il est possible d'utiliser l'objet natif Array ainsi que ses méthodes pour manipuler des tableaux. L'objet Array possède plusieurs méthodes qui permettent de manipuler les tableaux pour les fusionner, les inverser, les trier, etc. Il possède une propriété de longueur ainsi que d'autres propriétés qui peuvent être utilisées avec les expressions rationnelles.

+JavaScript ne possède pas de type particulier pour représenter un tableau de données. En revanche, il est possible d'utiliser l'objet natif `Array` ainsi que ses méthodes pour manipuler des tableaux. L'objet `Array` possède plusieurs méthodes qui permettent de manipuler les tableaux pour les fusionner, les inverser, les trier, etc. Il possède une propriété de longueur ainsi que d'autres propriétés qui peuvent être utilisées avec les expressions rationnelles. -

Créer un tableau

+### Créer un tableau -

Les instructions qui suivent sont équivalentes et permettent de créer le même tableau :

+Les instructions qui suivent sont équivalentes et permettent de créer le même tableau : -
var arr = new Array(élément0, élément1, ..., élémentN);
+```js
+var arr = new Array(élément0, élément1, ..., élémentN);
 var arr = Array(élément0, élément1, ..., élémentN);
 var arr = [élément0, élément1, ..., élémentN];
-
+``` -

élément0, élément1, ..., élémentN est une liste de valeurs qui formeront les éléments du tableau. Lorsque ces valeurs sont définies, le tableau initialisera la valeur des éléments correspondants. La propriété length du tableau permet de connaître le nombre d'arguments du tableau.

+`élément0, élément1, ..., élémentN` est une liste de valeurs qui formeront les éléments du tableau. Lorsque ces valeurs sont définies, le tableau initialisera la valeur des éléments correspondants. La propriété `length` du tableau permet de connaître le nombre d'arguments du tableau. -

Parmi les instructions précédentes, une utilise des crochets, on appelle ceci un « littéral de tableau » ou un « initialisateur de tableau ». Cette notation est plus courte que les autres et est souvent préférée pour sa lisibilité. Pour plus d'informations sur cette notation, voir la page sur les littéraux de tableaux pour plus détails.

+Parmi les instructions précédentes, une utilise des crochets, on appelle ceci un « littéral de tableau » ou un « initialisateur de tableau ». Cette notation est plus courte que les autres et est souvent préférée pour sa lisibilité. Pour plus d'informations sur cette notation, voir la page sur [les littéraux de tableaux](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire) pour plus détails. -

Afin de créer un tableau de longueur non nulle mais sans aucun élément initialisé, on peut utiliser l'une des deux instructions suivantes :

+Afin de créer un tableau de longueur non nulle mais sans aucun élément initialisé, on peut utiliser l'une des deux instructions suivantes : -
var arr = new Array(longueurTableau);
+```js
+var arr = new Array(longueurTableau);
 var arr = Array(longueurTableau);
 
 // Cela aura le même effet que :
 var arr = [];
 arr.length = longueurTableau;
-
+``` -
-

Note : Dans le code ci-dessus longueurTableau doit être un nombre. Si ce n'est pas le cas, un tableau d'un seul élément (ayant la valeur fournie) sera créé. arr.length renverra longueurTableau, mais le tableau ne contiendra que des éléments « vides » non définis. Si on utilise une boucle {{jsxref("Instructions/for...in")}} sur ce tableau, on ne trouvera aucun élément.

-
+> **Note :** Dans le code ci-dessus `longueurTableau` doit être un nombre. Si ce n'est pas le cas, un tableau d'un seul élément (ayant la valeur fournie) sera créé. `arr.length` renverra `longueurTableau`, mais le tableau ne contiendra que des éléments « vides » non définis. Si on utilise une boucle {{jsxref("Instructions/for...in")}} sur ce tableau, on ne trouvera aucun élément. -

On a vu comment créer un tableau, il est aussi possible d'affecter des tableaux à des propriétés d'objets (que ce soit lors de leur création ou pour les modifier) :

+On a vu comment créer un tableau, il est aussi possible d'affecter des tableaux à des propriétés d'objets (que ce soit lors de leur création ou pour les modifier) : -
var obj = {};
+```js
+var obj = {};
 // ...
 obj.prop = [élément0, élément1, ..., élémentN];
 
 // OU
 var obj = {prop: [élément0, élément1, ...., élémentN]}
-
+``` -

Si on souhaite initialiser un tableau avec un seul élément et que cet élément est un nombre, il est nécessaire d'utiliser la notation littérale. En effet, si un nombre est passé à la fonction Array() pour construire le tableau, celui-ci sera interprété comme une longueur et non comme la valeur d'un élément.

+Si on souhaite initialiser un tableau avec un seul élément et que cet élément est un nombre, il est nécessaire d'utiliser la notation littérale. En effet, si un nombre est passé à la fonction `Array()` pour construire le tableau, celui-ci sera interprété comme une longueur et non comme la valeur d'un élément. -
var arr1 = [42];      // Le tableau créé contient bien un élément qui vaut 42
+```js
+var arr1 = [42];      // Le tableau créé contient bien un élément qui vaut 42
 var arr2 = Array(42); // Crée un tableau sans élément
                       // mais dont arr.length vaut 42
 
 // Le code ci-dessus est équivalent à
 var arr = [];
 arr.length = 42 ;
-
+``` -

Si N est un nombre décimal dont la partie fractionnaire n'est pas nulle, tout appel à Array(N) renverra une exception RangeError. Par exemple :

+Si N est un nombre décimal dont la partie fractionnaire n'est pas nulle, tout appel à `Array(N)` renverra une exception `RangeError`. Par exemple : -
var arr = Array(9.3);  // RangeError: Invalid array length
-
+```js +var arr = Array(9.3); // RangeError: Invalid array length +``` -

Si on souhaite créer un tableau d'un seul élément et ce quel que soit le type de données, il sera préférable d'utiliser les littéraux de tableaux. Sinon, on peut créer un tableau vide puis lui ajouter un seul élément.

+Si on souhaite créer un tableau d'un seul élément et ce quel que soit le type de données, il sera préférable d'utiliser les littéraux de tableaux. Sinon, on peut créer un tableau vide puis lui ajouter un seul élément. -

Avec ES2015 (anciennement ECMAScript 6), on peut utiliser la méthode {{jsxref("Array.of")}} afin de créer un tableau composé d'un seul élément :

+Avec ES2015 (anciennement ECMAScript 6), on peut utiliser la méthode {{jsxref("Array.of")}} afin de créer un tableau composé d'un seul élément : -
let monTableau = Array.of("Joconde"); // monTableau contient uniquement "Joconde"
+```js +let monTableau = Array.of("Joconde"); // monTableau contient uniquement "Joconde" +``` -

Remplir un tableau

+### Remplir un tableau -

Il est possible de remplir un tableau en affectant des valeurs à ses éléments. Par exemple :

+Il est possible de remplir un tableau en affectant des valeurs à ses éléments. Par exemple : -
var emp = [];
+```js
+var emp = [];
 emp[0] = "Casey Jones";
 emp[1] = "Phil Lesh";
 emp[2] = "August West";
-
+``` -
-

Note : Si on utilise une valeur non entière pour désigner un élément du tableau, cela créera une propriété sur l'objet plutôt qu'un élément du tableau :

+> **Note :** Si on utilise une valeur non entière pour désigner un élément du tableau, cela créera une propriété sur l'objet plutôt qu'un élément du tableau : +> +> ```js +> var arr = []; +> arr[3.4] = "Oranges"; +> console.log(arr.length); // 0 +> console.log(arr.hasOwnProperty(3.4)); // true +> ``` -
var arr = [];
-arr[3.4] = "Oranges";
-console.log(arr.length);                // 0
-console.log(arr.hasOwnProperty(3.4));   // true
-
-
+Il est aussi possible de remplir un tableau directement lors de sa création : -

Il est aussi possible de remplir un tableau directement lors de sa création :

- -
var monTableau = new Array("Coucou", maVar, 3.14159);
+```js
+var monTableau = new Array("Coucou", maVar, 3.14159);
 var monTableau = ["Mangue", "Pomme", "Orange"]
-
- -

Faire référence aux éléments d'un tableau

+``` -

Il est possible de faire référence aux éléments d'un tableau en utilisant un nombre ordinal lié à l'élément. Ainsi, si on définit le tableau suivant :

+### Faire référence aux éléments d'un tableau -
var monTableau = ["Air", "Eau", "Feu"];
-
+Il est possible de faire référence aux éléments d'un tableau en utilisant un nombre ordinal lié à l'élément. Ainsi, si on définit le tableau suivant : -

On pourra accéder au premier élément du tableau en utilisant monTableau[0], on accèdera au deuxième élément avec monTableau[1]. Les indices des éléments sont comptés à partir de 0.

+```js +var monTableau = ["Air", "Eau", "Feu"]; +``` -
-

Note : Les crochets peuvent également être utilisés pour faire référence aux propriétés du tableau (les tableaux sont des objets JavaScript à part entière). On pourra donc avoir :

+On pourra accéder au premier élément du tableau en utilisant `monTableau[0]`, on accèdera au deuxième élément avec `monTableau[1]`. Les indices des éléments sont comptés à partir de 0. -
var arr = ["un", "deux", "trois"];
-arr[2];         // "trois" - on accède à un élément du tableau
-arr["length"];  // 3 - on accède à une propriété du tableau
-
-
+> **Note :** Les crochets peuvent également être utilisés pour faire référence aux propriétés du tableau (les tableaux sont des objets JavaScript à part entière). On pourra donc avoir : +> +> ```js +> var arr = ["un", "deux", "trois"]; +> arr[2]; // "trois" - on accède à un élément du tableau +> arr["length"]; // 3 - on accède à une propriété du tableau +> ``` -

Comprendre la propriété length

+### Comprendre la propriété `length` -

En termes d'implémentation, les tableaux JavaScript stockent leurs éléments comme des propriétés normales, l'indice étant utilisé comme nom pour désigner la valeur de la propriété. La propriété length est elle un peu spéciale : elle renvoie toujours la valeur du plus grand indice du tableau plus 1. Dans l'exemple suivant, "Biduche" est placé à l'indice 30, chats.length renvoie donc 30 + 1). On rappelle que les indices des tableaux JavaScript commencent à partir de 0 et pas à partir de 1. Cela signifie que la valeur de la propriété length sera plus grande, de 1, par rapport à l'indice le plus élevé :

+En termes d'implémentation, les tableaux JavaScript stockent leurs éléments comme des propriétés normales, l'indice étant utilisé comme nom pour désigner la valeur de la propriété. La propriété `length` est elle un peu spéciale : elle renvoie toujours la valeur du plus grand indice du tableau plus 1. Dans l'exemple suivant, "Biduche" est placé à l'indice 30, `chats.length` renvoie donc 30 + 1). On rappelle que les indices des tableaux JavaScript commencent à partir de 0 et pas à partir de 1. Cela signifie que la valeur de la propriété `length` sera plus grande, de 1, par rapport à l'indice le plus élevé : -
var chats = [];
+```js
+var chats = [];
 chats[30] = ['Biduche'];
 console.log(chats.length); // 31
-
+``` -

Il est aussi possible d'affecter une valeur à la propriété length. Si la valeur fournie est inférieure au nombre d'éléments stockés, cela tronquera la tableau. Si la valeur est 0, cela videra le tableau :

+Il est aussi possible d'affecter une valeur à la propriété `length`. Si la valeur fournie est inférieure au nombre d'éléments stockés, cela tronquera la tableau. Si la valeur est 0, cela videra le tableau : -
var chats = ['Marie', 'Toulouse', 'Berlioz'];
+```js
+var chats = ['Marie', 'Toulouse', 'Berlioz'];
 console.log(chats.length); // 3
 
 chats.length = 2;
@@ -142,47 +150,53 @@ chats.length = 0;
 console.log(chats); // affiche [], le tableau est vide
 
 chats.length = 3;
-console.log(chats); // [ <3 empty slots> ]
-
+console.log(chats); // [ <3 empty slots> ] +``` -

Parcourir un tableau

+### Parcourir un tableau -

Un tableau est une structure de données qui se prête particulièrement aux boucles, on pourra utiliser ces dernières pour parcourir les éléments du tableau de façon itérative. Voici un exemple de parcours simple :

+Un tableau est une structure de données qui se prête particulièrement aux boucles, on pourra utiliser ces dernières pour parcourir les éléments du tableau de façon itérative. Voici un exemple de parcours simple : -
var couleurs = ['rouge', 'vert', 'bleu'];
-for (var i = 0; i < couleurs.length; i++) {
+```js
+var couleurs = ['rouge', 'vert', 'bleu'];
+for (var i = 0; i < couleurs.length; i++) {
   console.log(couleurs[i]);
 }
-
+``` -

Si on sait qu'aucun des éléments ne vaut false dans un contexte booléen (par exemple, si le tableau contient des nœuds du DOM), on peut utiliser une formulation encore plus concise :

+Si on sait qu'aucun des éléments ne vaut `false` dans un contexte booléen (par exemple, si le tableau contient des nœuds du [DOM](/fr/docs/Web/API/Référence_du_DOM_Gecko)), on peut utiliser une formulation encore plus concise : -
var divs = document.getElementsByTagName('div');
+```js
+var divs = document.getElementsByTagName('div');
 for (var i = 0, div; div = divs[i]; i++) {
   /* On effectue un traitement sur les  div */
 }
-
+``` -

Cette syntaxe permet d'éviter d'avoir à vérifier la longueur du tableau et de gérer l'affectation de la variable div pour chaque élément du tableau.

+Cette syntaxe permet d'éviter d'avoir à vérifier la longueur du tableau et de gérer l'affectation de la variable `div` pour chaque élément du tableau. -

La méthode {{jsxref("Array.forEach", "forEach()")}} fournit une autre méthode pour parcourir un tableau :

+La méthode {{jsxref("Array.forEach", "forEach()")}} fournit une autre méthode pour parcourir un tableau : -
var couleurs = ['rouge', 'vert', 'bleu'];
+```js
+var couleurs = ['rouge', 'vert', 'bleu'];
 couleurs.forEach(function(couleur) {
   console.log(couleur);
 });
-
+``` -

Avec les fonctions fléchées (apparues avec ES6 / ECMAScript 2015), on peut obtenir un code plus concis :

+Avec les fonctions fléchées (apparues avec ES6 / ECMAScript 2015), on peut obtenir un code plus concis : -
var couleurs = ['rouge', 'vert', 'bleu'];
-couleurs.forEach(couleur => console.log(couleur));
+```js +var couleurs = ['rouge', 'vert', 'bleu']; +couleurs.forEach(couleur => console.log(couleur)); +``` -

La fonction passée comme argument à forEach() est exécutée une fois pour chacun des éléments du tableau (l'élément du tableau sera passé comme argument de cette fonction). Les éléments qui n'ont pas de valeur affectée ne sont pas parcourus lors d'une boucle forEach.

+La fonction passée comme argument à `forEach()` est exécutée une fois pour chacun des éléments du tableau (l'élément du tableau sera passé comme argument de cette fonction). Les éléments qui n'ont pas de valeur affectée ne sont pas parcourus lors d'une boucle `forEach`. -

On notera que les éléments ne sont pas parcourus lorsqu'ils n'ont pas eu de valeur d'affectée. Cependant, si on a affecté la valeur {{jsxref("undefined")}} de façon explicite à un élément, il sera pris en compte lors de la boucle :

+On notera que les éléments ne sont pas parcourus lorsqu'ils n'ont pas eu de valeur d'affectée. Cependant, si on a affecté la valeur {{jsxref("undefined")}} de façon explicite à un élément, il sera pris en compte lors de la boucle : -
var tableau = ['premier', 'deuxième', , 'quatrième'];
+```js
+var tableau = ['premier', 'deuxième', , 'quatrième'];
 
 // affiche ['premier', 'deuxième', 'quatrième'];
 tableau.forEach(function(élément) {
@@ -196,231 +210,264 @@ var tableau = ['premier', 'deuxième', undefined, 'quatrième'];
 // renvoie ['premier', 'deuxième', undefined, 'quatrième'];
 tableau.forEach(function(élément) {
   console.log(élément);
-})
- -

Étant donné que les éléments des tableaux sont stockés comme des propriétés classiques, il n'est pas conseillé d'utiliser des boucles {{jsxref("Instructions/for...in")}} pour parcourir les tableaux car cela listerait également les propriétés énumérables (en plus des éléments).

- -

Méthodes des tableaux

- -

L'objet Array possède les méthodes suivantes :

- -
    -
  • {{jsxref("Array.concat", "concat()")}} permet de fusionner deux ou plusieurs tableaux et de renvoyer le résultat dans un nouveau tableau : -
    var monTableau = new Array("1", "2", "3");
    -monTableau = monTableau.concat("a", "b", "c"); // monTableau is now ["1", "2", "3", "a", "b", "c"]
    -
    -
  • -
  • {{jsxref("Array.join", "join(délimiteur = ',')")}} permet de fusionner les éléments du tableau en une chaîne de caractères : -
    var monTableau = new Array("Air", "Eau", "Feu");
    -var list = monTableau.join(" - "); // list sera "Air - Eau - Feu"
    -
    -
  • -
  • {{jsxref("Array.push", "push()")}} permet d'ajouter un ou plusieurs éléments à la fin d'un tableau et renvoie la longueur du tableau : -
    var monTableau = new Array("1", "2");
    -monTableau.push("3"); // monTableau vaut désormais ["1", "2", "3"]
    -
    -
  • -
  • {{jsxref("Array.pop", "pop()")}} permet de retirer le dernier élément (le plus à droite) du tableau et renvoie cet élément : -
    var monTableau = new Array("1", "2", "3");
    -var dernier = monTableau.pop(); // monTableau vaut désormais ["1", "2"], dernier = "3"
    -
    -
  • -
  • {{jsxref("Array.shift", "shift()")}} retire le premier élément d'un tableau (le plus à gauche) et renvoie cet élément : -
    var monTableau = new Array("1", "2", "3");
    -var premier = monTableau.shift(); // monTableau vaut désormais ["2", "3"], premier vaut "1"
    -
    -
  • -
  • {{jsxref("Array.unshift", "unshift()")}} ajoute un ou plusieurs éléments au début du tableau et renvoie la longueur du tableau ainsi modifié : -
    var monTableau = new Array("1", "2", "3");
    -monTableau.unshift("4", "5"); // monTableau devient ["4", "5", "1", "2", "3"]
    -
  • -
  • {{jsxref("Array.slice", "slice(indice_début, indice_fin)")}} extrait une portion d'un tableau et renvoie un nouveau tableau avec ce fragment : -
    var monTableau = new Array ("a", "b", "c", "d", "e");
    -monTableau = monTableau.slice(1, 4); // extrait les éléments entre l'indice 1 et jusqu'à
    -                                     // celui d'indice 3 (4-1), elle renvoie
    -                                     // [ "b", "c", "d"]
    -
    -
  • -
  • {{jsxref("Array.splice", "splice(indice, nbASupprimer, ajouterElement1, ajouterElement2, ...)")}} retire des éléments du tableau et (éventuellement) les remplace : -
    var monTableau = new Array ("1", "2", "3", "4", "5");
    -monTableau.splice(1, 3, "a", "b", "c", "d"); // monTableau vaut désormais ["1", "a", "b", "c", "d", "5"]
    -  // Le code remplace à partir de l'indice 1 (où il y avait la valeur "2"), supprime trois éléments puis
    -  // insère les arguments fournis à la suite.
    -
    -
  • -
  • {{jsxref("Array.reverse", "reverse()")}} transpose les éléments du tableau à même ce tableau : le premier élément devient le dernier, le dernier devient le premier et ainsi de suite : -
    var monTableau = new Array ("1", "2", "3");
    -monTableau.reverse(); // monTableau vaut maintenant [ "3", "2", "1" ]
    -
    -
  • -
  • {{jsxref("Array.sort", "sort()")}} trie les éléments d'un tableau à même ce tableau : -
    var monTableau = new Array("Air", "Feu", "Eau");
    -monTableau.sort(); // trie le tableau [ "Air", "Eau", "Feu" ]
    -
    - -

    sort() peut également utiliser une fonction de rappel (callback) qui détermine comment les éléments sont comparés. La fonction compare deux arguments et renvoie une valeur selon les règles suivantes :

    - -
      -
    • Si a est inférieur à b selon l'ordre, renvoie -1 (ou un autre nombre négatif)
    • -
    • Si a est supérieur à b selon l'ordre, renvoie 1 (ou un autre nombre positif)
    • -
    • Si a et b sont considérés égaux, renvoie 0.
    • -
    - -

    Par exemple, on peut utilise la fonction suivante pour trier par rapport à la dernière lettre du mot :

    - -
    var sortFn = function(a, b){
    -  if (a[a.length - 1] < b[b.length - 1]) return -1;
    -  if (a[a.length - 1] > b[b.length - 1]) return 1;
    -  if (a[a.length - 1] == b[b.length - 1]) return 0;
    -}
    -monTableau.sort(sortFn); // le tableau devient = ["Air","Feu","Eau"]
    -
  • -
- -

Du code permettant d'émuler ces fonctions est disponible sur chacune des pages (polyfill). Le support natif de ces fonctionnalités dans les différents navigateurs peut être trouvé ici.

- -
    -
  • {{jsxref("Array.indexOf", "indexOf(élémentRecherché[, indiceDépart])")}} recherche la valeur élémentRecherché dans le tableau et renvoie l'indice du premier élément qui correspond : - -
    var a = ['a', 'b', 'a', 'b', 'a'];
    -console.log(a.indexOf('b'));    // Affiche 1
    -// On recherche après la première correspondance :
    -console.log(a.indexOf('b', 2)); // Affiche 3
    -console.log(a.indexOf('z'));    // Affiche -1 car 'z' n'a pas été trouvé
    -
    -
  • -
  • {{jsxref("Array.lastIndexOf", "lastIndexOf(élémentRecherché[, fromIndex])")}} fonctionne comme indexOf, mais recherche à partir de la fin du tableau : -
    var a = ['a', 'b', 'c', 'd', 'a', 'b'];
    -console.log(a.lastIndexOf('b'));    // Affiche 5
    -// On continue la recherche après la première correspondance en fin de tableau
    -console.log(a.lastIndexOf('b', 4)); // Affiche 1
    -console.log(a.lastIndexOf('z'));    // Affiche -1
    -
    -
  • -
  • {{jsxref("Array.forEach", "forEach(callback[, objetThis])")}} exécute la fonction callback sur chaque élément du tableau. -
    var a = ['a', 'b', 'c'];
    -a.forEach(console.log); // Affichera la valeur de chaque élément dans la console
    -
    -
  • -
  • {{jsxref("Array.map", "map(callback[, objetThis])")}} renvoie un nouveau tableau dont les éléments sont les images des éléments du tableau courant par la fonction callback : -
    var a1 = ['a', 'b', 'c'];
    -var a2 = a1.map(function(item) { return item.toUpperCase(); });
    -console.log(a2); // affichera A,B,C dans la console
    -
    -
  • -
  • {{jsxref("Array.filter", "filter(callback[, objetThis])")}} renvoie un nouveau tableau qui contient les éléments du tableau courant pour lesquels callback a renvoyé true. -
    var a1 = ['a', 10, 'b', 20, 'c', 30];
    -var a2 = a1.filter(function(item) { return typeof item == 'number'; });
    -console.log(a2); // Affichera 10,20,30 dans la console
    -
    -
  • -
  • {{jsxref("Array.every", "every(callback[, objetThis])")}} renvoie true si callback renvoie true pour chaque élément du tableau. -
    function isNumber(value){
    -  return typeof value === 'number';
    -}
    -var a1 = [1, 2, 3];
    -console.log(a1.every(isNumber)); // affiche true
    -var a2 = [1, '2', 3];
    -console.log(a2.every(isNumber)); // affiche false
    -
    -
  • -
  • {{jsxref("Array.some", "some(callback[, objetThis])")}} renvoie true si callback renvoie true pour au moins un élément du tableau. -
    function isNumber(value){
    -  return typeof value === 'number';
    -}
    -var a1 = [1, 2, 3];
    -console.log(a1.some(isNumber)); // Affiche true
    -var a2 = [1, '2', 3];
    -console.log(a2.some(isNumber)); // Affiche true
    -var a3 = ['1', '2', '3'];
    -console.log(a3.some(isNumber)); // Affiche false
    -
    -
  • -
+}) +``` + +Étant donné que les éléments des tableaux sont stockés comme des propriétés classiques, il n'est pas conseillé d'utiliser des boucles {{jsxref("Instructions/for...in")}} pour parcourir les tableaux car cela listerait également les propriétés énumérables (en plus des éléments). + +### Méthodes des tableaux + +L'objet `Array` possède les méthodes suivantes : + +- {{jsxref("Array.concat", "concat()")}} permet de fusionner deux ou plusieurs tableaux et de renvoyer le résultat dans un nouveau tableau : + + ```js + var monTableau = new Array("1", "2", "3"); + monTableau = monTableau.concat("a", "b", "c"); // monTableau is now ["1", "2", "3", "a", "b", "c"] + ``` + +- {{jsxref("Array.join", "join(délimiteur = ',')")}} permet de fusionner les éléments du tableau en une chaîne de caractères : + + ```js + var monTableau = new Array("Air", "Eau", "Feu"); + var list = monTableau.join(" - "); // list sera "Air - Eau - Feu" + ``` + +- {{jsxref("Array.push", "push()")}} permet d'ajouter un ou plusieurs éléments à la fin d'un tableau et renvoie la longueur du tableau : + + ```js + var monTableau = new Array("1", "2"); + monTableau.push("3"); // monTableau vaut désormais ["1", "2", "3"] + ``` + +- {{jsxref("Array.pop", "pop()")}} permet de retirer le dernier élément (le plus à droite) du tableau et renvoie cet élément : + + ```js + var monTableau = new Array("1", "2", "3"); + var dernier = monTableau.pop(); // monTableau vaut désormais ["1", "2"], dernier = "3" + ``` + +- {{jsxref("Array.shift", "shift()")}} retire le premier élément d'un tableau (le plus à gauche) et renvoie cet élément : + + ```js + var monTableau = new Array("1", "2", "3"); + var premier = monTableau.shift(); // monTableau vaut désormais ["2", "3"], premier vaut "1" + ``` + +- {{jsxref("Array.unshift", "unshift()")}} ajoute un ou plusieurs éléments au début du tableau et renvoie la longueur du tableau ainsi modifié : + + ```js + var monTableau = new Array("1", "2", "3"); + monTableau.unshift("4", "5"); // monTableau devient ["4", "5", "1", "2", "3"] + ``` + +- {{jsxref("Array.slice", "slice(indice_début, indice_fin)")}} extrait une portion d'un tableau et renvoie un nouveau tableau avec ce fragment : + + ```js + var monTableau = new Array ("a", "b", "c", "d", "e"); + monTableau = monTableau.slice(1, 4); // extrait les éléments entre l'indice 1 et jusqu'à + // celui d'indice 3 (4-1), elle renvoie + // [ "b", "c", "d"] + ``` + +- {{jsxref("Array.splice", "splice(indice, nbASupprimer, ajouterElement1, ajouterElement2, ...)")}} retire des éléments du tableau et (éventuellement) les remplace : + + ```js + var monTableau = new Array ("1", "2", "3", "4", "5"); + monTableau.splice(1, 3, "a", "b", "c", "d"); // monTableau vaut désormais ["1", "a", "b", "c", "d", "5"] + // Le code remplace à partir de l'indice 1 (où il y avait la valeur "2"), supprime trois éléments puis + // insère les arguments fournis à la suite. + ``` -

Les méthodes présentées ci-avant qui prennent une fonction de rappel (callback) en argument sont appelées méthodes itératives car elles parcourent le tableau de façon itérative. Chacune de ces méthodes peut prendre en compte un deuxième argument (optionnel) qui sera l'objet this pris en compte par le callback. Si ce deuxième argument n'est pas fourni, this vaudra la valeur de l'objet global.

+- {{jsxref("Array.reverse", "reverse()")}} transpose les éléments du tableau à même ce tableau : le premier élément devient le dernier, le dernier devient le premier et ainsi de suite : -

La fonction de rappel est appelée avec trois arguments : le premier étant la valeur de l'élément courant, le deuxième est l'indice de cet élément et le troisième représente le tableau lui-même. Les fonctions JavaScript ignorent les arguments supplémentaires qui ne sont pas déclarés explicitement dans la liste des paramètres, on peut donc utiliser une fonction prenant un seul argument comme fonction de rappel.

+ ```js + var monTableau = new Array ("1", "2", "3"); + monTableau.reverse(); // monTableau vaut maintenant [ "3", "2", "1" ] + ``` -
    -
  • {{jsxref("Array.reduce", "reduce(callback[, valeurInitiale])")}} applique callback(premièreValeur, secondeValeur) au fur et à mesure sur le tableau pour le réduire en une seule valeur, c'est cette valeur qui est renvoyée par la fonction : +- {{jsxref("Array.sort", "sort()")}} trie les éléments d'un tableau à même ce tableau : -
    var a = [10, 20, 30];
    -var total = a.reduce(function(premier, deuxième) { return premier + deuxième; }, 0);
    -console.log(total) // Affiche 60
    -
    -
  • -
  • {{jsxref("Array.reduceRight", "reduceRight(callback[, valeurInitiale])")}} fonctionne comme reduce(), mais débute avec le dernier élément (parcourt le tableau de droite à gauche).
  • -
+ ```js + var monTableau = new Array("Air", "Feu", "Eau"); + monTableau.sort(); // trie le tableau [ "Air", "Eau", "Feu" ] + ``` -

reduce() et reduceRight() sont à utiliser lorsqu'on souhaite n'obtenir qu'une seule valeur, récursivement, à partir des différents éléments du tableau. Pour plus d'informations sur l'utilisation d'une valeur d'initialisation pour ces deux fonctions, se référer à leurs pages : {{jsxref("Array.reduceRight")}} et {{jsxref("Array.reduce")}}

+ `sort()` peut également utiliser une fonction de rappel (_callback_) qui détermine comment les éléments sont comparés. La fonction compare deux arguments et renvoie une valeur selon les règles suivantes : -

Tableaux multi-dimensionnels

+ - Si `a` est inférieur à `b` selon l'ordre, renvoie -1 (ou un autre nombre négatif) + - Si `a` est supérieur à `b` selon l'ordre, renvoie 1 (ou un autre nombre positif) + - Si `a` et `b` sont considérés égaux, renvoie 0. -

Les tableaux peuvent être imbriqués les uns dans les autres. Cela signifie qu'un tableau peut avoir un élément dont la valeur est un tableau. En utilisant ce comportement, on peut donc créer des matrices, voire des tableaux à plusieurs dimensions.

+ Par exemple, on peut utilise la fonction suivante pour trier par rapport à la dernière lettre du mot : -

Par exemple, avec le code suivant :

+ ```js + var sortFn = function(a, b){ + if (a[a.length - 1] < b[b.length - 1]) return -1; + if (a[a.length - 1] > b[b.length - 1]) return 1; + if (a[a.length - 1] == b[b.length - 1]) return 0; + } + monTableau.sort(sortFn); // le tableau devient = ["Air","Feu","Eau"] + ``` -
var a = new Array(4);
-for (i = 0; i < 4; i++) {
+Du code permettant d'émuler ces fonctions est disponible sur chacune des pages (_polyfill_). Le support natif de ces fonctionnalités dans les différents navigateurs peut être trouvé [ici](http://www.robertnyman.com/javascript/)[.](http://www.robertnyman.com/javascript/)
+
+- {{jsxref("Array.indexOf", "indexOf(élémentRecherché[, indiceDépart])")}} recherche la valeur `élémentRecherché` dans le tableau et renvoie l'indice du premier élément qui correspond :
+
+  ```js
+    var a = ['a', 'b', 'a', 'b', 'a'];
+    console.log(a.indexOf('b'));    // Affiche 1
+    // On recherche après la première correspondance :
+    console.log(a.indexOf('b', 2)); // Affiche 3
+    console.log(a.indexOf('z'));    // Affiche -1 car 'z' n'a pas été trouvé
+    ```
+
+- {{jsxref("Array.lastIndexOf", "lastIndexOf(élémentRecherché[, fromIndex])")}} fonctionne comme `indexOf`, mais recherche à partir de la fin du tableau :
+
+  ```js
+    var a = ['a', 'b', 'c', 'd', 'a', 'b'];
+    console.log(a.lastIndexOf('b'));    // Affiche 5
+    // On continue la recherche après la première correspondance en fin de tableau
+    console.log(a.lastIndexOf('b', 4)); // Affiche 1
+    console.log(a.lastIndexOf('z'));    // Affiche -1
+    ```
+
+- {{jsxref("Array.forEach", "forEach(callback[, objetThis])")}} exécute la fonction `callback` sur chaque élément du tableau.
+
+  ```js
+    var a = ['a', 'b', 'c'];
+    a.forEach(console.log); // Affichera la valeur de chaque élément dans la console
+    ```
+
+- {{jsxref("Array.map", "map(callback[, objetThis])")}} renvoie un nouveau tableau dont les éléments sont les images des éléments du tableau courant par la fonction `callback` :
+
+  ```js
+    var a1 = ['a', 'b', 'c'];
+    var a2 = a1.map(function(item) { return item.toUpperCase(); });
+    console.log(a2); // affichera A,B,C dans la console
+    ```
+
+- {{jsxref("Array.filter", "filter(callback[, objetThis])")}} renvoie un nouveau tableau qui contient les éléments du tableau courant pour lesquels `callback` a renvoyé `true`.
+
+  ```js
+    var a1 = ['a', 10, 'b', 20, 'c', 30];
+    var a2 = a1.filter(function(item) { return typeof item == 'number'; });
+    console.log(a2); // Affichera 10,20,30 dans la console
+    ```
+
+- {{jsxref("Array.every", "every(callback[, objetThis])")}} renvoie `true` si `callback` renvoie `true` pour chaque élément du tableau.
+
+  ```js
+    function isNumber(value){
+      return typeof value === 'number';
+    }
+    var a1 = [1, 2, 3];
+    console.log(a1.every(isNumber)); // affiche true
+    var a2 = [1, '2', 3];
+    console.log(a2.every(isNumber)); // affiche false
+    ```
+
+- {{jsxref("Array.some", "some(callback[, objetThis])")}} renvoie `true` si `callback` renvoie `true` pour au moins un élément du tableau.
+
+  ```js
+    function isNumber(value){
+      return typeof value === 'number';
+    }
+    var a1 = [1, 2, 3];
+    console.log(a1.some(isNumber)); // Affiche true
+    var a2 = [1, '2', 3];
+    console.log(a2.some(isNumber)); // Affiche true
+    var a3 = ['1', '2', '3'];
+    console.log(a3.some(isNumber)); // Affiche false
+    ```
+
+Les méthodes présentées ci-avant qui prennent une fonction de rappel (_callback_) en argument sont appelées méthodes itératives car elles parcourent le tableau de façon itérative. Chacune de ces méthodes peut prendre en compte un deuxième argument (optionnel) qui sera l'objet `this` pris en compte par le _callback_. Si ce deuxième argument n'est pas fourni, `this` vaudra la valeur de l'objet global.
+
+La fonction de rappel est appelée avec trois arguments : le premier étant la valeur de l'élément courant, le deuxième est l'indice de cet élément et le troisième représente le tableau lui-même. Les fonctions JavaScript ignorent les arguments supplémentaires qui ne sont pas déclarés explicitement dans la liste des paramètres, on peut donc utiliser une fonction prenant un seul argument comme fonction de rappel.
+
+- {{jsxref("Array.reduce", "reduce(callback[, valeurInitiale])")}} applique `callback(premièreValeur, secondeValeur)` au fur et à mesure sur le tableau pour le réduire en une seule valeur, c'est cette valeur qui est renvoyée par la fonction :
+
+  ```js
+    var a = [10, 20, 30];
+    var total = a.reduce(function(premier, deuxième) { return premier + deuxième; }, 0);
+    console.log(total) // Affiche 60
+    ```
+
+- {{jsxref("Array.reduceRight", "reduceRight(callback[, valeurInitiale])")}} fonctionne comme `reduce()`, mais débute avec le dernier élément (parcourt le tableau de droite à gauche).
+
+`reduce()` et `reduceRight()` sont à utiliser lorsqu'on souhaite n'obtenir qu'une seule valeur, récursivement, à partir des différents éléments du tableau. Pour plus d'informations sur l'utilisation d'une valeur d'initialisation pour ces deux fonctions, se référer à leurs pages : {{jsxref("Array.reduceRight")}} et {{jsxref("Array.reduce")}}
+
+### Tableaux multi-dimensionnels
+
+Les tableaux peuvent être imbriqués les uns dans les autres. Cela signifie qu'un tableau peut avoir un élément dont la valeur est un tableau. En utilisant ce comportement, on peut donc créer des matrices, voire des tableaux à plusieurs dimensions.
+
+Par exemple, avec le code suivant :
+
+```js
+var a = new Array(4);
+for (i = 0; i < 4; i++) {
   a[i] = new Array(4);
-  for (j = 0; j < 4; j++) {
+  for (j = 0; j < 4; j++) {
     a[i][j] = "[" + i + "," + j + "]";
   }
 }
-
+``` -

On pourra avoir le tableau suivant sur deux dimensions :

+On pourra avoir le tableau suivant sur deux dimensions : -
Ligne 0 : [0,0] [0,1] [0,2] [0,3]
+```js
+Ligne 0 : [0,0] [0,1] [0,2] [0,3]
 Ligne 1 : [1,0] [1,1] [1,2] [1,3]
 Ligne 2 : [2,0] [2,1] [2,2] [2,3]
 Ligne 3 : [3,0] [3,1] [3,2] [3,3]
-
+``` -

Les tableaux et les expressions rationnelles

+### Les tableaux et les expressions rationnelles -

Lorsqu'un tableau est le résultat d'une correspondance entre une expression rationnelle et une chaîne de caractères, les éléments et propriétés du tableau fournissent des informations sur la correspondance. Les méthodes suivantes peuvent renvoyer un tableau : {{jsxref("Objets_globaux/RegExp/exec","RegExp.exec()")}}, {{jsxref("Objets_globaux/String/match/exec","String.match()")}},  {{jsxref("Objets_globaux/String/split","String.split()")}}. Pour plus d'informations sur les tableaux et les expressions rationnelles, voir le chapitre du guide JavaScript sur les expressions rationnelles.

+Lorsqu'un tableau est le résultat d'une correspondance entre une expression rationnelle et une chaîne de caractères, les éléments et propriétés du tableau fournissent des informations sur la correspondance. Les méthodes suivantes peuvent renvoyer un tableau : {{jsxref("Objets_globaux/RegExp/exec","RegExp.exec()")}}, {{jsxref("Objets_globaux/String/match/exec","String.match()")}},  {{jsxref("Objets_globaux/String/split","String.split()")}}. Pour plus d'informations sur les tableaux et les expressions rationnelles, voir le chapitre du guide JavaScript sur [les expressions rationnelles](/fr/docs/Web/JavaScript/Guide/Expressions_régulières). -

Manipuler des objets semblables à des tableaux

+### Manipuler des objets semblables à des tableaux -

Certains objets JavaScript tels que {{domxref("NodeList")}} (renvoyé par {{domxref("document.getElementsByTagName()")}}) ou l'objet arguments (disponible au sein d'une fonction) ressemblent à des tableaux mais n'en sont pas (ils n'ont pas toutes les méthodes décrites ci-avant par exemple). Ainsi, l'objet arguments fournit une propriété {{jsxref("Objets_globaux/Function/length","length")}} mais n'implémente pas la méthode {{jsxref("Array.forEach", "forEach()")}}.

+Certains objets JavaScript tels que {{domxref("NodeList")}} (renvoyé par {{domxref("document.getElementsByTagName()")}}) ou l'objet [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments) (disponible au sein d'une fonction) ressemblent à des tableaux mais n'en sont pas (ils n'ont pas toutes les méthodes décrites ci-avant par exemple). Ainsi, l'objet `arguments` fournit une propriété {{jsxref("Objets_globaux/Function/length","length")}} mais n'implémente pas la méthode {{jsxref("Array.forEach", "forEach()")}}. -

Les méthodes du prototype des tableaux permettent d'utiliser les méthodes d'objets Array sur des objets semblables à des tableaux :

+Les méthodes du prototype des tableaux permettent d'utiliser les méthodes d'objets `Array` sur des objets semblables à des tableaux : -
 function alertArguments() {
+```js
+ function alertArguments() {
    Array.prototype.forEach.call(arguments, function(item) {
      console.log(item);
    });
  }
-
+``` -

Il est possible d'utiliser ces méthodes génériques sur des chaînes de caractères :

+Il est possible d'utiliser ces méthodes génériques sur des chaînes de caractères : -
Array.prototype.forEach.call("une chaîne", function(chr) {
+```js
+Array.prototype.forEach.call("une chaîne", function(chr) {
    console.log(chr);
-});
+}); +``` -

Les tableaux typés

+## Les tableaux typés -

Les tableaux typés JavaScript sont des objets semblables à des tableaux qui fournissent un moyen d'accéder à des données binaires. Comme on l'a vu ci-avant, les objets {{jsxref("Array")}} grandissent et rétrécissent dynamiquement et peuvent contenir n'importe quelle valeur JavaScript. Les moteurs JavaScript effectuent des optimisations afin que les tableaux puissent être utilisés rapidement. Cependant, avec le développement des applications web, les applications viennent à manipuler des données audio, vidéo, binaires et accèdent à des données brutes via les WebSockets d'autres outils. Il apparaît donc nécessaire d'avoir les outils JavaScript pertinents pour manipuler efficacement des données binaires, organisées au sein de tableaux typés.

+[Les tableaux typés JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) sont des objets semblables à des tableaux qui fournissent un moyen d'accéder à des données binaires. Comme on l'a vu ci-avant, les objets {{jsxref("Array")}} grandissent et rétrécissent dynamiquement et peuvent contenir n'importe quelle valeur JavaScript. Les moteurs JavaScript effectuent des optimisations afin que les tableaux puissent être utilisés rapidement. Cependant, avec le développement des applications web, les applications viennent à manipuler des données audio, vidéo, binaires et accèdent à des données brutes via les [WebSockets](/fr/docs/WebSockets) d'autres outils. Il apparaît donc nécessaire d'avoir les outils JavaScript pertinents pour manipuler efficacement des données binaires, organisées au sein de tableaux typés. -

Les vues et les tampons de mémoire (buffers) : l'architecture des tableaux typés

+### Les vues et les tampons de mémoire (_buffers_) : l'architecture des tableaux typés -

Afin de permettre un maximum de flexibilité et d'efficacité, les tableaux typés JavaScript séparent l'implémentation entre les tampons (buffers) et les vues (views). Un tampon de mémoire, implémenté par l'objet {{jsxref("ArrayBuffer")}}, est un objet représentant un fragment de données. Un tampon n'a pas de format a proprement parler et il ne fournit aucun mécanisme pour accéder à son contenu. Afin d'accéder à la mémoire contenu dans le tampon, on a besoin d'utiliser une vue. Une vue fournit un contexte, c'est-à-dire un type de donnée, un indice de départ et un nombre d'éléments, qui permet de traiter les données initiales comme un vrai tableau typé.

+Afin de permettre un maximum de flexibilité et d'efficacité, les tableaux typés JavaScript séparent l'implémentation entre **les tampons (_buffers_)** et **les vues (_views_)**. Un tampon de mémoire, implémenté par l'objet {{jsxref("ArrayBuffer")}}, est un objet représentant un fragment de données. Un tampon n'a pas de format a proprement parler et il ne fournit aucun mécanisme pour accéder à son contenu. Afin d'accéder à la mémoire contenu dans le tampon, on a besoin d'utiliser une vue. Une vue fournit un contexte, c'est-à-dire un type de donnée, un indice de départ et un nombre d'éléments, qui permet de traiter les données initiales comme un vrai tableau typé. -

Typed arrays in an ArrayBuffer

+![Typed arrays in an ArrayBuffer](https://mdn.mozillademos.org/files/8629/typed_arrays.png) -

ArrayBuffer

+### `ArrayBuffer` -

Le type {{jsxref("ArrayBuffer")}} est un type de donnée utilisé pour représenter un tampon de données binaire générique dont la longueur est fixée. Un tampon de données ne peut pas être manipulé directement. Pour manipuler les données, il faut créer une vue sur le tableau typé ou un objet {{jsxref("DataView")}} qui représente le tampon dans un format spécifique et qui pourra être utilisé pour lire et écrire des informations du tampon.

+Le type {{jsxref("ArrayBuffer")}} est un type de donnée utilisé pour représenter un tampon de données binaire générique dont la longueur est fixée. Un tampon de données ne peut pas être manipulé directement. Pour manipuler les données, il faut créer une vue sur le tableau typé ou un objet {{jsxref("DataView")}} qui représente le tampon dans un format spécifique et qui pourra être utilisé pour lire et écrire des informations du tampon. -

Les vues qui sont des tableaux typés

+### Les vues qui sont des tableaux typés -

Les vues de tableaux typés possèdent des noms explicites et fournissent des vues pour les types numériques usuels tels que Int8, Uint32, Float64 et ainsi de suite. Il existe un type de vue spécial qui est Uint8ClampedArray. Ce type ramène les différentes valeurs exploitées entre 0 et 255. Cela peut notamment être utile pour le traitement des données d'un canvas.

+Les vues de tableaux typés possèdent des noms explicites et fournissent des vues pour les types numériques usuels tels que `Int8`, `Uint32`, `Float64` et ainsi de suite. Il existe un type de vue spécial qui est `Uint8ClampedArray`. Ce type ramène les différentes valeurs exploitées entre 0 et 255. Cela peut notamment être utile pour [le traitement des données d'un canvas](/fr/docs/Web/API/ImageData). -

{{page("/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray", "Les_objets_TypedArray")}}

+{{page("/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray", "Les_objets_TypedArray")}} -

Pour plus d'informations sur les tableaux typés, voir l'article de la référence sur les différents objets {{jsxref("TypedArray")}}.

+Pour plus d'informations sur les tableaux typés, voir [l'article de la référence](/fr/docs/Web/JavaScript/Tableaux_typés) sur les différents objets {{jsxref("TypedArray")}}. -

{{PreviousNext("Web/JavaScript/Guide/Expressions_régulières", "Web/JavaScript/Guide/Collections_avec_clés")}}

+{{PreviousNext("Web/JavaScript/Guide/Expressions_régulières", "Web/JavaScript/Guide/Collections_avec_clés")}} diff --git a/files/fr/web/javascript/guide/introduction/index.md b/files/fr/web/javascript/guide/introduction/index.md index 7d99c7a165..cc8794cc3e 100644 --- a/files/fr/web/javascript/guide/introduction/index.md +++ b/files/fr/web/javascript/guide/introduction/index.md @@ -8,131 +8,111 @@ tags: - JavaScript translation_of: Web/JavaScript/Guide/Introduction --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Types_et_grammaire")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Types_et_grammaire")}} -

Ce chapitre introduit JavaScript et présente certains de ses concepts fondamentaux.

+Ce chapitre introduit JavaScript et présente certains de ses concepts fondamentaux. -

Ce que vous devriez déjà savoir

+## Ce que vous devriez déjà savoir -

Pour lire ce guide, il est conseillé d'avoir :

+Pour lire ce guide, il est conseillé d'avoir : -
    -
  • Une compréhension générale du fonctionnement d'Internet et du World Wide Web .
  • -
  • Une connaissance élémentaire du HyperText Markup Language ({{Glossary("HTML")}}).
  • -
  • Une expérience préalable en programmation. Si vous débutez la programmation, vous pouvez utiliser l'un des tutoriels listés sur la page JavaScript.
  • -
+- Une compréhension générale du fonctionnement d'Internet et du [World Wide Web](https://developer.mozilla.org/fr/docs/Glossaire/World_Wide_Web) . +- Une connaissance élémentaire du _HyperText Markup Language_ ({{Glossary("HTML")}}). +- Une expérience préalable en programmation. Si vous débutez la programmation, vous pouvez utiliser l'un des tutoriels listés sur la page [JavaScript](/fr/docs/Web/JavaScript). -

Où trouver des informations concernant JavaScript

+## Où trouver des informations concernant JavaScript -

La documentation MDN pour JavaScript comprend :

+La documentation MDN pour JavaScript comprend : -
    -
  • Apprendre le Web : cette section fournit des informations destinées aux débutants et présente les concepts de bases autour de la programmation et d'Internet.
  • -
  • Le guide JavaScript (ce guide) fournit un aperçu du langage JavaScript et de ses objets.
  • -
  • La référence JavaScript fournit une référence détaillée sur les fonctionnalités de JavaScript.
  • -
+- [Apprendre le Web](/fr/docs/Apprendre) : cette section fournit des informations destinées aux débutants et présente les concepts de bases autour de la programmation et d'Internet. +- [Le guide JavaScript](/fr/docs/Web/JavaScript/Guide) (ce guide) fournit un aperçu du langage JavaScript et de ses objets. +- [La référence JavaScript](/fr/docs/Web/JavaScript/Reference) fournit une référence détaillée sur les fonctionnalités de JavaScript. -

Si vous débutez en JavaScript, vous pouvez commencer par les articles de la section Apprendre et du Guide JavaScript. Une fois que vous maîtrisez les briques de bases, vous pourrez utiliser la référence JavaScript pour obtenir des informations détaillées sur chacun des objets natifs et des instructions.

+Si vous débutez en JavaScript, vous pouvez commencer par les articles de la section [Apprendre](/fr/docs/Apprendre) et du [Guide JavaScript](/fr/docs/Web/JavaScript/Guide). Une fois que vous maîtrisez les briques de bases, vous pourrez utiliser [la référence JavaScript](/fr/docs/Web/JavaScript/Reference) pour obtenir des informations détaillées sur chacun des objets natifs et des instructions. -

Qu'est-ce que JavaScript ?

+## Qu'est-ce que JavaScript ? -

JavaScript est un langage de script, multi-plateforme et orienté objet. C'est un langage léger qui doit faire partie d'un environnement hôte (un navigateur web par exemple) pour qu'il puisse être utilisé sur les objets de cet environnement.

+JavaScript est un langage de script, multi-plateforme et orienté objet. C'est un langage léger qui doit faire partie d'un environnement hôte (un navigateur web par exemple) pour qu'il puisse être utilisé sur les objets de cet environnement. -

JavaScript contient une bibliothèque standard d'objets tels que Array, Date, et Math, ainsi qu'un ensemble d'éléments de langage tels que les opérateurs, les structures de contrôles et les instructions. Ces fonctionnalités centrales et natives de JavaScript peuvent être étendues de plusieurs façons en fournissant d'autres objets, par exemple :

+JavaScript contient une bibliothèque standard d'objets tels que `Array`, `Date`, et `Math`, ainsi qu'un ensemble d'éléments de langage tels que les opérateurs, les structures de contrôles et les instructions. Ces fonctionnalités centrales et natives de JavaScript peuvent être étendues de plusieurs façons en fournissant d'autres objets, par exemple : -
    -
  • JavaScript côté client étend ces éléments de base en fournissant des objets pour contrôler le navigateur et le Document Object Model (DOM). Par exemple, les extensions du langage côté client permettent de placer des éléments dans un formulaire HTML, de réagir aux événements déclenchés par l'utilisateur (les clics, la saisie d'un formulaire, les actions de navigation, etc.).
  • -
  • JavaScript côte serveur étend ces éléments de base avec des objets utiles pour le fonctionnement sur un serveur tels que la possibilité de communiquer avec une base de données, manipuler des fichiers, passer d'une application à une autre, etc.
  • -
+- _JavaScript côté client_ étend ces éléments de base en fournissant des objets pour contrôler le navigateur et le _Document Object Model_ (DOM). Par exemple, les extensions du langage côté client permettent de placer des éléments dans un formulaire HTML, de réagir aux événements déclenchés par l'utilisateur (les clics, la saisie d'un formulaire, les actions de navigation, etc.). +- _JavaScript côte serveur_ étend ces éléments de base avec des objets utiles pour le fonctionnement sur un serveur tels que la possibilité de communiquer avec une base de données, manipuler des fichiers, passer d'une application à une autre, etc. -

JavaScript et Java

+## JavaScript et Java -

JavaScript et Java se ressemblent sur certains aspects mais ils sont fondamentalement différents l'un de l'autre. Le langage JavaScript ressemble à Java mais n'est pas typé statiquement et le typage de JavaScript est faible (alors qu'il est fort en Java). La syntaxe des expressions JavaScript est très proche de celle du Java avec les conventions de nommage et les constructions conditionnelles par exemple : c'est une des raisons qui a fait que le langage LiveScript a été renommé en JavaScript.

+JavaScript et Java se ressemblent sur certains aspects mais ils sont fondamentalement différents l'un de l'autre. Le langage JavaScript ressemble à Java mais n'est pas typé statiquement et le typage de JavaScript est faible (alors qu'il est fort en Java). La syntaxe des expressions JavaScript est très proche de celle du Java avec les conventions de nommage et les constructions conditionnelles par exemple : c'est une des raisons qui a fait que le langage LiveScript a été renommé en JavaScript. -

À la différence de Java qui est un système compilé et dont les classes sont déclarées, JavaScript est traité lors de l'exécution et possède quelques types de données pour représenter les nombres, les booléens et les chaînes de caractères (entre autres). JavaScript utilise un modèle basé sur les prototypes pour représenter les liens entre les objets alors que Java utilise un modèle plus courant basé sur les classes. Les prototypes permettent d'avoir un héritage dynamique. Ainsi, les caractéristiques héritées par un objet peuvent varier dans le temps. JavaScript supporte également les fonctions qui sont des objets à part entière et qui peuvent être des propriétés d'autres objets.

+À la différence de Java qui est un système compilé et dont les classes sont déclarées, JavaScript est traité lors de l'exécution et possède quelques types de données pour représenter les nombres, les booléens et les chaînes de caractères (entre autres). JavaScript utilise un modèle basé sur les prototypes pour représenter les liens entre les objets alors que Java utilise un modèle plus courant basé sur les classes. Les prototypes permettent d'avoir un héritage dynamique. Ainsi, les caractéristiques héritées par un objet peuvent varier dans le temps. JavaScript supporte également les fonctions qui sont des objets à part entière et qui peuvent être des propriétés d'autres objets. -

JavaScript est un langage plutôt « libre » comparé au Java. Il n'est pas nécessaire de déclarer toutes les variables, classes et méthodes. Il n'est pas nécessaire de savoir si une méthode est publique, privée ou protégée et il n'y a pas d'interfaces à implémenter. Les variables, les paramètres et les valeurs de retour des fonctions ne sont pas explicitement typés.

+JavaScript est un langage plutôt « libre » comparé au Java. Il n'est pas nécessaire de déclarer toutes les variables, classes et méthodes. Il n'est pas nécessaire de savoir si une méthode est publique, privée ou protégée et il n'y a pas d'interfaces à implémenter. Les variables, les paramètres et les valeurs de retour des fonctions ne sont pas explicitement typés. -

Java est un langage de programmation utilisant les classes, conçus pour être exécuté rapidement et garantir la sûreté du typage. Cela signifie par exemple qu'il n'est pas possible de transformer un entier Java en un objet ou qu'on ne peut pas accéder à des caractéristiques privées en corrompant le bytecode Java. Le modèle de classes utilisé par Java signifie qu'un programme n'est constitué que de classes et de méthodes. Cet héritage à base de classes, associé au typage fort font qu'on obtient des structures et des hiérarchies d'objets fortement couplées. Pour ces raisons, Java peut apparaître comme un langage plus complexe que JavaScript.

+Java est un langage de programmation utilisant les classes, conçus pour être exécuté rapidement et garantir la sûreté du typage. Cela signifie par exemple qu'il n'est pas possible de transformer un entier Java en un objet ou qu'on ne peut pas accéder à des caractéristiques privées en corrompant le bytecode Java. Le modèle de classes utilisé par Java signifie qu'un programme n'est constitué que de classes et de méthodes. Cet héritage à base de classes, associé au typage fort font qu'on obtient des structures et des hiérarchies d'objets fortement couplées. Pour ces raisons, Java peut apparaître comme un langage plus complexe que JavaScript. -

À l'inverse, JavaScript est un descendant de langages plus légers, dynamiquement typés tels que HyperTalk et dBASE. Ces langages de scripts visent un public plus large avec une syntaxe plus simple, des fonctionnalités natives spécialisées et des prérequis minimaux pour pouvoir créer des objets.

+À l'inverse, JavaScript est un descendant de langages plus légers, dynamiquement typés tels que HyperTalk et dBASE. Ces langages de scripts visent un public plus large avec une syntaxe plus simple, des fonctionnalités natives spécialisées et des prérequis minimaux pour pouvoir créer des objets. - - - - - - - - - - - - - - - - - - -
Comparaison synthétique entre JavaScript et Java
JavaScriptJava
Orienté objet. Aucune distinction entre les types et les objets. L'héritage est basé sur un mécanisme utilisant les prototypes et les propriétés et méthodes peuvent être ajoutées dynamiquement à n'importe quel objet.Orienté objet, utilisant un modèle de classes. Les objets sont divisés entre les classes et les instances, l'héritage s'effectue via la hiérarchie des classes. Les classes et les instances ne peuvent pas recevoir de nouvelles propriétés ou méthodes dynamiquement.
Le type de données des variables n'est pas déclaré (typage dynamique).Le type de données des variables doit être déclaré (typage statique).
+| JavaScript | Java | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Orienté objet. Aucune distinction entre les types et les objets. L'héritage est basé sur un mécanisme utilisant les prototypes et les propriétés et méthodes peuvent être ajoutées dynamiquement à n'importe quel objet. | Orienté objet, utilisant un modèle de classes. Les objets sont divisés entre les classes et les instances, l'héritage s'effectue via la hiérarchie des classes. Les classes et les instances ne peuvent pas recevoir de nouvelles propriétés ou méthodes dynamiquement. | +| Le type de données des variables n'est pas déclaré (typage dynamique). | Le type de données des variables doit être déclaré (typage statique). | -

Pour plus d'informations sur les différences entre JavaScript et Java, voir le chapitre sur les détails du modèle objet JavaScript.

+Pour plus d'informations sur les différences entre JavaScript et Java, voir le chapitre sur [les détails du modèle objet JavaScript](/fr/docs/Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails). -

JavaScript et la spécification ECMAScript

+## JavaScript et la spécification ECMAScript -

JavaScript est standardisé par Ecma International — une association européenne de standardisation des systèmes d'information et de communication (ECMA étant historiquement un acronyme pour European Computer Manufacturers Association) qui délivre un langage de programmation standardisé, international appelé ECMAScript. Ce langage se comporte de la même façon pour toutes les applications qui supportent ce standard. Les entreprises peuvent utiliser ce langage standard afin de développer leur implémentation de JavaScript. Le standard ECMAScript est documenté avec la spécification ECMA-262. Voir la page Nouveautés de JavaScript pour en savoir plus sur les différentes versions de JavaScript et les différentes éditions de la spécification ECMAScript.

+JavaScript est standardisé par [Ecma International](https://www.ecma-international.org/) — une association européenne de standardisation des systèmes d'information et de communication (ECMA étant historiquement un acronyme pour _European Computer Manufacturers Association_) qui délivre un langage de programmation standardisé, international appelé ECMAScript. Ce langage se comporte de la même façon pour toutes les applications qui supportent ce standard. Les entreprises peuvent utiliser ce langage standard afin de développer leur implémentation de JavaScript. Le standard ECMAScript est documenté avec la spécification ECMA-262. Voir la page [Nouveautés de JavaScript](/fr/docs/Web/JavaScript/Nouveautés_et_historique_de_JavaScript) pour en savoir plus sur les différentes versions de JavaScript et les différentes éditions de la spécification ECMAScript. -

Le standard ECMA-262 est également approuvé par l'ISO (International Organization for Standardization) sous ISO-16262. La spécification peut également être trouvée sur le site web d'Ecma International. La spécification ECMAScript ne décrit pas le Document Object Model (DOM) qui est standardisé par le World Wide Web Consortium (W3C) et le WHATWG (Web Hypertext Application Technology Working Group). Le DOM définit la façon dont les documents HTML sont exposés aux scripts. Pour mieux comprendre les différentes technologies gravitant autour de JavaScript, voir l'article Aperçu des technologies JavaScript.

+Le standard ECMA-262 est également approuvé par l'[ISO](https://www.iso.ch/) (_International Organization for Standardization_) sous ISO-16262. La spécification peut également être trouvée sur [le site web d'Ecma International](https://www.ecma-international.org/publications/standards/Ecma-262.htm). La spécification ECMAScript ne décrit pas le _Document Object Model_ (DOM) qui est standardisé par le [World Wide Web Consortium (W3C)](https://www.w3.org/) et [le WHATWG (Web Hypertext Application Technology Working Group)](https://whatwg.org). Le DOM définit la façon dont les documents HTML sont exposés aux scripts. Pour mieux comprendre les différentes technologies gravitant autour de JavaScript, voir l'article [Aperçu des technologies JavaScript](/fr/docs/Web/JavaScript/JavaScript_technologies_overview). -

Documentation JavaScript et spécification ECMAScript

+### Documentation JavaScript et spécification ECMAScript -

La spécification ECMAScript est un ensemble de conditions à respecter pour implémenter ECMAScript : cela est utile lorsqu'on souhaite implémenter des fonctionnalités standard du langage au sein d'une implémentation ou d'un moteur ECMAScript (tel que SpiderMonkey pour Firefox, ou V8 pour Chrome).

+La spécification ECMAScript est un ensemble de conditions à respecter pour implémenter ECMAScript : cela est utile lorsqu'on souhaite implémenter des fonctionnalités standard du langage au sein d'une implémentation ou d'un moteur ECMAScript (tel que SpiderMonkey pour Firefox, ou V8 pour Chrome). -

La spécification ECMAScript n'a pas pour but d'aider les développeurs à écrire des scripts. La documentation JavaScript permet d'obtenir des informations pour écrire des scripts JavaScript.

+La spécification ECMAScript n'a pas pour but d'aider les développeurs à écrire des scripts. La documentation JavaScript permet d'obtenir des informations pour écrire des scripts JavaScript. -

La spécification ECMAScript utilise parfois une terminologie et une syntaxe qui peuvent sembler étranges aux yeux d'un développeur JavaScript. Bien que la description du langage diffère entre ECMAScript et la documentation JavaScript, le langage lui-même reste le même. JavaScript supporte l'ensemble des fonctionnalités mises en avant dans la spécification ECMAScript.

+La spécification ECMAScript utilise parfois une terminologie et une syntaxe qui peuvent sembler étranges aux yeux d'un développeur JavaScript. Bien que la description du langage diffère entre ECMAScript et la documentation JavaScript, le langage lui-même reste le même. JavaScript supporte l'ensemble des fonctionnalités mises en avant dans la spécification ECMAScript. -

La documentation JavaScript décrit les aspects du langage qui pourront être utilisés par les développeurs JavaScript.

+La documentation JavaScript décrit les aspects du langage qui pourront être utilisés par les développeurs JavaScript. -

Démarrer avec JavaScript

+## Démarrer avec JavaScript -

Pour commencer à développer en JavaScript, c'est très simple : il suffit d'avoir un navigateur web récent. Ce guide inclut certaines fonctionnalités de JavaScript qui ne sont disponibles que dans les dernières versions de Firefox, il est donc recommandé d'utiliser une version de Firefox à jour pour essayer les exemples fournis.

+Pour commencer à développer en JavaScript, c'est très simple : il suffit d'avoir un navigateur web récent. Ce guide inclut certaines fonctionnalités de JavaScript qui ne sont disponibles que dans les dernières versions de Firefox, il est donc recommandé d'utiliser une version de Firefox à jour pour essayer les exemples fournis. -

L'outil Web Console intégré à Firefox est utile pour expérimenter avec JavaScript. Vous pouvez l'utiliser selon deux modes : le mode de saisie à une ligne et le mode de saisie multiligne.

+L'outil Web Console intégré à Firefox est utile pour expérimenter avec JavaScript. Vous pouvez l'utiliser selon deux modes : le mode de saisie à une ligne et le mode de saisie multiligne. -

La console web

+### La console web -

La console web affiche des informations sur la page actuellement chargée, elle dispose également d'une ligne de commande qui peut être utilisée pour exécuter des expressions JavaScript dans la page actuelle.

+La [console web](/fr/docs/Outils/Web_Console) affiche des informations sur la page actuellement chargée, elle dispose également d'une [ligne de commande](/fr/docs/Outils/Web_Console#L'interpr.C3.A9teur_de_lignes_de_commande) qui peut être utilisée pour exécuter des expressions JavaScript dans la page actuelle. -

Pour ouvrir la console, dans le menu, sélectionner « Développement » puis « Console web » (en passant par la barre d'outils, ce sera « Outils » puis « Développement web » puis « Console web »). Avec le clavier, on pourra utiliser la combinaison de touche Ctrl+Shift+K sur Windows et Linux ou Cmd-Option-K sur Mac. Une fois lancée, la console apparaît en base de la fenêtre du navigateur. En bas de la zone occupée par la console, il y a une ligne de commande qui peut être utilisée pour saisir des instructions JavaScript, le résultat de ces instructions sera affiché dans le panneau au dessus :

+Pour ouvrir la console, dans le menu, sélectionner « Développement » puis « Console web » (en passant par la barre d'outils, ce sera « Outils » puis « Développement web » puis « Console web »). Avec le clavier, on pourra utiliser la combinaison de touche Ctrl+Shift+K sur Windows et Linux ou Cmd-Option-K sur Mac. Une fois lancée, la console apparaît en base de la fenêtre du navigateur. En bas de la zone occupée par la console, il y a une ligne de commande qui peut être utilisée pour saisir des instructions JavaScript, le résultat de ces instructions sera affiché dans le panneau au dessus : -

Console web

+![Console web](https://mdn.mozillademos.org/files/16569/2019-04-04_00-15-29.png) +La console fonctionne exactement de la même manière que `eval` : la dernière expression saisie est retournée. Pour simplifier, on peut imaginer que chaque fois qu'une expression est saisie dans la console, elle est en fait entourée de `console.log` autour de `eval`, comme suit: -

La console fonctionne exactement de la même manière que eval : la dernière expression saisie est retournée. Pour simplifier, on peut imaginer que chaque fois qu'une expression est saisie dans la console, elle est en fait entourée de console.log autour de eval, comme suit:

- -
function saluer(votreNom) {
-  alert("Hello " + votreNom)
+```js
+function saluer(votreNom) {
+  alert("Hello " + votreNom)
 }
 console.log(eval('3 + 5'))
-
+``` -

Le mode éditeur multiligne

+### Le mode éditeur multiligne -

La console est pratique quand il s'agit d'exécuter des instructions ligne par ligne. Cependant dès qu'on souhaite exécuter un script plus complexe de plusieurs lignes, la console devient vite limitée. Pour ça, on pourra utiliser le mode éditeur multiligne.

+La console est pratique quand il s'agit d'exécuter des instructions ligne par ligne. Cependant dès qu'on souhaite exécuter un script plus complexe de plusieurs lignes, la console devient vite limitée. Pour ça, on pourra utiliser [le mode éditeur multiligne](/fr/docs/Tools/Web_Console/The_command_line_interpreter#le_mode_%C3%A9diteur_multiligne). -

Coucou monde (hello world)

+### Coucou monde (_hello world_) -

Pour commencer à écrire du JavaScript, ouvrez votre console web en mode éditeur multiligne et écrivez votre premier « Hello world » en JavaScript.

+Pour commencer à écrire du JavaScript, ouvrez votre console web en mode éditeur multiligne et écrivez votre premier « _Hello world_ » en JavaScript. -
function saluer(utilisateur) {
+```js
+function saluer(utilisateur) {
   return "Bonjour " + utilisateur;
 }
 
 saluer("Alice"); // "Bonjour Alice"
-
+``` -

Dans les pages qui suivent, ce guide introduira la syntaxe du langage JavaScript ainsi que ses fonctionnalités ; vous pourrez ainsi écrire des applications plus complexes.

+Dans les pages qui suivent, ce guide introduira la syntaxe du langage JavaScript ainsi que ses fonctionnalités ; vous pourrez ainsi écrire des applications plus complexes. -

{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Types_et_grammaire")}}

+{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Types_et_grammaire")}} diff --git a/files/fr/web/javascript/guide/iterators_and_generators/index.md b/files/fr/web/javascript/guide/iterators_and_generators/index.md index 87d1a5c28a..19d2248042 100644 --- a/files/fr/web/javascript/guide/iterators_and_generators/index.md +++ b/files/fr/web/javascript/guide/iterators_and_generators/index.md @@ -8,37 +8,36 @@ tags: translation_of: Web/JavaScript/Guide/Iterators_and_Generators original_slug: Web/JavaScript/Guide/iterateurs_et_generateurs --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Utiliser_les_promesses", "Web/JavaScript/Guide/Métaprogrammation")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Utiliser_les_promesses", "Web/JavaScript/Guide/Métaprogrammation")}} -

Effectuer des traitements sur chacun des éléments d'une collection est une opération très fréquente. Il existe plusieurs outils natifs dans JavaScript pour parcourir une collection, les boucles for, map(), filter(). Les itérateurs et les générateurs font de ce concept d'itération une fonctionnalité principale du langage et permettent d'adapter et de personnaliser le comportement des boucles for...of.

+Effectuer des traitements sur chacun des éléments d'une collection est une opération très fréquente. Il existe plusieurs outils natifs dans JavaScript pour parcourir une collection, les boucles [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for), [`map()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/map), [`filter()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter). Les itérateurs et les générateurs font de ce concept d'itération une fonctionnalité principale du langage et permettent d'adapter et de personnaliser le comportement des boucles [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of). -

Pour plus de détails sur les mécanismes d'itération, voir les pages suivantes :

+Pour plus de détails sur les mécanismes d'itération, voir les pages suivantes : -
    -
  • Les protocoles d'itération
  • -
  • {{jsxref("Instructions/for...of","for...of")}}
  • -
  • {{jsxref("Instructions/function*","function*")}} et {{jsxref("Generator")}}
  • -
  • {{jsxref("Opérateurs/yield","yield")}} et {{jsxref("Opérateurs/yield*","yield*")}}
  • -
+- [Les protocoles d'itération](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration) +- {{jsxref("Instructions/for...of","for...of")}} +- {{jsxref("Instructions/function*","function*")}} et {{jsxref("Generator")}} +- {{jsxref("Opérateurs/yield","yield")}} et {{jsxref("Opérateurs/yield*","yield*")}} -

Itérateurs

+## Itérateurs -

Un itérateur est un objet sachant comment accéder aux éléments d'une collection un par un et qui connait leur position dans la collection. En JavaScript, un itérateur expose une méthode next() qui retourne l'élément suivant dans la séquence. Cette méthode renvoie un objet possédant deux propriétés : done et value.

+Un itérateur est un objet sachant comment accéder aux éléments d'une collection un par un et qui connait leur position dans la collection. En JavaScript, un itérateur expose une méthode `next()` qui retourne l'élément suivant dans la séquence. Cette méthode renvoie un objet possédant deux propriétés : `done` et `value`. -

Un itérateur est "terminé" lorsque l'appel à la méthode next() renvoie un objet dont la propriété done vaut true.

+Un itérateur est "terminé" lorsque l'appel à la méthode `next()` renvoie un objet dont la propriété `done` vaut `true`. -

Une fois créé, un itérateur peut être utilisé explicitement en appelant sa méthode next(), ou implicitement en utilisant la boucle for...in.

+Une fois créé, un itérateur peut être utilisé explicitement en appelant sa méthode `next()`, ou implicitement en utilisant la boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in). -

Voici un exemple d'une fonction créant un itérateur qui parcourt l'intervalle défini par ses arguments (depuis debut (inclus) jusqu'à end (exclus) et avec pas comme incrément. La valeur finale qui est renvoyée correspond à la taille de la séquence créée

+Voici un exemple d'une fonction créant un itérateur qui parcourt l'intervalle défini par ses arguments (depuis `debut` (inclus) jusqu'à `end` (exclus) et avec `pas` comme incrément. La valeur finale qui est renvoyée correspond à la taille de la séquence créée -
function creerIterateurIntervalle(debut = 0, fin = Infinity, pas = 1) {
+```js
+function creerIterateurIntervalle(debut = 0, fin = Infinity, pas = 1) {
   let prochainIndex = debut;
   let nbIterations = 0;
 
   const rangeIterator = {
     next: function() {
       let resultat;
-      if (prochainIndex < fin) {
+      if (prochainIndex < fin) {
         resultat = { value: prochainIndex, done: false };
         prochainIndex += pas;
         nbIterations++;
@@ -48,11 +47,13 @@ original_slug: Web/JavaScript/Guide/iterateurs_et_generateurs
     }
   };
   return rangeIterator;
-}
+} +``` -

On pourra alors utiliser cette fonction et l'itérateur de la façon suivante :

+On pourra alors utiliser cette fonction et l'itérateur de la façon suivante : -
let it = creerIterateurIntervalle(1, 10, 2);
+```js
+let it = creerIterateurIntervalle(1, 10, 2);
 
 let resultat = it.next();
 while (!resultat.done) {
@@ -61,36 +62,38 @@ while (!resultat.done) {
 }
 
 console.log("La séquence parcourue contenait ", result.value, " éléments.");
-
+``` -

Itérables

+## Itérables -

Un objet est considéré comme itérable s'il définit le comportement qu'il aura lors de l'itération (par exemple les valeurs qui seront utilisées dans une boucle {{jsxref("Instructions/for...of", "for...of")}}). Certains types natifs, tels qu'{{jsxref("Array")}} ou {{jsxref("Map")}}, possède un comportement par défaut pour les itérations, cependant d'autres types comme les Objets, ne possèdent pas ce comportement.

+Un objet est considéré comme **itérable** s'il définit le comportement qu'il aura lors de l'itération (par exemple les valeurs qui seront utilisées dans une boucle {{jsxref("Instructions/for...of", "for...of")}}). Certains types natifs, tels qu'{{jsxref("Array")}} ou {{jsxref("Map")}}, possède un comportement par défaut pour les itérations, cependant d'autres types comme les Objets, ne possèdent pas ce comportement. -

Pour qu'un objet soit itérable, un objet doit implémenter la méthode @@iterator, cela signifie que l'objet (ou un des objets de la chaîne de prototypes) doit avoir une propriété avec la clé {{jsxref("Symbol.iterator")}}. Cette fonction doit également, même si ce n'est pas une obligation, renvoyer une nouvel opérateur à chaque appel.

+Pour qu'un objet soit **itérable**, un objet doit implémenter la méthode **@@iterator**, cela signifie que l'objet (ou un des objets de la [chaîne de prototypes](/fr/docs/Web/JavaScript/Héritage_et_chaîne_de_prototypes)) doit avoir une propriété avec la clé {{jsxref("Symbol.iterator")}}. Cette fonction doit également, même si ce n'est pas une obligation, renvoyer une nouvel opérateur à chaque appel. -

Itérables personnalisés

+### Itérables personnalisés -

Il est possible de définir ses propres itérables de cette façon :

+Il est possible de définir ses propres itérables de cette façon : -
var monItérable = {};
+```js
+var monItérable = {};
 monItérable[Symbol.iterator] = function* () {
     yield 1;
     yield 2;
     yield 3;
 };
 [...monItérable] // [1, 2, 3]
-
+``` -

Itérables natifs

+### Itérables natifs -

{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} et {{jsxref("Set")}} sont des itérables natifs car les prototypes de chacun ont tous une méthode {{jsxref("Symbol.iterator")}}.

+{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} et {{jsxref("Set")}} sont des itérables natifs car les prototypes de chacun ont tous une méthode {{jsxref("Symbol.iterator")}}. -

Les éléments de syntaxe utilisant des itérables

+### Les éléments de syntaxe utilisant des itérables -

Certaines instructions ou expressions utilisent des itérables, par exemple les boucles {{jsxref("Instructions/for...of","for...of")}} et {{jsxref("Opérateurs/yield*","yield*")}}.

+Certaines instructions ou expressions utilisent des itérables, par exemple les boucles {{jsxref("Instructions/for...of","for...of")}} et {{jsxref("Opérateurs/yield*","yield*")}}. -
for(let value of ["a", "b", "c"]){
+```js
+for(let value of ["a", "b", "c"]){
     console.log(value)
 }
 // "a"
@@ -107,16 +110,16 @@ gen().next() // { value:"a", done:false }
 
 [a, b, c] = new Set(["a", "b", "c"])
 a // "a"
+```
 
-
- -

Générateurs

+## Générateurs -

Les itérateurs personnalisés sont un outil utile mais leur création peut s'avérer complexe et il faut maintenir leur état interne. Avec les générateurs, on peut définir une seule fonction qui est un algorithme itératif et qui peut maintenir son état.

+Les itérateurs personnalisés sont un outil utile mais leur création peut s'avérer complexe et il faut maintenir leur état interne. Avec les générateurs, on peut définir une seule fonction qui est un algorithme itératif et qui peut maintenir son état. -

Un générateur est un type de fonction spécial qui fonctionne comme une fabrique (factory) d'itérateurs. Une fonction devient un générateur lorsqu'elle contient une ou plusieurs expressions yield et qu'elle utilise la syntaxe function*.

+Un générateur est un type de fonction spécial qui fonctionne comme une fabrique (_factory_) d'itérateurs. Une fonction devient un générateur lorsqu'elle contient une ou plusieurs expressions `yield` et qu'elle utilise la syntaxe `function*`. -
function* idMaker(){
+```js
+function* idMaker(){
   var index = 0;
   while(true)
     yield index++;
@@ -127,17 +130,19 @@ var gen = idMaker();
 console.log(gen.next().value); // 0
 console.log(gen.next().value); // 1
 console.log(gen.next().value); // 2
-// ...
+// ... +``` -

Générateurs avancés

+## Générateurs avancés -

Les générateurs calculent les valeurs à fournir à la demande, ce qui leur permet de représenter efficacement des suites complexes à calculer, voire des séries infinies (comme vu dans l'exemple précédent).

+Les générateurs calculent les valeurs à fournir à la demande, ce qui leur permet de représenter efficacement des suites complexes à calculer, voire des séries infinies (comme vu dans l'exemple précédent). -

La méthode next() accepte également un argument qui pourra être utilisé pour modifier l'état interne du générateur. Une valeur passée à next() sera traitée comme le résultat de la dernière expression yield qui a interrompu le générateur. Une valeur passée au premier appel de next() sera toujours ignorée.

+La méthode `next()` accepte également un argument qui pourra être utilisé pour modifier l'état interne du générateur. Une valeur passée à `next()` sera traitée comme le résultat de la dernière expression `yield` qui a interrompu le générateur. Une valeur passée au premier appel de `next()` sera toujours ignorée. -

Par exemple, on peut avoir un générateur pour la suite de Fibonnaci et utiliser next(x) pour redémarrer la série :

+Par exemple, on peut avoir un générateur pour la suite de Fibonnaci et utiliser `next(x)` pour redémarrer la série : -
function* fibonacci(){
+```js
+function* fibonacci(){
   var fn1 = 0;
   var fn2 = 1;
   while (true){
@@ -163,14 +168,15 @@ console.log(sequence.next().value);     // 8
 console.log(sequence.next(true).value); // 0
 console.log(sequence.next().value);     // 1
 console.log(sequence.next().value);     // 1
-console.log(sequence.next().value);     // 2
+console.log(sequence.next().value); // 2 +``` -

Il est possible de forcer un générateur à lever une exception en utilisant la méthode throw() en lui passant la valeur de l'exception en argument. Cette exception sera levée depuis l'état actuel du générateur, comme si le yield qui était en attente avait été une instruction throw valeur.

+Il est possible de forcer un générateur à lever une exception en utilisant la méthode `throw()` en lui passant la valeur de l'exception en argument. Cette exception sera levée depuis l'état actuel du générateur, comme si le `yield` qui était en attente avait été une instruction `throw valeur`. -

Si le mot-clé yield n'est pas trouvé lors de la levée de l'exception, l'exception sera propagée jusqu'à l'appel de throw(), les appels à next() qui suivent renverront une valeur dont la propriété done sera true.

+Si le mot-clé `yield` n'est pas trouvé lors de la levée de l'exception, l'exception sera propagée jusqu'à l'appel de `throw()`, les appels à `next()` qui suivent renverront une valeur dont la propriété `done` sera `true`. -

Si l'exception n'est pas interceptée dans le générateur, elle se propagera jusqu'à l'appel de throw() et les appels suivants de next() renverront un objet dont la propriété done vaut true.

+Si l'exception n'est pas interceptée dans le générateur, elle se propagera jusqu'à l'appel de `throw()` et les appels suivants de `next()` renverront un objet dont la propriété `done `vaut `true`. -

Les générateurs possèdent une méthode return(valeur) qui permet de renvoyer une valeur donnée et de terminer le générateur.

+Les générateurs possèdent une méthode `return(valeur)` qui permet de renvoyer une valeur donnée et de terminer le générateur. -

{{PreviousNext("Web/JavaScript/Guide/Utiliser_les_promesses", "Web/JavaScript/Guide/Métaprogrammation")}}

+{{PreviousNext("Web/JavaScript/Guide/Utiliser_les_promesses", "Web/JavaScript/Guide/Métaprogrammation")}} diff --git a/files/fr/web/javascript/guide/keyed_collections/index.md b/files/fr/web/javascript/guide/keyed_collections/index.md index 9b93b1cc67..bef70f4b38 100644 --- a/files/fr/web/javascript/guide/keyed_collections/index.md +++ b/files/fr/web/javascript/guide/keyed_collections/index.md @@ -10,19 +10,20 @@ tags: translation_of: Web/JavaScript/Guide/Keyed_collections original_slug: Web/JavaScript/Guide/Collections_avec_clés --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Collections_indexées", "Web/JavaScript/Guide/Utiliser_les_objets")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Collections_indexées", "Web/JavaScript/Guide/Utiliser_les_objets")}} -

Ce chapitre présente les collections de données qui sont ordonnées avec une clé. Les objets Map et Set contiennent des éléments sur lesquels on peut itérer dans leur ordre d'insertion.

+Ce chapitre présente les collections de données qui sont ordonnées avec une clé. Les objets `Map` et `Set` contiennent des éléments sur lesquels on peut itérer dans leur ordre d'insertion. -

Maps

+## Maps -

Le type Map

+### Le type `Map` -

ECMAScript 2015 introduit une nouvelle structure de données pour faire correspondre des données entre elle. Un objet {{jsxref("Map")}} représente une collection de données qui sont des correspondances entre des clés ou valeurs et pour lequel on peut itérer dans l'ordre d'insertion pour lister les différentes clés / valeurs.

+ECMAScript 2015 introduit une nouvelle structure de données pour faire correspondre des données entre elle. Un objet {{jsxref("Map")}} représente une collection de données qui sont des correspondances entre des clés ou valeurs et pour lequel on peut itérer dans l'ordre d'insertion pour lister les différentes clés / valeurs. -

Le code suivant illustre certaines opérations basiques avec Map. Pour plus d'informations sur cet objet, voir également la page de référence {{jsxref("Map")}}. Il est possible d'utiliser une boucle {{jsxref("Instructions/for...of","for...of")}} pour renvoyer un tableau [clé, valeur] à chaque itération.

+Le code suivant illustre certaines opérations basiques avec `Map`. Pour plus d'informations sur cet objet, voir également la page de référence {{jsxref("Map")}}. Il est possible d'utiliser une boucle {{jsxref("Instructions/for...of","for...of")}} pour renvoyer un tableau `[clé, valeur]` à chaque itération. -
var sayings = new Map();
+```js
+var sayings = new Map();
 sayings.set("dog", "woof");
 sayings.set("cat", "meow");
 sayings.set("elephant", "toot");
@@ -36,38 +37,35 @@ for (var [key, value] of sayings) {
 }
 // "cat goes meow"
 // "elephant goes toot"
-
+``` -

Comparaison entre les types Object et Map

+### Comparaison entre les types `Object` et `Map` -

Habituellement, les objets {{jsxref("Object", "objets", "", 1)}} ont été utilisés pour faire correspondre des chaînes avec des valeurs. Les objets permettent d'associer des clés avec des valeurs, de récupérer ces valeurs, de supprimer des clés, de détecter si quelque chose est enregistré dans une clé. Le type Map possède cependant certains avantages pour être utilisés comme maps.

+Habituellement, les objets {{jsxref("Object", "objets", "", 1)}} ont été utilisés pour faire correspondre des chaînes avec des valeurs. Les objets permettent d'associer des clés avec des valeurs, de récupérer ces valeurs, de supprimer des clés, de détecter si quelque chose est enregistré dans une clé. Le type `Map` possède cependant certains avantages pour être utilisés comme _maps_. -
    -
  • Les clés d'un objet de type Object sont des chaînes de caractères. Pour Map, une clé peut être une valeur de n'importe quel type.
  • -
  • On peut simplement obtenir la taille d'un objet Map alors qu'il faut tenir compte manuellement du nombre de clés contenue dans un objet Object.
  • -
  • Les itérations sur les maps se font dans l'ordre d'insertion des éléments.
  • -
  • Un objet de type Object possède un prototype, il y a donc des clés par défaut déjà présentes dans l'objet. (cela peut être surchargé en utilisant map = Object.create(null)).
  • -
+- Les clés d'un objet de type `Object` sont des chaînes de caractères. Pour `Map`, une clé peut être une valeur de n'importe quel type. +- On peut simplement obtenir la taille d'un objet `Map` alors qu'il faut tenir compte manuellement du nombre de clés contenue dans un objet `Object`. +- Les itérations sur les _maps_ se font dans l'ordre d'insertion des éléments. +- Un objet de type `Object` possède un prototype, il y a donc des clés par défaut déjà présentes dans l'objet. (cela peut être surchargé en utilisant `map = Object.create(null)`). -

Pour savoir si on doit utiliser le type Map ou le type Object, on peut considérer les aspects suivants :

+Pour savoir si on doit utiliser le type `Map` ou le type `Object`, on peut considérer les aspects suivants : -
    -
  • On utilisera des maps plutôt que des objets lorsque les clés sont inconnues avant l'exécution et lorsque toutes les clés sont de même type et que les valeurs sont de même type.
  • -
  • On utilisera des maps lorsque les clés peuvent être des valeurs primitives autres que des chaînes de caractères (en effet, les objets considèrent toutes leurs clés comme des chaînes en convertissant les valeurs).
  • -
  • On utilisera des objets lorsqu'il y a une logique propre à des éléments individuels.
  • -
+- On utilisera des _maps_ plutôt que des objets lorsque les clés sont inconnues avant l'exécution et lorsque toutes les clés sont de même type et que les valeurs sont de même type. +- On utilisera des _maps_ lorsque les clés peuvent être des valeurs primitives autres que des chaînes de caractères (en effet, les objets considèrent toutes leurs clés comme des chaînes en convertissant les valeurs). +- On utilisera des objets lorsqu'il y a une logique propre à des éléments individuels. -

Le type WeakMap

+### Le type `WeakMap` -

L'objet {{jsxref("WeakMap")}} est une collection de paires clés/valeurs pour lesquelles les clés sont uniquement des objets (les valeurs peuvent être d'un type arbitraire). Les références vers les objets sont des références « faibles ». Cela signifie qu'elles seront collectées par le ramasse-miettes s'il n'y a pas d'autres références vers cet objet. L'API WeakMap offre les mêmes fonctionnalités que l'API Map.

+L'objet {{jsxref("WeakMap")}} est une collection de paires clés/valeurs pour lesquelles **les clés sont uniquement des objets** (les valeurs peuvent être d'un type arbitraire). Les références vers les objets sont des références « faibles ». Cela signifie qu'elles seront collectées par le ramasse-miettes s'il n'y a pas d'autres références vers cet objet. L'API `WeakMap` offre les mêmes fonctionnalités que l'API `Map`. -

La différence entre le type Map et le type WeakMap est que les clés d'un objet WeakMap ne sont pas énumérables (c'est-à-dire qu'on n'a pas de méthode pour donner la liste des clés). S'il en existait une, la liste dépendrait de l'état d'avancement du ramasse-miettes, ce qui introduirait un non-déterminisme.

+La différence entre le type `Map` et le type `WeakMap` est que les clés d'un objet `WeakMap` ne sont pas énumérables (c'est-à-dire qu'on n'a pas de méthode pour donner la liste des clés). S'il en existait une, la liste dépendrait de l'état d'avancement du ramasse-miettes, ce qui introduirait un non-déterminisme. -

Pour plus d'informations et d'exemples, voir également le paragraphe « Pourquoi WeakMap ? » sur l'article {{jsxref("WeakMap")}} de la référence.

+Pour plus d'informations et d'exemples, voir également le paragraphe « Pourquoi WeakMap ? » sur l'article {{jsxref("WeakMap")}} de la référence. -

Un cas d'utilisation des objets WeakMap est le stockage de données privées d'un objet ou pour cacher certains détails d'implémentation. L'exemple qui suit est tiré du billet de blog de Nick Fitzgerald « Masquer des détails d'implémentation avec les WeakMaps ECMAScript 6 ». Les données et méthodes privées sont stockées dans l'objet WeakMap privates. Tout ce qui est exposé par l'instance et le prototype est public. Tout ce qui est en dehors est inaccessible car privates n'est pas exporté depuis le module :

+Un cas d'utilisation des objets `WeakMap` est le stockage de données privées d'un objet ou pour cacher certains détails d'implémentation. L'exemple qui suit est tiré du billet de blog de Nick Fitzgerald [« Masquer des détails d'implémentation avec les WeakMaps ECMAScript 6 »](http://fitzgeraldnick.com/weblog/53/). Les données et méthodes privées sont stockées dans l'objet WeakMap `privates`. Tout ce qui est exposé par l'instance et le prototype est public. Tout ce qui est en dehors est inaccessible car `privates` n'est pas exporté depuis le module : -
const privates = new WeakMap();
+```js
+const privates = new WeakMap();
 
 function Public() {
   const me = {
@@ -82,17 +80,18 @@ Public.prototype.method = function () {
 };
 
 module.exports = Public;
-
+``` -

Les ensembles

+## Les ensembles -

Le type Set

+### Le type `Set` -

Les objets {{jsxref("Set")}} sont des ensembles de valeurs. Il est possible de les parcourir dans l'ordre d'insertion des éléments. Une valeur d'un élément Set ne peut y apparaître qu'une seule fois, il est unique pour cette instance de Set.

+Les objets {{jsxref("Set")}} sont des ensembles de valeurs. Il est possible de les parcourir dans l'ordre d'insertion des éléments. Une valeur d'un élément `Set` ne peut y apparaître qu'une seule fois, il est unique pour cette instance de `Set`. -

Le code suivant illustre certaines opérations basiques avec Set. Voir aussi la page {{jsxref("Set")}} pour plus d'exemples et l'API complète.

+Le code suivant illustre certaines opérations basiques avec `Set`. Voir aussi la page {{jsxref("Set")}} pour plus d'exemples et l'API complète. -
var monEnsemble = new Set();
+```js
+var monEnsemble = new Set();
 monEnsemble.add(1);
 monEnsemble.add("du texte");
 monEnsemble.add("toto");
@@ -104,50 +103,45 @@ monEnsemble.size; // 2
 for (let item of monEnsemble) console.log(item);
 // 1
 // "du texte"
-
+``` -

Convertir des tableaux (Array) en ensembles (Set)

+### Convertir des tableaux (`Array`) en ensembles (`Set`) -

Il est possible de créer un {{jsxref("Array")}} à partir d'un Set grâce à {{jsxref("Array.from")}} ou l'opérateur de décomposition. Pour effectuer la conversion dans l'autre sens, on peut utiliser le constructeur Set avec un argument de type Array. Encore une fois, les objets Set stockent des valeurs uniques, les éléments dupliqués dans un tableau seront supprimés lors de la conversion.

+Il est possible de créer un {{jsxref("Array")}} à partir d'un `Set` grâce à {{jsxref("Array.from")}} ou l'[opérateur de décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateur_de_décomposition). Pour effectuer la conversion dans l'autre sens, on peut utiliser le constructeur `Set` avec un argument de type `Array`. Encore une fois, les objets `Set` stockent des valeurs uniques, les éléments dupliqués dans un tableau seront supprimés lors de la conversion. -
Array.from(monSet);
+```js
+Array.from(monSet);
 [...monSet2];
 
 monSet2 = new Set([1,2,3,4]);
-
+``` -

Comparaison entre Array et Set

+### Comparaison entre `Array` et `Set` -

Historiquement, on représentait des ensembles avec des tableaux JavaScript. Ce nouveau type, Set, possède certains avantages :

+Historiquement, on représentait des ensembles avec des tableaux JavaScript. Ce nouveau type, `Set`, possède certains avantages : -
    -
  • Lorsqu'on souhaite vérifier si un élément existe déjà dans un tableau, on est obligé d'utiliser {{jsxref("Array.indexOf", "indexOf")}} ce qui peut diminuer les performances.
  • -
  • Les objets Set permettent de supprimer les éléments avec leur valeur. Avec un tableau, il faudrait « découper » le tableau sur l'indice de l'élément.
  • -
  • Dans un tableau, la valeur {{jsxref("NaN")}} ne peut pas être trouvée avec la méthode indexOf.
  • -
  • Les objets Set permettent de stocker des valeurs uniques, il n'est pas nécessaire d'effectuer des vérifications manuellement.
  • -
+- Lorsqu'on souhaite vérifier si un élément existe déjà dans un tableau, on est obligé d'utiliser {{jsxref("Array.indexOf", "indexOf")}} ce qui peut diminuer les performances. +- Les objets `Set` permettent de supprimer les éléments avec leur valeur. Avec un tableau, il faudrait « découper » le tableau sur l'indice de l'élément. +- Dans un tableau, la valeur {{jsxref("NaN")}} ne peut pas être trouvée avec la méthode `indexOf`. +- Les objets `Set` permettent de stocker des valeurs uniques, il n'est pas nécessaire d'effectuer des vérifications manuellement. -

Le type WeakSet

+### Le type `WeakSet` -

Les objets {{jsxref("WeakSet")}} sont des ensembles d'objets. Un objet d'un WeakSet ne peut y apparaître qu'une seule fois maximum. On ne peut pas itérer sur les objets WeakSet (ils ne sont pas énumérables).

+Les objets {{jsxref("WeakSet")}} sont des ensembles d'objets. Un objet d'un `WeakSet` ne peut y apparaître qu'une seule fois maximum. On ne peut pas itérer sur les objets `WeakSet` (ils ne sont pas énumérables). -

Les principales différences avec l'objet {{jsxref("Set")}} sont :

+Les principales différences avec l'objet {{jsxref("Set")}} sont : -
    -
  • Contrairement aux objets Set, les objets WeakSet sont des ensembles qui ne comprennent que des objets, les valeurs ne peuvent pas être d'un type arbitraire.
  • -
  • Les objets WeakSet utilisent des références faibles vers les objets. Ainsi, s'il n'y a pas d'autres références vers l'objet stocké dans le WeakSet, celui-ci pourra être collecté par le ramasse-miettes pour libérer de la mémoire. Cela signifie également qu'on ne peut pas maintenir une liste des différents objets contenus dans l'ensemble : les objets WeakSet ne sont pas énumérables.
  • -
+- Contrairement aux objets `Set`, les objets `WeakSet` sont des ensembles qui ne comprennent **que des objets**, les valeurs ne peuvent pas être d'un type arbitraire. +- Les objets `WeakSet` utilisent des références faibles vers les objets. Ainsi, s'il n'y a pas d'autres références vers l'objet stocké dans le `WeakSet`, celui-ci pourra être collecté par le ramasse-miettes pour libérer de la mémoire. Cela signifie également qu'on ne peut pas maintenir une liste des différents objets contenus dans l'ensemble : les objets `WeakSet` ne sont pas énumérables. -

Les cas d'utilisations pour les objets WeakSet objects sont relativement limités. Ils empêcheront toute fuite mémoire donc on pourra, de façon sécurisée, les utiliser avec des éléments DOM qui pourront être des clés (pour les utiliser par ailleurs, etc.).

+Les cas d'utilisations pour les objets `WeakSet` objects sont relativement limités. Ils empêcheront toute fuite mémoire donc on pourra, de façon sécurisée, les utiliser avec des éléments DOM qui pourront être des clés (pour les utiliser par ailleurs, etc.). -

Égalité des clés et des valeurs avec Map et Set

+## Égalité des clés et des valeurs avec `Map` et `Set` -

L'égalité utilisée pour les clés des objets Map et celle utilisée pour les valeurs des objets Set sont les mêmes : elles sont basées sur l'algorithme suivant :

+L'égalité utilisée pour les clés des objets `Map` et celle utilisée pour les valeurs des objets `Set` sont les mêmes : elles sont basées sur [l'algorithme suivant](https://tc39.github.io/ecma262/#sec-samevaluezero) : -
    -
  • L'égalité fonctionne de la même façon qu'avec l'opérateur d'égalité stricte ===.
  • -
  • -0 et +0 sont considérés égaux.
  • -
  • {{jsxref("NaN")}} est considéré égal à lui-même (contrairement à ce qu'on obtient avec ===).
  • -
+- L'égalité fonctionne de la même façon qu'avec l'opérateur d'égalité stricte `===`. +- `-0` et `+0` sont considérés égaux. +- {{jsxref("NaN")}} est considéré égal à lui-même (contrairement à ce qu'on obtient avec `===`). -

{{PreviousNext("Web/JavaScript/Guide/Collections_indexées", "Web/JavaScript/Guide/Utiliser_les_objets")}}

+{{PreviousNext("Web/JavaScript/Guide/Collections_indexées", "Web/JavaScript/Guide/Utiliser_les_objets")}} diff --git a/files/fr/web/javascript/guide/loops_and_iteration/index.md b/files/fr/web/javascript/guide/loops_and_iteration/index.md index b3a7c80e31..c7b999b8b4 100644 --- a/files/fr/web/javascript/guide/loops_and_iteration/index.md +++ b/files/fr/web/javascript/guide/loops_and_iteration/index.md @@ -8,76 +8,73 @@ tags: translation_of: Web/JavaScript/Guide/Loops_and_iteration original_slug: Web/JavaScript/Guide/Boucles_et_itération --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs", "Web/JavaScript/Guide/Fonctions")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs", "Web/JavaScript/Guide/Fonctions")}} -

Les boucles permettent de répéter des actions simplement et rapidement. Ce chapitre du guide JavaScript présente les différentes instructions qu'il est possible d'utiliser en JavaScript pour effectuer des itérations.

+Les boucles permettent de répéter des actions simplement et rapidement. Ce chapitre du[ guide JavaScript](/fr/docs/Web/JavaScript/Guide) présente les différentes instructions qu'il est possible d'utiliser en JavaScript pour effectuer des itérations. -

Les boucles permettent de répéter des actions simplement et rapidement. Une boucle peut être vue comme une version informatique de « copier N lignes » ou de « faire X fois quelque chose ». Par exemple, en JavaScript, on pourrait traduire « Faire 5 pas vers l'est » avec cette boucle :

+Les boucles permettent de répéter des actions simplement et rapidement. Une boucle peut être vue comme une version informatique de « copier N lignes » ou de « faire X fois quelque chose ». Par exemple, en JavaScript, on pourrait traduire « Faire 5 pas vers l'est » avec cette boucle : -
for (let pas = 0; pas < 5; pas++) {
+```js
+for (let pas = 0; pas < 5; pas++) {
   // Ceci sera exécuté 5 fois
   // À chaque éxécution, la variable "pas" augmentera de 1
   // Lorsque'elle sera arrivée à 5, le boucle se terminera.
   console.log('Faire ' + pas + ' pas vers l\'est');
 }
-
- -

Il y a différents types de boucles mais elles se ressemblent toutes au sens où elles répètent une action un certain nombre de fois (ce nombre peut éventuellement être zéro). Les différents types de boucles permettent d'utiliser différentes façon de commencer et de terminer une boucle. Chaque type de boucle pourra être utilisé en fonction de la situation et du problème que l'on cherche à résoudre.

- -

Voici les différentes boucles fournies par JavaScript :

- -
    -
  • {{anch("Linstruction for")}}
  • -
  • {{anch("Linstruction do...while")}}
  • -
  • {{anch("Linstruction while")}}
  • -
  • {{anch("Linstruction label")}}
  • -
  • {{anch("Linstruction break")}}
  • -
  • {{anch("Linstruction continue")}}
  • -
  • {{anch("Linstruction for...in")}}
  • -
  • {{anch("Linstruction for...of")}}
  • -
- -

L'instruction for

- -

Une boucle {{jsxref("statements/for", "for")}} répète des instructions jusqu'à ce qu'une condition donnée ne soit plus vérifiée. La boucle for JavaScript ressemble beaucoup à celle utilisée en C ou en Java. Une boucle for s'utilise de la façon suivante :

- -
for ([expressionInitiale]; [condition]; [expressionIncrément])
-  instruction
-
- -

Voici ce qui se passe quand une boucle for s'exécute :

- -
    -
  1. L'expression initiale expressionInitiale est exécutée si elle est présente. Généralement, on utilise cette expression pour initialiser un ou plusieurs compteurs dont on se servira dans la boucle. Il est possible d'utiliser des expressions plus complexes si besoin. Elle peut servir à déclarer des variables.
  2. -
  3. L'expression condition est évaluée, si elle vaut true, les instructions contenues dans la boucle sont exécutées. Si la valeur de condition est false, la boucle for se termine. Si la condition est absente, elle est considérée comme true.
  4. -
  5. L'instruction instruction est exécutée. Si l'on souhaite exécuter plusieurs instructions, on utilisera un bloc d'instructions ({ ... }) afin de les grouper.
  6. -
  7. Si elle est présente, l'expression de mise à jour expressionIncrément est exécutée.
  8. -
  9. On retourne ensuite à l'étape 2.
  10. -
- -

Exemple

- -

La fonction suivante contient une instruction for qui compte le nombre d'options sélectionnées dans une liste déroulante (ici, un objet {{HTMLElement("select")}} permettant une sélection multiple). L'instruction for déclare une variable i et l'initialise à zéro. Elle vérifie que i est bien inférieur au nombre d'options et, pour chaque option, effectue un test conditionnel pour savoir si l'option est sélectionnée puis passe à l'option suivante en incrémentant la variable i pour chaque itération.

- -
<form name="selectForm">
-  <p>
-    <label for="typesMusique">Veuillez choisir des genres musicaux, puis cliquez :</label>
-    <select id="typesMusique" name="typesMusique" multiple="multiple">
-      <option selected="selected">R&B</option>
-      <option>Jazz</option>
-      <option>Blues</option>
-      <option>New Age</option>
-      <option>Classique</option>
-      <option>Opera</option>
-    </select>
-  </p>
-  <p><button id="btn" type="button">Combien sont sélectionnés ?</button></p>
-</form>
-
-<script>
+```
+
+Il y a différents types de boucles mais elles se ressemblent toutes au sens où elles répètent une action un certain nombre de fois (ce nombre peut éventuellement être zéro). Les différents types de boucles permettent d'utiliser différentes façon de commencer et de terminer une boucle. Chaque type de boucle pourra être utilisé en fonction de la situation et du problème que l'on cherche à résoudre.
+
+Voici les différentes boucles fournies par JavaScript :
+
+- {{anch("Linstruction for")}}
+- {{anch("Linstruction do...while")}}
+- {{anch("Linstruction while")}}
+- {{anch("Linstruction label")}}
+- {{anch("Linstruction break")}}
+- {{anch("Linstruction continue")}}
+- {{anch("Linstruction for...in")}}
+- {{anch("Linstruction for...of")}}
+
+## L'instruction for
+
+Une boucle {{jsxref("statements/for", "for")}} répète des instructions jusqu'à ce qu'une condition donnée ne soit plus vérifiée. La boucle `for` JavaScript ressemble beaucoup à celle utilisée en C ou en Java. Une boucle `for` s'utilise de la façon suivante :
+
+    for ([expressionInitiale]; [condition]; [expressionIncrément])
+      instruction
+
+Voici ce qui se passe quand une boucle `for` s'exécute :
+
+1.  L'expression initiale `expressionInitiale` est exécutée si elle est présente. Généralement, on utilise cette expression pour initialiser un ou plusieurs compteurs dont on se servira dans la boucle. Il est possible d'utiliser des expressions plus complexes si besoin. Elle peut servir à déclarer des variables.
+2.  L'expression `condition` est évaluée, si elle vaut `true`, les instructions contenues dans la boucle sont exécutées. Si la valeur de `condition` est `false`, la boucle `for` se termine. Si la condition est absente, elle est considérée comme `true`.
+3.  L'instruction `instruction` est exécutée. Si l'on souhaite exécuter plusieurs instructions, on utilisera un bloc d'instructions (`{ ... }`) afin de les grouper.
+4.  Si elle est présente, l'expression de mise à jour` expressionIncrément` est exécutée.
+5.  On retourne ensuite à l'étape 2.
+
+### **Exemple**
+
+La fonction suivante contient une instruction `for` qui compte le nombre d'options sélectionnées dans une liste déroulante (ici, un objet {{HTMLElement("select")}} permettant une sélection multiple). L'instruction `for` déclare une variable `i` et l'initialise à zéro. Elle vérifie que `i` est bien inférieur au nombre d'options et, pour chaque option, effectue un test conditionnel pour savoir si l'option est sélectionnée puis passe à l'option suivante en incrémentant la variable `i` pour chaque itération.
+
+```html
+
+

+ + +

+

+
+ + +``` -
+## L'instruction `do...while` -

L'instruction do...while

+L'instruction {{jsxref("statements/do...while", "do...while")}} permet de répéter un ensemble d'instructions jusqu'à ce qu'une condition donnée ne soit plus vérifiée. (_NdT_ : littéralement « do...while » signifie « faire... tant que »). Une instruction `do...while` s'utilise de la façon suivante : -

L'instruction {{jsxref("statements/do...while", "do...while")}} permet de répéter un ensemble d'instructions jusqu'à ce qu'une condition donnée ne soit plus vérifiée. (NdT : littéralement « do...while » signifie « faire... tant que »). Une instruction do...while s'utilise de la façon suivante :

+ do + instruction + while (condition); -
do
-  instruction
-while (condition);
-
+`instruction` est exécutée au moins une fois avant que la condition soit vérifiée. Pour utiliser plusieurs instructions à cet endroit, on utilisera une instruction de bloc (`{ ... }`) pour regrouper différentes instructions. Si la `condition` est vérifiée, l'instruction est à nouveau exécutée. À la fin de chaque exécution, la condition est vérifiée. Quand la condition n'est plus vérifiée (vaut `false` ou une valeur équivalente), l'exécution de l'instruction` do...while` est stoppée et le contrôle passe à l'instruction suivante. -

instruction est exécutée au moins une fois avant que la condition soit vérifiée. Pour utiliser plusieurs instructions à cet endroit, on utilisera une instruction de bloc ({ ... }) pour regrouper différentes instructions. Si la condition est vérifiée, l'instruction est à nouveau exécutée. À la fin de chaque exécution, la condition est vérifiée. Quand la condition n'est plus vérifiée (vaut false ou une valeur équivalente), l'exécution de l'instruction do...while est stoppée et le contrôle passe à l'instruction suivante.

+### Exemple -

Exemple

+Dans l'exemple qui suit, la boucle `do` est exécutée au moins une fois et répétée jusqu'à ce que `i` ne soit plus inférieur à 5. -

Dans l'exemple qui suit, la boucle do est exécutée au moins une fois et répétée jusqu'à ce que i ne soit plus inférieur à 5.

- -
let i = 0;
+```js
+let i = 0;
 do {
   i += 1;
   console.log(i);
-} while (i < 5);
+} while (i < 5); +``` -

L'instruction while

+## L'instruction `while` -

Une instruction {{jsxref("statements/while", "while")}} permet d'exécuter une instruction tant qu'une condition donnée est vérifiée. Cette instruction while s'utilise de la façon suivante :

+Une instruction {{jsxref("statements/while", "while")}} permet d'exécuter une instruction tant qu'une condition donnée est vérifiée. Cette instruction `while` s'utilise de la façon suivante : -
while (condition)
-  instruction
-
+ while (condition) + instruction -

Si la condition n'est pas vérifiée, l'instruction instruction n'est pas exécutée et le contrôle passe directement à l'instruction suivant la boucle.

+Si la condition n'est pas vérifiée, l'instruction` instruction` n'est pas exécutée et le contrôle passe directement à l'instruction suivant la boucle. -

Le test de la condition s'effectue avant d'exécuter instruction. Si la condition renvoie true (ou une valeur équivalente), instruction sera exécutée et la condition sera testée à nouveau. Si la condition renvoie false (ou une valeur équivalente), l'exécution s'arrête et le contrôle est passé à l'instruction qui suit while.

+Le test de la condition s'effectue avant d'exécuter `instruction`. Si la condition renvoie `true` (ou une valeur équivalente), `instruction` sera exécutée et la condition sera testée à nouveau. Si la condition renvoie `false` (ou une valeur équivalente), l'exécution s'arrête et le contrôle est passé à l'instruction qui suit `while`. -

Pour pouvoir utiliser plusieurs instructions dans la boucle, on utilisera une instruction de bloc ({ ... }) afin de les regrouper.

+Pour pouvoir utiliser plusieurs instructions dans la boucle, on utilisera une instruction de bloc (`{ ... }`) afin de les regrouper. -

Exemple 1

+### Exemple 1 -

La boucle while qui suit permet d'effectuer des itérations tant que n est inférieur à 3 :

+La boucle `while` qui suit permet d'effectuer des itérations tant que `n` est inférieur à 3 : -
let n = 0;
+```js
+let n = 0;
 let x = 0;
-while (n < 3) {
+while (n < 3) {
   n++;
   x += n;
 }
-
+``` -

À chaque itération, la boucle incrémente n et ajoute la valeur de n à x. x et n prendront ainsi les valeurs suivantes :

+À chaque itération, la boucle incrémente `n` et ajoute la valeur de `n` à `x`. `x` et `n` prendront ainsi les valeurs suivantes : -
    -
  • Après la première itération : n = 1 et x = 1
  • -
  • Après la deuxième itération : n = 2 et x = 3
  • -
  • Après la troisième itération : n = 3 et x = 6
  • -
+- Après la première itération : `n` = 1 et `x` = 1 +- Après la deuxième itération : `n` = 2 et `x` = 3 +- Après la troisième itération : `n` = 3 et `x` = 6 -

Une fois la troisième itération effectuée, la condition n < 3 n'est plus vérifiée, par conséquent, la boucle se termine.

+Une fois la troisième itération effectuée, la condition `n < 3` n'est plus vérifiée, par conséquent, la boucle se termine. -

Exemple 2

+### Exemple 2 -

Attention à éviter les boucles infinies. Il faut bien s'assurer que la condition utilisée dans la boucle ne soit plus vérifiée à un moment donné. Si la condition est toujours vérifiée, la boucle se répétera sans jamais s'arrêter. Dans l'exemple qui suit, les instructions contenues dans la boucle while s'exécutent sans discontinuer car la condition est toujours vérifiée :

+Attention à éviter les boucles infinies. Il faut bien s'assurer que la condition utilisée dans la boucle ne soit plus vérifiée à un moment donné. Si la condition est toujours vérifiée, la boucle se répétera sans jamais s'arrêter. Dans l'exemple qui suit, les instructions contenues dans la boucle `while` s'exécutent sans discontinuer car la condition est toujours vérifiée : -
while (true) {
+```js
+while (true) {
   console.log("Coucou monde !");
-}
+} +``` -

L'instruction label

+## L'instruction `label` -

Un {{jsxref("statements/label","label")}} (ou étiquette) permet de fournir un identifiant pour une instruction afin d'y faire référence depuis un autre endroit dans le programme. On peut ainsi identifier une boucle grâce à un label puis utiliser les instructions break ou continue pour indiquer si le programme doit interrompre ou poursuivre l'exécution de cette boucle.

+Un {{jsxref("statements/label","label")}} (ou étiquette) permet de fournir un identifiant pour une instruction afin d'y faire référence depuis un autre endroit dans le programme. On peut ainsi identifier une boucle grâce à un label puis utiliser les instructions `break` ou `continue` pour indiquer si le programme doit interrompre ou poursuivre l'exécution de cette boucle. -

On utilise un label de la façon suivante :

+On utilise un label de la façon suivante : -
label:
-  instruction
-
+ label: + instruction -

La valeur de label peut être n'importe quel identifiant JavaScript valide (et ne doit pas être un mot réservé pour le langage). L'instruction peut être n'importe quelle instruction JavaScript valide (y compris un bloc).

+La valeur de `label` peut être n'importe quel identifiant JavaScript valide (et ne doit pas être un mot réservé pour le langage). L'`instruction` peut être n'importe quelle instruction JavaScript valide (y compris un bloc). -

Exemple

+### Exemple -

Dans cet exemple, on utilise un label memoBoucle pour identifier une boucle while.

+Dans cet exemple, on utilise un label `memoBoucle` pour identifier une boucle `while`. -
memoBoucle:
+```js
+memoBoucle:
 while (memo == true) {
   faireQQC();
-}
+} +``` -
-

Note : Pour plus de détails sur cette instruction, voir la page de la référence JavaScript pour label.

-
+> **Note :** Pour plus de détails sur cette instruction, voir la page de la référence JavaScript pour [`label`](/fr/docs/Web/JavaScript/Reference/Instructions/label). -

L'instruction break

+## L'instruction `break` -

L'instruction {{jsxref("statements/break","break")}} est utilisée pour finir l'exécution d'une boucle, d'une instruction switch, ou avec un label.

+L'instruction {{jsxref("statements/break","break")}} est utilisée pour finir l'exécution d'une boucle, d'une instruction `switch`, ou avec un label. -
    -
  • Lorsque break est utilisé sans label, il provoque la fin de l'instruction while, do-while, for, ou switch dans laquelle il est inscrit (on finit l'instruction la plus imbriquée), le contrôle est ensuite passé à l'instruction suivante.
  • -
  • Lorsque break est utilisé avec un label, il provoque la fin de l'instruction correspondante.
  • -
+- Lorsque `break` est utilisé sans label, il provoque la fin de l'instruction `while`, `do-while`, `for`, ou `switch` dans laquelle il est inscrit (on finit l'instruction la plus imbriquée), le contrôle est ensuite passé à l'instruction suivante. +- Lorsque `break` est utilisé avec un label, il provoque la fin de l'instruction correspondante. -

La syntaxe de cette instruction possède donc deux formes :

+La syntaxe de cette instruction possède donc deux formes : -
    -
  1. break;
  2. -
  3. break label;
  4. -
+1. `break;` +2. `break label;` -

La première forme permet d'interrompre la boucle la plus imbriquée (ou le switch) dans laquelle on se trouve. La seconde forme interrompt l'exécution d'une instruction identifiée par un label.

+La première forme permet d'interrompre la boucle la plus imbriquée (ou le `switch`) dans laquelle on se trouve. La seconde forme interrompt l'exécution d'une instruction identifiée par un label. -

Exemple 1

+### Exemple **1** -

Dans l'exemple qui suit, on itère sur un tableau grâce à une boucle jusqu'à trouver un élément dont la valeur est valeurTest :

+Dans l'exemple qui suit, on itère sur un tableau grâce à une boucle jusqu'à trouver un élément dont la valeur est `valeurTest `: -
for (i = 0; i < a.length; i++) {
+```js
+for (i = 0; i < a.length; i++) {
   if (a[i] === valeurTest) {
     break;
   }
-}
+} +``` -

Exemple 2

+### Exemple 2 -

Ici, on utilise break des deux façons : avec une instruction représentée par un label et sans.

+Ici, on utilise `break` des deux façons : avec une instruction représentée par un label et sans. -
let x = 0;
+```js
+let x = 0;
 let z = 0;
 labelAnnuleBoucle: while (true) {
   console.log("Boucle externe : " + x);
@@ -224,38 +219,35 @@ labelAnnuleBoucle: while (true) {
   while (true) {
     console.log("Boucle interne : " + z);
     z += 1;
-    if (z === 10 && x === 10) {
+    if (z === 10 && x === 10) {
       break labelAnnuleBoucle;
     } else if (z === 10) {
       break;
     }
   }
 }
-
+``` -

L'instruction continue

+## L'instruction `continue` -

L'instruction {{jsxref("statements/continue","continue")}} permet de reprendre une boucle while, do-while, for, ou une instruction label.

+L'instruction {{jsxref("statements/continue","continue")}} permet de reprendre une boucle `while`, `do-while`, `for`, ou une instruction `label`. -
    -
  • Lorsque continue est utilisé sans label, l'itération courante de la boucle (celle la plus imbriquée) est terminée et la boucle passe à l'exécution de la prochaine itération. À la différence de l'instruction break, continue ne stoppe pas entièrement l'exécution de la boucle. Si elle est utilisée dans une boucle while, l'itération reprend au niveau de la condition d'arrêt. Dans une boucle for, l'itération reprend au niveau de l'expression d'incrément pour la boucle.
  • -
  • Lorsque continue est utilisé avec un label, il est appliqué à l'instruction de boucle correspondante.
  • -
+- Lorsque `continue` est utilisé sans label, l'itération courante de la boucle (celle la plus imbriquée) est terminée et la boucle passe à l'exécution de la prochaine itération. À la différence de l'instruction `break`, `continue` ne stoppe pas entièrement l'exécution de la boucle. Si elle est utilisée dans une boucle `while`, l'itération reprend au niveau de la condition d'arrêt. Dans une boucle `for`, l'itération reprend au niveau de l'expression d'incrément pour la boucle. +- Lorsque `continue` est utilisé avec un label, il est appliqué à l'instruction de boucle correspondante. -

L'instruction continue s'utilise donc de la façon suivante :

+L'instruction `continue` s'utilise donc de la façon suivante : -
    -
  1. continue;
  2. -
  3. continue label;
  4. -
+1. `continue;` +2. `continue `_`label;`_ -

Exemple 1

+### Exemple 1 -

Dans l'exemple qui suit, on utilise une boucle while avec une instruction continue qui est exécutée lorsque i vaut 3. Ici, n prendra donc les valeurs 1, 3, 7 et 12.

+Dans l'exemple qui suit, on utilise une boucle `while` avec une instruction `continue` qui est exécutée lorsque `i` vaut 3. Ici, `n` prendra donc les valeurs 1, 3, 7 et 12. -
let i = 0;
+```js
+let i = 0;
 let n = 0;
-while (i < 5) {
+while (i < 5) {
   i++;
   if (i === 3) {
     continue;
@@ -264,23 +256,23 @@ while (i < 5) {
   console.log(n);
 }
 // 1, 3, 7, 12
+```
 
-
+### Exemple 2 -

Exemple 2

+Dans l'exemple suivant, on a une instruction étiquetée `vérifIetJ` qui contient une autre instruction étiquetée `vérifJ`. Si l'instruction `continue` est utilisée, le programme reprend l'exécution au début de l'instruction `vérifJ`. Chaque fois que `continue` est utilisé, `vérifJ` réitère jusqu'à ce que sa condition renvoie `false`. Lorsque c'est le cas, le reste de l'instruction `vérifIetJ` est exécuté. -

Dans l'exemple suivant, on a une instruction étiquetée vérifIetJ qui contient une autre instruction étiquetée vérifJ. Si l'instruction continue est utilisée, le programme reprend l'exécution au début de l'instruction vérifJ. Chaque fois que continue est utilisé, vérifJ réitère jusqu'à ce que sa condition renvoie false. Lorsque c'est le cas, le reste de l'instruction vérifIetJ est exécuté.

+Si `continue` utilisait l'étiquette `vérifIetJ`, le programme continuerait au début de l'instruction `vérifIetJ` -

Si continue utilisait l'étiquette vérifIetJ, le programme continuerait au début de l'instruction vérifIetJ

- -
let i = 0;
+```js
+let i = 0;
 let j = 8;
 
-vérifIetJ: while (i < 4) {
+vérifIetJ: while (i < 4) {
   console.log("i : " + i);
   i += 1;
 
-  vérifJ: while (j > 4) {
+  vérifJ: while (j > 4) {
     console.log("j : "+ j);
     j -= 1;
     if ((j % 2) === 0){
@@ -290,22 +282,23 @@ vérifIetJ: while (i < 4) {
    }
    console.log("i = " + i);
    console.log("j = " + j);
-}
+} +``` -

L'instruction for...in

+## L'instruction `for...in` -

L'instruction {{jsxref("statements/for...in","for...in")}} permet d'itérer sur l'ensemble des propriétés énumérables d'un objet. Pour chaque propriété, JavaScript exécutera l'instruction indiquée. Cette instruction s'utilise de la façon suivante :

+L'instruction {{jsxref("statements/for...in","for...in")}} permet d'itérer sur l'ensemble des propriétés énumérables d'un objet. Pour chaque propriété, JavaScript exécutera l'instruction indiquée. Cette instruction s'utilise de la façon suivante : -
for (variable in objet) {
-  instruction
-}
-
+ for (variable in objet) { + instruction + } -

Exemple

+### Exemple -

La fonction suivante prend comme argument un objet et le nom de cet objet. Elle parcourt ensuite les propriétés de l'objet et renvoie une chaîne de caractères qui liste les propriétés avec leurs noms et leurs valeurs respectives :

+La fonction suivante prend comme argument un objet et le nom de cet objet. Elle parcourt ensuite les propriétés de l'objet et renvoie une chaîne de caractères qui liste les propriétés avec leurs noms et leurs valeurs respectives : -
function afficherProps(obj, nomObj) {
+```js
+function afficherProps(obj, nomObj) {
   var result = "";
   for (var i in obj) {
     result += nomObj + "." + i + " = " + obj[i] + "\n";
@@ -313,29 +306,31 @@ vérifIetJ: while (i < 4) {
   result += "\n";
   return result;
 }
-
+``` -

Pour un objet voiture dont les propriétés sont fabricant et modèle, result serait :

+Pour un objet `voiture` dont les propriétés sont `fabricant` et `modèle`, `result` serait : -
voiture.fabricant = Ford
+```js
+voiture.fabricant = Ford
 voiture.modèle = Mustang
-
+``` -

Les tableaux (arrays) et for...in

+### Les tableaux (arrays) et `for...in` -

Bien qu'il soit tentant d'utiliser cette instruction pour parcourir les éléments d'un objet Array , cela peut avoir des comportements inattendus. En effet, for...in permet de parcourir les propriétés définies par l'utilisateur ainsi que les éléments de tableau. Ainsi, si l'on modifie un objet Array en lui ajoutant des propriétés et/ou des méthodes, la boucle for...in renverra le nom de ces nouvelles propriétés en plus des indices des éléments du tableau. C'est pourquoi, il est préférable d'utiliser une boucle for avec les indices du tableau pour parcourir ses éléments.

+Bien qu'il soit tentant d'utiliser cette instruction pour parcourir les éléments d'un objet [`Array`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array) , cela peut avoir des comportements inattendus. En effet, `for...in` permet de parcourir les propriétés définies par l'utilisateur ainsi que les éléments de tableau. Ainsi, si l'on modifie un objet `Array` en lui ajoutant des propriétés et/ou des méthodes, la boucle `for...in` renverra le nom de ces nouvelles propriétés en plus des indices des éléments du tableau. C'est pourquoi, il est préférable d'utiliser une boucle [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) avec les indices du tableau pour parcourir ses éléments. -

L'instruction for...of

+## L'instruction `for...of` -

L'instruction {{jsxref("statements/for...of","for...of")}} crée une boucle qui fonctionne avec les objets itérables (qui incluent {{jsxref("Array")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, l'objet arguments, etc.). La boucle appelle un mécanisme d'itération propre à l'objet utilisé et elle parcourt l'objet et les valeurs de ses différentes propriétés.

+L'instruction {{jsxref("statements/for...of","for...of")}} crée une boucle qui fonctionne avec [les objets itérables](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration) (qui incluent {{jsxref("Array")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, l'objet [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments), etc.). La boucle appelle un mécanisme d'itération propre à l'objet utilisé et elle parcourt l'objet et les valeurs de ses différentes propriétés. -
for (variable of objet) {
-  instruction
-}
+ for (variable of objet) { + instruction + } -

Dans l'exemple suivant, on illustre la différence entre une boucle for...of et une boucle for...infor...in parcourt les noms des propriétés d'un objet alors que for...of parcourt les valeurs des propriétés :

+Dans l'exemple suivant, on illustre la différence entre une boucle `for...of` et une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in).  `for...in` parcourt les noms des propriétés d'un objet alors que `for...of` parcourt les **valeurs** des propriétés : -
let arr = [3, 5, 7];
+```js
+let arr = [3, 5, 7];
 arr.toto = "coucou";
 
 for (let i in arr) {
@@ -345,6 +340,6 @@ for (let i in arr) {
 for (let i of arr) {
   console.log(i); // affiche 3, 5, 7 dans la console
 }
-
+``` -

{{PreviousNext("Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs", "Web/JavaScript/Guide/Fonctions")}}

+{{PreviousNext("Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs", "Web/JavaScript/Guide/Fonctions")}} diff --git a/files/fr/web/javascript/guide/meta_programming/index.md b/files/fr/web/javascript/guide/meta_programming/index.md index c126f53d88..8564629cd6 100644 --- a/files/fr/web/javascript/guide/meta_programming/index.md +++ b/files/fr/web/javascript/guide/meta_programming/index.md @@ -9,248 +9,360 @@ tags: translation_of: Web/JavaScript/Guide/Meta_programming original_slug: Web/JavaScript/Guide/Métaprogrammation --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/iterateurs_et_generateurs","Web/JavaScript/Guide/Modules")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/iterateurs_et_generateurs","Web/JavaScript/Guide/Modules")}} -

À partir d'ECMAScript 2015, JavaScript fournit les objets natifs {{jsxref("Proxy")}} et {{jsxref("Reflect")}}. Ces objets permettent d'intercepter et de définir des comportements spécifiques pour certaines opérations fondamentales du langage (par exemple la recherche d'une propriété, l'affectation, l'énumération, l'appel d'une fonction, etc.). Grâce à ces deux objets, il est possible d'interagir avec le langage lui-même (on parle alors de métaprogrammation).

+À partir d'ECMAScript 2015, JavaScript fournit les objets natifs {{jsxref("Proxy")}} et {{jsxref("Reflect")}}. Ces objets permettent d'intercepter et de définir des comportements spécifiques pour certaines opérations fondamentales du langage (par exemple la recherche d'une propriété, l'affectation, l'énumération, l'appel d'une fonction, etc.). Grâce à ces deux objets, il est possible d'interagir avec le langage lui-même (on parle alors de métaprogrammation). -

Les proxies

+## Les proxies -

Introduits avec ECMAScript 2015, les objets {{jsxref("Proxy")}} permettent d'intercepter certaines opérations JavaScript et de définir le comportement à avoir quand celles-ci se produisent. Par exemple, on peut intercepter l'accès à une propriété d'un objet :

+Introduits avec ECMAScript 2015, les objets {{jsxref("Proxy")}} permettent d'intercepter certaines opérations JavaScript et de définir le comportement à avoir quand celles-ci se produisent. Par exemple, on peut intercepter l'accès à une propriété d'un objet : -
var handler = {
+```js
+var handler = {
   get: function(cible, nom){
     return nom in cible ? cible[nom] : 42;
 }};
 var p = new Proxy({}, handler);
 p.a = 1;
 console.log(p.a, p.b); // 1, 42
-
+``` -

Ici, l'objet Proxy définit une cible (ici c'est un objet vide) et un gestionnaire (handler) qui implémente une trappe pour l'opération get. Ainsi, l'objet qui est « proxyfié » ne renverra pas undefined lorsqu'on tentera d'accéder à une propriété qui n'est pas définie, à la place le nombre 42 sera renvoyé.

+Ici, l'objet `Proxy` définit une _cible_ (ici c'est un objet vide) et un gestionnaire (_handler_) qui implémente une _trappe_ pour l'opération _get_. Ainsi, l'objet qui est « proxyfié » ne renverra pas `undefined` lorsqu'on tentera d'accéder à une propriété qui n'est pas définie, à la place le nombre 42 sera renvoyé. -
-

Note : D'autres exemples sont disponibles sur la page de l'objet {{jsxref("Proxy")}}.

-
+> **Note :** D'autres exemples sont disponibles sur la page de l'objet {{jsxref("Proxy")}}. -

Terminologie

+### Terminologie -

Lorsqu'on utilise les proxies et leurs fonctionnalités, on utilisera les termes suivants :

+Lorsqu'on utilise les proxies et leurs fonctionnalités, on utilisera les termes suivants : -
-
{{jsxref("Objets_globaux/Proxy/handler","gestionnaire (handler)","","true")}}
-
L'objet qui contient les trappes.
-
trappes
-
Les méthodes qui fournissent l'accès aux propriétés. Ce concept est analogue aux trappes utilisées dans les systèmes d'exploitations.
-
cible
-
L'objet que le proxy virtualise. C'est généralement un objet utilisé en arrière-plan pour stocker les informations. Les invariants (c'est-à-dire les éléments sémantiques qui doivent rester inchangés) concernant le caractère non-extensible de l'objet ou l'aspect non-configurable des propriétés sont vérifiés par rapport à cet objet cible.
-
invariants
-
Les éléments sémantiques qui ne doivent pas être modifiés par les opérations définies dans les proxies. Si un invariant n'est pas respecté au sein d'un gestionnaire, cela provoquera une exception {{jsxref("TypeError")}}.
-
+- {{jsxref("Objets_globaux/Proxy/handler","gestionnaire (handler)","","true")}} + - : L'objet qui contient les trappes. +- trappes + - : Les méthodes qui fournissent l'accès aux propriétés. Ce concept est analogue aux trappes utilisées dans les systèmes d'exploitations. +- cible + - : L'objet que le proxy virtualise. C'est généralement un objet utilisé en arrière-plan pour stocker les informations. Les invariants (c'est-à-dire les éléments sémantiques qui doivent rester inchangés) concernant le caractère non-extensible de l'objet ou l'aspect non-configurable des propriétés sont vérifiés par rapport à cet objet cible. +- invariants + - : Les éléments sémantiques qui ne doivent pas être modifiés par les opérations définies dans les proxies. Si un invariant n'est pas respecté au sein d'un gestionnaire, cela provoquera une exception {{jsxref("TypeError")}}. -

Les gestionnaires et les trappes

+## Les gestionnaires et les trappes -

Le tableau suivant résume les différentes trappes disponibles pour les objets Proxy. Pour plus d'explications et de détails, voir les différents pages de la référence sur chacun de ces concepts.

+Le tableau suivant résume les différentes trappes disponibles pour les objets `Proxy`. Pour plus d'explications et de détails, voir les différents [pages de la référence](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Proxy/handler) sur chacun de ces concepts. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Gestionnaires / TrappesOpérations interceptéesInvariants
{{jsxref("Objets_globaux/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}{{jsxref("Object.getPrototypeOf()")}}
- {{jsxref("Reflect.getPrototypeOf()")}}
- {{jsxref("Object/proto", "__proto__")}}
- {{jsxref("Object.prototype.isPrototypeOf()")}}
- {{jsxref("Operators/instanceof", "instanceof")}}
getPrototypeOf doit renvoyer un objet ou null.
-
- Si cible n'est pas extensible, Object.getPrototypeOf(proxy) doit renvoyer le même objet que Object.getPrototypeOf(cible).
{{jsxref("Objets_globaux/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}{{jsxref("Object.setPrototypeOf()")}}
- {{jsxref("Reflect.setPrototypeOf()")}}
-

Si cible n'est pas extensible, le paramètre prototype doit être la même valeur que Object.getPrototypeOf(cible).

-
{{jsxref("Objets_globaux/Proxy/handler/isExtensible", "handler.isExtensible()")}} -

{{jsxref("Object.isExtensible()")}}

- -

{{jsxref("Reflect.isExtensible()")}}

-
-

Object.isExtensible(proxy) doit renvoyer la même valeur que Object.isExtensible(target).

-
{{jsxref("Objets_globaux/Proxy/handler/preventExtensions", "handler.preventExtensions()")}} -

{{jsxref("Object.preventExtensions()")}}

- -

{{jsxref("Reflect.preventExtensions()")}}

-
-

Object.preventExtensions(proxy) ne renvoie true que si Object.isExtensible(proxy) vaut false.

-
{{jsxref("Objets_globaux/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}} -

{{jsxref("Object.getOwnPropertyDescriptor()")}}

- -

{{jsxref("Reflect.getOwnPropertyDescriptor()")}}

-
-

getOwnPropertyDescriptor doit renvoyer un objet ou undefined.

- -

Une propriété ne peut pas être vue comme non-existante si elle existe comme une propriété propre non-configurable de l'objet cible.

- -

Une propriété ne peut pas être vue comme non-existante si elle existe comme une propriété propre de la cible et que l'objet cible n'est pas extensible.

- -

Une propriété ne peut pas être vue comme existante si elle n'existe pas comme une propriété propre de l'objet cible et que l'objet cible n'est pas extensible.

- -

Une propriété ne peut pas être vue comme non-configurable si elle n'existe pas comme une propriété propre de l'objet cible ou si elle existe comme une propriété configurable propre de l'objet cible.

- -

Le résultat de Object.getOwnPropertyDescriptor(cible) peut être appliqué à la cible en utilisant Object.defineProperty sans que cela ne lève d'exception.

-
{{jsxref("Objets_globaux/Proxy/handler/defineProperty", "handler.defineProperty()")}} -

{{jsxref("Object.defineProperty()")}}

- -

{{jsxref("Reflect.defineProperty()")}}

-
-

Une propriété ne peut pas être ajoutée si l'objet cible n'est pas extensible.

- -

Une propriété ne peut pas être ajoutée ou être modifiée afin d'être non-configurable si elle n'existe pas comme une propriété propre de l'objet cible et qu'elle n'est pas non-configurable.

- -

Une propriété peut ne pas être non-configurable si une propriété correspondante configurable existe sur l'objet cible.

- -

Si une propriété possède une propriété correspondante sur l'objet cible, Object.defineProperty(cible, prop, descripteur) ne doit pas renvoyer d'exception.

- -

En mode strict, si la valeur de retour de defineProperty est false, cela entraînera une exception {{jsxref("TypeError")}} exception.

-
{{jsxref("Objets_globaux/Proxy/handler/has", "handler.has()")}} -

Requête d'une propriété : toto in proxy

- -

Requête d'une propriété héritée : toto in Object.create(proxy)

- -

{{jsxref("Reflect.has()")}}

-
-

Une propriété ne peut pas être vue comme non-existante si elle existe comme propriété propre non-configurable de l'objet cible.

- -

Une propriété ne peut pas être vue comme non-existante si elle existe comme propriété propre de l'objet cible et que l'objet cible n'est pas extensible.

-
{{jsxref("Objets_globaux/Proxy/handler/get", "handler.get()")}} -

Accès à une propriété : proxy[toto] et proxy.truc

- -

Accès à une propriété héritée : Object.create(proxy)[toto]

- -

{{jsxref("Reflect.get()")}}

-
-

La valeur rapportée pour la propriété doit être la même que la valeur de la propriété correspondante sur l'objet cible si celle-ci est une propriété de donnée non accessible en écriture et non-configurable..

- -

La valeur rapportée pour une propriété doit être undefined si la propriété correspondante de l'objet cible est une propriété d'accesseur dont l'attribut [[Get]] vaut undefined.

-
{{jsxref("Objets_globaux/Proxy/handler/set", "handler.set()")}} -

Affection d'une propriété : proxy[toto] = truc et proxy.toto = truc
-
- Affectation d'une propriété héritée : Object.create(proxy)[toto] = truc
-
- {{jsxref("Reflect.set()")}}

-
-

Il est impossible de modifier la valeur d'une propriété pour que celle-ci soit différente de la valeur de la propriété correspondante de l'objet cible si la propriété de l'objet cible est une propriété de donnée qui n'est pas accessible en écriture et qui n'est pas configurable.

- -

Il est impossible de modifier la valeur d'une propriété si la propriété correspondante de l'objet cible est une propriété d'accesseur non-configurable dont l'attribut [[Set]] vaut undefined.

- -

En mode strict, si le gestionnaire pour set renvoie false, cela provoquera une exception {{jsxref("TypeError")}}.

-
{{jsxref("Objets_globaux/Proxy/handler/deleteProperty", "handler.deleteProperty()")}} -

Suppression d'une propriété : delete proxy[toto] et delete proxy.toto
-
- {{jsxref("Reflect.deleteProperty()")}}

-
Une propriété ne peut pas être supprimée si elle existe comme une propriété propre non-configurable de l'objet cible.
{{jsxref("Objets_globaux/Proxy/handler/enumerate", "handler.enumerate()")}} -

Lister les propriétés avec for...in : for (var nom in proxy) {...}
-
- {{jsxref("Reflect.enumerate()")}}

-
La méthode enumerate doit renvoyer un objet.
{{jsxref("Objets_globaux/Proxy/handler/ownKeys", "handler.ownKeys()")}} -

{{jsxref("Object.getOwnPropertyNames()")}}
- {{jsxref("Object.getOwnPropertySymbols()")}}
- {{jsxref("Object.keys()")}}
- {{jsxref("Reflect.ownKeys()")}}

-
-

Le résultat de ownKeys est une liste.
-
- Le type de chaque élément de la liste est soit une {{jsxref("String")}} soit un  {{jsxref("Symbol")}}.
-
- La liste résultatnte doit contenir les clés de toutes les propriétés non-configurables de l'objet cible.
-
- Si l'objet cible n'est pas extensible, la liste résultante doit contenir toutes les clés des propriétés propres de l'objet cibles et aucune autre valeur.

-
{{jsxref("Objets_globaux/Proxy/handler/apply", "handler.apply()")}} -

proxy(..args)
-
- {{jsxref("Function.prototype.apply()")}} and {{jsxref("Function.prototype.call()")}}
-
- {{jsxref("Reflect.apply()")}}

-
Il n'y a pas d'invariant pour la méthode handler.apply.
{{jsxref("Objets_globaux/Proxy/handler/construct", "handler.construct()")}} -

new proxy(...args)
- {{jsxref("Reflect.construct()")}}

-
Le résultat doit être un Objet.
Gestionnaires / TrappesOpérations interceptéesInvariants
+ {{jsxref("Objets_globaux/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}} + + {{jsxref("Object.getPrototypeOf()")}}
{{jsxref("Reflect.getPrototypeOf()")}}
{{jsxref("Object/proto", "__proto__")}}
{{jsxref("Object.prototype.isPrototypeOf()")}}
{{jsxref("Operators/instanceof", "instanceof")}} +
+ getPrototypeOf doit renvoyer un objet ou + null.

Si cible n'est pas + extensible, Object.getPrototypeOf(proxy) doit renvoyer le + même objet que Object.getPrototypeOf(cible). +
+ {{jsxref("Objets_globaux/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}} + + {{jsxref("Object.setPrototypeOf()")}}
{{jsxref("Reflect.setPrototypeOf()")}} +
+

+ Si cible n'est pas extensible, le paramètre + prototype doit être la même valeur que + Object.getPrototypeOf(cible). +

+
+ {{jsxref("Objets_globaux/Proxy/handler/isExtensible", "handler.isExtensible()")}} + +

{{jsxref("Object.isExtensible()")}}

+

{{jsxref("Reflect.isExtensible()")}}

+
+

+ Object.isExtensible(proxy) doit renvoyer la même valeur + que Object.isExtensible(target). +

+
+ {{jsxref("Objets_globaux/Proxy/handler/preventExtensions", "handler.preventExtensions()")}} + +

{{jsxref("Object.preventExtensions()")}}

+

{{jsxref("Reflect.preventExtensions()")}}

+
+

+ Object.preventExtensions(proxy) ne renvoie + true que si Object.isExtensible(proxy) vaut + false. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}} + +

{{jsxref("Object.getOwnPropertyDescriptor()")}}

+

{{jsxref("Reflect.getOwnPropertyDescriptor()")}}

+
+

+ getOwnPropertyDescriptor doit renvoyer un objet ou + undefined. +

+

+ Une propriété ne peut pas être vue comme non-existante si elle existe + comme une propriété propre non-configurable de l'objet cible. +

+

+ Une propriété ne peut pas être vue comme non-existante si elle existe + comme une propriété propre de la cible et que l'objet cible n'est pas + extensible. +

+

+ Une propriété ne peut pas être vue comme existante si elle n'existe + pas comme une propriété propre de l'objet cible et que l'objet cible + n'est pas extensible. +

+

+ Une propriété ne peut pas être vue comme non-configurable si elle + n'existe pas comme une propriété propre de l'objet cible ou si elle + existe comme une propriété configurable propre de l'objet cible. +

+

+ Le résultat de + Object.getOwnPropertyDescriptor(cible) peut être appliqué + à la cible en utilisant Object.defineProperty sans que + cela ne lève d'exception. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/defineProperty", "handler.defineProperty()")}} + +

{{jsxref("Object.defineProperty()")}}

+

{{jsxref("Reflect.defineProperty()")}}

+
+

+ Une propriété ne peut pas être ajoutée si l'objet cible n'est pas + extensible. +

+

+ Une propriété ne peut pas être ajoutée ou être modifiée afin d'être + non-configurable si elle n'existe pas comme une propriété propre de + l'objet cible et qu'elle n'est pas non-configurable. +

+

+ Une propriété peut ne pas être non-configurable si une propriété + correspondante configurable existe sur l'objet cible. +

+

+ Si une propriété possède une propriété correspondante sur l'objet + cible, Object.defineProperty(cible, prop, descripteur) ne + doit pas renvoyer d'exception. +

+

+ En mode strict, si la valeur de retour de + defineProperty est false, cela entraînera + une exception {{jsxref("TypeError")}} exception. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/has", "handler.has()")}} + +

Requête d'une propriété : toto in proxy

+

+ Requête d'une propriété héritée : + toto in Object.create(proxy) +

+

{{jsxref("Reflect.has()")}}

+
+

+ Une propriété ne peut pas être vue comme non-existante si elle existe + comme propriété propre non-configurable de l'objet cible. +

+

+ Une propriété ne peut pas être vue comme non-existante si elle existe + comme propriété propre de l'objet cible et que l'objet cible n'est pas + extensible. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/get", "handler.get()")}} + +

+ Accès à une propriété : proxy[toto] et + proxy.truc +

+

+ Accès à une propriété héritée : + Object.create(proxy)[toto] +

+

{{jsxref("Reflect.get()")}}

+
+

+ La valeur rapportée pour la propriété doit être la même que la valeur + de la propriété correspondante sur l'objet cible si celle-ci est une + propriété de donnée non accessible en écriture et non-configurable.. +

+

+ La valeur rapportée pour une propriété doit être + undefined si la propriété correspondante de l'objet cible + est une propriété d'accesseur dont l'attribut [[Get]] vaut + undefined. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/set", "handler.set()")}} + +

+ Affection d'une propriété : proxy[toto] = truc et + proxy.toto = truc

Affectation d'une propriété + héritée : Object.create(proxy)[toto] = truc

{{jsxref("Reflect.set()")}} +

+
+

+ Il est impossible de modifier la valeur d'une propriété pour que + celle-ci soit différente de la valeur de la propriété correspondante + de l'objet cible si la propriété de l'objet cible est une propriété de + donnée qui n'est pas accessible en écriture et qui n'est pas + configurable. +

+

+ Il est impossible de modifier la valeur d'une propriété si la + propriété correspondante de l'objet cible est une propriété + d'accesseur non-configurable dont l'attribut [[Set]] vaut + undefined. +

+

+ En mode strict, si le gestionnaire pour set renvoie + false, cela provoquera une exception + {{jsxref("TypeError")}}. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/deleteProperty", "handler.deleteProperty()")}} + +

+ Suppression d'une propriété : delete proxy[toto] et + delete proxy.toto

{{jsxref("Reflect.deleteProperty()")}} +

+
+ Une propriété ne peut pas être supprimée si elle existe comme une + propriété propre non-configurable de l'objet cible. +
+ {{jsxref("Objets_globaux/Proxy/handler/enumerate", "handler.enumerate()")}} + +

+ Lister les propriétés avec for...in : + for (var nom in proxy) {...}

{{jsxref("Reflect.enumerate()")}} +

+
La méthode enumerate doit renvoyer un objet.
+ {{jsxref("Objets_globaux/Proxy/handler/ownKeys", "handler.ownKeys()")}} + +

+ {{jsxref("Object.getOwnPropertyNames()")}}
{{jsxref("Object.getOwnPropertySymbols()")}}
{{jsxref("Object.keys()")}}
{{jsxref("Reflect.ownKeys()")}} +

+
+

+ Le résultat de ownKeys est une liste.

Le type + de chaque élément de la liste est soit une + {{jsxref("String")}} soit un  {{jsxref("Symbol")}}.

La + liste résultatnte doit contenir les clés de toutes les propriétés + non-configurables de l'objet cible.

Si l'objet cible n'est + pas extensible, la liste résultante doit contenir toutes les clés des + propriétés propres de l'objet cibles et aucune autre valeur. +

+
+ {{jsxref("Objets_globaux/Proxy/handler/apply", "handler.apply()")}} + +

+ proxy(..args)

{{jsxref("Function.prototype.apply()")}} and + {{jsxref("Function.prototype.call()")}}

{{jsxref("Reflect.apply()")}} +

+
+ Il n'y a pas d'invariant pour la méthode handler.apply. +
+ {{jsxref("Objets_globaux/Proxy/handler/construct", "handler.construct()")}} + +

+ new proxy(...args)
{{jsxref("Reflect.construct()")}} +

+
Le résultat doit être un Objet.
-

Proxies révocables

+## Proxies révocables -

La méthode {{jsxref("Proxy.revocable()")}} est utilisée pour créer un objet Proxy qui puisse être révoqué. Cela signifie que que le proxy pourra être révoqué avec la fonction revoke et arrêtera le proxy. Après cet arrêt, toute opération sur le proxy entraînera une exception {{jsxref("TypeError")}}.

+La méthode {{jsxref("Proxy.revocable()")}} est utilisée pour créer un objet `Proxy` qui puisse être révoqué. Cela signifie que que le proxy pourra être révoqué avec la fonction `revoke` et arrêtera le proxy. Après cet arrêt, toute opération sur le proxy entraînera une exception {{jsxref("TypeError")}}. -
var revocable = Proxy.revocable({}, {
+```js
+var revocable = Proxy.revocable({}, {
   get: function(cible, nom) {
     return "[[" + nom + "]]";
   }
@@ -263,17 +375,19 @@ revocable.revoke();
 console.log(proxy.toto); // déclenche une TypeError
 proxy.toto = 1;          // une TypeError encore
 delete proxy.toto;       // toujours une TypeError
-typeof proxy             // "object", typeof ne déclenche aucune trappe
+typeof proxy // "object", typeof ne déclenche aucune trappe +``` -

Réflexion

+## Réflexion -

{{jsxref("Reflect")}} est un objet natif qui fournit des méthodes pour les opérations JavaScript qui peuvent être interceptées. Ces méthodes sont les mêmes que celles gérées par les {{jsxref("Objets_globaux/Proxy/handler","gestionnaires de proxy","","true")}}. Reflect n'est pas un constructeur et ne peut pas être utilisé comme une fonction !

+{{jsxref("Reflect")}} est un objet natif qui fournit des méthodes pour les opérations JavaScript qui peuvent être interceptées. Ces méthodes sont les mêmes que celles gérées par les {{jsxref("Objets_globaux/Proxy/handler","gestionnaires de proxy","","true")}}. `Reflect` n'est pas un constructeur et ne peut pas être utilisé comme une fonction ! -

Reflect aide à transférer les opérations par défaut depuis le gestionnaire vers la cible.

+`Reflect` aide à transférer les opérations par défaut depuis le gestionnaire vers la cible. -

Par exemple, avec {{jsxref("Reflect.has()")}}, on obtient le comportement de l'opérateur in sous forme d'une fonction :

+Par exemple, avec {{jsxref("Reflect.has()")}}, on obtient le comportement de l'opérateur [`in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in) sous forme d'une fonction : -
Reflect.has(Object, "assign"); // true
-
+```js +Reflect.has(Object, "assign"); // true +``` -

{{PreviousNext("Web/JavaScript/Guide/iterateurs_et_generateurs","Web/JavaScript/Guide/Modules")}}

+{{PreviousNext("Web/JavaScript/Guide/iterateurs_et_generateurs","Web/JavaScript/Guide/Modules")}} diff --git a/files/fr/web/javascript/guide/modules/index.md b/files/fr/web/javascript/guide/modules/index.md index aab9361aa6..1411ef6c26 100644 --- a/files/fr/web/javascript/guide/modules/index.md +++ b/files/fr/web/javascript/guide/modules/index.md @@ -9,87 +9,76 @@ tags: - import translation_of: Web/JavaScript/Guide/Modules --- -
{{jsSidebar("JavaScript Guide")}}{{Previous("Web/JavaScript/Guide/Métaprogrammation")}}
+{{jsSidebar("JavaScript Guide")}}{{Previous("Web/JavaScript/Guide/Métaprogrammation")}} -

Ce guide aborde l'ensemble des notions vous permettant d'utiliser la syntaxe des modules en JavaScript.

+Ce guide aborde l'ensemble des notions vous permettant d'utiliser la syntaxe des modules en JavaScript. -

Un peu de contexte

+## Un peu de contexte -

Les programmes JavaScript ont commencé par être assez petits, réalisant des tâches isolées uniquement là où l'interactivité était nécessaire. Après plusieurs années, nous avons maintenant des applications complètes qui sont exécutées dans les navigateurs avec des codes complexes et volumineux. Des programmes JavaScript sont également exécutés dans d'autres contextes (Node.js par exemple).

+Les programmes JavaScript ont commencé par être assez petits, réalisant des tâches isolées uniquement là où l'interactivité était nécessaire. Après plusieurs années, nous avons maintenant des applications complètes qui sont exécutées dans les navigateurs avec des codes complexes et volumineux. Des programmes JavaScript sont également exécutés dans d'autres contextes ([Node.js](/fr/docs/Glossaire/Node.js) par exemple). -

Il a donc été question de fournir un mécanisme pour diviser les programmes JavaScript en plusieurs modules qu'on pourrait importer les uns dans les autres. Cette fonctionnalité était présente dans Node.js depuis longtemps et plusieurs bibliothèques et frameworks JavaScript ont permis l'utilisation de modules (CommonJS, AMD, RequireJS ou, plus récemment, Webpack et Babel).

+Il a donc été question de fournir un mécanisme pour diviser les programmes JavaScript en plusieurs modules qu'on pourrait importer les uns dans les autres. Cette fonctionnalité était présente dans Node.js depuis longtemps et plusieurs bibliothèques et _frameworks_ JavaScript ont permis l'utilisation de modules ([CommonJS](https://en.wikipedia.org/wiki/CommonJS), [AMD](https://github.com/amdjs/amdjs-api/blob/master/AMD.md), [RequireJS](https://requirejs.org/) ou, plus récemment, [Webpack](https://webpack.github.io/) et [Babel](https://babeljs.io/)). -

Bonne nouvelle, les navigateurs ont également commencé à prendre en charge ces fonctionnalités nativement. C'est le sujet de ce guide.

+Bonne nouvelle, les navigateurs ont également commencé à prendre en charge ces fonctionnalités nativement. C'est le sujet de ce guide. -

Cette implémentation permettra aux navigateurs d'optimiser le chargement des modules, rendant le fonctionnement plus efficace qu'une bibliothèque tierce avec un traitement côté client des allers-retours sur le réseau.

+Cette implémentation permettra aux navigateurs d'optimiser le chargement des modules, rendant le fonctionnement plus efficace qu'une bibliothèque tierce avec un traitement côté client des allers-retours sur le réseau. -

Compatibilité des navigateurs

+## Compatibilité des navigateurs -

L'utilisation des modules natifs JavaScript repose sur les instructions import and export dont vous pouvez voir l'état de la compatibilité ici :

+L'utilisation des modules natifs JavaScript repose sur les instructions [`import`](/fr/docs/Web/JavaScript/Reference/Instructions/import) and [`export`](/fr/docs/Web/JavaScript/Reference/Instructions/export) dont vous pouvez voir l'état de la compatibilité ici : -

import

+### `import` -

{{Compat("javascript.statements.import")}}

+{{Compat("javascript.statements.import")}} -

export

+### `export` -

{{Compat("javascript.statements.export")}}

+{{Compat("javascript.statements.export")}} -

Commençons par un exemple

+## Commençons par un exemple -

Pour illustrer le fonctionnement des modules, nous avons créé un ensemble d'exemples disponibles sur GitHub. Ces exemples illustrent un ensemble de modules pour créer un élément {{htmlelement("canvas")}} sur une page web puis dessiner (et afficher des informations) sur les différentes formes du canevas.

+Pour illustrer le fonctionnement des modules, nous avons créé [un ensemble d'exemples disponibles sur GitHub](https://github.com/mdn/js-examples/tree/master/modules). Ces exemples illustrent un ensemble de modules pour créer un élément {{htmlelement("canvas")}} sur une page web puis dessiner (et afficher des informations) sur les différentes formes du canevas. -

Ces opérations sont assez simples mais nous les avons choisies pour nous concentrer plutôt sur le fonctionnement des modules.

+Ces opérations sont assez simples mais nous les avons choisies pour nous concentrer plutôt sur le fonctionnement des modules. -
-

Note : Si vous souhaitez télécharger les exemples et les exécuter en local, vous devrez utiliser un serveur web local.

-
+> **Note :** Si vous souhaitez télécharger les exemples et les exécuter en local, vous devrez utiliser un serveur web local. -

Structure de l'exemple

+## Structure de l'exemple -

Dans notre premier exemple (cf. basic-modules), nous avons l'arborescence de fichier suivante :

+Dans notre premier exemple (cf. [basic-modules](https://github.com/mdn/js-examples/tree/master/modules/basic-modules)), nous avons l'arborescence de fichier suivante : -
index.html
-main.mjs
-modules/
-    canvas.mjs
-    square.mjs
+ index.html + main.mjs + modules/ + canvas.mjs + square.mjs -
-

Note : Tous les exemples de ce guide suivent la même structure.

-
+> **Note :** Tous les exemples de ce guide suivent la même structure. -

Le répertoire dédié aux modules contient deux modules :

+Le répertoire dédié aux modules contient deux modules : -
    -
  • canvas.mjs — responsable de fonctions pour gérer le canevas +- `canvas.mjs` — responsable de fonctions pour gérer le canevas -
      -
    • create() — crée un canevas avec les dimensions souhaitées (widthheight) à l'intérieur d'un élément {{htmlelement("div")}} doté d'un identifiant et qui est ajouté à l'intérieur d'un élément indiqué. Cette fonction renvoie l'objet contenant le contexte du canevas et l'identifiant du conteneur.
    • -
    • createReportList() — crée une liste non ordonnée à l'intérieur d'un élément indiqué et dans lequel on affiche des données. Cette fonction renvoie l'identifiant de la liste.
    • -
    -
  • -
  • square.mjs : -
      -
    • name — une constante qui est une chaîne de caractères : "square".
    • -
    • draw() — dessine un carré avec une taille/position/couleur données sur le canevas indiqué. Cette fonction renvoie un objet contenant la taille du carré, sa position et sa couleur.
    • -
    • reportArea() — écrit la surface d'un carré dans une liste donnée en fonction de la longueur de son côté.
    • -
    • reportPerimeter() — écrit le périmètre d'un carré dans une liste donnée en fonction de la longueur de son côté.
    • -
    -
  • -
+ - `create()` — crée un canevas avec les dimensions souhaitées (`width` /  `height`) à l'intérieur d'un élément {{htmlelement("div")}} doté d'un identifiant et qui est ajouté à l'intérieur d'un élément indiqué. Cette fonction renvoie l'objet contenant le contexte du canevas et l'identifiant du conteneur. + - `createReportList()` — crée une liste non ordonnée à l'intérieur d'un élément indiqué et dans lequel on affiche des données. Cette fonction renvoie l'identifiant de la liste. -
-

Note : Pour les modules JavaScript natifs, l'extension .mjs a son importance car elle permet d'importer des fichiers avec un type MIME javascript/esm (on pourra utiliser une autre extension qui fournira le type MIME application/javascript) afin d'éviter les erreurs liées à la vérification des types MIME. L'extension .mjs est notamment utile afin de distinguer plus clairement les scripts « classiques » des modules et pourra être exploitée par d'autres outils. Pour plus de détails, voir cette note de Google.

-
+- `square.mjs` : -

Exporter des fonctionnalités

+ - `name` — une constante qui est une chaîne de caractères : `"square"`. + - `draw()` — dessine un carré avec une taille/position/couleur données sur le canevas indiqué. Cette fonction renvoie un objet contenant la taille du carré, sa position et sa couleur. + - `reportArea()` — écrit la surface d'un carré dans une liste donnée en fonction de la longueur de son côté. + - `reportPerimeter()` — écrit le périmètre d'un carré dans une liste donnée en fonction de la longueur de son côté. -

Pour commencer et afin d'utiliser les fonctionnalités d'un module, on devra les exporter. Pour cela, on utilisera l'instruction export.

+> **Note :** Pour les modules JavaScript natifs, l'extension `.mjs` a son importance car elle permet d'importer des fichiers avec un type MIME `javascript/esm` (on pourra utiliser une autre extension qui fournira le type MIME `application/javascript`) afin d'éviter les erreurs liées à la vérification des types MIME. L'extension `.mjs` est notamment utile afin de distinguer plus clairement les scripts « classiques » des modules et pourra être exploitée par d'autres outils. Pour plus de détails, voir [cette note de Google](https://v8.dev/features/modules#mjs). -

La méthode la plus simple consiste à placer cette instruction devant chaque valeur qu'on souhaite exporter, par exemple :

+## Exporter des fonctionnalités -
export const name = 'square';
+Pour commencer et afin d'utiliser les fonctionnalités d'un module, on devra les exporter. Pour cela, on utilisera l'instruction [`export`](/fr/docs/Web/JavaScript/Reference/Instructions/export).
+
+La méthode la plus simple consiste à placer cette instruction devant chaque valeur qu'on souhaite exporter, par exemple :
+
+```js
+export const name = 'square';
 
 export function draw(ctx, length, x, y, color) {
   ctx.fillStyle = color;
@@ -101,148 +90,165 @@ export function draw(ctx, length, x, y, color) {
     y: y,
     color: color
   };
-}
+} +``` -

Il est possible d'exporter des fonctions, des variables (qu'elles soient définies avec var, let ou const) et aussi des classes (que nous verrons par la suite). Les valeurs exportées doivent être présentes au plus haut niveau du script, il n'est pas possible d'utiliser export dans une fonction.

+Il est possible d'exporter des fonctions, des variables (qu'elles soient définies avec `var`, `let` ou `const`) et aussi des classes (que nous verrons par la suite). Les valeurs exportées doivent être présentes au plus haut niveau du script, il n'est pas possible d'utiliser `export` dans une fonction. -

Une méthode plus concise consiste à exporter l'ensemble des valeurs grâce à une seule instruction située à la fin du fichier : les valeurs sont séparées par des virgules et la liste est délimitée entre accolades :

+Une méthode plus concise consiste à exporter l'ensemble des valeurs grâce à une seule instruction située à la fin du fichier : les valeurs sont séparées par des virgules et la liste est délimitée entre accolades : -
export { name, draw, reportArea, reportPerimeter };
+```js +export { name, draw, reportArea, reportPerimeter }; +``` -

Importer des fonctionnalités

+## Importer des fonctionnalités -

Lorsque des fonctionnalités sont exportées par un premier module, on peut les importer dans un script afin de les utiliser. Voici la méthode la plus simple pour ce faire :

+Lorsque des fonctionnalités sont exportées par un premier module, on peut les importer dans un script afin de les utiliser. Voici la méthode la plus simple pour ce faire : -
import { name, draw, reportArea, reportPerimeter } from './modules/square.mjs';
+```js +import { name, draw, reportArea, reportPerimeter } from './modules/square.mjs'; +``` -

On utilise ici l'instruction import, suivi d'une liste d'identifiants séparées par des virgules et délimitée par des accolades, suivie du mot-clé from puis du chemin vers le fichier du module. Le chemin est relatif à la racine du site. Dans notre cas, pour basic-module, on écrira /js-examples/modules/basic-modules.

+On utilise ici l'instruction [`import`](/fr/docs/Web/JavaScript/Reference/Instructions/import), suivi d'une liste d'identifiants séparées par des virgules et délimitée par des accolades, suivie du mot-clé `from` puis du chemin vers le fichier du module. Le chemin est relatif à la racine du site. Dans notre cas, pour `basic-module`, on écrira `/js-examples/modules/basic-modules`. -

Ici, nous avons écrit le chemin d'une façon légèrement différente : on utilise le point (.) afin d'indiquer « l'emplacement courant », suivi du chemin vers le fichier. Cela permet d'éviter d'avoir à écrire l'intégralité du chemin à chaque fois, c'est aussi plus court et cela permet de déplacer le script et le modules sans avoir à modifier les scripts.

+Ici, nous avons écrit le chemin d'une façon légèrement différente : on utilise le point (`.`) afin d'indiquer « l'emplacement courant », suivi du chemin vers le fichier. Cela permet d'éviter d'avoir à écrire l'intégralité du chemin à chaque fois, c'est aussi plus court et cela permet de déplacer le script et le modules sans avoir à modifier les scripts. -

Ainsi :

+Ainsi : -
/js-examples/modules/basic-modules/modules/square.mjs
+ /js-examples/modules/basic-modules/modules/square.mjs -

devient :

+devient : -
./modules/square.mjs
+ ./modules/square.mjs -

Vous pouvez voir ces lignes dans main.mjs.

+Vous pouvez voir ces lignes dans [`main.mjs`](https://github.com/mdn/js-examples/blob/master/modules/basic-modules/main.js). -
-

Note : Pour certains systèmes de module, on peut omettre l'extension de fichier et le point (c'est-à-dire qu'on peut écrire '/modules/square'). Cela ne fonctionne pas pour les modules JavaScript !

-
+> **Note :** Pour certains systèmes de module, on peut omettre l'extension de fichier et le point (c'est-à-dire qu'on peut écrire `'/modules/square'`). Cela ne fonctionne pas pour les modules JavaScript ! -

Une fois les fonctionnalités importées dans le script, vous pouvez utiliser les valeurs dans votre script. Dans main.mjs, après les lignes d'import, on trouvera :

+Une fois les fonctionnalités importées dans le script, vous pouvez utiliser les valeurs dans votre script. Dans `main.mjs`, après les lignes d'import, on trouvera : -
let myCanvas = create('myCanvas', document.body, 480, 320);
+```js
+let myCanvas = create('myCanvas', document.body, 480, 320);
 let reportList = createReportList(myCanvas.id);
 
 let square1 = draw(myCanvas.ctx, 50, 50, 100, 'blue');
 reportArea(square1.length, reportList);
 reportPerimeter(square1.length, reportList);
-
+``` -

Charger le module via le document HTML

+## Charger le module via le document HTML -

Il faut ensuite pouvoir charger le script main.mjs sur la page HTML. Pour cela, nous allons voir qu'il y a quelques différences avec le chargement d'un script « classique ».

+Il faut ensuite pouvoir charger le script `main.mjs` sur la page HTML. Pour cela, nous allons voir qu'il y a quelques différences avec le chargement d'un script « classique ». -

Tout d'abord, il est nécessaire d'indiquer type="module" dans l'élément {{htmlelement("script")}} afin d'indiquer qu'on charge des modules :

+Tout d'abord, il est nécessaire d'indiquer `type="module"` dans l'élément {{htmlelement("script")}} afin d'indiquer qu'on charge des modules : -
<script type="module" src="main.mjs"></script>
+```js + +``` -

Le script qu'on importe ici agit comme le module de plus haut niveau. Si on oublie ce type, Firefox déclenchera une erreur "SyntaxError: import declarations may only appear at top level of a module".

+Le script qu'on importe ici agit comme le module de plus haut niveau. Si on oublie ce type, Firefox déclenchera une erreur "_SyntaxError: import declarations may only appear at top level of a module_". -

Les instructions import et export ne peuvent être utilisées qu'à l'intérieur de modules et pas à l'intérieur de scripts « classiques ».

+Les instructions `import` et `export` ne peuvent être utilisées qu'à l'intérieur de modules et pas à l'intérieur de scripts « classiques ». -
-

Note : Il est aussi possible d'importer des modules dans des scripts qui sont déclarés en incise si on indique bien type="module". On pourra donc écrire <script type="module"> //code du script utilisant les modules ici </script>.

-
+> **Note :** Il est aussi possible d'importer des modules dans des scripts qui sont déclarés en incise si on indique bien `type="module"`. On pourra donc écrire ``. -

Différences entre les modules et les scripts « classiques »

+## Différences entre les modules et les scripts « classiques » -
    -
  • Attention aux tests sur un environnement local : si vous chargez le fichier HTML directement depuis le système de fichier dans le navigateur (en double-cliquant dessus par exemple, ce qui donnera une URL file://), vous rencontrerez des erreurs CORS pour des raisons de sécurité. Il faut donc un serveur local afin de pouvoir tester.
  • -
  • On pourra avoir un comportement différent entre un même script utilisé comme un module et un script utilisé de façon « classique ». En effet, les modules utilisent automatiquement le mode strict.
  • -
  • Il n'est pas nécessaire d'utiliser l'attribut defer (voir les attributs de <script>) lors du chargement d'un module, ceux-ci sont automatiquement chargés à la demande.
  • -
  • Enfin, les fonctionnalités importées ne sont disponibles qu'au sein de la portée du script qui les utilise ! Les valeurs importées ne sont manipulables que depuis le script, elles ne sont pas rattachées à la portée globale. On ne pourra par exemple pas y accéder depuis la console JavaScript. Bien que les erreurs soient toujours indiquées dans les outils de développement, certaines techniques de débogage ne seront pas disponibles.
  • -
+- Attention aux tests sur un environnement local : si vous chargez le fichier HTML directement depuis le système de fichier dans le navigateur (en double-cliquant dessus par exemple, ce qui donnera une URL `file://`), vous rencontrerez des erreurs CORS pour des raisons de sécurité. Il faut donc un serveur local afin de pouvoir tester. +- On pourra avoir un comportement différent entre un même script utilisé comme un module et un script utilisé de façon « classique ». En effet, les modules utilisent automatiquement [le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). +- Il n'est pas nécessaire d'utiliser l'attribut `defer` (voir [les attributs de ` + + +

Saisissez votre numéro de téléphone (avec indicatif) puis cliquez sur "Vérifier". +
Le format attendu est ## ## ## ## ## ou +## # ## ## ## ##.

+
+ +
+ + +``` + +{{PreviousNext("Web/JavaScript/Guide/Formatage_du_texte", "Web/JavaScript/Guide/Collections_indexées")}} diff --git a/files/fr/web/javascript/guide/regular_expressions/quantifiers/index.md b/files/fr/web/javascript/guide/regular_expressions/quantifiers/index.md index f27dfa250b..f94599fde7 100644 --- a/files/fr/web/javascript/guide/regular_expressions/quantifiers/index.md +++ b/files/fr/web/javascript/guide/regular_expressions/quantifiers/index.md @@ -9,90 +9,136 @@ tags: translation_of: Web/JavaScript/Guide/Regular_Expressions/Quantifiers original_slug: Web/JavaScript/Guide/Expressions_régulières/Quantificateurs --- -

{{jsSidebar("JavaScript Guide")}}{{draft}}

+{{jsSidebar("JavaScript Guide")}}{{draft}} -

Les quantificateurs indiquent le nombre de caractères ou d'expressions qu'il faut pour une correspondance.

+Les quantificateurs indiquent le nombre de caractères ou d'expressions qu'il faut pour une correspondance. -

Types

+## Types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaractèresSignification
x* -

Correspond à l'expression précédente qui est répétée 0 ou plusieurs fois. Équivalent à {0,}

- -

Ainsi, /bo*/ correspond à 'boo' dans "Un booléen" et à 'b' dans "Un bateau bleu", mais ne correspond à rien dans "Ce matin".

-
x+ -

Correspond à l'expression précédente qui est répétée une ou plusieurs fois. C'est équivalent à {1,}.

- -

Ainsi, /a+/ correspond au 'a' dans "maison" et à tous les 'a' dans "maaaaaaison" mais ne correspond à rien dans "mission".

-
x? -

Correspond à l'expression précédente qui est présente une fois ou pas du tout. C'est équivalent à {0,1}.
-
- Ainsi, /e?le?/ correspond au 'el' dans "gel" et au 'le' dans "angle" mais aussi au 'l' dans "Oslo".
-
- S'il est utilisé immédiatement après l'un des quantificateurs : *, +, ?, ou {}, il rend le quantificateur moins « gourmand » auquel cas le moins de caractères correspond (le comportement par défaut, « gourmand », permettant de faire correspondre le plus de caractères possible). Par exemple /\d+/ utilisée avec "123abc" fait correspondre "123". Utiliser /\d+?/ à la même chaîne de caractères fait correspondre "1".
-
- Ce symbole est également utilisé dans les tests de présence autour de l'expression, décrits par les lignes x(?=y) et x(?!y) de ce tableau.

-
x{n} -

Correspond pour exactement n occurences de l'expression précédente. N doit être un entier positif.
-
- Ainsi, /a{2}/ ne correspond pas au 'a' de "Mozilla" mais correspond à tous les 'a' de "Mozilaa" et aux deux premiers 'a' de "Mozillaaa".

-
x{n,} -

Correspond lorsqu'il y a au moins n occurences de l'expression précédente. n doit être un entier positif.

- -

Par exemple /a{2,}/ correspondra à "aa" ou à "aaa" ou encore à "aaaa" mais pas à "a".

-
x{n,m} -

Lorsque n et m sont des entiers positifs, cela correspond à au moins n occurences de l'expression précédente et à au plus m occurrences. Lorsque m n'est pas utilisé, la valeur par défaut correspondante sera l'infini.

- -

Ainsi, /a{1,3}/ ne correspond à rien dans "Mozill", au 'a' de "Mozilla", au deux premiers 'a' de "Mozillaa" et au trois premiers 'a' de "Mozillaaaaa". Pour ce dernier exemple, on doit noter que le correspondance ne se fait que sur "aaa" bien qu'il y ait plus de 'a' dans la chaîne de caractères.

-
-

x*?
- x+?
- x??
- x{n}?
- x{n,}?
- x{n,m}?

-
-

Correspond à l'expression précédente qui est présente une fois ou pas du tout. C'est équivalent à {0,1}.
-
- Ainsi, /e?le?/ correspond au 'el' dans "gel" et au 'le' dans "angle" mais aussi au 'l' dans "Oslo".
-
- S'il est utilisé immédiatement après l'un des quantificateurs : *, +, ?, ou {}, il rend le quantificateur moins « gourmand » auquel cas le moins de caractères correspond (le comportement par défaut, « gourmand », permettant de faire correspondre le plus de caractères possible). Par exemple /\d+/ utilisée avec "123abc" fait correspondre "123". Utiliser /\d+?/ à la même chaîne de caractères fait correspondre "1".
-
- Ce symbole est également utilisé dans les tests de présence autour de l'expression, décrits par les lignes x(?=y) et x(?!y) de ce tableau.

-
CaractèresSignification
x* +

+ Correspond à l'expression précédente qui est répétée 0 ou plusieurs + fois. Équivalent à {0,} +

+

+ Ainsi, /bo*/ correspond à 'boo' dans "Un booléen" et à + 'b' dans "Un bateau bleu", mais ne correspond à rien dans "Ce matin". +

+
x+ +

+ Correspond à l'expression précédente qui est répétée une ou plusieurs + fois. C'est équivalent à {1,}. +

+

+ Ainsi, /a+/ correspond au 'a' dans "maison" et à tous les + 'a' dans "maaaaaaison" mais ne correspond à rien dans "mission". +

+
x? +

+ Correspond à l'expression précédente qui est présente une fois ou pas + du tout. C'est équivalent à {0,1}.

Ainsi, + /e?le?/ correspond au 'el' dans "gel" et au 'le' dans + "angle" mais aussi au 'l' dans "Oslo".

S'il est utilisé + immédiatement après l'un des quantificateurs : *, +, ?, ou {}, il rend + le quantificateur moins « gourmand » auquel cas le moins de caractères + correspond (le comportement par défaut, « gourmand », permettant de + faire correspondre le plus de caractères possible). Par exemple + /\d+/ utilisée avec "123abc" fait correspondre "123". + Utiliser /\d+?/ à la même chaîne de caractères fait + correspondre "1".

Ce symbole est également utilisé dans les + tests de présence autour de l'expression, décrits par les lignes + x(?=y) et x(?!y) de ce tableau. +

+
x{n} +

+ Correspond pour exactement n occurences de l'expression précédente. N + doit être un entier positif.

Ainsi, /a{2}/ ne + correspond pas au 'a' de "Mozilla" mais correspond à tous les 'a' de + "Mozilaa" et aux deux premiers 'a' de "Mozillaaa". +

+
x{n,} +

+ Correspond lorsqu'il y a au moins n occurences de + l'expression précédente. n doit être un entier positif. +

+

+ Par exemple /a{2,}/ correspondra à "aa" ou à + "aaa" ou encore à "aaaa" mais pas à + "a". +

+
x{n,m} +

+ Lorsque n et m sont des entiers positifs, + cela correspond à au moins n occurences de l'expression + précédente et à au plus m occurrences. Lorsque + m n'est pas utilisé, la valeur par défaut correspondante + sera l'infini. +

+

+ Ainsi, /a{1,3}/ ne correspond à rien dans "Mozill", au + 'a' de "Mozilla", au deux premiers 'a' de "Mozillaa" et au trois + premiers 'a' de "Mozillaaaaa". Pour ce dernier exemple, on doit noter + que le correspondance ne se fait que sur "aaa" bien qu'il y ait plus + de 'a' dans la chaîne de caractères. +

+
+

+ x*?
x+?
x??
x{n}?
x{n,}?
x{n,m}? +

+
+

+ Correspond à l'expression précédente qui est présente une fois ou pas + du tout. C'est équivalent à {0,1}.

Ainsi, + /e?le?/ correspond au 'el' dans "gel" et au 'le' dans + "angle" mais aussi au 'l' dans "Oslo".

S'il est utilisé + immédiatement après l'un des quantificateurs : *, +, ?, ou {}, il rend + le quantificateur moins « gourmand » auquel cas le moins de caractères + correspond (le comportement par défaut, « gourmand », permettant de + faire correspondre le plus de caractères possible). Par exemple + /\d+/ utilisée avec "123abc" fait correspondre "123". + Utiliser /\d+?/ à la même chaîne de caractères fait + correspondre "1".

Ce symbole est également utilisé dans les + tests de présence autour de l'expression, décrits par les lignes + x(?=y) et x(?!y) de ce tableau. +

+
diff --git a/files/fr/web/javascript/guide/regular_expressions/unicode_property_escapes/index.md b/files/fr/web/javascript/guide/regular_expressions/unicode_property_escapes/index.md index 04b21810ae..f7b7b5c99c 100644 --- a/files/fr/web/javascript/guide/regular_expressions/unicode_property_escapes/index.md +++ b/files/fr/web/javascript/guide/regular_expressions/unicode_property_escapes/index.md @@ -10,422 +10,116 @@ tags: translation_of: Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes original_slug: Web/JavaScript/Guide/Expressions_régulières/Échappement_propriétés_Unicode --- -

{{jsSidebar("JavaScript Guide")}}{{draft}}

+{{jsSidebar("JavaScript Guide")}}{{draft}} -

Les séquences d'échappement pour les propriétés Unicode permettent de distinguer les caractères Unicodes en fonction de leurs propriétés : majuscules, minuscules, symboles mathématiques, ponctuation, etc.

+Les séquences d'échappement pour les propriétés Unicode permettent de distinguer les caractères Unicodes en fonction de leurs propriétés : majuscules, minuscules, symboles mathématiques, ponctuation, etc. -

Syntaxe

+## Syntaxe -
// Valeurs non-binaires
-\p{UnicodePropertyName=ValeurPropriétéUnicode}
+```js
+// Valeurs non-binaires
+\p{UnicodePropertyName=ValeurPropriétéUnicode}
 \p{UnicodePropertyName}
 
 // Valeurs binaires et non-binaires
 \p{UnicodePropertyName}
-
+``` -
-
ValeurPropriétéUnicode
-
Une des valeurs listées ci-après. Pour certaines valeurs, le mot-clé NomPropriétéUnicode et le signe égal peuvent être omis.
-
+- `ValeurPropriétéUnicode` + - : Une des valeurs listées ci-après. Pour certaines valeurs, le mot-clé `NomPropriétéUnicode` et le signe égal peuvent être omis. -

Valeurs

+## Valeurs -

Non-binaires

+### Non-binaires - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ÉchappementsSignification
\p{LC}
- \p{Cased_Letter}
- \p{UnicodePropertyName=Cased_Letter}
N'importe quelle lettre avec la version minuscule et la version majuscule. Équivalent à \p{Lu}|\p{Ll}|p{Lt}.
\p{Close_Punctuation}
- \p{UnicodePropertyName=Close_Punctuation}
\p{Connector_Punctuation}
- \p{UnicodePropertyName=Connector_Punctuation}
\p{Control}
- \p{UnicodePropertyName=Control}
\p{Currency_Symbol}
- \p{UnicodePropertyName=Currency_Symbol}
\p{Dash_Punctuation}
- \p{UnicodePropertyName=Dash_Punctuation}
\p{Decimal_Number}
- \p{UnicodePropertyName=Decimal_Number}
\p{Enclosing_Mark}
- \p{UnicodePropertyName=Enclosing_Mark}
\p{Final_Punctuation}
- ​​​​​​​\p{UnicodePropertyName=Final_Punctuation}
\p{Format}
- ​​​​​​​\p{UnicodePropertyName=Format}
\p{Initial_Punctuation}
- ​​​​​​​\p{UnicodePropertyName=Initial_Punctuation}
\p{Letter}
- ​​​​​​​\p{UnicodePropertyName=Letter}
\p{Letter_Number}
- ​​​​​​​\p{UnicodePropertyName=Line_Separator}
\p{Lowercase_Letter}
- ​​​​​​​\p{UnicodePropertyName=Lowercase_Letter}
\p{Mark}
- ​​​​​​​\p{UnicodePropertyName=Mark}
\p{Math_Symbol;}
- ​​​​​​​\p{UnicodePropertyName=Math_Symbol}
\p{Modifier_Letter}
- ​​​​​​​\p{UnicodePropertyName=Modifier_Letter}
\p{Modifier_Symbol}
- ​​​​​​​\p{UnicodePropertyName=Modifier_Symbol}
\p{Nonspacing_Mark}
- ​​​​​​​\p{UnicodePropertyName=Nonspacing_Mark}
\p{Number}
- ​​​​​​​\p{UnicodePropertyName=Number}
\p{Open_Punctuation}
- ​​​​​​​\p{UnicodePropertyName=Open_Punctuation}
\p{Other}
- ​​​​​​​\p{UnicodePropertyName=Other_Letter}
\p{Other_Letter}
- ​​​​​​​\p{UnicodePropertyName=Other_Letter}
\p{Other_Number}
- ​​​​​​​\p{UnicodePropertyName=Other_Number}
\p{Other_Punctuation}
- ​​​​​​​\p{UnicodePropertyName=Other_Punctuation}
\p{Paragraph_Separator}
- ​​​​​​​\p{UnicodePropertyName=Paragraph_Separator}
\p{Private_Use}Meaning
- ​​​​​​​\p{UnicodePropertyName=Private_Use}
\p{Punctuation}
- ​​​​​​​\p{UnicodePropertyName=Punctuation}
\p{Separator}
- ​​​​​​​\p{UnicodePropertyName=Separator}
\p{Space_Separator}
- ​​​​​​​\p{UnicodePropertyName=Space_Separator}
\p{Spaceing_Mark}
- ​​​​​​​\p{UnicodePropertyName=Spacing_Mark}
\p{Surrogate}
- ​​​​​​​\p{UnicodePropertyName=Surrogate}
\p{Symbol}
- ​​​​​​​\p{UnicodePropertyName=Symbol}
\p{Titlecase_Letter}
- ​​​​​​​\p{UnicodePropertyName=Titlecase_Letter}
\p{Unassigned}
- ​​​​​​​\p{UnicodePropertyName=Unassigned}
\p{Uppercase_Letter}
- ​​​​​​​\p{UnicodePropertyName=UppercaseLetter}
+| Échappements | Signification | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `\p{LC} \p{Cased_Letter} \p{UnicodePropertyName=Cased_Letter}` | N'importe quelle lettre avec la version minuscule et la version majuscule. Équivalent à `\p{Lu}\|\p{Ll}\|p{Lt}`. | +| `\p{Close_Punctuation} \p{UnicodePropertyName=Close_Punctuation}` | | +| `\p{Connector_Punctuation} \p{UnicodePropertyName=Connector_Punctuation}` | | +| `\p{Control} \p{UnicodePropertyName=Control}` | | +| `\p{Currency_Symbol} \p{UnicodePropertyName=Currency_Symbol}` | | +| `\p{Dash_Punctuation} \p{UnicodePropertyName=Dash_Punctuation}` | | +| `\p{Decimal_Number} \p{UnicodePropertyName=Decimal_Number}` | | +| `\p{Enclosing_Mark} \p{UnicodePropertyName=Enclosing_Mark}` | | +| `\p{Final_Punctuation} ​​​​​​​\p{UnicodePropertyName=Final_Punctuation}` | | +| `\p{Format} ​​​​​​​\p{UnicodePropertyName=Format}` | | +| `\p{Initial_Punctuation} ​​​​​​​\p{UnicodePropertyName=Initial_Punctuation}` | | +| `\p{Letter} ​​​​​​​\p{UnicodePropertyName=Letter}` | | +| `\p{Letter_Number} ​​​​​​​\p{UnicodePropertyName=Line_Separator}` | | +| `\p{Lowercase_Letter} ​​​​​​​\p{UnicodePropertyName=Lowercase_Letter}` | | +| `\p{Mark} ​​​​​​​\p{UnicodePropertyName=Mark}` | | +| `\p{Math_Symbol;} ​​​​​​​\p{UnicodePropertyName=Math_Symbol}` | | +| `\p{Modifier_Letter} ​​​​​​​\p{UnicodePropertyName=Modifier_Letter}` | | +| `\p{Modifier_Symbol} ​​​​​​​\p{UnicodePropertyName=Modifier_Symbol}` | | +| `\p{Nonspacing_Mark} ​​​​​​​\p{UnicodePropertyName=Nonspacing_Mark}` | | +| `\p{Number} ​​​​​​​\p{UnicodePropertyName=Number}` | | +| `\p{Open_Punctuation} ​​​​​​​\p{UnicodePropertyName=Open_Punctuation}` | | +| `\p{Other} ​​​​​​​\p{UnicodePropertyName=Other_Letter}` | | +| `\p{Other_Letter} ​​​​​​​\p{UnicodePropertyName=Other_Letter}` | | +| `\p{Other_Number} ​​​​​​​\p{UnicodePropertyName=Other_Number}` | | +| `\p{Other_Punctuation} ​​​​​​​\p{UnicodePropertyName=Other_Punctuation}` | | +| `\p{Paragraph_Separator} ​​​​​​​\p{UnicodePropertyName=Paragraph_Separator}` | | +| `\p{Private_Use}`Meaning `​​​​​​​\p{UnicodePropertyName=Private_Use}` | | +| `\p{Punctuation} ​​​​​​​\p{UnicodePropertyName=Punctuation}` | | +| `\p{Separator} ​​​​​​​\p{UnicodePropertyName=Separator}` | | +| `\p{Space_Separator} ​​​​​​​\p{UnicodePropertyName=Space_Separator}` | | +| `\p{Spaceing_Mark} ​​​​​​​\p{UnicodePropertyName=Spacing_Mark}` | | +| `\p{Surrogate} ​​​​​​​\p{UnicodePropertyName=Surrogate}` | | +| `\p{Symbol} ​​​​​​​\p{UnicodePropertyName=Symbol}` | | +| `\p{Titlecase_Letter} ​​​​​​​\p{UnicodePropertyName=Titlecase_Letter}` | | +| `\p{Unassigned} ​​​​​​​\p{UnicodePropertyName=Unassigned}` | | +| `\p{Uppercase_Letter} ​​​​​​​\p{UnicodePropertyName=UppercaseLetter}` | | -

Binaires

+### Binaires - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ÉchappementSignification
\p{Alphabetic}
\p{Bidi_Control}
\p{Bidi_Mirrored}
\p{Case_Ignorable}
\p{Cased}
\p{Changes_When_Casefolded}
\p{Changes_When_Casemapped}
\p{Changes_When_Lowercased}
\p{Changes_When_NFKC_Casefolded}
\p{Changes_When_Titlecased}
\p{Changes_When_Uppercased}
\p{Dash}
\p{Default_Ignorable_Code_Point}
\p{Deprecated}
\p{Diacritic}
\p{Emoji}
\p{Emoji_Component}
\p{Emoji_Modifier}
\p{Emoji_Modifier_Base}
\p{Emoji_Presentation}
\p{Extender}
\p{Grapheme_Base}
\p{Grapheme_Extend}
\p{Hex_Digit}
\p{ID_Continue}
\p{ID_Start}
\p{Ideographic}
\p{IDS_Binary_Operator}
\p{IDS_Trinary_Operator}
\p{Join_Control}
\p{Logical_Order_Exception}
\p{Lowercase}
\p{Math}
\p{Noncharacter_Code_Point}
\p{Pattern_Syntax}
\p{Pattern_White_Space}
\p{Quotation_Mark}
\p{Radical}
\p{RegionalIndicator}
\p{Sentence_Terminal}
\p{Soft_Dotted}
\p{Terminal_Punctuation}
\p{Unified_Ideograph}
\p{Uppercase}
\p{Variation_Selector}
\p{White_Space}
\p{XID_Continue}
\p{XID_Start}
+| Échappement | Signification | +| ---------------------------------- | ------------- | +| `\p{Alphabetic}` | | +| `\p{Bidi_Control}` | | +| `\p{Bidi_Mirrored}` | | +| `\p{Case_Ignorable}` | | +| `\p{Cased}` | | +| `\p{Changes_When_Casefolded}` | | +| `\p{Changes_When_Casemapped}` | | +| `\p{Changes_When_Lowercased}` | | +| `\p{Changes_When_NFKC_Casefolded}` | | +| `\p{Changes_When_Titlecased}` | | +| `\p{Changes_When_Uppercased}` | | +| `\p{Dash}` | | +| `\p{Default_Ignorable_Code_Point}` | | +| `\p{Deprecated}` | | +| `\p{Diacritic}` | | +| `\p{Emoji}` | | +| `\p{Emoji_Component}` | | +| `\p{Emoji_Modifier}` | | +| `\p{Emoji_Modifier_Base}` | | +| `\p{Emoji_Presentation}` | | +| `\p{Extender}` | | +| `\p{Grapheme_Base}` | | +| `\p{Grapheme_Extend}` | | +| `\p{Hex_Digit}` | | +| `\p{ID_Continue}` | | +| `\p{ID_Start}` | | +| `\p{Ideographic}` | | +| `\p{IDS_Binary_Operator}` | | +| `\p{IDS_Trinary_Operator}` | | +| `\p{Join_Control}` | | +| `\p{Logical_Order_Exception}` | | +| `\p{Lowercase}` | | +| `\p{Math}` | | +| `\p{Noncharacter_Code_Point}` | | +| `\p{Pattern_Syntax}` | | +| `\p{Pattern_White_Space}` | | +| `\p{Quotation_Mark}` | | +| `\p{Radical}` | | +| `\p{RegionalIndicator}` | | +| `\p{Sentence_Terminal}` | | +| `\p{Soft_Dotted}` | | +| `\p{Terminal_Punctuation}` | | +| `\p{Unified_Ideograph}` | | +| `\p{Uppercase}` | | +| `\p{Variation_Selector}` | | +| `\p{White_Space}` | | +| `\p{XID_Continue}` | | +| `\p{XID_Start}` | | diff --git a/files/fr/web/javascript/guide/text_formatting/index.md b/files/fr/web/javascript/guide/text_formatting/index.md index 0049f8f7ac..b67205a859 100644 --- a/files/fr/web/javascript/guide/text_formatting/index.md +++ b/files/fr/web/javascript/guide/text_formatting/index.md @@ -8,196 +8,275 @@ tags: translation_of: Web/JavaScript/Guide/Text_formatting original_slug: Web/JavaScript/Guide/Formatage_du_texte --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Numbers_and_dates", "Web/JavaScript/Guide/Regular_Expressions")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Numbers_and_dates", "Web/JavaScript/Guide/Regular_Expressions")}} -

Ce chapitre présente comment travailler avec les chaînes de caractères et le texte en JavaScript.

+Ce chapitre présente comment travailler avec les chaînes de caractères et le texte en JavaScript. -

Les chaînes de caractères

+## Les chaînes de caractères -

Le type {{Glossary("String")}} de JavaScript est utilisé pour représenter des données textuelles. C'est un ensemble d'"éléments" de valeurs non signées sur 16 bits (unités de codage UTF-16). Chaque élément dans la chaîne de caractères occupe une position dans la chaîne de caractères. Le premier élément se trouve à l'indice 0, le suivant à l'indice 1 et ainsi de suite. La longueur d'une chaîne de caractères est le nombre d'éléments qu'elle contient. Vous pouvez créer des chaînes de caractères en utilisant des littéraux de chaîne de caractères ou des objets chaîne de caractères.

+Le type {{Glossary("String")}} de JavaScript est utilisé pour représenter des données textuelles. C'est un ensemble d'"éléments" de valeurs non signées sur 16 bits (unités de codage UTF-16). Chaque élément dans la chaîne de caractères occupe une position dans la chaîne de caractères. Le premier élément se trouve à l'indice 0, le suivant à l'indice 1 et ainsi de suite. La longueur d'une chaîne de caractères est le nombre d'éléments qu'elle contient. Vous pouvez créer des chaînes de caractères en utilisant des littéraux de chaîne de caractères ou des objets chaîne de caractères. -

Les littéraux de chaînes de caractères

+### Les littéraux de chaînes de caractères -

Vous pouvez créer des chaînes de caractères simple en utilisant des apostrophes simples ou doubles :

+Vous pouvez créer des chaînes de caractères simple en utilisant des apostrophes simples ou doubles : -
'machin'
-"truc"
+```js +'machin' +"truc" +``` -

Des chaînes plus avancées peuvent être créées en utilisant des séquences d'échappement.

+Des chaînes plus avancées peuvent être créées en utilisant des séquences d'échappement. -

Les séquences d'échappement hexadécimales

+#### Les séquences d'échappement hexadécimales -

Le nombre situé après \x est interprété comme un nombre hexadécimal :

+Le nombre situé après \x est interprété comme un nombre [hexadécimal](https://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal) : -
'\xA9' // "©"
+```js +'\xA9' // "©" +``` -

Les séquences d'échappement Unicode

+#### Les séquences d'échappement Unicode -

Les séquences d'échappement Unicode requièrent au moins quatres caractères hexadécimaux après \u.

+Les séquences d'échappement Unicode requièrent au moins quatres caractères hexadécimaux après \u. -
'\u00A9' // "©"
+```js +'\u00A9' // "©" +``` -

L'échappement d'unités de codage Unicode

+#### L'échappement d'unités de codage Unicode -

Nouveau dans ECMAScript 2015. Avec les échappements d'unités de codage Unicode, tout caractère peut être échappé en utilisant des nombres hexadécimaux, de sorte qu'il est possible de d'utiliser des unités de codage Unicode jusqu'à 0x10FFFF. Avec les échappements Unicode simples, il est souvent nécessaire d'écrire les moitiés de remplacement séparément pour obtenir le même résultat.

+Nouveau dans ECMAScript 2015. Avec les échappements d'unités de codage Unicode, tout caractère peut être échappé en utilisant des nombres hexadécimaux, de sorte qu'il est possible de d'utiliser des unités de codage Unicode jusqu'à `0x10FFFF`. Avec les échappements Unicode simples, il est souvent nécessaire d'écrire les moitiés de remplacement séparément pour obtenir le même résultat. -

Voir aussi {{jsxref("String.fromCodePoint()")}} ou {{jsxref("String.prototype.codePointAt()")}}.

+Voir aussi {{jsxref("String.fromCodePoint()")}} ou {{jsxref("String.prototype.codePointAt()")}}. -
'\u{2F804}'
+```js
+'\u{2F804}'
 
 // Le même avec des échappements Unicode simples
 '\uD87E\uDC04'
-
+``` -

Les objets String

+### Les objets String -

L'objet {{jsxref("String")}} est un conteneur autour du type de donnée primitif chaîne de caractères.

+L'objet {{jsxref("String")}} est un conteneur autour du type de donnée primitif chaîne de caractères. -
var s = new String('foo'); // crée un objet String
-console.log(s); // affiche : {'0': 'f', '1': 'o', '2': 'o'}
-typeof s; // retourne 'object'
+ var s = new String('foo'); // crée un objet String + console.log(s); // affiche : {'0': 'f', '1': 'o', '2': 'o'} + typeof s; // retourne 'object' -

Vous pouvez appeler chacune des méthodes de l'objet String avec une valeur littérale de chaîne de caractères : JavaScript convertira automatiquement le littéral en un objet String temporaire, appellera la méthode, puis supprimera l'objet String temporaire. Vous pouvez aussi utiliser la propriété String.length sur un littéral de chaîne de caractères.

+Vous pouvez appeler chacune des méthodes de l'objet `String` avec une valeur littérale de chaîne de caractères : JavaScript convertira automatiquement le littéral en un objet `String` temporaire, appellera la méthode, puis supprimera l'objet `String` temporaire. Vous pouvez aussi utiliser la propriété `String.length` sur un littéral de chaîne de caractères. -

Vous devriez utiliser des littéraux de chaîne de caractères, à moins que vous n'ayez spécifiquement besoin d'un objet String, parce que les objets String peuvent avoir un comportement contre-intuitif :

+Vous devriez utiliser des littéraux de chaîne de caractères, à moins que vous n'ayez spécifiquement besoin d'un objet `String`, parce que les objets `String` peuvent avoir un comportement contre-intuitif : -
var s1 = '2 + 2'; // crée une valeur de chaîne de caractères
+```js
+var s1 = '2 + 2'; // crée une valeur de chaîne de caractères
 var s2 = new String('2 + 2'); // crée un objet String
 eval(s1); // renvoie le nombre 4
-eval(s2); // renvoie la chaîne "2 + 2"
+eval(s2); // renvoie la chaîne "2 + 2" +``` -

Un objet String possède une propriété, length, qui indique le nombre d'unités de codage UTF-16 dans la chaîne de caractères. Par exemple, le code suivant affecte à x la valeur 16, parce que la chaîne "Bonjour, Monde !" contient 16 caractères, chacun représenté par une unité de codage UTF-16. Vous pouvez accéder à chaque unité de codage en utilisant une syntaxe de tableau entre crochets. Vous ne pouvez pas changer les caractères, du fait que les chaînes sont des objets immuables (semblables à des tableaux) :

+Un objet `String` possède une propriété, `length`, qui indique le nombre d'unités de codage UTF-16 dans la chaîne de caractères. Par exemple, le code suivant affecte à `x` la valeur 16, parce que la chaîne "Bonjour, Monde !" contient 16 caractères, chacun représenté par une unité de codage UTF-16. Vous pouvez accéder à chaque unité de codage en utilisant une syntaxe de tableau entre crochets. Vous ne pouvez pas changer les caractères, du fait que les chaînes sont des objets immuables (semblables à des tableaux) : -
var machaine = 'Bonjour, Monde !';
+```js
+var machaine = 'Bonjour, Monde !';
 var x = machaine.length;
 machaine[0] = 'L'; // cela n'a aucun effet car les chaînes sont immuables
 machaine[0]; // cela renvoie "B"
-
+``` -

Les caractères dont les valeurs scalaires sont supérieures à U+FFFF (comme certains rares caractères chinois/japonais/coréens/vietnamiens et certains emojis) sont stockés en UTF-16 via deux unités de codage de remplacement. Par exemple, une chaîne de caractères contenant le seul caractère U+1F600 ("Emoji grinning face") aura une longueur de 2. Le fait d'accéder aux unités de codage individuelles dans une telle chaîne de caractères en utilisant des crochets peut avoir des conséquences indésirables telles que la génération d'unité de codage de remplacement non conformes, en violation du standard Unicode. (Des exemples devraient être ajoutés à cette page après que le bug MDN 857438 sera corrigé. Voir aussi {{jsxref("String.fromCodePoint()")}} ou {{jsxref("String.prototype.codePointAt()")}}.

+Les caractères dont les valeurs scalaires sont supérieures à U+FFFF (comme certains rares caractères chinois/japonais/coréens/vietnamiens et certains emojis) sont stockés en UTF-16 via deux unités de codage de remplacement. Par exemple, une chaîne de caractères contenant le seul caractère U+1F600 ("Emoji grinning face") aura une longueur de 2. Le fait d'accéder aux unités de codage individuelles dans une telle chaîne de caractères en utilisant des crochets peut avoir des conséquences indésirables telles que la génération d'unité de codage de remplacement non conformes, en violation du standard Unicode. (Des exemples devraient être ajoutés à cette page après que le bug MDN 857438 sera corrigé. Voir aussi {{jsxref("String.fromCodePoint()")}} ou {{jsxref("String.prototype.codePointAt()")}}. -

Un objet String a une grande variété de méthodes : par exemple, celles qui retournent une variation de la chaîne de caractères elle-même, telles que substring et toUpperCase.

+Un objet String a une grande variété de méthodes : par exemple, celles qui retournent une variation de la chaîne de caractères elle-même, telles que `substring` et `toUpperCase`. -

Le tableau suivant résume les méthodes des objets {{jsxref("String")}}.

+Le tableau suivant résume les méthodes des objets {{jsxref("String")}}. -

Méthodes de String

+#### Méthodes de `String` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MéthodeDescription
{{jsxref("String.charAt", "charAt")}}, {{jsxref("String.charCodeAt", "charCodeAt")}}, {{jsxref("String.codePointAt", "codePointAt")}}Retourne le caractère ou le code de caractère à la position spécifiée de la chaîne de caractères.
{{jsxref("String.indexOf", "indexOf")}}, {{jsxref("String.lastIndexOf", "lastIndexOf")}}Retourne la position de la sous-chaîne spécifiée dans la chaîne de caractères, ou la dernière position de la sous-chaîne spécifiée, respectivement.
{{jsxref("String.startsWith", "startsWith")}}, {{jsxref("String.endsWith", "endsWith")}}, {{jsxref("String.includes", "includes")}}Retourne le fait de savoir si la chaîne de caractères courante commence ou non par, finit ou non par, ou contient ou non, la chaîne spécifiée.
{{jsxref("String.concat", "concat")}}Combine le texte de deux chaînes de caractères et retourne une nouvelle chaîne de caractères.
{{jsxref("String.fromCharCode", "fromCharCode")}}, {{jsxref("String.fromCodePoint", "fromCodePoint")}},Construit une chaîne de caractères à partir de la séquence de valeurs Unicode fournie. Cette méthode est une méthode de la classe String et non une instance de String.
{{jsxref("String.split", "split")}}Découpe un objet String en un tableau de chaînes de caractères en découpant la chaîne de caractères en sous-chaînes.
{{jsxref("String.slice", "slice")}}Extrait une partie de la chaîne de caractères et retourne une nouvelle chaîne de caractères.
{{jsxref("String.substring", "substring")}}, {{jsxref("String.substr", "substr")}}Retourne le sous-ensemble spécifié de la chaîne de caractères, en spécifiant soit des indices de début et de fin, soit l'indice de début et une longueur.
{{jsxref("String.match", "match")}}, {{jsxref("String.matchAll", "matchAll")}}, {{jsxref("String.replace", "replace")}}, {{jsxref("String.search", "search")}}Ces fonctions utilisent des expressions rationnelles.
{{jsxref("String.toLowerCase", "toLowerCase")}}, {{jsxref("String.toUpperCase", "toUpperCase")}} -

Retourne la chaîne tout en minuscules ou tout en majuscules, respectivement.

-
{{jsxref("String.normalize", "normalize")}}Retourne la Forme Normalisée Unicode de la chaîne de caractères appelante.
{{jsxref("String.repeat", "repeat")}}Retourne une chaîne constituée des éléments de l'objet répétés le nombre de fois donné.
{{jsxref("String.trim", "trim")}}Retire les blancs en début et en fin de chaîne.
MéthodeDescription
+ {{jsxref("String.charAt", "charAt")}}, + {{jsxref("String.charCodeAt", "charCodeAt")}}, + {{jsxref("String.codePointAt", "codePointAt")}} + + Retourne le caractère ou le code de caractère à la position spécifiée de + la chaîne de caractères. +
+ {{jsxref("String.indexOf", "indexOf")}}, + {{jsxref("String.lastIndexOf", "lastIndexOf")}} + + Retourne la position de la sous-chaîne spécifiée dans la chaîne de + caractères, ou la dernière position de la sous-chaîne spécifiée, + respectivement. +
+ {{jsxref("String.startsWith", "startsWith")}}, + {{jsxref("String.endsWith", "endsWith")}}, + {{jsxref("String.includes", "includes")}} + + Retourne le fait de savoir si la chaîne de caractères courante commence + ou non par, finit ou non par, ou contient ou non, la chaîne spécifiée. +
{{jsxref("String.concat", "concat")}} + Combine le texte de deux chaînes de caractères et retourne une nouvelle + chaîne de caractères. +
+ {{jsxref("String.fromCharCode", "fromCharCode")}}, + {{jsxref("String.fromCodePoint", "fromCodePoint")}}, + + Construit une chaîne de caractères à partir de la séquence de valeurs + Unicode fournie. Cette méthode est une méthode de la classe String et + non une instance de String. +
{{jsxref("String.split", "split")}} + Découpe un objet String en un tableau de chaînes de + caractères en découpant la chaîne de caractères en sous-chaînes. +
{{jsxref("String.slice", "slice")}} + Extrait une partie de la chaîne de caractères et retourne une nouvelle + chaîne de caractères. +
+ {{jsxref("String.substring", "substring")}}, + {{jsxref("String.substr", "substr")}} + + Retourne le sous-ensemble spécifié de la chaîne de caractères, en + spécifiant soit des indices de début et de fin, soit l'indice de début + et une longueur. +
+ {{jsxref("String.match", "match")}}, {{jsxref("String.matchAll", "matchAll")}}, + {{jsxref("String.replace", "replace")}}, + {{jsxref("String.search", "search")}} + Ces fonctions utilisent des expressions rationnelles.
+ {{jsxref("String.toLowerCase", "toLowerCase")}}, + {{jsxref("String.toUpperCase", "toUpperCase")}} + +

+ Retourne la chaîne tout en minuscules ou tout en majuscules, + respectivement. +

+
{{jsxref("String.normalize", "normalize")}} + Retourne la Forme Normalisée Unicode de la chaîne de caractères + appelante. +
{{jsxref("String.repeat", "repeat")}} + Retourne une chaîne constituée des éléments de l'objet répétés le nombre + de fois donné. +
{{jsxref("String.trim", "trim")}}Retire les blancs en début et en fin de chaîne.
-

Les littéraux de modèle multi-lignes

+### Les littéraux de modèle multi-lignes -

Le littéraux de modèle sont des littéraux de chaîne de caractères permettant des expressions intégrées. Avec eux, vous pouvez utiliser des chaînes de caractères multi-lignes et des fonctionnalités d'interpolation de chaînes.

+Le [littéraux de modèle](/fr/docs/Web/JavaScript/Reference/Litt%C3%A9raux_gabarits) sont des littéraux de chaîne de caractères permettant des expressions intégrées. Avec eux, vous pouvez utiliser des chaînes de caractères multi-lignes et des fonctionnalités d'interpolation de chaînes. -

Les littéraux de gabarits sont délimités par des accents graves (ou backticks` ` en anglais), au lieu des apostrophes simples ou doubles. Les littéraux de modèle peuvent contenir des marque-places. Ceux-ci sont indiqués par le signe dollar et des accolades (${expression}).

+Les littéraux de gabarits sont délimités par des [accents graves](https://fr.wikipedia.org/wiki/Accent_grave) (ou _backticks\` \`_ en anglais), au lieu des apostrophes simples ou doubles. Les littéraux de modèle peuvent contenir des marque-places. Ceux-ci sont indiqués par le signe dollar et des accolades (`${expression}`). -

Multi-lignes

+#### Multi-lignes -

Tout caractère de passage à la ligne inséré dans le source fait partie du littéral de modèle. En utilisant les chaînes de caractères normales, vous auriez eu à utiliser la syntaxe suivante afin d'avoir des chaînes de caractères multi-lignes :

+Tout caractère de passage à la ligne inséré dans le source fait partie du littéral de modèle. En utilisant les chaînes de caractères normales, vous auriez eu à utiliser la syntaxe suivante afin d'avoir des chaînes de caractères multi-lignes : -
console.log('chaîne ligne de texte 1\n\
+```js
+console.log('chaîne ligne de texte 1\n\
 chaîne ligne de texte 2');
 // "chaîne ligne de texte 1
-// chaîne ligne de texte 2"
+// chaîne ligne de texte 2" +``` -

Pour obtenir le même effet avec des chaînes de caractères multi-lignes, vous pouvez maintenant écrire :

+Pour obtenir le même effet avec des chaînes de caractères multi-lignes, vous pouvez maintenant écrire : -
console.log(`chaîne ligne de texte 1
+```js
+console.log(`chaîne ligne de texte 1
 chaîne ligne de texte 2`);
 // "chaîne ligne de texte 1
-// chaîne ligne de texte 2"
+// chaîne ligne de texte 2" +``` -

Expressions intégrées

+#### Expressions intégrées -

Pour intégrer des expressions dans des chaînes normales, vous devriez utiliser la syntaxe suivante :

+Pour intégrer des expressions dans des chaînes normales, vous devriez utiliser la syntaxe suivante : -
var a = 5;
+```js
+var a = 5;
 var b = 10;
 console.log('Quinze vaut ' + (a + b) + ' et\npas ' + (2 * a + b) + '.');
 // "Quinze vaut 15 et
-// pas 20."
+// pas 20." +``` -

Maintenant, avec les modèles, vous pouvez utiliser du sucre syntaxique rendant plus lisibles les substitutions comme celle-ci :

+Maintenant, avec les modèles, vous pouvez utiliser du sucre syntaxique rendant plus lisibles les substitutions comme celle-ci : -
var a = 5;
+```js
+var a = 5;
 var b = 10;
 console.log(`Quinze vaut ${a + b} et\npas ${2 * a + b}.`);
 // "Quinze vaut 15 et
-// pas 20."
+// pas 20." +``` -

Pour plus d'informations, voir les Littéraux de modèles dans la Référence JavaScript.

+Pour plus d'informations, voir les [Littéraux de modèles](/fr/docs/Web/JavaScript/Reference/Littéraux_gabarits) dans la [Référence JavaScript](/fr/docs/Web/JavaScript/Reference). -

Internationalisation

+## Internationalisation -

L'objet {{jsxref("Intl")}} est l'espace de noms pour l'API d'Internationalisation de l'ECMAScript, qui fournit des fonctionnalités de comparaison de chaînes de caractères, de formatage de nombres, et de formatage des dates et heures prenant en compte la langue. Les constructeurs pour les objets {{jsxref("Collator")}}, {{jsxref("NumberFormat")}} et {{jsxref("DateTimeFormat")}} sont des propriétés de l'objet Intl.

+L'objet {{jsxref("Intl")}} est l'espace de noms pour l'API d'Internationalisation de l'ECMAScript, qui fournit des fonctionnalités de comparaison de chaînes de caractères, de formatage de nombres, et de formatage des dates et heures prenant en compte la langue. Les constructeurs pour les objets {{jsxref("Collator")}}, {{jsxref("NumberFormat")}} et {{jsxref("DateTimeFormat")}} sont des propriétés de l'objet `Intl`. -

Formatage date et heure

+### Formatage date et heure -

L'objet {{jsxref("DateTimeFormat")}} est utile pour formater la date et l'heure. Ce qui suit formate une date en anglais telle qu'utilisée aux États-Unis (le résultat sera différent dans une autre zone horaire).

+L'objet {{jsxref("DateTimeFormat")}} est utile pour formater la date et l'heure. Ce qui suit formate une date en anglais telle qu'utilisée aux États-Unis (le résultat sera différent dans une autre zone horaire). -
var msParJour = 24 * 60 * 60 * 1000;
+```js
+var msParJour = 24 * 60 * 60 * 1000;
 
 // 17 juillet 2014 00:00:00 UTC.
 var _17juillet2014 = new Date(msParJour * (44 * 365 + 11 + 197));
@@ -207,13 +286,14 @@ var options = { year: "2-digit", month: "2-digit", day: "2-digit",
 var dateHeureAmericaine = new Intl.DateTimeFormat("en-US", options).format;
 
 console.log(dateHeureAmericaine(_17juillet2014)); // 07/16/14, 5:00 PM PDT
-
+``` -

Formatage des nombres

+### Formatage des nombres -

L'objet {{jsxref("NumberFormat")}} est utile pour formater les nombres, par exemple, les devises :

+L'objet {{jsxref("NumberFormat")}} est utile pour formater les nombres, par exemple, les devises : -
var prixDeLEssence = new Intl.NumberFormat("en-US",
+```js
+var prixDeLEssence = new Intl.NumberFormat("en-US",
                         { style: "currency", currency: "USD",
                           minimumFractionDigits: 3 });
 
@@ -223,32 +303,34 @@ var decimalesHanRMBEnChine = new Intl.NumberFormat("zh-CN-u-nu-hanidec",
                         { style: "currency", currency: "CNY" });
 
 console.log(decimalesHanRMBEnChine.format(1314.25)); // ¥ 一,三一四.二五
-
+``` -

Ordonnancement

+### Ordonnancement -

L'objet {{jsxref("Collator")}} est utile pour comparer et trier des chaînes de caractères.

+L'objet {{jsxref("Collator")}} est utile pour comparer et trier des chaînes de caractères. -

Par exemple, il y a en fait deux ordres de tri en allemand, annuaire et dictionnaire. Annuaire met l'accent sur le son, et c'est comme si "ä", "ö", etc. étaient étendus en "ae", "oe", etc. avant le tri :

+Par exemple, il y a en fait deux ordres de tri en allemand, _annuaire_ et _dictionnaire_. Annuaire met l'accent sur le son, et c'est comme si "ä", "ö", etc. étaient étendus en "ae", "oe", etc. avant le tri : -
var noms = ['Hochberg', 'Hönigswald', 'Holzman'];
+```js
+var noms = ['Hochberg', 'Hönigswald', 'Holzman'];
 
 var annuaireAllemand = new Intl.Collator('de-DE-u-co-phonebk');
 
 // Comme si tri de ['Hochberg', 'Hoenigswald', 'Holzman']:
 console.log(noms.sort(annuaireAllemand.compare).join(', '));
 // Affiche "Hochberg, Hönigswald, Holzman"
-
+``` -

Certains mots allemands se conjuguent avec des umlauts supplémentaires, de sorte que dans les dictionnaires, le fait d'ignorer les umlauts pour le tri  est perceptible (sauf lors du tri de mots ne différant que par des umlauts, comme schon avant schön).

+Certains mots allemands se conjuguent avec des umlauts supplémentaires, de sorte que dans les dictionnaires, le fait d'ignorer les umlauts pour le tri  est perceptible (sauf lors du tri de mots ne différant _que_ par des umlauts, comme *schon* avant _schön_). -
var dictionnaireAllemand = new Intl.Collator('de-DE-u-co-dict');
+```js
+var dictionnaireAllemand = new Intl.Collator('de-DE-u-co-dict');
 
 // Comme si tri de ["Hochberg", "Honigswald", "Holzman"]:
 console.log(nom.sort(dictionnaireAllemand.compare).join(', '));
 // Affiche "Hochberg, Holzman, Hönigswald"
-
+``` -

Pour plus d'informations sur l'API {{jsxref("Intl")}}, voir aussi Introducing the JavaScript Internationalization API.

+Pour plus d'informations sur l'API {{jsxref("Intl")}}, voir aussi [Introducing the JavaScript Internationalization API](https://hacks.mozilla.org/2014/12/introducing-the-javascript-internationalization-api/). -

{{PreviousNext("Web/JavaScript/Guide/Numbers_and_dates", "Web/JavaScript/Guide/Regular_Expressions")}}

+{{PreviousNext("Web/JavaScript/Guide/Numbers_and_dates", "Web/JavaScript/Guide/Regular_Expressions")}} diff --git a/files/fr/web/javascript/guide/using_promises/index.md b/files/fr/web/javascript/guide/using_promises/index.md index 5f30035f51..95b35d1884 100644 --- a/files/fr/web/javascript/guide/using_promises/index.md +++ b/files/fr/web/javascript/guide/using_promises/index.md @@ -10,16 +10,17 @@ tags: translation_of: Web/JavaScript/Guide/Using_promises original_slug: Web/JavaScript/Guide/Utiliser_les_promesses --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails", "Web/JavaScript/Guide/iterateurs_et_generateurs")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails", "Web/JavaScript/Guide/iterateurs_et_generateurs")}} -

Une promesse est un objet ({{jsxref("Promise")}}) qui représente la complétion ou l'échec d'une opération asynchrone. La plupart du temps, on « consomme » des promesses et c'est donc ce que nous verrons dans la première partie de ce guide pour ensuite expliquer comment les créer.

+Une promesse est un objet ({{jsxref("Promise")}}) qui représente la complétion ou l'échec d'une opération asynchrone. La plupart du temps, on « consomme » des promesses et c'est donc ce que nous verrons dans la première partie de ce guide pour ensuite expliquer comment les créer. -

En résumé, une promesse est un objet qui est renvoyé et auquel on attache des callbacks plutôt que de passer des callbacks à une fonction. Ainsi, au lieu d'avoir une fonction qui prend deux callbacks en arguments :

+En résumé, une promesse est un objet qui est renvoyé et auquel on attache des _callbacks_ plutôt que de passer des _callbacks_ à une fonction. Ainsi, au lieu d'avoir une fonction qui prend deux _callbacks_ en arguments : -
function faireQqcALAncienne(successCallback, failureCallback){
+```js
+function faireQqcALAncienne(successCallback, failureCallback){
   console.log("C'est fait");
   // réussir une fois sur deux
-  if (Math.random() > .5) {
+  if (Math.random() > .5) {
     successCallback("Réussite");
   } else {
     failureCallback("Échec");
@@ -36,16 +37,16 @@ function failureCallback(erreur) {
 }
 
 faireQqcALAncienne(successCallback, failureCallback);
+```
 
-
+On aura une fonction qui renvoie une promesse et on attachera les callbacks sur cette promesse : -

On aura une fonction qui renvoie une promesse et on attachera les callbacks sur cette promesse :

- -
function faireQqc() {
-  return new Promise((successCallback, failureCallback) => {
+```js
+function faireQqc() {
+  return new Promise((successCallback, failureCallback) => {
     console.log("C'est fait");
     // réussir une fois sur deux
-    if (Math.random() > .5) {
+    if (Math.random() > .5) {
       successCallback("Réussite");
     } else {
       failureCallback("Échec");
@@ -55,58 +56,61 @@ faireQqcALAncienne(successCallback, failureCallback);
 
 const promise = faireQqc();
 promise.then(successCallback, failureCallback);
-
+``` -

ou encore :

+ou encore : -
faireQqc().then(successCallback, failureCallback);
-
+```js +faireQqc().then(successCallback, failureCallback); +``` -

Cette dernière forme est ce qu'on appelle un appel de fonction asynchrone. Cette convention possède différents avantages dont le premier est le chaînage.

+Cette dernière forme est ce qu'on appelle _un appel de fonction asynchrone_. Cette convention possède différents avantages dont le premier est _le chaînage_. -

Garanties

+## Garanties -

À la différence des imbrications de callbacks, une promesse apporte certaines garanties :

+À la différence des imbrications de _callbacks_, une promesse apporte certaines garanties : -
    -
  • Les callbacks ne seront jamais appelés avant la fin du parcours de la boucle d'évènements JavaScript courante
  • -
  • Les callbacks ajoutés grâce à then seront appelés, y compris après le succès ou l'échec de l'opération asynchrone
  • -
  • Plusieurs callbacks peuvent être ajoutés en appelant then plusieurs fois, ils seront alors exécutés l'un après l'autre selon l'ordre dans lequel ils ont été insérés.
  • -
+- Les _callbacks_ ne seront jamais appelés avant la fin du parcours de la boucle d'évènements JavaScript courante +- Les _callbacks_ ajoutés grâce à `then` seront appelés, y compris après le succès ou l'échec de l'opération asynchrone +- Plusieurs _callbacks_ peuvent être ajoutés en appelant `then` plusieurs fois, ils seront alors exécutés l'un après l'autre selon l'ordre dans lequel ils ont été insérés. -

Chaînage des promesses

+## Chaînage des promesses -

Un besoin fréquent est d'exécuter deux ou plus d'opérations asynchrones les unes à la suite des autres, avec chaque opération qui démarre lorsque la précédente a réussi et en utilisant le résultat de l'étape précédente. Ceci peut être réalisé en créant une chaîne de promesses.

+Un besoin fréquent est d'exécuter deux ou plus d'opérations asynchrones les unes à la suite des autres, avec chaque opération qui démarre lorsque la précédente a réussi et en utilisant le résultat de l'étape précédente. Ceci peut être réalisé en créant une chaîne de promesses. -

La méthode then() renvoie une nouvelle promesse, différente de la première :

+La méthode `then()` renvoie une _nouvelle_ promesse, différente de la première : -
const promise = faireQqc();
+```js
+const promise = faireQqc();
 const promise2 = promise.then(successCallback, failureCallback);
-
+``` -

ou encore :

+ou encore : -
const promise2 = faireQqc().then(successCallback, failureCallback);
-
+```js +const promise2 = faireQqc().then(successCallback, failureCallback); +``` -

La deuxième promesse (promise2) indique l'état de complétion, pas uniquement pour faireQqc() mais aussi pour le callback qui lui a été passé (successCallback ou failureCallback) qui peut aussi être une fonction asynchrone qui renvoie une promesse. Lorsque c'est le cas, tous les callbacks ajoutés à promise2 forment une file derrière la promesse renvoyée par successCallback ou failureCallback.

+La deuxième promesse (`promise2`) indique l'état de complétion, pas uniquement pour `faireQqc()` mais aussi pour le callback qui lui a été passé (`successCallback` ou `failureCallback`) qui peut aussi être une fonction asynchrone qui renvoie une promesse. Lorsque c'est le cas, tous les _callbacks_ ajoutés à `promise2` forment une file derrière la promesse renvoyée par `successCallback` ou `failureCallback`. -

Autrement dit, chaque promesse représente l'état de complétion d'une étape asynchrone au sein de cette succession d'étapes.

+Autrement dit, chaque promesse représente l'état de complétion d'une étape asynchrone au sein de cette succession d'étapes. -

Auparavant, l'enchaînement de plusieurs opérations asynchrones déclenchait une pyramide dantesque de callbacks :

+Auparavant, l'enchaînement de plusieurs opérations asynchrones déclenchait une pyramide dantesque de _callbacks_ : -
faireQqc(function(result) {
+```js
+faireQqc(function(result) {
   faireAutreChose(result, function(newResult) {
     faireUnTroisiemeTruc(newResult, function(finalResult) {
       console.log('Résultat final :' + finalResult);
     }, failureCallback);
   }, failureCallback);
 }, failureCallback);
-
+``` -

Grâce à des fonctions plus modernes et aux promesses, on attache les callbacks aux promesses qui sont renvoyées. On peut ainsi construire une chaîne de promesses :

+Grâce à des fonctions plus modernes et aux promesses, on attache les _callbacks_ aux promesses qui sont renvoyées. On peut ainsi construire une _chaîne de promesses_ : -
faireQqc().then(function(result) {
+```js
+faireQqc().then(function(result) {
   return faireAutreChose(result);
 })
 .then(function(newResult) {
@@ -116,68 +120,69 @@ const promise2 = promise.then(successCallback, failureCallback);
   console.log('Résultat final : ' + finalResult);
 })
 .catch(failureCallback);
-
+``` -

Les arguments passés à then sont optionnels. La forme catch(failureCallback) est un alias plus court pour then(null, failureCallback). Ces chaînes de promesses sont parfois construites avec des fonctions fléchées :

+Les arguments passés à `then` sont optionnels. La forme `catch(failureCallback)` est un alias plus court pour `then(null, failureCallback)`. Ces chaînes de promesses sont parfois construites avec [des fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées) : -
faireQqc()
-.then(result => faireAutreChose(result))
-.then(newResult => faireUnTroisiemeTruc(newResult))
-.then(finalResult => {
+```js
+faireQqc()
+.then(result => faireAutreChose(result))
+.then(newResult => faireUnTroisiemeTruc(newResult))
+.then(finalResult => {
   console.log('Résultat final : ' + finalResult);
 })
 .catch(failureCallback);
-
+``` -
-

Attention : cela implique que les fonctions asynchrones renvoient toutes des promesses, sinon les callbacks ne pourront être chaînés et les erreurs ne seront pas interceptées (les fonctions fléchées ont une valeur de retour implicite si les accolades ne sont pas utilisées : () => x est synonyme de () => { return x; }).

-
+> **Attention :** cela implique que les fonctions asynchrones renvoient toutes des promesses, sinon les _callbacks_ ne pourront être chaînés et les erreurs ne seront pas interceptées (les fonctions fléchées ont une valeur de retour implicite si les accolades ne sont pas utilisées : `() => x` est synonyme de `() => { return x; }`). -

Chaînage après un catch

+### Chaînage après un catch -

Il est possible de chaîner de nouvelles actions après un rejet, c'est-à-dire un catch. C'est utile pour accomplir de nouvelles actions après qu'une action ait échoué dans la chaine. Par exemple :

+Il est possible de chaîner de nouvelles actions _après_ un rejet, c'est-à-dire un `catch`. C'est utile pour accomplir de nouvelles actions après qu'une action ait échoué dans la chaine. Par exemple : -
new Promise((resolve, reject) => {
+```js
+new Promise((resolve, reject) => {
     console.log('Initial');
 
     resolve();
 })
-.then(() => {
+.then(() => {
     throw new Error('Something failed');
 
     console.log('Do this');
 })
-.catch(() => {
+.catch(() => {
     console.error('Do that');
 })
-.then(() => {
+.then(() => {
     console.log('Do this whatever happened before');
 });
-
+``` -

Cela va produire la sortie suivante :

+Cela va produire la sortie suivante : -
Initial
-Do that
-Do this whatever happened before
-
+ Initial + Do that + Do this whatever happened before -

Notez que le texte Do this n'est pas affiché car l'erreur Something failed a produit un rejet.

+Notez que le texte "Do this" n'est pas affiché car l'erreur "Something failed" a produit un rejet. -

Propagation des erreurs

+## Propagation des erreurs -

Dans les exemples précédents, failureCallback était présent trois fois dans la pyramide de callbacks et une seule fois, à la fin, dans la chaîne des promesses :

+Dans les exemples précédents, `failureCallback` était présent trois fois dans la pyramide de _callbacks_ et une seule fois, à la fin, dans la chaîne des promesses : -
faireQqc()
-.then(result => faireAutreChose(result))
-.then(newResult => faireUnTroisiemeTruc(newResult))
-.then(finalResult => console.log('Résultat final : ' + finalResult))
+```js
+faireQqc()
+.then(result => faireAutreChose(result))
+.then(newResult => faireUnTroisiemeTruc(newResult))
+.then(finalResult => console.log('Résultat final : ' + finalResult))
 .catch(failureCallback);
-
+``` -

En fait, dès qu'une exception est levée, la chaîne de promesses utilisera le premier catch() ou onRejected disponible. Ce fonctionnement est assez proche de ce qu'on peut trouver pour du code synchrone :

+En fait, dès qu'une exception est levée, la chaîne de promesses utilisera le premier `catch()` ou `onRejected` disponible. Ce fonctionnement est assez proche de ce qu'on peut trouver pour du code synchrone : -
try {
+```js
+try {
   const result = syncFaireQqc();
   const newResult = syncFaireQqcAutre(result);
   const finalResult = syncFaireUnTroisiemeTruc(newResult);
@@ -185,11 +190,12 @@ Do this whatever happened before
 } catch(error) {
   failureCallback(error);
 }
-
+``` -

Cette symétrie entre le code asynchrone et le code synchrone atteint son paroxysme avec le couple d'opérateurs async/await d'ECMAScript 2017:

+Cette symétrie entre le code asynchrone et le code synchrone atteint son paroxysme avec le couple d'opérateurs [`async`/`await`](/fr/docs/Web/JavaScript/Reference/Instructions/async_function) d'ECMAScript 2017: -
async function toto() {
+```js
+async function toto() {
   try {
     const result = await faireQqc();
     const newResult = await faireQqcAutre(result);
@@ -199,117 +205,126 @@ Do this whatever happened before
     failureCallback(error);
   }
 }
-
+``` -

Ce fonctionnement est construit sur les promesses et faireQqc() est la même fonction que celle utilisée dans les exemples précédents.

+Ce fonctionnement est construit sur les promesses et `faireQqc()` est la même fonction que celle utilisée dans les exemples précédents. -

Les promesses permettent de résoudre les problèmes de cascades infernales de callbacks notamment en interceptant les différentes erreurs (exceptions et erreurs de programmation). Ceci est essentiel pour obtenir une composition fonctionnelle des opérations asynchrones.

+Les promesses permettent de résoudre les problèmes de cascades infernales de _callbacks_ notamment en interceptant les différentes erreurs (exceptions et erreurs de programmation). Ceci est essentiel pour obtenir une composition fonctionnelle des opérations asynchrones. -

Évènements liés à la rupture d'une promesse

+## Évènements liés à la rupture d'une promesse -

Lorsqu'une promesse est rompue/rejetée, un des deux évènements suivants est envoyé au niveau de la portée globale ({{domxref("window")}} ou {{domxref("Worker")}} si le script est utilisé dans un worker) :

+Lorsqu'une promesse est rompue/rejetée, un des deux évènements suivants est envoyé au niveau de la portée globale ({{domxref("window")}} ou {{domxref("Worker")}} si le script est utilisé dans un _worker_) : -
-
{{domxref("Window.rejectionhandled_event","rejectionhandled")}}
-
Cet évènement est envoyé lorsqu'une promesse est rompue et après que le rejet ai été traité par la fonction reject associée à la promesse.
-
{{domxref("Window.unhandledrejection_event","unhandledrejection")}}
-
Cet évènement est envoyé lorsque la promesse est rompue et qu'aucune fonction n'a été définie pour gérer le rejet de la promesse.
-
+- {{domxref("Window.rejectionhandled_event","rejectionhandled")}} + - : Cet évènement est envoyé lorsqu'une promesse est rompue et après que le rejet ai été traité par la fonction `reject` associée à la promesse. +- {{domxref("Window.unhandledrejection_event","unhandledrejection")}} + - : Cet évènement est envoyé lorsque la promesse est rompue et qu'aucune fonction n'a été définie pour gérer le rejet de la promesse. -

Dans les deux cas, l'évènement (dont le type est {{domxref("PromiseRejectionEvent")}}) aura deux propriétés :

+Dans les deux cas, l'évènement (dont le type est {{domxref("PromiseRejectionEvent")}}) aura deux propriétés : -
-
{{domxref("PromiseRejectionEvent.promise","promise")}}
-
La promesse qui a été rompue.
-
{{domxref("PromiseRejectionEvent.reason","reason")}}
-
La raison pour laquelle la promesse a été rompue.
-
+- {{domxref("PromiseRejectionEvent.promise","promise")}} + - : La promesse qui a été rompue. +- {{domxref("PromiseRejectionEvent.reason","reason")}} + - : La raison pour laquelle la promesse a été rompue. -

Gérer ces évènements permet d'avoir une ultime méthode pour gérer le rejet des promesses. Cela peut notamment s'avérer utile pour le débogage. Ces évènements sont déclenchés au niveau global et permettent ainsi d'intercepter les erreurs pour chaque contexte (fenêtre ou worker)

+Gérer ces évènements permet d'avoir une ultime méthode pour gérer le rejet des promesses. Cela peut notamment s'avérer utile pour le débogage. Ces évènements sont déclenchés au niveau global et permettent ainsi d'intercepter les erreurs pour chaque contexte (fenêtre ou _worker_) -
window.addEventListener("unhandledrejection", event => {
+```js
+window.addEventListener("unhandledrejection", event => {
   // Examiner la ou les promesse(s) qui posent problème en debug
   // Nettoyer ce qui doit l'être quand ça se produit en réel
 
-}, false);
+}, false); +``` -

Envelopper les callbacks des API

+## Envelopper les _callbacks_ des API -

Il est possible de créer un objet  {{jsxref("Promise")}} grâce à son constructeur. Et même si, idéalement, cela ne devrait pas être nécessaire, certaines API fonctionnent toujours avec des callbacks passés en arguments. C'est notamment le cas de la méthode  {{domxref("WindowTimers.setTimeout", "setTimeout()")}} :

+Il est possible de créer un objet  {{jsxref("Promise")}} grâce à son constructeur. Et même si, idéalement, cela ne devrait pas être nécessaire, certaines API fonctionnent toujours avec des _callbacks_ passés en arguments. C'est notamment le cas de la méthode  {{domxref("WindowTimers.setTimeout", "setTimeout()")}} : -
setTimeout(() => saySomething("10 seconds passed"), 10 * 1000);
-
+```js +setTimeout(() => saySomething("10 seconds passed"), 10 * 1000); +``` -

Si on mélange des callbacks et des promesses, cela sera problématique. Si  saySomething échoue ou contient des erreurs, rien n'interceptera l'erreur.

+Si on mélange des _callbacks_ et des promesses, cela sera problématique. Si  `saySomething` échoue ou contient des erreurs, rien n'interceptera l'erreur. -

Pour ces fonctions, la meilleure pratique consiste à les envelopper dans des promesses au plus bas niveau possible et de ne plus les appeler directement :

+Pour ces fonctions, la meilleure pratique consiste à les _envelopper_ dans des promesses au plus bas niveau possible et de ne plus les appeler directement : -
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
+```js
+const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
 
-wait(10 * 1000).then(() => saySomething("10 seconds")).catch(failureCallback);
-
+wait(10 * 1000).then(() => saySomething("10 seconds")).catch(failureCallback); +``` -

Le constructeur Promise prend en argument une fonction et nous permet de la convertir manuellement en une promesse. Ici, vu que setTimeout n'échoue pas vraiment, on laisse de côté la gestion de l'échec.

+Le constructeur `Promise` prend en argument une fonction et nous permet de la convertir manuellement en une promesse. Ici, vu que `setTimeout` n'échoue pas vraiment, on laisse de côté la gestion de l'échec. -

Composition

+## Composition -

{{jsxref("Promise.resolve()")}} et {{jsxref("Promise.reject()")}} sont des méthodes qui permettent de créer des promesses déjà tenues ou rompues.

+{{jsxref("Promise.resolve()")}} et {{jsxref("Promise.reject()")}} sont des méthodes qui permettent de créer des promesses déjà tenues ou rompues. -

{{jsxref("Promise.all()")}} et {{jsxref("Promise.race()")}} sont deux outils de composition qui permettent de mener des opérations asynchrones en parallèle.

+{{jsxref("Promise.all()")}} et {{jsxref("Promise.race()")}} sont deux outils de composition qui permettent de mener des opérations asynchrones en parallèle. -

On peut lancer des opérations en parallèles et attendre qu'elles soient toutes finies de cette façon :

+On peut lancer des opérations en parallèles et attendre qu'elles soient toutes finies de cette façon : -
Promise.all([func1(), func2(), func3()])
-.then(([resultat1, resultat2, resultat3]) => { /* où on utilise resultat1/2/3 */ });
+```js +Promise.all([func1(), func2(), func3()]) +.then(([resultat1, resultat2, resultat3]) => { /* où on utilise resultat1/2/3 */ }); +``` -

Il est possible de construire une composition séquentielle de la façon suivante :

+Il est possible de construire une composition séquentielle de la façon suivante : -
[func1, func2].reduce((p, f) => p.then(f), Promise.resolve());
-
+```js +[func1, func2].reduce((p, f) => p.then(f), Promise.resolve()); +``` -

Dans ce fragment de code, on réduit un tableau de fonctions asynchrones en une chaîne de promesse équivalente à : Promise.resolve().then(func1).then(func2);

+Dans ce fragment de code, on réduit un tableau de fonctions asynchrones en une chaîne de promesse équivalente à : `Promise.resolve().then(func1).then(func2);` -

On peut également accomplir cela avec une fonction de composition réutilisable  :

+On peut également accomplir cela avec une fonction de composition réutilisable  : -
const applyAsync = (acc, val) => acc.then(val);
-const composeAsync = (...funcs) => x => funcs.reduce(applyAsync, Promise.resolve(x));
+```js +const applyAsync = (acc, val) => acc.then(val); +const composeAsync = (...funcs) => x => funcs.reduce(applyAsync, Promise.resolve(x)); +``` -

La fonction composeAsync accepte autant de fonctions que nécessaire comme arguments et renvoie une nouvelle fonction qui prend une valeur initiale pour la passer à travers ces étapes de compositions. Cette façon de faire garantit que les fonctions, qu'elles soient synchrones ou asynchrones, sont exécutées dans le bon ordre :

+La fonction `composeAsync` accepte autant de fonctions que nécessaire comme arguments et renvoie une nouvelle fonction qui prend une valeur initiale pour la passer à travers ces étapes de compositions. Cette façon de faire garantit que les fonctions, qu'elles soient synchrones ou asynchrones, sont exécutées dans le bon ordre : -
const transformData = composeAsync(func1, asyncFunc1, asyncFunc2, func2);
-transformData(data);
+```js +const transformData = composeAsync(func1, asyncFunc1, asyncFunc2, func2); +transformData(data); +``` -

Avec ECMAScript 2017, on peut obtenir une composition séquentielle plus simplement avec les opérateurs await/async :

+Avec ECMAScript 2017, on peut obtenir une composition séquentielle plus simplement avec les opérateurs `await`/`async` : -
let result;
+```js
+let result;
 for(const f of [func1, func2, func3]) {
   result = await f(result);
-} 
+} +``` -

Gestion du temps

+## Gestion du temps -

Pour éviter de mauvaises surprises, les fonctions passées à then() ne seront jamais appelées de façon synchrone, y compris lorsqu'il s'agit d'une promesse déjà résolue :

+Pour éviter de mauvaises surprises, les fonctions passées à `then()` ne seront jamais appelées de façon synchrone, y compris lorsqu'il s'agit d'une promesse déjà résolue : -
Promise.resolve().then(() => console.log(2));
+```js
+Promise.resolve().then(() => console.log(2));
 console.log(1); // 1, 2
-
+``` -

En fait, la fonction passée à then() est placée dans une file de micro-tâches qui sont exécutées lorsque cette file est vidée à la fin de la boucle d'évènements JavaScript :

+En fait, la fonction passée à ` then``() ` est placée dans une file de micro-tâches qui sont exécutées lorsque cette file est vidée à la fin de la boucle d'évènements JavaScript : -
var wait = ms => new Promise(resolve => setTimeout(resolve, ms));
+```js
+var wait = ms => new Promise(resolve => setTimeout(resolve, ms));
 
-wait().then(() => console.log(4));
-Promise.resolve().then(() => console.log(2)).then(() => console.log(3));
+wait().then(() => console.log(4));
+Promise.resolve().then(() => console.log(2)).then(() => console.log(3));
 console.log(1); // 1, 2, 3, 4
-
+``` -

Voir aussi

+## Voir aussi - +- {{jsxref("Promise.then()")}} +- [`async`/`await`](/fr/docs/Web/JavaScript/Reference/Instructions/async_function) +- [La spécification Promises/A+](http://promisesaplus.com/) +- [Nolan Lawson : We have a problem with promises — Common mistakes with promises (article en anglais)](http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html) -

{{PreviousNext("Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails", "Web/JavaScript/Guide/iterateurs_et_generateurs")}}

+{{PreviousNext("Web/JavaScript/Guide/Le_modèle_objet_JavaScript_en_détails", "Web/JavaScript/Guide/iterateurs_et_generateurs")}} diff --git a/files/fr/web/javascript/guide/working_with_objects/index.md b/files/fr/web/javascript/guide/working_with_objects/index.md index f02ca6ff02..214902c6dd 100644 --- a/files/fr/web/javascript/guide/working_with_objects/index.md +++ b/files/fr/web/javascript/guide/working_with_objects/index.md @@ -12,56 +12,60 @@ tags: translation_of: Web/JavaScript/Guide/Working_with_Objects original_slug: Web/JavaScript/Guide/Utiliser_les_objets --- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}
+{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}} -

JavaScript est conçu autour d'un paradigme simple, basé sur les objets. Un objet est un ensemble de propriétés et une propriété est une association entre un nom (aussi appelé clé) et une valeur. La valeur d'une propriété peut être une fonction, auquel cas la propriété peut être appelée « méthode ». En plus des objets natifs fournis par l'environnement, il est possible de construire ses propres objets. Ce chapitre aborde la manipulation d'objets, l'utilisation des propriétés, fonctions et méthodes, il explique également comment créer ses objets.

+JavaScript est conçu autour d'un paradigme simple, basé sur les objets. Un objet est un ensemble de propriétés et une propriété est une association entre un nom (aussi appelé _clé_) et une valeur. La valeur d'une propriété peut être une fonction, auquel cas la propriété peut être appelée « méthode ». En plus des objets natifs fournis par l'environnement, il est possible de construire ses propres objets. Ce chapitre aborde la manipulation d'objets, l'utilisation des propriétés, fonctions et méthodes, il explique également comment créer ses objets. -

Un aperçu des objets

+## Un aperçu des objets -

À l'instar de nombreux autres langages de programmation, on peut comparer les objets JavaScript aux objets du monde réel.

+À l'instar de nombreux autres langages de programmation, on peut comparer les objets JavaScript aux objets du monde réel. -

En JavaScript, un objet est une entité à part entière qui possède des propriétés et un type. Si on effectue cette comparaison avec une tasse par exemple, on pourra dire qu'une tasse est un objet avec des propriétés. Ces propriétés pourront être la couleur, la forme, le poids, le matériau qui la constitue, etc. De la même façon, un objet JavaScript possède des propriétés, chacune définissant une caractéristique.

+En JavaScript, un objet est une entité à part entière qui possède des propriétés et un type. Si on effectue cette comparaison avec une tasse par exemple, on pourra dire qu'une tasse est un objet avec des propriétés. Ces propriétés pourront être la couleur, la forme, le poids, le matériau qui la constitue, etc. De la même façon, un objet JavaScript possède des propriétés, chacune définissant une caractéristique. -

Les objets et les propriétés

+## Les objets et les propriétés -

Un objet JavaScript possède donc plusieurs propriétés qui lui sont associées. Une propriété peut être vue comme une variable attachée à l'objet. Les propriétés d'un objet sont des variables tout ce qu'il y a de plus classiques, exception faite qu'elles sont attachées à des objets. Les propriétés d'un objet représentent ses caractéristiques et on peut y accéder avec une notation utilisant le point « . », de la façon suivante :

+Un objet JavaScript possède donc plusieurs propriétés qui lui sont associées. Une propriété peut être vue comme une variable attachée à l'objet. Les propriétés d'un objet sont des variables tout ce qu'il y a de plus classiques, exception faite qu'elles sont attachées à des objets. Les propriétés d'un objet représentent ses caractéristiques et on peut y accéder avec une notation utilisant le point « . », de la façon suivante : -
nomObjet.nomPropriete
+```js +nomObjet.nomPropriete +``` -

Comme pour les variables JavaScript en général, le nom de l'objet (qui peut être une variable) et le nom des propriétés sont sensibles à la casse (une lettre minuscule ne sera pas équivalente à une lettre majuscule). On peut définir une propriété en lui affectant une valeur. Ainsi, si on crée un objet maVoiture et qu'on lui donne les propriétés fabricant, modèle, et année :

+Comme pour les variables JavaScript en général, le nom de l'objet (qui peut être une variable) et le nom des propriétés sont sensibles à la casse (une lettre minuscule ne sera pas équivalente à une lettre majuscule). On peut définir une propriété en lui affectant une valeur. Ainsi, si on crée un objet `maVoiture` et qu'on lui donne les propriétés `fabricant`, `modèle`, et `année` : -
+```js
 let maVoiture = new Object();
 maVoiture.fabricant = "Ford";
 maVoiture.modele = "Mustang";
 maVoiture.annee = 1969;
-
+``` -

L'exemple précédent peut également s'écrire avec la syntaxe littérale pour initialiser les objets : on fournit une liste, délimitée par des virgules, qui contient des paires de noms et de valeurs décrivant les propriétés et où le tout est encadré d'accolades ({}) :

+L'exemple précédent peut également s'écrire avec **[la syntaxe littérale pour initialiser les objets](#object_initializers)** : on fournit une liste, délimitée par des virgules, qui contient des paires de noms et de valeurs décrivant les propriétés et où le tout est encadré d'accolades (`{}`) : -
+```js
 let maVoiture = {
   make: 'Ford',
   model: 'Mustang',
   year: 1969
 };
-
+``` -

Les propriétés d'un objet qui n'ont pas été affectées auront la valeur undefined (et non null).

+Les propriétés d'un objet qui n'ont pas été affectées auront la valeur [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) (et non [`null`](/fr/docs/Web/JavaScript/Reference/Global_Objects/null)). -
maVoiture.color; // undefined
+```js +maVoiture.color; // undefined +``` -

On peut aussi définir ou accéder à des propriétés JavaScript en utilisant une notation avec les crochets (voir la page sur les accesseurs de propriétés pour plus de détails). Les objets sont parfois appelés « tableaux associatifs ». Cela peut se comprendre, car chaque propriété est associée avec une chaîne de caractères qui permet d'y accéder. Ainsi, par exemple, on peut accéder aux propriétés de l'objet maVoiture de la façon suivante :

+On peut aussi définir ou accéder à des propriétés JavaScript en utilisant une notation avec les crochets (voir la page sur [les accesseurs de propriétés](/fr/docs/Web/JavaScript/Reference/Operators/Property_Accessors) pour plus de détails). Les objets sont parfois appelés « tableaux associatifs ». Cela peut se comprendre, car chaque propriété est associée avec une chaîne de caractères qui permet d'y accéder. Ainsi, par exemple, on peut accéder aux propriétés de l'objet `maVoiture` de la façon suivante : -
+```js
 maVoiture["fabricant"] = "Ford";
 maVoiture["modèle"] = "Mustang";
 maVoiture["année"] = 1969;
-
+``` -

Le nom d'une propriété d'un objet peut être n'importe quelle chaîne JavaScript valide (ou n'importe quelle valeur qui puisse être convertie en une chaîne de caractères), y compris la chaîne vide. Cependant, n'importe quel nom de propriété qui n'est pas un identifiant valide (par exemple si le nom d'une propriété contient un tiret, un espace ou débute par un chiffre) devra être utilisé avec la notation à crochets. Cette notation s'avère également utile quand les noms des propriétés sont déterminés de façon dynamique (c'est-à-dire qu'on ne sait pas le nom de la propriété avant l'exécution). Par exemple :

+Le nom d'une propriété d'un objet peut être n'importe quelle chaîne JavaScript valide (ou n'importe quelle valeur qui puisse être convertie en une chaîne de caractères), y compris la chaîne vide. Cependant, n'importe quel nom de propriété qui n'est pas un identifiant valide (par exemple si le nom d'une propriété contient un tiret, un espace ou débute par un chiffre) devra être utilisé avec la notation à crochets. Cette notation s'avère également utile quand les noms des propriétés sont déterminés de façon dynamique (c'est-à-dire qu'on ne sait pas le nom de la propriété avant l'exécution). Par exemple : -
+```js
 // on crée quatre variables avec une même instruction
 let monObj = new Object();
 let str = "maChaîne";
@@ -76,23 +80,23 @@ monObj[obj]              = "Objet";
 monObj[""]               = "Une chaîne vide";
 
 console.log(monObj);
-
+``` -

On notera que les valeurs utilisées entre les crochets sont automatiquement converties en chaînes de caractères grâce à la méthode toString() sauf si ces valeurs sont des symboles (cf. Symbol). En effet, les noms des propriétés pour les objets JavaScript peuvent être des chaînes de caractères ou des symboles. Ainsi, dans l'exemple précédent, lorsqu'on ajoute la clé obj sur monObj, le moteur JavaScript appelle la méthode obj.toString() et utilise la chaîne de caractères renvoyée par cette méthode comme nom pour la propriété.

+On notera que les valeurs utilisées entre les crochets sont automatiquement converties en chaînes de caractères grâce à la méthode [`toString()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) sauf si ces valeurs sont des symboles (cf. [`Symbol`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Symbol)). En effet, les noms des propriétés pour les objets JavaScript peuvent être des chaînes de caractères ou des symboles. Ainsi, dans l'exemple précédent, lorsqu'on ajoute la clé `obj` sur `monObj`, le moteur JavaScript appelle la méthode `obj.toString()` et utilise la chaîne de caractères renvoyée par cette méthode comme nom pour la propriété. -

On peut également accéder aux propriétés d'un objet en utilisant une valeur qui est une chaîne de caractères enregistrée dans une variable :

+On peut également accéder aux propriétés d'un objet en utilisant une valeur qui est une chaîne de caractères enregistrée dans une variable : -
+```js
 let nomPropriété = "fabricant";
 maVoiture[nomPropriété] = "Ford";
 
 nomPropriété = "modèle";
 maVoiture[nomPropriété] = "Mustang";
-
+``` -

La notation avec les crochets peut être utilisée dans une boucle for...in afin de parcourir les propriétés énumérables d'un objet. Pour illustrer comment cela fonctionne, on définit la fonction suivante qui affiche les propriétés d'un objet qu'on lui a passé en argument avec le nom associé :

+La notation avec les crochets peut être utilisée dans une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Statements/for...in) afin de parcourir les propriétés énumérables d'un objet. Pour illustrer comment cela fonctionne, on définit la fonction suivante qui affiche les propriétés d'un objet qu'on lui a passé en argument avec le nom associé : -
+```js
 function afficherProps(obj, nomObjet) {
   let resultat = "";
   for (let i in obj) {
@@ -102,29 +106,27 @@ function afficherProps(obj, nomObjet) {
   }
   return resultat;
 }
-
+``` -

Si on appelle la fonction avec afficherProps(maVoiture, "maVoiture"), cela affichera le contenu suivant dans la console :

+Si on appelle la fonction avec `afficherProps(maVoiture, "maVoiture")`, cela affichera le contenu suivant dans la console : -
+```js
 maVoiture.fabricant = Ford
 maVoiture.modele = Mustang
 maVoiture.annee = 1969
-
+``` -

Lister les propriétés d'un objet

+## Lister les propriétés d'un objet -

À partir d'ECMAScript 5, il existe trois méthodes natives pour lister/parcourir les propriétés d'un objet :

+À partir d'ECMAScript 5, il existe trois méthodes natives pour lister/parcourir les propriétés d'un objet : -
    -
  • Les boucles for...in qui permettent de parcourir l'ensemble des propriétés énumérables d'un objet et de sa chaîne de prototypes.
  • -
  • Object.keys(o) qui permet de renvoyer un tableau contenant les noms (clés ou keys) des propriétés propres (celles qui ne sont pas héritées via la chaîne de prototypes) d'un objet o pour les propriétés énumérables.
  • -
  • Object.getOwnPropertyNames(o) qui permet de renvoyer un tableau contenant les noms des propriétés propres (énumérables ou non) d'un objet o.
  • -
+- Les boucles [`for...in`](/fr/docs/Web/JavaScript/Reference/Statements/for...in) qui permettent de parcourir l'ensemble des propriétés énumérables d'un objet et de sa chaîne de prototypes. +- [`Object.keys(o)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) qui permet de renvoyer un tableau contenant les noms (clés ou _keys_) des propriétés propres (celles qui ne sont pas héritées via la chaîne de prototypes) d'un objet `o` pour les propriétés énumérables. +- [`Object.getOwnPropertyNames(o)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames) qui permet de renvoyer un tableau contenant les noms des propriétés propres (énumérables ou non) d'un objet `o`. -

Avant ECMAScript 5, il n'existait aucune méthode native pour lister l'ensemble des propriétés d'un objet. Cependant, on pouvait utiliser le code suivant pour y parvenir :

+Avant ECMAScript 5, il n'existait aucune méthode native pour lister l'ensemble des propriétés d'un objet. Cependant, on pouvait utiliser le code suivant pour y parvenir : -
+```js
 function listerToutesLesProprietes(o){
   let objectToInspect;
   let resultat = [];
@@ -136,41 +138,42 @@ function listerToutesLesProprietes(o){
   }
   return resultat;
 }
-
+``` -

Cela peut être utile pour révéler les propriétés « cachées » où leur nom est réutilisé dans la chaîne de prototypes. Pour lister les propriétés accessibles, il suffit de retirer les duplicatas du tableau.

+Cela peut être utile pour révéler les propriétés « cachées » où leur nom est réutilisé dans la chaîne de prototypes. Pour lister les propriétés accessibles, il suffit de retirer les duplicatas du tableau. -

Créer de nouveaux objets

+## Créer de nouveaux objets -

Un environnement JavaScript possède certains objets natifs prédéfinis. En plus de ces objets, il est possible de créer ses propres objets. Pour cela, on peut utiliser un initialisateur d'objet. On peut aussi créer un constructeur puis instancier un objet avec cette fonction en utilisant l'opérateur new.

+Un environnement JavaScript possède certains objets natifs prédéfinis. En plus de ces objets, il est possible de créer ses propres objets. Pour cela, on peut utiliser un [initialisateur d'objet](/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer). On peut aussi créer un constructeur puis instancier un objet avec cette fonction en utilisant l'opérateur `new`. -

Utiliser les initialisateurs d'objets

+### Utiliser les initialisateurs d'objets -

On peut créer des objets avec une fonction qui est un constructeur, mais on peut aussi créer des objets avec des initialisateurs d'objets. On appelle parfois cette syntaxe la notation littérale.

+On peut créer des objets avec une fonction qui est un constructeur, mais on peut aussi créer des objets avec des [initialisateurs d'objets](/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer). On appelle parfois cette syntaxe la notation _littérale_. -

La syntaxe utilisée avec les initialisateurs d'objets est la suivante :

+La syntaxe utilisée avec les initialisateurs d'objets est la suivante : -
+```js
 let obj = { 
   propriete_1:   valeur_1,   // propriete_# peut être un identifiant
             2:   valeur_2,   // ou un nombre
             // ...,
   "propriete n": valeur_n
   }; // ou une chaîne
-
+``` -

où on a obj le nom de l'objet qu'on souhaite créer et chaque propriete_i un identifiant (que ce soit un nom, un nombre ou une chaîne de caractères) et chaque valeur_i une expression dont la valeur sera affectée à la propriété propriete_i. S'il n'est pas nécessaire d'utiliser l'objet obj par la suite, il n'est pas nécessaire de réaliser l'affectation à une variable (attention alors à l'encadrer dans des parenthèses pour que le littéral objet soit bien interprété comme une instruction et non pas comme un bloc.)

+où on a `obj` le nom de l'objet qu'on souhaite créer et chaque `propriete_i` un identifiant (que ce soit un nom, un nombre ou une chaîne de caractères) et chaque `valeur_i` une expression dont la valeur sera affectée à la propriété `propriete_i`. S'il n'est pas nécessaire d'utiliser l'objet `obj` par la suite, il n'est pas nécessaire de réaliser l'affectation à une variable (attention alors à l'encadrer dans des parenthèses pour que le littéral objet soit bien interprété comme une instruction et non pas comme un bloc.) -

Les initialisateurs d'objets sont des expressions et chaque initialisateur entraîne la création d'un nouvel objet dans l'instruction pour laquelle il est exécuté. Des initialisateurs d'objets identiques créeront des objets distincts qui ne seront pas équivalents. Les objets sont créés de la même façon qu'avec new Object(), les objets créés à partir d'une expression littérale seront des instances d'Object.

+Les initialisateurs d'objets sont des expressions et chaque initialisateur entraîne la création d'un nouvel objet dans l'instruction pour laquelle il est exécuté. Des initialisateurs d'objets identiques créeront des objets distincts qui ne seront pas équivalents. Les objets sont créés de la même façon qu'avec `new Object()`, les objets créés à partir d'une expression littérale seront des instances d'`Object`. -

L'instruction suivante crée un objet et l'affecte à une variable x si et seulement si l'expression cond est vraie :

+L'instruction suivante crée un objet et l'affecte à une variable `x` si et seulement si l'expression `cond` est vraie : -
if (cond) let x = {emplacement: "le monde"};
-
+```js +if (cond) let x = {emplacement: "le monde"}; +``` -

Dans l'exemple suivant, on crée un objet maHonda avec trois propriétés. La propriété moteur est également un objet avec ses propres propriétés.

+Dans l'exemple suivant, on crée un objet `maHonda` avec trois propriétés. La propriété `moteur` est également un objet avec ses propres propriétés. -
+```js
 let maHonda = {
   couleur: "rouge",
   roue: 4,
@@ -179,99 +182,98 @@ let maHonda = {
     taille: 2.2
   }
 };
-
+``` -

De la même façon, on pourra utiliser des initialisateurs pour créer des tableaux. Pour plus d'informations à ce sujet, voir les littéraux de tableaux.

+De la même façon, on pourra utiliser des initialisateurs pour créer des tableaux. Pour plus d'informations à ce sujet, voir [les littéraux de tableaux](/fr/docs/Web/JavaScript/Guide/Grammar_and_types#les_litt.c3.a9raux_de_tableaux). -

Utiliser les constructeurs

+### Utiliser les constructeurs -

On peut aussi créer des objets d'une autre façon, en suivant deux étapes :

+On peut aussi créer des objets d'une autre façon, en suivant deux étapes : -
    -
  1. On définit une fonction qui sera un constructeur définissant le type de l'objet. La convention, pour nommer les constructeurs, est d'utiliser une majuscule comme première lettre pour l'identifiant de la fonction.
  2. -
  3. On crée une instance de l'objet avec new.
  4. -
+1. On définit une fonction qui sera un constructeur définissant le type de l'objet. La convention, pour nommer les constructeurs, est d'utiliser une majuscule comme première lettre pour l'identifiant de la fonction. +2. On crée une instance de l'objet avec `new`. -

Pour définir le type d'un objet, on crée une fonction qui définit le nom de ce type et les propriétés et méthodes des instances. Ainsi, si on souhaite créer un type d'objet pour représenter des voitures, on pourra nommer ce type voiture, et il pourra avoir des propriétés pour le fabricant, le modèle et l'année. Pour ce faire, on pourra écrire la fonction suivante :

+Pour définir le type d'un objet, on crée une fonction qui définit le nom de ce type et les propriétés et méthodes des instances. Ainsi, si on souhaite créer un type d'objet pour représenter des voitures, on pourra nommer ce type `voiture`, et il pourra avoir des propriétés pour le fabricant, le modèle et l'année. Pour ce faire, on pourra écrire la fonction suivante : -
+```js
 function Voiture(fabricant, modele, annee) {
   this.fabricant = fabricant;
   this.modele = modele;
   this.annee = annee;
 }
-
+``` -

On voit ici qu'on utilise le mot-clé this pour affecter des valeurs aux propriétés d'un objet en fonction des valeurs passées en arguments de la fonction.

+On voit ici qu'on utilise le mot-clé `this` pour affecter des valeurs aux propriétés d'un objet en fonction des valeurs passées en arguments de la fonction. -

On peut désormais créer un objet maVoiture de la façon suivante :

+On peut désormais créer un objet `maVoiture` de la façon suivante : -
+```js
 let maVoiture = new Voiture("Eagle", "Talon TSi", 1993);
-
+``` -

Cette instruction crée un objet maVoiture et lui affecte les valeurs fournies pour ses propriétés. On obtient donc maVoiture.fabricant qui sera la chaîne de caractères "Eagle", maVoiture.annee qui sera l'entier 1993, et ainsi de suite.

+Cette instruction crée un objet `maVoiture` et lui affecte les valeurs fournies pour ses propriétés. On obtient donc `maVoiture.fabricant` qui sera la chaîne de caractères "Eagle", `maVoiture.annee` qui sera l'entier 1993, et ainsi de suite. -

Grâce à ce constructeur, on peut ensuite créer autant d'objets Voiture que nécessaire. Par exemple :

+Grâce à ce constructeur, on peut ensuite créer autant d'objets `Voiture` que nécessaire. Par exemple : -
+```js
 let voitureMorgan = new Voiture("Audi", "A3", 2005);
 let voitureMax = new Voiture("Mazda", "Miata", 1990);
-
+``` -

Un objet peut avoir une propriété qui est elle-même un objet. Ainsi, si on définit un type d'objet personne de cette façon :

+Un objet peut avoir une propriété qui est elle-même un objet. Ainsi, si on définit un type d'objet `personne` de cette façon : -
+```js
 function Personne(nom, age, sexe) {
   this.nom = nom;
   this.age = age;
   this.sexe = sexe;
 }
-
+``` -

et qu'on instancie deux nouveaux objets personne avec

+et qu'on instancie deux nouveaux objets `personne` avec -
+```js
 let max = new Personne("Max Gun", 33, "M");
 let morgan = new Personne("Morgan Sousbrouille", 39, "M");
-
+``` -

On pourra réécrire la fonction de définition pour le type Voiture pour inclure une propriété proprietaire qui est représentée par un objet personne :

+On pourra réécrire la fonction de définition pour le type `Voiture` pour inclure une propriété `proprietaire` qui est représentée par un objet `personne` : -
+```js
 function Voiture(fabricant, modele, annee, proprietaire) {
   this.fabricant = fabricant;
   this.modele = modele;
   this.annee = annee;
   this.proprietaire = proprietaire;
 }
-
+``` -

Pour instancier des nouveaux objets, on pourra donc utiliser :

+Pour instancier des nouveaux objets, on pourra donc utiliser : -
+```js
 let voiture1 = new Voiture("Mazda", "Miata", 1993, max);
 let voiture2 = new Voiture("Audi", "A3", 2005, morgan);
-
+``` -

On notera que le dernier argument n'est pas une chaîne de caractères ou une valeur numérique mais bien un objet. Les objets max et morgan sont passés en arguments pour représenter les propriétaires. Ainsi, si on veut obtenir le nom du propriétaire pour voiture2, on peut accéder à la propriété de la façon suivante :

+On notera que le dernier argument n'est pas une chaîne de caractères ou une valeur numérique mais bien un objet. Les objets `max` et `morgan` sont passés en arguments pour représenter les propriétaires. Ainsi, si on veut obtenir le nom du propriétaire pour `voiture2`, on peut accéder à la propriété de la façon suivante : -
+```js
 voiture2.proprietaire.nom
-
+``` -

Il est toujours possible d'ajouter une propriété à un objet défini précédemment. Par exemple, on peut ajouter une propriété à l'objet voiture1 avec l'instruction :

+Il est toujours possible d'ajouter une propriété à un objet défini précédemment. Par exemple, on peut ajouter une propriété à l'objet `voiture1` avec l'instruction : -
voiture1.couleur = "noir";
-
+```js +voiture1.couleur = "noir"; +``` -

Ici, on ajoute une propriété couleur à voiture1, et on lui affecte une valeur "noir". Cependant, cela n'affecte pas les autres objets voiture. Pour ajouter une nouvelle propriété à tous les objets, il faudra ajouter la propriété au constructeur voiture.

+Ici, on ajoute une propriété `couleur` à `voiture1`, et on lui affecte une valeur "noir". Cependant, cela n'affecte pas les autres objets `voiture`. Pour ajouter une nouvelle propriété à tous les objets, il faudra ajouter la propriété au constructeur `voiture`. -

Utiliser la méthode Object.create()

+### Utiliser la méthode `Object.create()` -

Les objets peuvent également être créés en utilisant la méthode Object.create(). Cette méthode peut s'avérer très utile, car elle permet de choisir le prototype pour l'objet qu'on souhaite créer, sans avoir à définir un constructeur.

+Les objets peuvent également être créés en utilisant la méthode [`Object.create()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/create). Cette méthode peut s'avérer très utile, car elle permet de choisir le prototype pour l'objet qu'on souhaite créer, sans avoir à définir un constructeur. -
+```js
 // Propriétés pour animal et encapsulation des méthodes
 let Animal = {
   type: "Invertébrés",        // Valeur par défaut  value of properties
@@ -288,36 +290,36 @@ animal1.afficherType(); // affichera Invertébrés
 let poisson = Object.create(Animal);
 poisson.type = "Poisson";
 poisson.afficherType(); // affichera Poisson
-
+``` -

L'héritage

+## L'héritage -

Tous les objets JavaScript héritent d'un autre objet. L'objet dont on hérite est appelé prototype et les propriétés héritées peuvent être accédées via l'objet prototype du constructeur. Pour plus d'informations sur le fonctionnement de l'héritage, voir la page sur l'héritage et la chaîne de prototypes.

+Tous les objets JavaScript héritent d'un autre objet. L'objet dont on hérite est appelé _prototype_ et les propriétés héritées peuvent être accédées via l'objet `prototype` du constructeur. Pour plus d'informations sur le fonctionnement de l'héritage, voir la page sur [l'héritage et la chaîne de prototypes](/fr/docs/Web/JavaScript/Inheritance_and_the_prototype_chain). -

Indexer les propriétés d'un objet

+## Indexer les propriétés d'un objet -

Il est possible d'accéder à une propriété via son nom et via son indice (ordinal). Si on définit une propriété grâce à un nom, on accédera toujours à la valeur via le nom. De même, si on définit une propriété grâce à un indice, on y accèdera toujours via son indice.

+Il est possible d'accéder à une propriété via son nom et via son indice (ordinal). Si on définit une propriété grâce à un nom, on accédera toujours à la valeur via le nom. De même, si on définit une propriété grâce à un indice, on y accèdera toujours via son indice. -

Cette restriction s'applique lorsqu'on crée un objet et ses propriétés via un constructeur et lorsqu'on déclare les propriétés explicitement (par exemple avec maVoiture.couleur = "rouge"). Si on définit une propriété d'un objet avec maVoiture[5] = "25 kmh", on pourra faire référence à cette propriété grâce à maVoiture[5].

+Cette restriction s'applique lorsqu'on crée un objet et ses propriétés via un constructeur et lorsqu'on déclare les propriétés explicitement (par exemple avec `maVoiture.couleur = "rouge"`). Si on définit une propriété d'un objet avec `maVoiture[5] = "25 kmh"`, on pourra faire référence à cette propriété grâce à `maVoiture[5]`. -

Il existe une exception à cette règle lorsqu'on manipule des objets "semblables à des tableaux" provenant d'API Web telles que l'objet forms. Pour ces objets semblables à des tableaux, on peut accéder à une propriété de l'objet grâce à son nom (si l'attribut name est utilisé sur l'élément HTML) ou grâce à son index selon l'ordre dans le document. Ainsi, si on souhaite cibler un élément <form> du document possédant un attribut name qui vaut monForm et que cet élément est le deuxième élément du document, on pourra y accéder avec document.forms[1], document.forms["monForm"] ou encore avec document.forms.monForm.

+Il existe une exception à cette règle lorsqu'on manipule des objets "semblables à des tableaux" provenant d'API Web telles que l'objet `forms`. Pour ces objets semblables à des tableaux, on peut accéder à une propriété de l'objet grâce à son nom (si l'attribut [`name`](/fr/docs/Web/HTML/Global_attributes#name) est utilisé sur l'élément HTML) ou grâce à son index selon l'ordre dans le document. Ainsi, si on souhaite cibler un élément `
` du document possédant un attribut `name` qui vaut `monForm` et que cet élément est le deuxième élément du document, on pourra y accéder avec `document.forms[1]`, `document.forms["monForm"]` ou encore avec `document.forms.monForm`. -

Définir des propriétés pour un type d'objet

+## Définir des propriétés pour un type d'objet -

On peut ajouter une propriété à un type précédemment défini en utilisant la propriété prototype. Cela permettra de définir une propriété qui sera partagée par tous les objets d'un même type plutôt qu'elle ne soit définie que pour un seul objet. Le code suivant permet d'ajouter une propriété couleur à tous les objets de type voiture. On affecte ensuite une valeur à cette propriété pour l'objet voiture1.

+On peut ajouter une propriété à un type précédemment défini en utilisant la propriété `prototype`. Cela permettra de définir une propriété qui sera partagée par tous les objets d'un même type plutôt qu'elle ne soit définie que pour un seul objet. Le code suivant permet d'ajouter une propriété `couleur` à tous les objets de type `voiture`. On affecte ensuite une valeur à cette propriété pour l'objet `voiture1`. -
+```js
 Voiture.prototype.couleur = null;
 voiture1.couleur = "noir";
-
+``` -

Pour plus d'informations, voir l'article sur la propriété prototype de l'objet Function de la référence JavaScript.

+Pour plus d'informations, voir l'article sur [la propriété `prototype`](/fr/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function) de l'objet `Function` de la [référence JavaScript](/fr/docs/Web/JavaScript/Reference). -

Définir des méthodes

+## Définir des méthodes -

Une méthode est une fonction associée à un objet. Autrement dit, une méthode est une propriété d'un objet qui est une fonction. Les méthodes sont définies comme des fonctions normales et sont affectées à des propriétés d'un objet. Voir la page sur les définitions de méthodes pour plus d'informations. Par exemple :

+Une _méthode_ est une fonction associée à un objet. Autrement dit, une méthode est une propriété d'un objet qui est une fonction. Les méthodes sont définies comme des fonctions normales et sont affectées à des propriétés d'un objet. Voir la page sur [les définitions de méthodes](/fr/docs/Web/JavaScript/Reference/Functions/Method_definitions) pour plus d'informations. Par exemple : -
+```js
 nomObjet.nomMethode = nomFonction;
 
 let monObj = {
@@ -331,34 +333,34 @@ let monObj = {
     // …faire autre chose
   }
 };
-
+``` -

avec nomObjet qui est un objet existant, nomMethode est le nom de la propriété à laquelle on souhaite affecter la méthode et nomFonction le nom de la fonction.

+avec `nomObjet` qui est un objet existant, `nomMethode` est le nom de la propriété à laquelle on souhaite affecter la méthode et `nomFonction` le nom de la fonction. -

On peut ensuite appeler la méthode sur l'objet :

+On peut ensuite appeler la méthode sur l'objet : -
+```js
 object.nomMethode(parametres);
-
+``` -

On peut définir des méthodes pour un type d'objet en incluant la définition de la méthode dans le constructeur. Par exemple, on peut définir une fonction qui mettrait en forme et qui afficherait les propriétés d'un objet voiture. Par exemple :

+On peut définir des méthodes pour un type d'objet en incluant la définition de la méthode dans le constructeur. Par exemple, on peut définir une fonction qui mettrait en forme et qui afficherait les propriétés d'un objet `voiture`. Par exemple : -
+```js
 function afficheVoiture() {
   let resultat = `Une belle ${this.modele}, fabriquée en ${this.annee} par ${this.fabricant}`;
   console.log(résultat);
 }
-
+``` -

On peut ensuite ajouter cette fonction comme méthode dans le constructeur avec cette instruction :

+On peut ensuite ajouter cette fonction comme méthode dans le constructeur avec cette instruction : -
+```js
 this.afficheVoiture = afficheVoiture;
-
+``` -

La définition complète de Voiture serait donc :

+La définition complète de `Voiture` serait donc : -
+```js
 function Voiture(fabricant, modele, annee, proprietaire) {
   this.fabricant = fabricant;
   this.modele = modele;
@@ -366,21 +368,22 @@ function Voiture(fabricant, modele, annee, proprietaire) {
   this.proprietaire = proprietaire;
   this.afficheVoiture = afficheVoiture;
 }
-
+``` -

On pourra donc ensuite appeler la méthode afficheVoiture pour chaque objet de ce type :

+On pourra donc ensuite appeler la méthode `afficheVoiture` pour chaque objet de ce type : -
voiture1.afficheVoiture();
+```js
+voiture1.afficheVoiture();
 voiture2.afficheVoiture();
-
+``` -

Utiliser this pour les références aux objets

+## Utiliser `this` pour les références aux objets -

JavaScript possède un mot-clé spécial this, qui peut être utilisé à l'intérieur d'une méthode pour faire référence à l'objet courant.

+JavaScript possède un mot-clé spécial [`this`](/fr/docs/Web/JavaScript/Reference/Operators/this), qui peut être utilisé à l'intérieur d'une méthode pour faire référence à l'objet courant. -

Par exemple, supposons qu'on ait deux objets, responsable et stagiaire. Chaque objet possède son propre nom, age et poste. Dans la fonction direBonjour(), on remarque qu'on utilise this.nom. Lorsqu'on ajoute cette méthode aux deux objets, on peut alors appeler cette fonction depuis les deux objets et celle-ci affichera 'Bonjour, mon nom est ' suivi de la valeur de la propriété nom rattaché à l'objet indiqué.

+Par exemple, supposons qu'on ait deux objets, `responsable` et `stagiaire`. Chaque objet possède son propre `nom`, `age` et `poste`. Dans la fonction `direBonjour()`, on remarque qu'on utilise `this.nom`. Lorsqu'on ajoute cette méthode aux deux objets, on peut alors appeler cette fonction depuis les deux objets et celle-ci affichera `'Bonjour, mon nom est '` suivi de la valeur de la propriété `nom` rattaché à l'objet indiqué. -
+```js
 const responsable = {
  nom: "Jean",
  age: 27,
@@ -403,33 +406,31 @@ stagiaire.direBonjour = direBonjour;
 
 responsable.direBonjour(); // Bonjour, mon nom est John'
 stagiaire.direBonjour();   // Bonjour, mon nom est Ben'
-
+``` -

Ici, this fait référence à l'objet courant. On peut également créer une fonction direMonAge() qui affiche une phrase indiquant l'age.

+Ici, `this` fait référence à l'objet courant. On peut également créer une fonction `direMonAge()` qui affiche une phrase indiquant l'age. -
+```js
 function direMonAge(){
   console.log("J'ai " + this.age + " ans.");
 };
 
 responsable.direMonAge = direMonAge;
 responsable.direMonAge(); // J'ai 27 ans.
-
+``` -

Définir des accesseurs et des mutateurs (getters et setters)

+## Définir des accesseurs et des mutateurs (_getters_ et _setters_) -

Un accesseur (getter) est une méthode qui permet de récupérer la valeur d'une propriété donnée. Un mutateur (setter) est une méthode qui permet de définir la valeur d'une propriété donnée. Il est possible de définir des accesseurs et des mutateurs sur chaque objet (qu'il soit natif ou défini par l'utilisateur) qui supporte l'ajout de nouvelles propriétés.

+Un [accesseur](/fr/docs/Web/JavaScript/Reference/Functions/get) (_getter_) est une méthode qui permet de récupérer la valeur d'une propriété donnée. Un [mutateur](/fr/docs/Web/JavaScript/Reference/Functions/set) (_setter_) est une méthode qui permet de définir la valeur d'une propriété donnée. Il est possible de définir des accesseurs et des mutateurs sur chaque objet (qu'il soit natif ou défini par l'utilisateur) qui supporte l'ajout de nouvelles propriétés. -

Les accesseurs et mutateurs peuvent être :

+Les accesseurs et mutateurs peuvent être : -
    -
  • définis avec les initialisateurs d'objet, ou
  • -
  • ajoutés après la construction en utilisant une méthode pour ajouter un accesseur ou un mutateur.
  • -
+- définis avec [les initialisateurs d'objet](#object_initializers), ou +- ajoutés après la construction en utilisant une méthode pour ajouter un accesseur ou un mutateur. -

Lorsqu'on définit des accesseurs et des mutateurs en utilisant la syntaxe littérale des initialisateurs d'objet, il suffit d'ajouter un préfixe get devant une fonction pour un accesseur et un préfixe set devant une fonction pour un mutateur. La méthode pour l'accesseur ne doit pas utiliser de paramètre tandis que la méthode pour le mutateur doit utiliser un seul paramètre (la nouvelle valeur à définir). Ainsi :

+Lorsqu'on définit des accesseurs et des mutateurs [en utilisant la syntaxe littérale des initialisateurs d'objet](#object_initializers), il suffit d'ajouter un préfixe `get` devant une fonction pour un accesseur et un préfixe `set` devant une fonction pour un mutateur. La méthode pour l'accesseur ne doit pas utiliser de paramètre tandis que la méthode pour le mutateur doit utiliser un seul paramètre (la nouvelle valeur à définir). Ainsi : -
+```js
 let o = {
   a: 7,
   get b() {
@@ -441,24 +442,22 @@ let o = {
 };
 
 console.log(o.a); // 7
-console.log(o.b); // 8 <-- À ce moment, la méthode get b() est invoquée
-o.c = 50;         //   <-- À ce moment, la méthode set c(x) est invoquée
+console.log(o.b); // 8 <-- À ce moment, la méthode get b() est invoquée
+o.c = 50;         //   <-- À ce moment, la méthode set c(x) est invoquée
 console.log(o.a); // 25
-
+``` -

Les propriétés de l'objet o sont :

+Les propriétés de l'objet `o` sont : -
    -
  • o.a — un nombre
  • -
  • o.b — un accesseur qui renvoie la valeur de o.a plus 1
  • -
  • o.c — un mutateur qui définit la valeur de o.a avec la moitié de la valeur passée pour o.c
  • -
+- `o.a` — un nombre +- `o.b` — un accesseur qui renvoie la valeur de `o.a` plus 1 +- `o.c` — un mutateur qui définit la valeur de `o.a` avec la moitié de la valeur passée pour `o.c` -

On notera que les noms des fonctions pour les accesseurs et les mutateurs définis dans un initialisateur d'objet avec la forme [gs]et propriete() ne sont pas les noms des accesseurs/mutateurs eux-mêmes malgré ce que pourrait laisser croire la syntaxe.

+On notera que les noms des fonctions pour les accesseurs et les mutateurs définis dans un initialisateur d'objet avec la forme `[gs]et propriete()` ne sont pas les noms des accesseurs/mutateurs eux-mêmes malgré ce que pourrait laisser croire la syntaxe. -

Les accesseurs et mutateurs peuvent également être ajoutés à un objet après sa création via la méthode Object.defineProperties() (ou Object.defineProperty()). Le premier paramètre de cette méthode est l'objet sur lequel on souhaite ajouter les fonctions. Le deuxième paramètre est un objet dont les noms des propriétés sont les noms des accesseurs et/ou des mutateurs et les valeurs de ces propriétés sont les objets qui définissent les fonctions correspondantes. Voici un exemple qui définit un accesseur et un mutateur pour obtenir un résultat équivalent à l'exemple précédent :

+Les accesseurs et mutateurs peuvent également être ajoutés à un objet après sa création via la méthode `Object.defineProperties()` (ou `Object.defineProperty()`). Le premier paramètre de cette méthode est l'objet sur lequel on souhaite ajouter les fonctions. Le deuxième paramètre est un objet dont les noms des propriétés sont les noms des accesseurs et/ou des mutateurs et les valeurs de ces propriétés sont les objets qui définissent les fonctions correspondantes. Voici un exemple qui définit un accesseur et un mutateur pour obtenir un résultat équivalent à l'exemple précédent : -
+```js
 let o = { a: 0 };
 
 Object.defineProperties(o, {
@@ -468,15 +467,15 @@ Object.defineProperties(o, {
 
 o.c = 10; // Exécute le mutateur qui affecte 10 / 2 (5) à la propriété 'a'
 console.log(o.b); // Exécute l'accesseur qui renvoie a + 1, soit 6
-
+``` -

Le choix de l'une ou l'autre de ces formes dépend de votre style et du type de tâche à réaliser. Si vous utilisez déjà un initialisateur d'objet lors de la définition d'un prototype, vous choisirez probablement la première forme, plus concise et plus naturelle. Toutefois, si vous avez besoin d'ajouter des accesseurs/mutateurs plus tard, parce que vous n'avez pas écrit le prototype ou la définition de l'objet, seule la seconde forme sera possible. Cette dernière représente mieux la nature dynamique de JavaScript mais peut rendre la lecture et la compréhension du code plus difficiles.

+Le choix de l'une ou l'autre de ces formes dépend de votre style et du type de tâche à réaliser. Si vous utilisez déjà un initialisateur d'objet lors de la définition d'un prototype, vous choisirez probablement la première forme, plus concise et plus naturelle. Toutefois, si vous avez besoin d'ajouter des accesseurs/mutateurs plus tard, parce que vous n'avez pas écrit le prototype ou la définition de l'objet, seule la seconde forme sera possible. Cette dernière représente mieux la nature dynamique de JavaScript mais peut rendre la lecture et la compréhension du code plus difficiles. -

Supprimer des propriétés

+## Supprimer des propriétés -

Il est possible de retirer des propriétés propres (celles qui ne sont pas héritées) grâce à l'opérateur delete. Le code suivant montre comment retirer une propriété :

+Il est possible de retirer des propriétés propres (celles qui ne sont pas héritées) grâce à l'opérateur [`delete`](/fr/docs/Web/JavaScript/Reference/Operators/delete). Le code suivant montre comment retirer une propriété : -
+```js
 // On crée un nouvel objet, monObj, avec deux propriétés a et b.
 let monObj = new Object;
 monObj.a = 5;
@@ -485,29 +484,30 @@ monObj.b = 12;
 // On retire la propriété a, monObj a donc uniquement la propriété b
 delete monObj.a;
 console.log("a" in monObj) // produit "false"
-
+``` -

Il est aussi possible de supprimer une propriété de l'objet global avec delete si aucun mot-clé comme var, let ou const n'avait été utilisé :

+Il est aussi possible de supprimer une propriété de l'objet global avec `delete` si aucun mot-clé comme `var`, `let` ou `const` n'avait été utilisé : -
+```js
 g = 17;
 delete g;
-
+``` -

Comparer des objets

+## Comparer des objets -

En JavaScript, les objets fonctionnent par référence. Deux objets distincts ne sont jamais égaux, même s'ils ont les mêmes valeurs pour les mêmes propriétés. On aura une équivalence uniquement si on compare deux références vers un seul et même objet donné.

+En JavaScript, les objets fonctionnent par référence. Deux objets distincts ne sont jamais égaux, même s'ils ont les mêmes valeurs pour les mêmes propriétés. On aura une équivalence uniquement si on compare deux références vers un seul et même objet donné. -
+```js
 // Deux variables avec deux objets distincts
 // qui ont les mêmes propriétés
 let fruit = {nom: "pomme"};
 let fruit2 = {nom: "pomme"};
 
 fruit == fruit2  // renvoie false
-fruit === fruit2 // renvoie false
+fruit === fruit2 // renvoie false +``` -
+```js
 // Deux variables référençant un même objet
 let fruit = {nom: "pomme"};
 let fruit2 = fruit;  // On affecte la même référence
@@ -518,15 +518,13 @@ fruit === fruit2 // renvoie true
 
 fruit.nom = "raisin";
 console.log(fruit2); // affiche {nom: "raisin"} et non {nom: "pomme"}
-
+``` -

Pour plus d'informations sur les opérateurs de comparaisons, voir cet article.

+Pour plus d'informations sur les opérateurs de comparaisons, voir [cet article](/fr/docs/Web/JavaScript/Reference/Operators). -

Voir aussi

+## Voir aussi - +- Pour aller plus loin, voir [les détails du modèle objet javaScript](/fr/docs/Web/JavaScript/Guide/Details_of_the_Object_Model) +- Pour en savoir plus sur les classes ECMAScript 2015 (une nouvelle façon de créer des objets), lire le chapitre sur les [classes JavaScript](/fr/docs/Web/JavaScript/Reference/Classes). -

{{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}

+{{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}} diff --git a/files/fr/web/javascript/index.md b/files/fr/web/javascript/index.md index bb77718a93..b8888103f5 100644 --- a/files/fr/web/javascript/index.md +++ b/files/fr/web/javascript/index.md @@ -8,122 +8,108 @@ tags: - Learn translation_of: Web/JavaScript --- -
{{JsSidebar}}
- -

JavaScript (souvent abrégé en « JS ») est un langage de script léger, orienté objet, principalement connu comme le langage de script des pages web. Mais il est aussi utilisé dans de nombreux environnements extérieurs aux navigateurs web tels que Node.js, Apache CouchDB voire Adobe Acrobat. Le code JavaScript est interprété ou compilé à la volée (JIT). C'est un langage à objets utilisant le concept de prototype, disposant d'un typage faible et dynamique qui permet de programmer suivant plusieurs paradigmes de programmation : fonctionnelle, impérative et orientée objet. Apprenez-en plus sur JavaScript.

- -

Cette section de MDN est dédiée au langage JavaScript. Pour des informations sur l'utilisation de JavaScript avec les API spécifiques des navigateurs web pour les pages web, veuillez consulter les sections sur les API Web (Web API en anglais) et le DOM.

- -

Le standard qui spécifie JavaScript est ECMAScript. En 2012, tous les navigateurs modernes supportent complètement ECMAScript 5.1. Les anciens navigateurs supportent au minimum ECMAScript 3. Une sixième version majeure du standard a été finalisée et publiée le 17 juin 2015. Cette version s'intitule officiellement ECMAScript 2015 mais est encore fréquemment appelée ECMAScript 6 ou ES6. Étant donné que les standards ECMAScript sont désormais édités sur un rythme annuel, cette documentation fait référence à la dernière version en cours de rédaction, actuellement c'est ECMAScript 2020.

- -

JavaScript ne doit pas être confondu avec le langage de programmation Java. Java et JavaScript sont deux marques déposées par Oracle dans de nombreux pays mais ces deux langages de programmation ont chacun une syntaxe, une sémantique et des usages différents.

- -
-

Vous cherchez à devenir un développeur web front-end ?

-

Nous avons élaboré un cours qui comprend toutes les informations essentielles dont vous avez besoin pour atteindre votre objectif.

-

Commencer

-
- -

Tutoriels

- -

Apprenez comment programmer en JavaScript.

- -

Ressources pour commencer

- -

Si vous souhaitez apprendre JavaScript et que vous débutez en programmation ou en JavaScript, la section JavaScript de la zone d'apprentissage de MDN (learning area) est le meilleur endroit où commencer. Cette section contient les modules suivants :

- -
-
Les premiers pas en JavaScript
-
Cet ensemble de chapitres répond à des questions telles que « qu'est-ce que JavaScript ? », « à quoi ressemble-t-il ? », « que puis-je faire avec ? » et présente des éléments clés du langage tels que les variables, les chaînes de caractères, les nombres et les tableaux.
-
Les principaux blocs de JavaScript
-
On poursuit ici la présentation des fonctionnalités importantes de JavaScript, notamment celle des blocs de codes fréquemment utilisés comme les instructions conditionnelles, les boucles, les fonctions et les évènements.
-
Une introduction aux objets JavaScript
-
JavaScript est un langage de programmation « orienté objet » et ce concept est primordial pour utiliser JavaScript au mieux, écrire du code plus efficace et comprendre son fonctionnement. Ce module présente les bases de ces concepts.
-
La programmation asynchrone en JavaScript
-
Dans cet article, on aborde les fonctionnalités asynchrones de JavaScript, en quoi elles sont importantes et la façon dont elles peuvent être utilisées lors d'opérations bloquantes comme la récupération de ressources provenant d'un serveur.
-
Les API Web utilisées côté client
-
Lorsqu'on écrit du JavaScript pour un site web ou une application, il est rapidement nécessaire de manipuler les API : des interfaces qui permettent de manipuler différents aspects du navigateur, des données provenant d'autres sites ou services, etc. Dans ce module, nous verrons ce que sont les API, et comment utiliser les API les plus fréquemment utilisées.
-
- -

Guide JavaScript

- -
-
Guide JavaScript
-
Un guide détaillé de JavaScript, destiné aux personnes qui ont déjà développé en JavaScript ou avec un autre langage.
-
- -

Niveau intermédiaire

- -
-
Comprendre les frameworks JavaScript côté client
-
Les frameworks JavaScript font partie de l'écosystème du développement web côté client. Les outils qu'ils fournissent permettent de construire des applications dynamiques sur des bases robustes. Dans ce module, on présente les notions principales de leur fonctionnement et comment ces outils peuvent rejoindre votre panoplie. Des tutoriels sur les frameworks les plus répandus suivront cet article.
-
Une réintroduction à JavaScript
-
Un aperçu pour ceux qui pensent s'y connaître en JavaScript.
-
Structures de données JavaScript
-
Aperçu des structures de données disponibles en JavaScript.
-
Égalité, comparaison et similarité
-
JavaScript propose trois opérations de comparaison de valeurs différentes : l'égalité stricte à l'aide de ===, l'égalité souple à l'aide de == et la méthode Object.is().
-
Closures
-
-

Une closure est la combinaison d'une fonction et de l'environnement lexical dans lequel cette fonction a été déclarée.

-
-
- -

Niveau avancé

- -
-
Héritage et chaîne de prototypes
-
Cette page explique l'héritage à base de prototype, un concept souvent incompris et sous-estimé.
-
Le mode strict
-
Une variante plus restreinte de JavaScript (par exemple, on ne peut pas utiliser de variable avant de l'avoir définie). Elle permet d'obtenir de meilleures performances et de faciliter le débogage.
-
Les tableaux typés en JavaScript
-
Les tableaux typés permettent d'accéder à des données binaires brutes, de façon organisée.
-
La gestion de la mémoire en JavaScript
-
Cet article décrit le cycle de vie des objets et de la mémoire en JavaScript, ainsi que le mécanisme du ramasse-miettes.
-
Gestion de la concurrence et boucle des événements
-
Le modèle de concurrence utilisé par JavaScript est basé sur une « boucle d'événements »
-
- -

Référence

- -

Parcourez la documentation complète de la référence JavaScript.

- -
-
Les objets standard
-
Apprenez à connaître les objets natifs standard tels que Array, Boolean, Date, Error, Function, JSON, Math, Number, Object, RegExp, String, Map, Set, WeakMap, WeakSet, et d'autres.
-
Les expressions et les opérateurs
-
Apprenez à connaître comment fonctionnent les opérateurs JavaScript comme instanceof, typeof, new, this et bien d'autres notions comme la précédence des opérateurs.
-
Les instructions et les déclarations
-
Apprenez à connaître comment utiliser do...while, for...in, for...of, try...catch, let, var, const, if...else, switch et les autres mots-clés et instructions JavaScript.
-
Les fonctions
-
Apprenez à utiliser les fonctions en JavaScript pour développer vos applications.
-
- -

Outils & ressources

- -

Voici une liste d'outils utiles pour écrire et déboguer du code JavaScript.

- -
-
Outils de développement de Firefox
-
Console web, profileur JavaScript, débogueur, et plus.
-
Invites de commande JavaScript
-
Un interpréteur de commandes JavaScript vous permet de tester rapidement des extraits de code JavaScript.
-
Apprendre le JavaScript (en anglais)
-
Une excellente ressource pour les développeurs web en herbe - Apprenez JavaScript dans un environnement interactif, avec des leçons courtes et des tests interactifs, guidés par une évaluation automatique. Les 40 premières leçons sont gratuites, et le cours complet est disponible moyennant un petit paiement unique.
-
TogetherJS
-
La collaboration rendue facile. En ajoutant TogetherJS à votre site, vos utilisateurs peuvent s'entraider sur un site web en temps réel !
-
Stack Overflow
-
Questions Stack Overflow portant le tag « JavaScript ».
-
JSFiddle
-
Modifiez votre code JavaScript, CSS, HTML et obtenez des résultats en direct. Utilisez des ressources externes et collaborez avec votre équipe en ligne.
-
Plunker
-
Plunker est une communauté en ligne pour créer, collaborer et partager vos idées de développement web. Modifiez vos fichiers JavaScript, CSS, HTML et obtenez des résultats en direct et la structure des fichiers.
-
JSBin
-
JS Bin est un outil de débogage collaboratif open-source pour le développement web.
-
Codepen
-
Codepen est un autre outil de développement web collaboratif utilisé comme un terrain de jeu pour des résultats en direct.
-
StackBlitz
-
StackBlitz est un autre terrain de jeu/outil de débogage en ligne, qui peut héberger et déployer des applications full-stack utilisant React, Angular, etc.
-
RunJS
-
RunJS est un outil de bureau de type bac-à-sable/ardoise, qui fournit des résultats en direct et un accès aux API Node.JS et à celles du navigateur.
-
+{{JsSidebar}} + +**JavaScript** (souvent abrégé en « JS ») est un langage de script léger, orienté objet, principalement connu comme le langage de script des pages web. Mais il est aussi [utilisé dans de nombreux environnements extérieurs aux navigateurs web](https://fr.wikipedia.org/wiki/JavaScript#Autres_utilisations) tels que [Node.js](https://nodejs.org/), [Apache CouchDB](https://couchdb.apache.org/) voire [Adobe Acrobat](https://www.adobe.com/devnet/acrobat/javascript.html). Le code JavaScript est interprété ou compilé à la volée ([JIT](https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e)). C'est un langage à objets utilisant le concept de [prototype](https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_prototype), disposant d'un typage faible et dynamique qui permet de programmer suivant plusieurs paradigmes de programmation : fonctionnelle, impérative et orientée objet. [Apprenez-en plus sur JavaScript](/fr/docs/Web/JavaScript/About_JavaScript). + +Cette section de MDN est dédiée au langage JavaScript. Pour des informations sur l'utilisation de JavaScript avec les [API](/fr/docs/Glossary/API) spécifiques des navigateurs web pour les pages web, veuillez consulter les sections sur les [API Web](/fr/docs/Web/API) (_Web API_ en anglais) et le [DOM](/fr/docs/Web/API/Document_Object_Model). + +Le standard qui spécifie JavaScript est [ECMAScript](/fr/docs/Web/JavaScript/Language_Resources). En 2012, tous les navigateurs modernes supportent complètement ECMAScript 5.1. Les anciens navigateurs supportent au minimum ECMAScript 3. Une sixième version majeure du standard a été finalisée et publiée le 17 juin 2015. Cette version s'intitule officiellement ECMAScript 2015 mais est encore fréquemment appelée ECMAScript 6 ou ES6. Étant donné que les standards ECMAScript sont désormais édités sur un rythme annuel, cette documentation fait référence à la dernière version en cours de rédaction, actuellement c'est [ECMAScript 2020](https://tc39.github.io/ecma262/). + +JavaScript ne doit pas être confondu avec le [langage de programmation Java](https://fr.wikipedia.org/wiki/Java_%28langage%29). Java et JavaScript sont deux marques déposées par Oracle dans de nombreux pays mais ces deux langages de programmation ont chacun une syntaxe, une sémantique et des usages différents. + +> **Remarque :** **Vous cherchez à devenir un développeur web front-end ?** +> +> Nous avons élaboré un cours qui comprend toutes les informations essentielles dont vous avez besoin pour atteindre votre objectif. +> +> [Commencer](/fr/docs/Learn/Front-end_web_developer) + +## Tutoriels + +Apprenez comment programmer en JavaScript. + +### Ressources pour commencer + +Si vous souhaitez apprendre JavaScript et que vous débutez en programmation ou en JavaScript, [la section JavaScript de la zone d'apprentissage de MDN (_learning area_)](/fr/docs/Learn/JavaScript) est le meilleur endroit où commencer. Cette section contient les modules suivants : + +- [Les premiers pas en JavaScript](/fr/docs/Learn/JavaScript/First_steps) + - : Cet ensemble de chapitres répond à des questions telles que « qu'est-ce que JavaScript ? », « à quoi ressemble-t-il ? », « que puis-je faire avec ? » et présente des éléments clés du langage tels que les variables, les chaînes de caractères, les nombres et les tableaux. +- [Les principaux blocs de JavaScript](/fr/docs/Learn/JavaScript/Building_blocks) + - : On poursuit ici la présentation des fonctionnalités importantes de JavaScript, notamment celle des blocs de codes fréquemment utilisés comme les instructions conditionnelles, les boucles, les fonctions et les évènements. +- [Une introduction aux objets JavaScript](/fr/docs/Learn/JavaScript/Objects) + - : JavaScript est un langage de programmation « orienté objet » et ce concept est primordial pour utiliser JavaScript au mieux, écrire du code plus efficace et comprendre son fonctionnement. Ce module présente les bases de ces concepts. +- [La programmation asynchrone en JavaScript](/fr/docs/Learn/JavaScript/Asynchronous) + - : Dans cet article, on aborde les fonctionnalités asynchrones de JavaScript, en quoi elles sont importantes et la façon dont elles peuvent être utilisées lors d'opérations bloquantes comme la récupération de ressources provenant d'un serveur. +- [Les API Web utilisées côté client](/fr/docs/Learn/JavaScript/Client-side_web_APIs) + - : Lorsqu'on écrit du JavaScript pour un site web ou une application, il est rapidement nécessaire de manipuler les API : des interfaces qui permettent de manipuler différents aspects du navigateur, des données provenant d'autres sites ou services, etc. Dans ce module, nous verrons ce que sont les API, et comment utiliser les API les plus fréquemment utilisées. + +### Guide JavaScript + +- [Guide JavaScript](/fr/docs/Web/JavaScript/Guide) + - : Un guide détaillé de JavaScript, destiné aux personnes qui ont déjà développé en JavaScript ou avec un autre langage. + +### Niveau intermédiaire + +- [Comprendre les _frameworks_ JavaScript côté client](/fr/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks) + - : Les _frameworks_ JavaScript font partie de l'écosystème du développement web côté client. Les outils qu'ils fournissent permettent de construire des applications dynamiques sur des bases robustes. Dans ce module, on présente les notions principales de leur fonctionnement et comment ces outils peuvent rejoindre votre panoplie. Des tutoriels sur les frameworks les plus répandus suivront cet article. +- [Une réintroduction à JavaScript](/fr/docs/Web/JavaScript/A_re-introduction_to_JavaScript) + - : Un aperçu pour ceux qui _pensent_ s'y connaître en JavaScript. +- [Structures de données JavaScript](/fr/docs/Web/JavaScript/Data_structures) + - : Aperçu des structures de données disponibles en JavaScript. +- [Égalité, comparaison et similarité](/fr/docs/Web/JavaScript/Equality_comparisons_and_sameness) + - : JavaScript propose trois opérations de comparaison de valeurs différentes : l'égalité stricte à l'aide de `===`, l'égalité souple à l'aide de `==` et la méthode [`Object.is()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/is). +- [Closures](/fr/docs/Web/JavaScript/Closures) + - : Une _closure_ est la combinaison d'une fonction et de l'environnement lexical dans lequel cette fonction a été déclarée. + +### Niveau avancé + +- [Héritage et chaîne de prototypes](/fr/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) + - : Cette page explique l'héritage à base de prototype, un concept souvent incompris et sous-estimé. +- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) + - : Une variante plus restreinte de JavaScript (par exemple, on ne peut pas utiliser de variable avant de l'avoir définie). Elle permet d'obtenir de meilleures performances et de faciliter le débogage. +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Typed_arrays) + - : Les tableaux typés permettent d'accéder à des données binaires brutes, de façon organisée. +- [La gestion de la mémoire en JavaScript](/fr/docs/Web/JavaScript/Memory_Management) + - : Cet article décrit le cycle de vie des objets et de la mémoire en JavaScript, ainsi que le mécanisme du ramasse-miettes. +- [Gestion de la concurrence et boucle des événements](/fr/docs/Web/JavaScript/EventLoop) + - : Le modèle de concurrence utilisé par JavaScript est basé sur une « boucle d'événements » + +## Référence + +Parcourez la documentation complète de la [référence JavaScript](/fr/docs/Web/JavaScript/Reference). + +- [Les objets standard](/fr/docs/Web/JavaScript/Reference/Global_Objects) + - : Apprenez à connaître les objets natifs standard tels que [`Array`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Array), [`Boolean`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Boolean), [`Date`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date), [`Error`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Error), [`Function`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Function), [`JSON`](/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON), [`Math`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Math), [`Number`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Number), [`Object`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object), [`RegExp`](/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp), [`String`](/fr/docs/Web/JavaScript/Reference/Global_Objects/String), [`Map`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Map), [`Set`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Set), [`WeakMap`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap), [`WeakSet`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakSet), et d'autres. +- [Les expressions et les opérateurs](/fr/docs/Web/JavaScript/Reference/Operators) + - : Apprenez à connaître comment fonctionnent les opérateurs JavaScript comme [`instanceof`](/fr/docs/Web/JavaScript/Reference/Operators/instanceof), [`typeof`](/fr/docs/Web/JavaScript/Reference/Operators/typeof), [`new`](/fr/docs/Web/JavaScript/Reference/Operators/new), [`this`](/fr/docs/Web/JavaScript/Reference/Operators/this) et bien d'autres notions comme [la précédence des opérateurs](/fr/docs/Web/JavaScript/Reference/Operators/Operator_Precedence). +- [Les instructions et les déclarations](/fr/docs/Web/JavaScript/Reference/Statements) + - : Apprenez à connaître comment utiliser [`do...while`](/fr/docs/Web/JavaScript/Reference/Statements/do...while), [`for...in`](/fr/docs/Web/JavaScript/Reference/Statements/for...in), [`for...of`](/fr/docs/Web/JavaScript/Reference/Statements/for...of), [`try...catch`](/fr/docs/Web/JavaScript/Reference/Statements/try...catch), [`let`](/fr/docs/Web/JavaScript/Reference/Statements/let), [`var`](/fr/docs/Web/JavaScript/Reference/Statements/var), [`const`](/fr/docs/Web/JavaScript/Reference/Statements/const), [`if...else`](/fr/docs/Web/JavaScript/Reference/Statements/if...else), [`switch`](/fr/docs/Web/JavaScript/Reference/Statements/switch) et les autres mots-clés et instructions JavaScript. +- [Les fonctions](/fr/docs/Web/JavaScript/Reference/Functions) + - : Apprenez à utiliser les fonctions en JavaScript pour développer vos applications. + +## Outils & ressources + +Voici une liste d'outils utiles pour écrire et déboguer du code **JavaScript**. + +- [Outils de développement de Firefox](/fr/docs/Tools) + - : [Console web](/fr/docs/Tools/Web_Console), [profileur JavaScript](/fr/docs/Tools/Performance), [débogueur](/fr/docs/Tools/Debugger), et plus. +- [Invites de commande JavaScript](/fr/docs/Web/JavaScript/Shells) + - : Un interpréteur de commandes JavaScript vous permet de tester rapidement des extraits de code JavaScript. +- [Apprendre le JavaScript (en anglais)](https://learnjavascript.online/) + - : Une excellente ressource pour les développeurs web en herbe - Apprenez JavaScript dans un environnement interactif, avec des leçons courtes et des tests interactifs, guidés par une évaluation automatique. Les 40 premières leçons sont gratuites, et le cours complet est disponible moyennant un petit paiement unique. +- [TogetherJS](https://togetherjs.com/) + - : La collaboration rendue facile. En ajoutant TogetherJS à votre site, vos utilisateurs peuvent s'entraider sur un site web en temps réel ! +- [Stack Overflow](https://stackoverflow.com/questions/tagged/javascript) + - : Questions Stack Overflow portant le tag « JavaScript ». +- [JSFiddle](https://jsfiddle.net/) + - : Modifiez votre code JavaScript, CSS, HTML et obtenez des résultats en direct. Utilisez des ressources externes et collaborez avec votre équipe en ligne. +- [Plunker](https://plnkr.co/) + - : Plunker est une communauté en ligne pour créer, collaborer et partager vos idées de développement web. Modifiez vos fichiers JavaScript, CSS, HTML et obtenez des résultats en direct et la structure des fichiers. +- [JSBin](https://jsbin.com/) + - : JS Bin est un outil de débogage collaboratif open-source pour le développement web. +- [Codepen](https://codepen.io/) + - : Codepen est un autre outil de développement web collaboratif utilisé comme un terrain de jeu pour des résultats en direct. +- [StackBlitz](https://stackblitz.com/) + - : StackBlitz est un autre terrain de jeu/outil de débogage en ligne, qui peut héberger et déployer des applications full-stack utilisant React, Angular, etc. +- [RunJS](https://runjs.app/) + - : RunJS est un outil de bureau de type bac-à-sable/ardoise, qui fournit des résultats en direct et un accès aux API Node.JS et à celles du navigateur. diff --git a/files/fr/web/javascript/inheritance_and_the_prototype_chain/index.md b/files/fr/web/javascript/inheritance_and_the_prototype_chain/index.md index 1b21ea0232..160e5aa03e 100644 --- a/files/fr/web/javascript/inheritance_and_the_prototype_chain/index.md +++ b/files/fr/web/javascript/inheritance_and_the_prototype_chain/index.md @@ -10,31 +10,30 @@ tags: translation_of: Web/JavaScript/Inheritance_and_the_prototype_chain original_slug: Web/JavaScript/Héritage_et_chaîne_de_prototypes --- -
{{jsSidebar("Advanced")}}
+{{jsSidebar("Advanced")}} -

JavaScript peut prêter à confusion losqu'on est habitué à manipuler des langages de programmation manipulant les classes (tels que Java ou C++). En effet, JavaScript est un langage dynamique et ne possède pas de concept de classe à part entière (le mot-clé class a certes été ajouté avec ES2015 mais il s'agit uniquement de sucre syntaxique, JavaScript continue de reposer sur l'héritage prototypique).

+JavaScript peut prêter à confusion losqu'on est habitué à manipuler des langages de programmation manipulant les classes (tels que Java ou C++). En effet, JavaScript est un langage dynamique et ne possède pas de concept de classe à part entière (le mot-clé `class` a certes été ajouté avec ES2015 mais il s'agit uniquement de sucre syntaxique, JavaScript continue de reposer sur l'héritage prototypique). -

En ce qui concerne l'héritage, JavaScript n'utilise qu'une seule structure : les objets. Chaque objet possède une propriété privée qui contient un lien vers un autre objet appelé le prototype. Ce prototype possède également son prototype et ainsi de suite, jusqu'à ce qu'un objet ait {{jsxref("null")}} comme prototype. Par définition, null ne possède pas de prototype et est ainsi le dernier maillon de la chaîne de prototype.

+En ce qui concerne l'héritage, JavaScript n'utilise qu'une seule structure : les objets. Chaque objet possède une propriété privée qui contient un lien vers un autre objet appelé le **prototype**. Ce prototype possède également son prototype et ainsi de suite, jusqu'à ce qu'un objet ait {{jsxref("null")}} comme prototype. Par définition, `null` ne possède pas de prototype et est ainsi le dernier maillon de la **chaîne de prototype**. -

La majorité des objets JavaScript sont des instances de {{jsxref("Object")}} qui est l'avant dernier maillon de la chaîne de prototype.

+La majorité des objets JavaScript sont des instances de {{jsxref("Object")}} qui est l'avant dernier maillon de la chaîne de prototype. -

Bien que cette confusion (entre classe et prototype) soit souvent avancée comme l'une des faiblesses de JavaScript, le modèle prototypique est plus puissant que le modèle classique et il est notamment possible de construire un modèle classique à partir d'un modèle prototypique.

+Bien que cette confusion (entre classe et prototype) soit souvent avancée comme l'une des faiblesses de JavaScript, le modèle prototypique est plus puissant que le modèle classique et il est notamment possible de construire un modèle classique à partir d'un modèle prototypique. -

Héritage et chaîne de prototype

+## Héritage et chaîne de prototype -

Propriété héritées

+### Propriété héritées -

Les objets JavaScript sont des ensembles dynamiques de propriétés (les propriétés directement rattachées à un objet sont appelées propriétés en propre (own properties)). Les objets JavaScript possèdent également un lien vers un objet qui est leur prototype. Lorsqu'on tente d'accéder aux propriétés d'un objet, la propriété sera recherchée d'abord sur l'objet même, puis sur son prototype, puis sur le prototype du prototype et ainsi de suite jusqu'à ce qu'elle soit trouvée ou que la fin de la chaîne de prototype ait été atteinte.

+Les objets JavaScript sont des ensembles dynamiques de propriétés (les propriétés directement rattachées à un objet sont appelées **propriétés en propre (_own properties_)**). Les objets JavaScript possèdent également un lien vers un objet qui est leur prototype. Lorsqu'on tente d'accéder aux propriétés d'un objet, la propriété sera recherchée d'abord sur l'objet même, puis sur son prototype, puis sur le prototype du prototype et ainsi de suite jusqu'à ce qu'elle soit trouvée ou que la fin de la chaîne de prototype ait été atteinte. -
-

Note : Dans la spécification ECMAScript, on utilise la notation unObjet.[[Prototype]] pour faire référence au prototype de unObjet. Depuis ECMAScript 2015, on peut accéder à [[Prototype]] grâce aux accesseurs {{jsxref("Object.getPrototypeOf()")}} et {{jsxref("Object.setPrototypeOf()")}}. Cela est équivalent à la propriété JavaScript __proto__ qui était non-standard avant ES2015 mais qui était de fait implémentée par la majorité des navigateurs.

+> **Note :** Dans la spécification ECMAScript, on utilise la notation `unObjet.[[Prototype]]` pour faire référence au prototype de `unObjet`. Depuis ECMAScript 2015, on peut accéder à `[[Prototype]]` grâce aux accesseurs {{jsxref("Object.getPrototypeOf()")}} et {{jsxref("Object.setPrototypeOf()")}}. Cela est équivalent à la propriété JavaScript `__proto__` qui était non-standard avant ES2015 mais qui était de fait implémentée par la majorité des navigateurs. +> +> Cette propriété ne devrait pas être confondue avec la propriété `func.prototype` des fonctions qui définissent le `[[Prototype]]` à affecter aux instances des objets créés par cette fonction lorsqu'elle est utilisée comme constructeur. La propriété **`Object.prototype`** représente le prototype de {{jsxref("Object")}}. -

Cette propriété ne devrait pas être confondue avec la propriété func.prototype des fonctions qui définissent le [[Prototype]] à affecter aux instances des objets créés par cette fonction lorsqu'elle est utilisée comme constructeur. La propriété Object.prototype représente le prototype de {{jsxref("Object")}}.

-
+Voici ce qui se produit lorsqu'on tente d'accéder à une propriété : -

Voici ce qui se produit lorsqu'on tente d'accéder à une propriété :

- -
// On commence par créer un objet o pour lequel la fonction f sera
+```js
+// On commence par créer un objet o pour lequel la fonction f sera
 // son constructeur et lui créera deux propriétés en propre
 // a et b :
 let f = function () {
@@ -57,7 +56,7 @@ f.prototype.c = 4;
 // On a alors atteint la fin de la chaîne de prototype car,
 // par définition, null n'a pas de [[Prototype]].
 // Ainsi, la chaîne complète est ici :
-// {a: 1, b: 2} ---> {b: 3, c: 4} ---> Object.prototype ---> null
+// {a: 1, b: 2} ---> {b: 3, c: 4} ---> Object.prototype ---> null
 
 console.log(o.a); // 1
 // Existe-t-il une propriété 'a' en propre sur o ? Oui, elle vaut 1.
@@ -83,17 +82,18 @@ console.log(o.d); // undefined
 // de propriété 'd' par défaut. On vérifie son prototype.
 // o.[[Prototype]].[[Prototype]].[[Prototype]] est null, on arrête la recherche
 // aucune propriété n'est trouvée, le moteur renvoie undefined.
-
+``` -

Lorsquon définit une propriété sur un objet, cela définit une propriété en propre. La seule exception se produit lorsqu'on définit un accesseur et/ou un mutateur sur une propriété héritée.

+Lorsquon définit une propriété sur un objet, cela définit une propriété en propre. La seule exception se produit lorsqu'on définit [un accesseur et/ou un mutateur]() sur une propriété héritée. -

Méthodes héritées

+### Méthodes héritées -

JavaScript ne possède pas de méthodes au sens des langages de classe. En effet, en JavaScript, toute fonction associée à un objet est également une propriété. Une fonction héritée se comportera comme n'importe quelle autre propriété (y compris pour l'ombrage mentionné ci-avant où on pourra parler de surcharge).

+JavaScript ne possède pas de méthodes au sens des langages de classe. En effet, en JavaScript, toute fonction associée à un objet est également une propriété. Une fonction héritée se comportera comme n'importe quelle autre propriété (y compris pour l'ombrage mentionné ci-avant où on pourra parler de surcharge). -

Lorsqu'une fonction héritée est exécutée, la valeur de this pointe vers l'objet hérité et non vers l'objet prototype qui possède la fonction comme propriété en propre.

+Lorsqu'une fonction héritée est exécutée, la valeur de [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this) pointe vers l'objet hérité et non vers l'objet prototype qui possède la fonction comme propriété en propre. -
var o = {
+```js
+var o = {
   a: 2,
   m: function() {
     return this.a + 1;
@@ -111,32 +111,30 @@ console.log(p.m()); // 5
 // lorsque p.m est appelée, 'this' fait référence à p.
 // Ainsi quand p hérite de m via o,
 // 'this.a' signifie p.a, soit la propriété 'a' de p
+```
 
+## Utiliser les prototypes avec JavaScript
 
-
- -

Utiliser les prototypes avec JavaScript

+Regardons un peu plus en détail ce qui se déroule en arrière-plan. -

Regardons un peu plus en détail ce qui se déroule en arrière-plan.

+> **Note :** Pour tous les exempls suivants, nous vous invitons à ouvrir la "console" de votre navigateur pour y copier/coller/éditer les fragments de code. Pour savoir comment lancer cette console, vous pouvez lire la documentation des navigateurs : [Firefox](/fr/docs/Tools), [Chrome](https://developers.google.com/web/tools/chrome-devtools/), [Edge](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide). -
-

Note : Pour tous les exempls suivants, nous vous invitons à ouvrir la "console" de votre navigateur pour y copier/coller/éditer les fragments de code. Pour savoir comment lancer cette console, vous pouvez lire la documentation des navigateurs : Firefox, Chrome, Edge.

-
+En JavaScript, comme mentionné ci-dessus, les fonctions peuvent avoir des propriétés. Toutes les fonctions ont une propriété spéciale intitulée `prototype`. -

En JavaScript, comme mentionné ci-dessus, les fonctions peuvent avoir des propriétés. Toutes les fonctions ont une propriété spéciale intitulée prototype.

- -
function faireUnTruc(){}
+```js
+function faireUnTruc(){}
 console.log( faireUnTruc.prototype ); // Object {...}
 // Peu importe comment vous déclarez la fonction.
 // une fonction en JavaScript aura toujours une propriété
 // prototype par défaut.
 var faireUnTruc= function(){};
 console.log(faireUnTruc.prototype); // Object {...}
-
+``` -

Comme mentionné avant, faireUnTruc() possède une propriété par défaut prototype. Après avoir exécuté ce code dans une console, la console devrait afficher un objet semblable à :

+Comme mentionné avant, `faireUnTruc()` possède une propriété par défaut `prototype`. Après avoir exécuté ce code dans une console, la console devrait afficher un objet semblable à : -
{
+```js
+{
     constructor: ƒ faireUnTruc(),
     __proto__: {
         constructor: ƒ Object(),
@@ -147,17 +145,21 @@ console.log(faireUnTruc.prototype); // Object {...}
         toString: ƒ toString(),
         valueOf: ƒ valueOf()
     }
-}
+} +``` -

On peut ajouter des propriétés au prototype de faireUnTruc() comme suit :

+On peut ajouter des propriétés au prototype de `faireUnTruc()` comme suit : -
function faireUnTruc(){}
+```js
+function faireUnTruc(){}
 faireUnTruc.prototype.toto = "truc";
-console.log( faireUnTruc.prototype );
+console.log( faireUnTruc.prototype ); +``` -

Produira le résultat suivant :

+Produira le résultat suivant : -
{
+```js
+{
     toto: "truc",
     constructor: ƒ faireUnTruc(),
     __proto__: {
@@ -170,21 +172,24 @@ console.log( faireUnTruc.prototype );
valueOf: ƒ valueOf() } } - +``` -

On peut utiliser l'opérateur new afin de créer une instance de faireUnTruc() basée sur ce prototype. Pour utiliser l'opérateur new, il suffira d'appeler la fonction et de précéder cet appel avec le mot-clé new. Lorsqu'on appelle une fonction avec un opérateur new, celle-ci renvoie un objet qui est une instance de la fonction. On peut ensuite ajouter des propriétés sur cet objet.

+On peut utiliser l'opérateur `new` afin de créer une instance de `faireUnTruc()` basée sur ce prototype. Pour utiliser l'opérateur `new`, il suffira d'appeler la fonction et de précéder cet appel avec le mot-clé `new`. Lorsqu'on appelle une fonction avec un opérateur `new`, celle-ci renvoie un objet qui est une instance de la fonction. On peut ensuite ajouter des propriétés sur cet objet. -

Voyons le code qui suit :

+Voyons le code qui suit : -
function faireUnTruc(){}
+```js
+function faireUnTruc(){}
 faireUnTruc.prototype.toto = "truc"; // on ajoute une propriété au prototype
 var uneInstance = new faireUnTruc();
 uneInstance.prop = "une valeur"; // on ajoute une propriété sur l'objet
-console.log(uneInstance);
+console.log(uneInstance); +``` -

Exécuté, ce code produira le résultat suivant dans la console :

+Exécuté, ce code produira le résultat suivant dans la console : -
{
+```js
+{
     prop: "une valeur",
     __proto__: {
         toto: "truc",
@@ -199,19 +204,21 @@ console.log(uneInstance);
valueOf: ƒ valueOf() } } -} +} +``` -

Comme nous l'avons vu avant, la valeur de __proto__ pour uneInstance est faireUnTruc.prototype. Mais quel est l'intérêt ? Lorsqu'on accède à une propriété de uneInstance, le moteur contrôle d'abord si uneInstance possède cette propriété.

+Comme nous l'avons vu avant, la valeur de `__proto__` pour `uneInstance` est `faireUnTruc.prototype`. Mais quel est l'intérêt ? Lorsqu'on accède à une propriété de `uneInstance`, le moteur contrôle d'abord si `uneInstance` possède cette propriété. -

Si uneInstance ne possède pas cette propriété, le moteur contrôlera la propriété sur la propriété __proto__ de uneInstance (c'est-à-dire faireUnTruc.prototype). Si la propriété __proto__ de uneInstance possède la propriété qu'on recherche, ce sera celle-ci qui sera utilisée.

+Si `uneInstance` ne possède pas cette propriété, le moteur contrôlera la propriété sur la propriété `__proto__` de `uneInstance` (c'est-à-dire `faireUnTruc.prototype`). Si la propriété `__proto__` de `uneInstance` possède la propriété qu'on recherche, ce sera celle-ci qui sera utilisée. -

Si __proto__ de unTruc ne possède pas la propriété recherchée, le moteur contrôle la propriété __proto__ de la propriété __proto__ de uneInstance. Par défaut, la propriété __proto__ de n'importe quel propriété prototyped'une fonction est  window.Object.prototype. Ainsi, la propriété __proto__ de la propriété __proto__ de  uneInstance (c'est-à-dire __proto__ de faireUnTruc.prototype (c'est-à-dire. Object.prototype)) est contrôlée pour vérifier si la propriété y est présente.

+Si `__proto__` de `unTruc` ne possède pas la propriété recherchée, le moteur contrôle la propriété `__proto__` de la propriété `__proto__` de `uneInstance`. Par défaut, la propriété `__proto__` de n'importe quel propriété `prototype`d'une fonction est  `window.Object.prototype`. Ainsi, la propriété `__proto__` de la propriété `__proto__` de  `uneInstance` (c'est-à-dire `__proto__` de `faireUnTruc.prototype` (c'est-à-dire. `Object.prototype`)) est contrôlée pour vérifier si la propriété y est présente. -

Si la propriété n'est pas trouvée sur la propriété __proto__ de la propriété __proto__ de uneInstance, c'est la proriété __proto__ de la propriété __proto__ de la propriété __proto__ de uneInstance qui est contrôlée. Cependant il y a un problème car la propriété __proto__ de la propriété __proto__ de la propriété __proto__ de unTruc n'existe pas. Autrement dit, toute la chaîne de prototype a été parcouru et on ne peut pas remonter d'un cran sur un autre __proto__ et le moteur peut conclure que la propriété n'existe pas pour cet objet et renvoyer undefined.

+Si la propriété n'est pas trouvée sur la propriété `__proto__` de la propriété `__proto__` de `uneInstance`, c'est la proriété `__proto__` de la propriété `__proto__` de la propriété `__proto__` de `uneInstance` qui est contrôlée. Cependant il y a un problème car la propriété `__proto__` de la propriété `__proto__` de la propriété `__proto__` de `unTruc` n'existe pas. Autrement dit, toute la chaîne de prototype a été parcouru et on ne peut pas remonter d'un cran sur un autre `__proto__` et le moteur peut conclure que la propriété n'existe pas pour cet objet et renvoyer `undefined`. -

Regardons ce qui se produit dans la console avec un peu de code :

+Regardons ce qui se produit dans la console avec un peu de code : -
function faireUnTruc(){}
+```js
+function faireUnTruc(){}
 faireUnTruc.prototype.toto = "truc";
 var uneInstance = new faireUnTruc();
 uneInstance.prop = "une valeur";
@@ -220,36 +227,40 @@ console.log("uneInstance.toto: " + uneInstance.toto);
 console.log("faireUnTruc.prop: " + faireUnTruc.prop);
 console.log("faireUnTruc.toto: " + faireUnTruc.toto);
 console.log("faireUnTruc.prototype.prop: " + faireUnTruc.prototype.prop);
-console.log("faireUnTruc.prototype.toto:  " + faireUnTruc.prototype.toto);
+console.log("faireUnTruc.prototype.toto: " + faireUnTruc.prototype.toto); +``` -

Le résultat est le suivant :

+Le résultat est le suivant : -
uneInstance.prop: une valeur
+```js
+uneInstance.prop: une valeur
 uneInstance.toto: truc
 faireUnTruc.prop: undefined
 faireUnTruc.toto: undefined
 faireUnTruc.prototype.prop: undefined
-faireUnTruc.prototype.toto: truc
+faireUnTruc.prototype.toto: truc +``` -

Les différentes façons de créer des objets et les impacts sur la chaîne de prototype

+## Les différentes façons de créer des objets et les impacts sur la chaîne de prototype -

Objets créés avec les raccourcis syntaxiques (littéraux)

+### Objets créés avec les raccourcis syntaxiques (littéraux) -
var o = {a: 1};
+```js
+var o = {a: 1};
 
 // Le nouvel objet possède Object.prototype comme [[Prototype]]
 // o ne possède pas de propriété 'hasOwnProperty' en propre
 // hasOwnProperty est une propriété en propre de Object.prototype.
 // o hérite de hasOwnProperty via Object.prototype
 // Object.prototype possède null comme prototype.
-// o ---> Object.prototype ---> null
+// o ---> Object.prototype ---> null
 
 var b = ['coucou', 'ça va', '?'];
 
 // Les tableaux (Array) héritent de Array.prototype
 // (qui possède les méthodes indexOf, forEach, etc.)
 // La chaîne de prototype est donc :
-// b ---> Array.prototype ---> Object.prototype ---> null
+// b ---> Array.prototype ---> Object.prototype ---> null
 
 function f() {
   return 2;
@@ -258,14 +269,15 @@ function f() {
 // Les fonctions héritent de Function.prototype
 // (qui possède les méthodes call, bind, etc.)
 // La chaîne de prototype est donc
-// f ---> Function.prototype ---> Object.prototype ---> null
-
+// f ---> Function.prototype ---> Object.prototype ---> null +``` -

Objets créés avec un constructeur

+### Objets créés avec un constructeur -

En JavaScript, un constructeur est juste une fonction que l'on invoque avec l'opérateur new.

+En JavaScript, un constructeur est _juste_ une fonction que l'on invoque avec l'opérateur [`new`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_new). -
function Graphe() {
+```js
+function Graphe() {
   this.sommets = [];
   this.arêtes = [];
 }
@@ -279,33 +291,35 @@ Graphe.prototype = {
 var g = new Graphe();
 // g est un objet qui possède les propriétés 'sommets' and 'arêtes' en propre.
 // g.[[Prototype]] est la valeur de Graphe.prototype lorsque "new Graphe()" est exécuté.
-
+``` -

Objets créés avec Object.create()

+### Objets créés avec `Object.create()` -

ECMAScript 5 a introduit une nouvelle méthode : {{jsxref("Object.create()")}}. Appeler cette méthode crée un nouvel objet et le prototype de cet objet est le premier argument de cette fonction :

+ECMAScript 5 a introduit une nouvelle méthode : {{jsxref("Object.create()")}}. Appeler cette méthode crée un nouvel objet et le prototype de cet objet est le premier argument de cette fonction : -
var a = {a: 1};
-// a ---> Object.prototype ---> null
+```js
+var a = {a: 1};
+// a ---> Object.prototype ---> null
 
 var b = Object.create(a);
-// b ---> a ---> Object.prototype ---> null
+// b ---> a ---> Object.prototype ---> null
 console.log(b.a); // 1 (héritée)
 
 var c = Object.create(b);
-// c ---> b ---> a ---> Object.prototype ---> null
+// c ---> b ---> a ---> Object.prototype ---> null
 
 var d = Object.create(null);
-// d ---> null
+// d ---> null
 console.log(d.hasOwnProperty);
 // undefined, car d n'hérite pas de Object.prototype
-
+``` -

Suppression des propriétés avec delete

+#### Suppression des propriétés avec `delete` -

L'opérateur delete permet de supprimer une propriété directement rattachée à un objet. En revanche, il n'empêchera pas l'exploration de la chaîne de prototype :

+L'opérateur [`delete`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_delete) permet de supprimer une propriété directement rattachée à un objet. En revanche, il n'empêchera pas l'exploration de la chaîne de prototype : -
let a = {toto: 1};
+```js
+let a = {toto: 1};
 let b = Object.create(a);
 
 console.log(b.toto); // Affiche 1 car c'est une propriété disponible via le prototype
@@ -314,13 +328,15 @@ console.log(b.toto); // Affiche 5, désormais cette propriété existe sur l'obj
 
 delete b.toto;
 console.log(b.toto); // Affiche 1 : la propriété n'est plus disponible sur l'objet mais
-                     // on peut toujours la récupérer via le prototype
+ // on peut toujours la récupérer via le prototype +``` -

Objets créés avec le mot-clé class

+### Objets créés avec le mot-clé `class` -

ECMAScript 2015 introduit plusieurs mots-clés destinés à créer du sucre syntaxique pour manipuler des classes. Ces mots-clés sont {{jsxref("Instructions/class", "class")}}, {{jsxref("Classes/constructor", "constructor")}}, {{jsxref("Classes/static", "static")}}, {{jsxref("Classes/extends", "extends")}} et {{jsxref("Opérateurs/super", "super")}}.

+ECMAScript 2015 introduit plusieurs mots-clés destinés à créer du sucre syntaxique pour manipuler des [classes](/fr/docs/Web/JavaScript/Reference/Classes). Ces mots-clés sont {{jsxref("Instructions/class", "class")}}, {{jsxref("Classes/constructor", "constructor")}}, {{jsxref("Classes/static", "static")}}, {{jsxref("Classes/extends", "extends")}} et {{jsxref("Opérateurs/super", "super")}}. -
'use strict';
+```js
+'use strict';
 
 class Polygone {
   constructor(hauteur, largeur) {
@@ -343,15 +359,16 @@ class Carré extends Polygone {
 }
 
 var carré = new Carré(2);
-
+``` -

Performance

+### Performance -

Le temps de recherche des propriétés sera plus élevé si ces propriétés sont situées plus loin dans la chaîne de prototype. Tenter d'accéder à ces propriétés éloignées pourra avoir un impact négatif sur les performances. De plus, tenter d'accéder à des propriétés inexistantes entraîntera toujours le parcours de l'ensemble de la chaîne de prototype.

+Le temps de recherche des propriétés sera plus élevé si ces propriétés sont situées plus loin dans la chaîne de prototype. Tenter d'accéder à ces propriétés éloignées pourra avoir un impact négatif sur les performances. De plus, tenter d'accéder à des propriétés inexistantes entraîntera toujours le parcours de l'ensemble de la chaîne de prototype. -

Lorsqu'on parcourt les propriétés d'un objet, toutes les propriétés énumérables situées sur la chaîne de prototype seront parcourues. Pour vérifier si un objet possède une propriété en propre plus que via sa chaîne de prototype, on devra utiliser la méthode hasOwnProperty() qui est héritée grâce à Object.prototype. Prenons un exemple concret avec le cas du graphe traité dans un exemple précédent :

+Lorsqu'on parcourt les propriétés d'un objet, **toutes** les propriétés énumérables situées sur la chaîne de prototype seront parcourues. Pour vérifier si un objet possède une propriété en propre plus que via sa chaîne de prototype, on devra utiliser la méthode [`hasOwnProperty()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty) qui est héritée grâce à `Object.prototype`. Prenons un exemple concret avec le cas du graphe traité dans un exemple précédent : -
console.log(g.hasOwnProperty('arêtes'));
+```js
+console.log(g.hasOwnProperty('arêtes'));
 // true
 
 console.log(g.hasOwnProperty('nononon'));
@@ -362,36 +379,34 @@ console.log(g.hasOwnProperty('ajoutSommet'));
 
 console.log(g.__proto__.hasOwnProperty('ajoutSommet'));
 // true
-
+``` -
-

Note : Tester si une propriété vaut {{jsxref("undefined")}} ne suffit pas à vérifier la présence de la propriété sur un objet : une propriété peut très bien exister sur un objet mais valoir undefined.

-
+> **Note :** Tester si une propriété vaut {{jsxref("undefined")}} ne suffit pas à vérifier la présence de la propriété sur un objet : une propriété peut très bien exister sur un objet mais valoir `undefined`. -

Mauvaise pratique : étendre les prototypes natifs

+### Mauvaise pratique : étendre les prototypes natifs -

On peut parfois voir du code qui étend Object.prototype ou l'un des prototypes natifs.

+On peut parfois voir du code qui étend `Object.prototype` ou l'un des prototypes natifs. -

Cette technique est intitulée monkey patching et brise l'encapsulation. Bien qu'elle soit utilisée par certains frameworks, il n'existe pas de raison suffisante pour étendre les objets natifs avec des fonctionnalités non-standard.

+Cette technique est intitulée _monkey patching_ et brise l'encapsulation. Bien qu'elle soit utilisée par certains _frameworks_, il n'existe pas de raison suffisante pour étendre les objets natifs avec des fonctionnalités non-standard. -

La seule raison qui peut prévaloir pour l'extension de prototypes natifs est l'ajout de fonctionnalités JavaScript apparues avec les nouvelles versions des spécifications et moteurs afin d'en disposer dans de plus anciens environnements.

+La **seule** raison qui peut prévaloir pour l'extension de prototypes natifs est l'ajout de fonctionnalités JavaScript apparues avec les nouvelles versions des spécifications et moteurs afin d'en disposer dans de plus anciens environnements. -

Résumé des méthodes pour étendre la chaîne de prototype

+### Résumé des méthodes pour étendre la chaîne de prototype -

Voici un tableau avec les quatre outils qui permettent d'étendre une chaîne de prototypes avec chacun leurs avantages et leurs inconvénients. Tous les exemples mentionnés permettent de créer le même objet inst (et affichant donc le même résultat dans la console) mais de façon différente.

+Voici un tableau avec les quatre outils qui permettent d'étendre une chaîne de prototypes avec chacun leurs avantages et leurs inconvénients. Tous les exemples mentionnés permettent de créer le même objet `inst` (et affichant donc le même résultat dans la console) mais de façon différente. - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - +console.log(inst.truc_prop) + + + + +
NomExemplesAvantagesInconvénients
Initialisation -
+  
NomExemplesAvantagesInconvénients
Initialisation +
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -403,23 +418,35 @@ truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
 console.log(inst.truc_prop);
-
-
Prise en charge par l'ensemble des navigateurs. Cette méthode est très rapide, standard et facilement optimisable. -

Afin d'utiliser cette méthode, il faut que la fonction ait été initialisée. Pendant cette initialisation, le constructeur peut enregistrer des informations uniques qui doivent être générées pour chaque objet.

- -

Toutefois, il est possible que ces informations uniques ne soient générées qu'une seule fois.

- -

De plus, l'initialisation du constructeur peut ajouter des méthodes non souhaitées sur l'objet.

- -

Cela dit, ces problèmes ne se révèlent que rarement.

-
Object.create() -
+
+
+ Prise en charge par l'ensemble des navigateurs. Cette méthode est très + rapide, standard et facilement optimisable. + +

+ Afin d'utiliser cette méthode, il faut que la fonction ait été + initialisée. Pendant cette initialisation, le constructeur peut + enregistrer des informations uniques qui doivent être générées pour + chaque objet. +

+

+ Toutefois, il est possible que ces informations uniques ne soient + générées qu'une seule fois. +

+

+ De plus, l'initialisation du constructeur peut ajouter des méthodes + non souhaitées sur l'objet. +

+

Cela dit, ces problèmes ne se révèlent que rarement.

+
Object.create() +
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -433,9 +460,9 @@ truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
 console.log(inst.truc_prop);
-
- -
+
+
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -452,21 +479,37 @@ var proto = Object.create(
 truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
-console.log(inst.truc_prop)
-
Prise en charge par la majorité des navigateurs actuels. Elle permet de définir directement __proto__ en une seule fois et le navigateur peut mieux optimiser l'objet. Elle permet aussi de créer des objets sans prototype avec Object.create(null). -

Cette méthode n'est pas prise en charge par IE8 et les versions antérieures. Toutefois, Microsoft ayant mis un terme au support des systèmes qui utilisent ces navigateurs, ce ne devrait pas être un problème pour la plupart des navigation.

- -

De plus, la lenteur de l'initialisation de l'objet peut être causer des soucis de performances lorsqu'on utilise un deuxième argument car descripteur de propriété possède un objet rattaché. Lorsqu'on gère des centaines de milliers de descripteurs, cela peut entraîner un certain lag.

-
-

Object.setPrototypeOf()

-
-
+console.log(inst.truc_prop)
+
+ Prise en charge par la majorité des navigateurs actuels. Elle permet de + définir directement __proto__ en une seule fois et le + navigateur peut mieux optimiser l'objet. Elle permet aussi de créer des + objets sans prototype avec Object.create(null). + +

+ Cette méthode n'est pas prise en charge par IE8 et les versions + antérieures. Toutefois, Microsoft ayant mis un terme au support des + systèmes qui utilisent ces navigateurs, ce ne devrait pas être un + problème pour la plupart des navigation. +

+

+ De plus, la lenteur de l'initialisation de l'objet peut être causer + des soucis de performances lorsqu'on utilise un deuxième argument car + descripteur de propriété possède un objet rattaché. Lorsqu'on gère des + centaines de milliers de descripteurs, cela peut entraîner un certain + lag. +

+
+

Object.setPrototypeOf()

+
+
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -482,9 +525,9 @@ truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
 console.log(inst.truc_prop);
-
- -
+
+
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -498,15 +541,27 @@ proto=Object.setPrototypeOf(
 truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
-console.log(inst.truc_prop)
-
Prise en charge par l'ensemble des navigateurs actuels. Elle permet de manipuler dynamiquement le prototype d'un objet et également de rattacher un prototype à un objet qui n'aurait pas de prototype.Cette méthode devrait être dépréciée et possède des performances faibles. En effet, les moteurs tenteront d'optimiser la connaissance de la structure du prototype et cette méthode viendra à l'enconte de ces hypothèses et certains navigateurs pourront même recompiler le code pour le faire fonctionner selon les spécifications. Cette méthode n'est pas prise en charge par IE8 et les versions antérieures.
__proto__ -
+console.log(inst.truc_prop)
+
+ Prise en charge par l'ensemble des navigateurs actuels. Elle permet de + manipuler dynamiquement le prototype d'un objet et également de + rattacher un prototype à un objet qui n'aurait pas de prototype. + + Cette méthode devrait être dépréciée et possède des performances + faibles. En effet, les moteurs tenteront d'optimiser la connaissance de + la structure du prototype et cette méthode viendra à l'enconte de ces + hypothèses et certains navigateurs pourront même recompiler le code pour + le faire fonctionner selon les spécifications. Cette méthode n'est pas + prise en charge par IE8 et les versions antérieures. +
__proto__ +
 function toto(){}
 toto.prototype = {
   toto_prop: "toto val"
@@ -520,9 +575,9 @@ truc.prototype = proto;
 var inst = new truc();
 console.log(inst.toto_prop);
 console.log(inst.truc_prop);
-
- -
+
+
 var inst = {
   __proto__: {
     truc_prop: "truc val",
@@ -533,42 +588,59 @@ var inst = {
   }
 };
 console.log(inst.toto_prop);
-console.log(inst.truc_prop)
-
Prise en charge par l'ensemble des navigateurs actuels (y compris IE11 et ultérieurs). Défiinir __proto__ sur quelque chose qui n'est pas un objet échouera silencieusement.Cette méthode est dépréciée et n'est pas performante car les moteurs tentent d'optimiser les prototypes. Aussi, le modifier ainsi dynamiquement bloque ces optimisations et peut causer la recompilation du code pour qu'il fonctionne selon les spécifications. Cette méthode n'est pas prise en charge par IE10 et les versions antérieures.
+ Prise en charge par l'ensemble des navigateurs actuels (y compris IE11 + et ultérieurs). Défiinir __proto__ sur quelque chose qui n'est pas un + objet échouera silencieusement. + + Cette méthode est dépréciée et n'est pas performante car les moteurs + tentent d'optimiser les prototypes. Aussi, le modifier ainsi + dynamiquement bloque ces optimisations et peut causer la recompilation + du code pour qu'il fonctionne selon les spécifications. Cette méthode + n'est pas prise en charge par IE10 et les versions antérieures. +
-

prototype et Object.getPrototypeOf()

+## `prototype` et `Object.getPrototypeOf()` -

JavaScript peut prêter à confusion pour les développeurs utilisant Java ou C++. JavaScript est un langage dynamique et les structures peuvent évoluer lors de l'exécution.

+JavaScript peut prêter à confusion pour les développeurs utilisant Java ou C++. JavaScript est un langage dynamique et les structures peuvent évoluer lors de l'exécution. -

Vous avez peut-être remarqué que la fonction A possède une propriété spéciale intitulée prototype. Cette propriété spéciale fonctionne avec l'opérateur new Elle permet de copier la référence  l'objet prototype sur la propriété interne [[Prototype]] de la nouvelle instance créée. Ainsi, avec var a1 = new A(), Le moteur JavaScript définira a1.[[Prototype]] = A.prototype. Quand on tente d'accéder à une des propriétés de l'instance, JavaScript vérifie la présence sur l'instance puis analyse son prototype [[Prototype]]. Cela signifie que tout ce qui est défini sur prototype est effectivement partagé par l'ensemble des instances et on peut même modifier prototype en cours de route afin de modifier indirectement l'ensemble des instances.

+Vous avez peut-être remarqué que la fonction `A` possède une propriété spéciale intitulée `prototype`. Cette propriété spéciale fonctionne avec l'opérateur `new` Elle permet de copier la référence  l'objet prototype sur la propriété interne `[[Prototype]]` de la nouvelle instance créée. Ainsi, avec `var a1 = new A()`, Le moteur JavaScript définira `a1.[[Prototype]] = A.prototype`. Quand on tente d'accéder à une des propriétés de l'instance, JavaScript vérifie la présence sur l'instance puis analyse son prototype `[[Prototype]]`. Cela signifie que tout ce qui est défini sur `prototype` est effectivement partagé par l'ensemble des instances et on peut même modifier `prototype` en cours de route afin de modifier indirectement l'ensemble des instances. -

Dans l'exemple précédent, si on avait eu var a1 = new A(); var a2 = new A(); alors a1.faireUnTruc aurait fait référence à Object.getPrototypeOf(a1).faireUntruc qui est identique à A.prototype.faireUnTruc. Autrement dit Object.getPrototypeOf(a1).faireUnTruc == Object.getPrototypeOf(a2).faireUnTruc == A.prototype.faireUnTruc.

+Dans l'exemple précédent, si on avait eu `var a1 = new A(); var a2 = new A();` alors `a1.faireUnTruc` aurait fait référence à `Object.getPrototypeOf(a1).faireUntruc` qui est identique à `A.prototype.faireUnTruc`. Autrement dit `Object.getPrototypeOf(a1).faireUnTruc == Object.getPrototypeOf(a2).faireUnTruc == A.prototype.faireUnTruc`. -

Autrement dit prototype peut être utilisé pour les types et Object.getPrototypeOf() pour les instances.

+Autrement dit `prototype` peut être utilisé pour les types et `Object.getPrototypeOf()` pour les instances. -

[[Prototype]] est analysé de façon récursive. Ainsi, a1.faireUnTruc correspondra à chercher Object.getPrototypeOf(a1).faireUnTruc puis Object.getPrototypeOf(Object.getPrototypeOf(a1)).faireUnTruc etc., jusqu'à ce qu'elle soit trouvée ou que Object.getPrototypeOfrenvoie null.

+`[[Prototype]]` est analysé de façon récursive. Ainsi, `a1.faireUnTruc` correspondra à chercher `Object.getPrototypeOf(a1).faireUnTruc` puis `Object.getPrototypeOf(Object.getPrototypeOf(a1)).faireUnTruc` etc., jusqu'à ce qu'elle soit trouvée ou que `Object.getPrototypeOf`renvoie `null`. -

Ainsi, quand on appelle :

+Ainsi, quand on appelle : -
var o = new Toto();
+```js +var o = new Toto(); +``` -

Le moteur JavaScript effectue les étapes suivantes :

+Le moteur JavaScript effectue les étapes suivantes : -
var o = new Object();
+```js
+var o = new Object();
 o.[[Prototype]] = Toto.prototype;
-Toto.call(o);
+Toto.call(o); +``` -

(ou quelque chose qui y ressemble) et si on écrit ensuite :

+(ou quelque chose qui y ressemble) et si on écrit ensuite : -
o.unePropriété;
+```js +o.unePropriété; +``` -

Le moteur vérifie si o possède une propriété unePropriété en propre. Si ce n'est pas le cas, il vérifie Object.getPrototypeOf(o).unePropriété et ainsi de suite.

+Le moteur vérifie si `o` possède une propriété `unePropriété` en propre. Si ce n'est pas le cas, il vérifie `Object.getPrototypeOf(o).unePropriété` et ainsi de suite. -

Conclusion

+## Conclusion -

Il est essentiel de comprendre le modèle d'héritage prototypique avant d'écrire du code complexe qui repose sur ces notions. Il est également préférable d'avoir une idée de la longueur de la chaîne de prototype utilisée pour les différents objets et de fragmenter cette chaîne si besoin afin d'éviter des écueils de performances. Enfin, on veillera à ne pas étendre les prototypes natifs sauf afin d'émuler des nouvelles fonctionnalités qui ne seraient pas disponibles dans l'environnement utilisé.

+Il est essentiel de comprendre le modèle d'héritage prototypique avant d'écrire du code complexe qui repose sur ces notions. Il est également préférable d'avoir une idée de la longueur de la chaîne de prototype utilisée pour les différents objets et de fragmenter cette chaîne si besoin afin d'éviter des écueils de performances. Enfin, on veillera à ne pas étendre les prototypes natifs sauf afin d'émuler des nouvelles fonctionnalités qui ne seraient pas disponibles dans l'environnement utilisé. diff --git a/files/fr/web/javascript/javascript_technologies_overview/index.md b/files/fr/web/javascript/javascript_technologies_overview/index.md index 7e9491ec06..95e2f5bcd5 100644 --- a/files/fr/web/javascript/javascript_technologies_overview/index.md +++ b/files/fr/web/javascript/javascript_technologies_overview/index.md @@ -7,79 +7,73 @@ tags: - JavaScript translation_of: Web/JavaScript/JavaScript_technologies_overview --- -
{{JsSidebar("Introductory")}}
+{{JsSidebar("Introductory")}} -

Introduction

+## Introduction -

HTML est utilisé pour définir la structure et le contenu d'une page web, CSS permet de définir la mise en forme, le style graphique avec lequel afficher le contenu. JavaScript permet quant à lui d'ajouter des fonctionnalités d'interaction pour créer des applications web riches en contenu.

+[HTML](/fr/docs/Web/HTML) est utilisé pour définir la structure et le contenu d'une page web, [CSS](/fr/docs/Web/CSS) permet de définir la mise en forme, le style graphique avec lequel afficher le contenu. [JavaScript](/fr/docs/Web/JavaScript) permet quant à lui d'ajouter des fonctionnalités d'interaction pour créer des applications web riches en contenu. -

Cependant, le terme « JavaScript » au sens large regroupe divers éléments très différents : le langage cœur (ECMAScript) d'une part et les API Web d'autre part et notamment le DOM (Document Object Model, ou Modèle d'Objet du Document).

+Cependant, le terme « JavaScript » au sens large regroupe divers éléments très différents : le langage cœur (ECMAScript) d'une part et les [API Web](/fr/docs/Web/Reference/API) d'autre part et notamment le DOM (Document Object Model, ou Modèle d'Objet du Document). -

JavaScript, le langage (ECMAScript)

+## JavaScript, le langage (ECMAScript) -

Le langage JavaScript (au sens strict) est standardisé par le comité ECMA TC39 sous la forme d'un langage intitulé ECMAScript.

+Le langage JavaScript (au sens strict) est standardisé par le comité ECMA TC39 sous la forme d'un langage intitulé [ECMAScript](/fr/docs/Web/JavaScript/Language_Resources). -

Ce langage est aussi utilisé dans des environnements différents des navigateurs web, comme par exemple dans node.js.

+Ce langage est aussi utilisé dans des environnements différents des navigateurs web, comme par exemple dans [node.js](https://nodejs.org/). -

Quelles sont les caractéristiques d'ECMAScript?

+### Quelles sont les caractéristiques d'ECMAScript? -

Entre autres choses, ECMAScript définit :

+Entre autres choses, ECMAScript définit : -
    -
  • La syntaxe du langage (règles d'interprétation (parsing), mots-clés, flux d'instructions, initialisation littérale d'objets...)
  • -
  • Le mécanisme de traitement d'erreurs ({{jsxref("Instructions/throw","throw")}}, {{jsxref("Instructions/try...catch","try...catch")}} capacité qu'a l'utilisateur de créer des types d'erreurs personnalisés)
  • -
  • Les types de variables (booléen, nombre, chaîne de caractères, fonction, objet...)
  • -
  • L'objet global. Dans l'environnement d'un navigateur, cet objet global est l'objet {{domxref("Window","window")}}. ECMAScript ne définit ici que les API accessibles depuis l'objet global (peu importe l'environnement qui peut être différent d'un navigateur) (par exemple {{jsxref("parseInt","parseInt()")}}, {{jsxref("parseFloat","parseFloat()")}}, {{jsxref("decodeURI","decodeURI()")}}, {{jsxref("encodeURI","encodeURI()")}}...)
  • -
  • Le mécanisme d'héritage basé sur le concept de prototype
  • -
  • Les objets et fonctions natifs ({{jsxref("JSON")}}, {{jsxref("Math")}}, méthodes de {{jsxref("Array.prototype")}}, méthodes d'introspection d'Object...)
  • -
  • Le mode strict.
  • -
+- [La syntaxe du langage](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) (règles d'interprétation (parsing), mots-clés, flux d'instructions, initialisation littérale d'objets...) +- Le mécanisme de traitement d'erreurs ({{jsxref("Instructions/throw","throw")}}, {{jsxref("Instructions/try...catch","try...catch")}} capacité qu'a l'utilisateur de créer des types d'erreurs personnalisés) +- Les types de variables (booléen, nombre, chaîne de caractères, fonction, objet...) +- L'objet global. Dans l'environnement d'un navigateur, cet objet global est l'objet {{domxref("Window","window")}}. ECMAScript ne définit ici que les API accessibles depuis l'objet global (peu importe l'environnement qui peut être différent d'un navigateur) (par exemple {{jsxref("parseInt","parseInt()")}}, {{jsxref("parseFloat","parseFloat()")}}, {{jsxref("decodeURI","decodeURI()")}}, {{jsxref("encodeURI","encodeURI()")}}...) +- [Le mécanisme d'héritage](/fr/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain) basé sur le concept de prototype +- Les objets et fonctions natifs ({{jsxref("JSON")}}, {{jsxref("Math")}}, méthodes de` `{{jsxref("Array.prototype")}}, méthodes d'introspection d'`Object`...) +- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Support des navigateurs

+### Support des navigateurs -

En octobre 2016, les versions actuelles des principaux navigateurs web supportent ECMAScript 5.1 et ECMAScript 2015 (aussi appelé ES6) mais certaines anciennes versions n'implémentent que ECMAScript 5.

+En octobre 2016, les versions actuelles des principaux navigateurs web supportent [ECMAScript 5.1](/fr/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla) et [ECMAScript 2015 (aussi appelé ES6)](/fr/docs/Web/JavaScript/Nouveaut%C3%A9s_et_historique_de_JavaScript/Support_ECMAScript_6_par_Mozilla) mais certaines anciennes versions n'implémentent que ECMAScript 5. -

Futur

+### Futur -

La sixième édition majeure d'ECMAScript a été officiellement approuvée et publiée en tant que standard le 17 juin 2015 par l'assemblée générale ECMA. Depuis cette édition, les éditions ECMAScript sont publiées à un rythme annuel.

+La sixième édition majeure d'ECMAScript a été officiellement approuvée et publiée en tant que standard le 17 juin 2015 par l'assemblée générale ECMA. Depuis cette édition, les éditions ECMAScript sont publiées à un rythme annuel. -

API d'internationalisation

+### API d'internationalisation -

La spécification ECMAScript pour l'API d'internationalisation est un ajout à la spécification du langage ECMAScript, également standardisée par ECMA TC39. L'API d'internationalisation ajoute la collation (c'est-à-dire la comparaison entre chaînes de caractères), le formatage de nombres, dates et heures dans les applications JavaScript en prenant en compte la locale de l'utilisateur pour fournir le meilleur format. Le standard initial a été aprouvé en décembre 2012 ; le statut de son implémentation dans les différents navigateurs est disponible sur la page de l'objet {{jsxref("Intl")}}. La spécification d'internationalisation est également ratifiée annuellement et les navigateurs améliorent leur implémentation au fur et à mesure.

+La [spécification ECMAScript pour l'API d'internationalisation](http://ecma-international.org/ecma-402/1.0/) est un ajout à la spécification du langage ECMAScript, également standardisée par ECMA TC39. L'API d'internationalisation ajoute la collation (c'est-à-dire la comparaison entre chaînes de caractères), le formatage de nombres, dates et heures dans les applications JavaScript en prenant en compte la locale de l'utilisateur pour fournir le meilleur format. Le standard initial a été aprouvé en décembre 2012 ; le statut de son implémentation dans les différents navigateurs est disponible sur la page de l'objet {{jsxref("Intl")}}. La spécification d'internationalisation est également ratifiée annuellement et les navigateurs améliorent leur implémentation au fur et à mesure. -

Les API du DOM (Document Object Model)

+## Les API du DOM (_Document Object Model_) -

WebIDL

+### WebIDL -

La spécification WebIDL fournit le lien entre les technologies DOM et ECMAScript.

+La [spécification WebIDL](http://www.w3.org/TR/WebIDL/) fournit le lien entre les technologies DOM et ECMAScript. -

Le cœur du DOM

+### Le cœur du DOM -

Le Modèle d'Objet du Document (Document Object Model ou DOM en anglais) est une convention multi-plateforme, indépendante du langage utilisée pour représenter et interagir avec les objets dans les documents HTML, XHTML et XML. Les objets de l'arbre du DOM peuvent être accédés et manipulés en utilisant des méthodes sur les objets. Les fonctionnalités principales du DOM sont standardisées par le {{Glossary("W3C")}}. Il définit les interfaces offertes par les documents HTML et XML sans cibler un langage de manipulation précis. Parmi les éléments définis par le DOM, on peut trouver:

+Le Modèle d'Objet du Document (_Document Object Model_ ou DOM en anglais) est une convention multi-plateforme, indépendante du langage utilisée pour représenter et interagir avec les objets dans les documents HTML, XHTML et XML. Les objets de **l'arbre du DOM** peuvent être accédés et manipulés en utilisant des méthodes sur les objets. Les fonctionnalités principales du DOM sont standardisées par le {{Glossary("W3C")}}. Il définit les interfaces offertes par les documents HTML et XML sans cibler un langage de manipulation précis. Parmi les éléments définis par le DOM, on peut trouver: -
    -
  • La structure du document, un modèle d'arbre et l'architecture d'événements DOM dans le noyau DOM : {{domxref("Node")}}, {{domxref("Element")}}, {{domxref("DocumentFragment")}}, {{domxref("Document")}}, {{domxref("DOMImplementation")}}, {{domxref("Event")}}, {{domxref("EventTarget")}}, …
  • -
  • Une définition moins rigoureuse de l'architecture d'événements DOM, ainsi que des événements spécifiques avec les événements DOM.
  • -
  • D'autres éléments tels que le DOM Traversal et le DOM Range.
  • -
+- La structure du document, un modèle d'arbre et l'architecture d'événements DOM dans le [noyau DOM](http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html) : {{domxref("Node")}}, {{domxref("Element")}}, {{domxref("DocumentFragment")}}, {{domxref("Document")}}, {{domxref("DOMImplementation")}}, {{domxref("Event")}}, {{domxref("EventTarget")}}, … +- Une définition moins rigoureuse de l'architecture d'événements DOM, ainsi que des événements spécifiques avec [les événements DOM](http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html). +- D'autres éléments tels que le [DOM Traversal](http://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html) et le [DOM Range](http://html5.org/specs/dom-range.html). -

Du point de vue d'ECMAScript, les objets définis dans la spécification DOM sont appelés des « objets hôtes ».

+Du point de vue d'ECMAScript, les objets définis dans la spécification DOM sont appelés des « objets hôtes ». -

Le DOM HTML

+### Le DOM HTML -

HTML, le langage de balisage du Web, est spécifié en termes de DOM. Comme une couche au-dessus des concepts abstraits définis dans DOM Core, HTML définit également la signification des éléments. Le DOM HTML inclut des choses telles que la propriété className sur des éléments HTML, or des API telles que {{domxref("document.body")}}.
-
- La spécification HTML définit aussi les restrictions sur les documents ; par exemple, elle requiert que tous les enfants d'un élément {{HTMLRef("ul")}} (une liste non-ordonnée) soient des éléments {{HTMLRef("li")}}, puisqu'ils représentent les éléments d'une liste. En général, cela interdit aussi l'utilisation d'éléments et d'attributs qui ne sont pas définis dans un certain standard.
-
- Si vous cherchez la documentation sur l'objet {{domxref("Document")}}, l'objet {{domxref("Window")}} ou sur les autres éléments du DOM, vous pouvez lire la documentation relative au DOM.

+[HTML](/fr/docs/Web/HTML), le langage de balisage du Web, est spécifié en termes de DOM. Comme une couche au-dessus des concepts abstraits définis dans DOM Core, HTML définit également la _signification_ des éléments. Le DOM HTML inclut des choses telles que la propriété `className` sur des éléments HTML, or des API telles que {{domxref("document.body")}}. -

D'autres API fréquemment utilisées

+La spécification HTML définit aussi les restrictions sur les documents ; par exemple, elle requiert que tous les enfants d'un élément {{HTMLRef("ul")}} (une liste non-ordonnée) soient des éléments {{HTMLRef("li")}}, puisqu'ils représentent les éléments d'une liste. En général, cela interdit aussi l'utilisation d'éléments et d'attributs qui ne sont pas définis dans un certain standard. - +Si vous cherchez la documentation sur l'objet {{domxref("Document")}}, l'objet {{domxref("Window")}} ou sur les autres éléments du DOM, vous pouvez lire [la documentation relative au DOM](/fr/docs/Web/API/Référence_du_DOM_Gecko). + +## D'autres API fréquemment utilisées + +- Les fonctions {{domxref("WindowTimers.setTimeout", "setTimeout")}} et {{domxref("WindowTimers.setInterval", "setInterval")}} ont d'abord été spécifiées dans l'interface {{domxref("Window")}} du standard HTML. +- [XMLHttpRequest](https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html "http://dev.w3.org/2006/webapi/XMLHttpRequest-2/") : une API qui permet d'envoyer des requêtes HTTP asynchrones (voir aussi : [la page MDN sur XMLHttpRequest](/fr/docs/Web/API/XMLHttpRequest)) +- [CSS Object Model](http://dev.w3.org/csswg/cssom/) : le CSSOM est utilisé pour abstraire les règles CSS sous forme d'objets. (voir aussi : [la page MDN sur CSSOM](/fr/docs/Web/API/CSS_Object_Model)) +- [WebWorkers](https://html.spec.whatwg.org/multipage/workers.html) : une API qui permet d'effectuer des calculs parallèles (voir aussi : [la page MDN sur cette API](/fr/docs/Web/API/Web_Workers_API)) +- [WebSockets](https://html.spec.whatwg.org/multipage//#network) : une API qui permet d'effectuer des communications bi-directionnelles de bas-niveau (voir aussi : [la page MDN sur cette API](/fr/docs/WebSockets)) +- [`Canvas2DContext`](https://html.spec.whatwg.org/multipage/scripting.html#2dcontext) : Une API de dessin pour l'élément {{htmlelement("canvas")}}. diff --git a/files/fr/web/javascript/language_resources/index.md b/files/fr/web/javascript/language_resources/index.md index 7e47a0d08b..f992cd5ffe 100644 --- a/files/fr/web/javascript/language_resources/index.md +++ b/files/fr/web/javascript/language_resources/index.md @@ -6,146 +6,248 @@ tags: - JavaScript translation_of: Web/JavaScript/Language_Resources --- -
{{JsSidebar}}
+{{JsSidebar}} -

ECMAScript est un langage de script qui forme la base de JavaScript. ECMAScript est standardisé par l'organisation ECMA International grâce aux spécifications ECMA-262 et ECMA-402. Les standards ECMAScript suivants ont été approuvés ou sont en cours de rédaction:

+**ECMAScript** est un langage de script qui forme la base de [JavaScript](/fr/docs/Web/JavaScript). ECMAScript est standardisé par l'organisation [ECMA International](https://www.ecma-international.org/) grâce aux spécifications **ECMA-262 et ECMA-402**. Les standards ECMAScript suivants ont été approuvés ou sont en cours de rédaction: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomLienDate de publicationDescription
Éditions actuelles
ECMA-262 10e éditionBrouillon de travail2019Spécification du langage ECMAScript 2019
ECMA-262, 9e éditionPDF, HTML
- Brouillon de travail, dépôt
2018Spécification du langage ECMAScript 2018
ECMA-402 5e éditionBrouillon de la spécification, dépôt2018Spécification pour l'API d'internationalisation ECMAScript 2018
Éditions historiques/obsolètes
ECMA-262PDFJuin 1997ECMAScript : un langage de programmation générique, multi-plateforme. C'est la première version du standard ECMAScript.
ECMA-262, 2e éditionPDFAoût 1998Spécification du langage ECMAScript. C'est la deuxième révision du standard. Elle correspond aussi au standard ISO 16262.
ECMA-262 3e éditionPDFDécembre 1999Spécification du langage ECMAScript. C'est la troisième révision du standard. Elle correspond à JavaScript 1.5.
- Voir aussi l'errata à ce propos.
ECMA-262 5e éditionPDFDécembre 2009Spécification du langage ECMAScript. C'est la cinquième révision du standard.
- Voir aussi l'errata pour ES5 et la prise en charge d'ECMAScript 5 par Mozilla
ECMA-357PDFJuin 2004ECMAScript pour XML (E4X).
- Voir aussi l'errata pour E4X.
ECMA-262, édition 5.1PDF, HTMLJuin 2011Cette version correspond complètement à la troisième édition du standard international ISO/IEC 16262:2011.
- Elle inclut les correctifs lié à l'errata pour ES5, elle ne contient pas de nouvelles fonctionnalités.
ECMA-402 1ère éditionPDF, HTMLDécembre 2012Spécification pour l'API d'internationalisation ECMAScript
ECMA-262 6e éditionPDF, HTMLJuin 2015Spécification 2015 pour le langage ECMAScript (sixième édition)
ECMA-402 2e éditionPDFJuin 2015Spécification pour l'API d'internationalisation ECMAScript 2015
ECMA-262 7e éditionHTMLJuin 2016Spécification 2016 pour le langage ECMAScript (septième édition)
ECMA-402 3e éditionHTMLJuin 2016Spécification pour l'API d'internationalisation ECMAScript 2016
ECMA-262 8e éditionHTMLJuin 2017Spécification 2017 pour le langage ECMAScript (huitième édition)
ECMA-402 4e éditionHTMLJuin 2017Spécification pour l'API d'internationalisation ECMAScript 2017
NomLienDate de publicationDescription
Éditions actuelles
ECMA-262 10e édition + Brouillon de travail + 2019Spécification du langage ECMAScript 2019
ECMA-262, 9e édition + PDF, + HTML
Brouillon de travail, dépôt +
2018Spécification du langage ECMAScript 2018
ECMA-402 5e édition + Brouillon de la spécification, dépôt + 2018Spécification pour l'API d'internationalisation ECMAScript 2018
Éditions historiques/obsolètes
ECMA-262 + PDF + Juin 1997 + ECMAScript : un langage de programmation générique, multi-plateforme. + C'est la première version du standard ECMAScript. +
ECMA-262, 2e édition + PDF + Août 1998 + Spécification du langage ECMAScript. C'est la deuxième révision du + standard. Elle correspond aussi au standard ISO 16262. +
ECMA-262 3e édition + PDF + Décembre 1999 + Spécification du langage ECMAScript. C'est la troisième révision du + standard. Elle correspond à JavaScript 1.5.
Voir aussi + l'errata + à ce propos. +
ECMA-262 5e édition + PDF + Décembre 2009 + Spécification du langage ECMAScript. C'est la cinquième révision du + standard.
Voir aussi + l'errata pour ES5 + et + la prise en charge d'ECMAScript 5 par Mozilla +
ECMA-357 + PDF + Juin 2004 + ECMAScript pour XML (E4X).
Voir aussi + l'errata pour E4X. +
ECMA-262, édition 5.1 + PDF, HTML + Juin 2011 + Cette version correspond complètement à la troisième édition du standard + international + ISO/IEC 16262:2011.
Elle inclut les correctifs lié à l'errata pour ES5, elle ne + contient pas de nouvelles fonctionnalités. +
ECMA-402 1ère édition + PDF, + HTML + Décembre 2012Spécification pour l'API d'internationalisation ECMAScript
ECMA-262 6e édition + PDF, + HTML + Juin 2015Spécification 2015 pour le langage ECMAScript (sixième édition)
ECMA-402 2e édition + PDF + Juin 2015Spécification pour l'API d'internationalisation ECMAScript 2015
ECMA-262 7e édition + HTML + Juin 2016Spécification 2016 pour le langage ECMAScript (septième édition)
ECMA-402 3e édition + HTML + Juin 2016Spécification pour l'API d'internationalisation ECMAScript 2016
ECMA-262 8e édition + HTML + Juin 2017Spécification 2017 pour le langage ECMAScript (huitième édition)
ECMA-402 4e édition + HTML + Juin 2017Spécification pour l'API d'internationalisation ECMAScript 2017
-

ES.Next est un nom dynamique qui fait toujours référence à la prochaine version d'ECMAScript, en cours de rédaction. Les fonctionnalités d'ES.Next sont plutôt considérées comme des propositions car la spécification n'a pas encore été finalisée.

+ES.Next est un nom dynamique qui fait toujours référence à la prochaine version d'ECMAScript, en cours de rédaction. Les fonctionnalités d'ES.Next sont plutôt considérées comme des propositions car la spécification n'a pas encore été finalisée. -

Pour plus d'informations sur l'histoire d'ECMAScript, voir la page Wikipédia sur ECMAScript.

+Pour plus d'informations sur l'histoire d'ECMAScript, voir [la page Wikipédia sur ECMAScript](https://fr.wikipedia.org/wiki/ECMAScript). -

Il est possible de participer ou de suivre les travaux concernant la prochaine révision de la spécification sur le langage ECMAScript, appelée « Harmony », ainsi que pour la spécification de l'API d'internationalisation grâce au wiki public et à la liste de diffusion es-discuss accessibles depuis ecmascript.org.

+Il est possible de participer ou de suivre les travaux concernant la prochaine révision de la spécification sur le langage ECMAScript, appelée « Harmony », ainsi que pour la spécification de l'API d'internationalisation grâce au wiki public et à la liste de diffusion[ es-discuss](https://mail.mozilla.org/listinfo/es-discuss) accessibles depuis [ecmascript.org](https://www.ecmascript.org/community.php). -

Implémentations

+## Implémentations -
    -
  • SpiderMonkey : le moteur JavaScript utilisé dans Firefox et les autres produits Mozilla
  • -
  • Rhino : un moteur JavaScript écrit en Java
  • -
  • Tamarin : la machine virtuelle ActionScript (utilisée par Adobe® Flash® Player)
  • -
  • Autres implémentations (Wikipédia).
  • -
+- [SpiderMonkey](/fr/docs/SpiderMonkey) : le moteur JavaScript utilisé dans Firefox et les autres produits Mozilla +- [Rhino](/fr/docs/Rhino) : un moteur JavaScript écrit en Java +- [Tamarin](/fr/docs/Tamarin) : la machine virtuelle ActionScript (utilisée par Adobe® Flash® Player) +- [Autres implémentations](https://en.wikipedia.org/wiki/List_of_ECMAScript_engines) (Wikipédia). -

Voir aussi

+## Voir aussi - +- [Le blog de Brendan Eich](https://brendaneich.com/) (en anglais). Brendan Eich est le créateur de JavaScript et du moteur SpiderMonkey. Il continue de travailler avec le groupe de travail ECMA pour faire évoluer le langage. +- [L'analyse de Dmitry Soshnikov sur les troisième et cinquième édition d'ECMA-262](https://dmitrysoshnikov.com/) diff --git a/files/fr/web/javascript/memory_management/index.md b/files/fr/web/javascript/memory_management/index.md index 1e42785cde..2f02a5edec 100644 --- a/files/fr/web/javascript/memory_management/index.md +++ b/files/fr/web/javascript/memory_management/index.md @@ -8,29 +8,28 @@ tags: translation_of: Web/JavaScript/Memory_Management original_slug: Web/JavaScript/Gestion_de_la_mémoire --- -
{{JsSidebar("Advanced")}}
+{{JsSidebar("Advanced")}} -

Les langages de bas niveau, tels que C, possèdent des primitives permettant de gérer la mémoire : malloc() et free() par exemple. En revanche, lorsqu'on utilise JavaScript, la mémoire est allouée lors de la création des objets puis libérée « automatiquement » lorsque ceux-ci ne sont plus utilisés. Cette libération automatique est appelée garbage collection en anglais ou ramasse-miettes. Le fait que ce processus soit automatique est souvent source de confusion et donne parfois l'impression que JavaScript (ou d'autres langages de haut niveau) ne permet pas de gérer la mémoire : nous allons voir que ce n'est pas le cas.

+Les langages de bas niveau, tels que C, possèdent des primitives permettant de gérer la mémoire : [`malloc()`](https://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html) et [`free()`](https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Overview_of_functions) par exemple. En revanche, lorsqu'on utilise JavaScript, la mémoire est allouée lors de la création des objets puis libérée « automatiquement » lorsque ceux-ci ne sont plus utilisés. Cette libération automatique est appelée _garbage collection_ en anglais ou ramasse-miettes. Le fait que ce processus soit automatique est souvent source de confusion et donne parfois l'impression que JavaScript (ou d'autres langages de haut niveau) ne permet pas de gérer la mémoire : nous allons voir que ce n'est pas le cas. -

Le cycle de vie de la mémoire

+## Le cycle de vie de la mémoire -

Quel que soit le langage de programmation, le cycle de vie de la mémoire ressemblera à :

+Quel que soit le langage de programmation, le cycle de vie de la mémoire ressemblera à : -
    -
  1. Allouer la mémoire dont on a besoin
  2. -
  3. Utiliser cette mémoire allouée (lecture, écriture)
  4. -
  5. Libérer la mémoire allouée lorsqu'on n'en a plus besoin
  6. -
+1. Allouer la mémoire dont on a besoin +2. Utiliser cette mémoire allouée (lecture, écriture) +3. Libérer la mémoire allouée lorsqu'on n'en a plus besoin -

Le deuxième point est explicite, au niveau du code, pour tous les langages de programmation. Le premier et le troisième points sont explicites pour les langages de bas niveau mais souvent implicites pour les langages de haut niveau tels que JavaScript.

+Le deuxième point est explicite, au niveau du code, pour tous les langages de programmation. Le premier et le troisième points sont explicites pour les langages de bas niveau mais souvent implicites pour les langages de haut niveau tels que JavaScript. -

Allocation de la mémoire en JavaScript

+### Allocation de la mémoire en JavaScript -

Initialisation des valeurs

+#### Initialisation des valeurs -

Afin de simplifier l'écriture de code, JavaScript alloue la mémoire lors de la déclaration des variables :

+Afin de simplifier l'écriture de code, JavaScript alloue la mémoire lors de la déclaration des variables : -
// alloue de la mémoire pour un nombre
+```js
+// alloue de la mémoire pour un nombre
 var n = 123;
 // alloue de la mémoire pour une chaîne de caractères
 var s = "azerty";
@@ -54,22 +53,24 @@ function f(a) {
 unElement.addEventListener('click', function(){
   unElement.style.backgroundColor = 'blue';
 }, false);
-
+``` -

Allocation par appels de fonctions

+#### Allocation par appels de fonctions -

Certains appels de fonctions entraînent l'allocation mémoire d'un objet.

+Certains appels de fonctions entraînent l'allocation mémoire d'un objet. -
// Alloue la mémoire pour un objet date
+```js
+// Alloue la mémoire pour un objet date
 var d = new Date();
 
 // Alloue de la mémoire pour un objet représentant un élément du DOM
 var e = document.createElement('div');
-
+``` -

Certaines méthodes allouent de la mémoire pour des nouveaux objets ou de nouvelles valeurs.

+Certaines méthodes allouent de la mémoire pour des nouveaux objets ou de nouvelles valeurs. -
var s = "azerty";
+```js
+var s = "azerty";
 var s2 = s.substr(0, 3); // s2 est une nouvelle chaîne de caractères
 // Les chaînes étant immuables, JavaScript peut choisir
 // de ne pas allouer de mémoire mais seulement
@@ -80,35 +81,36 @@ var a2 = ["génération", "nan nan"];
 var a3 = a.concat(a2);
 // nouveau tableau de 4 éléments
 // (résultat de la concaténation de a et a2)
-
+``` -

Utilisation des variables

+### Utilisation des variables -

Utiliser des variables revient à lire et écrire la mémoire allouée. Cela peut être effectué lorsqu'on lit ou modifie la valeur d'une variable ou d'une propriété d'un objet ou encore lorsqu'on passe un argument à une fonction.

+Utiliser des variables revient à lire et écrire la mémoire allouée. Cela peut être effectué lorsqu'on lit ou modifie la valeur d'une variable ou d'une propriété d'un objet ou encore lorsqu'on passe un argument à une fonction. -

Libérer la mémoire qui n'est plus nécessaire

+### Libérer la mémoire qui n'est plus nécessaire -

La plupart des problèmes concernant la gestion de la mémoire surviennent à cet endroit. Le plus difficile est de savoir « quand » la mémoire allouée n'est plus utilisée. Pour les langages « bas niveau », il faut donc que le développeur détermine quelle partie de la mémoire n'est plus utilisée à tel endroit du code et la libère.

+La plupart des problèmes concernant la gestion de la mémoire surviennent à cet endroit. Le plus difficile est de savoir « quand » la mémoire allouée n'est plus utilisée. Pour les langages « bas niveau », il faut donc que le développeur détermine quelle partie de la mémoire n'est plus utilisée à tel endroit du code et la libère. -

Les interpréteurs des langages de haut niveau intègrent un composant logiciel, appelé « ramasse-miettes » qui a pour but de surveiller l'utilisation de la mémoire afin de déterminer quand une partie de la mémoire allouée n'est plus utilisée afin de la libérer automatiquement. Ce procédé ne peut être qu'une approximation car savoir si tel ou tel fragment de mémoire est nécessaire est un problème indécidable (autrement dit, ce problème ne peut être résolu par un algorithme).

+Les interpréteurs des langages de haut niveau intègrent un composant logiciel, appelé « ramasse-miettes » qui a pour but de surveiller l'utilisation de la mémoire afin de déterminer quand une partie de la mémoire allouée n'est plus utilisée afin de la libérer automatiquement. Ce procédé ne peut être qu'une approximation car savoir si tel ou tel fragment de mémoire est nécessaire est un problème [indécidable](https://fr.wikipedia.org/wiki/D%C3%A9cidabilit%C3%A9) (autrement dit, ce problème ne peut être résolu par un algorithme). -

Le ramasse-miettes ou garbage collection

+## Le ramasse-miettes ou _garbage collection_ -

Comme on vient de le voir, savoir si de la mémoire peut être libérée demeure un problème indécidable. Les ramasses-miettes ne sont donc que des solutions restreintes pour ce problème. La section qui suit détaille les notions importantes pour comprendre ce mécanisme, ainsi que ses limitations.

+Comme on vient de le voir, savoir si de la mémoire peut être libérée demeure un problème indécidable. Les ramasses-miettes ne sont donc que des solutions restreintes pour ce problème. La section qui suit détaille les notions importantes pour comprendre ce mécanisme, ainsi que ses limitations. -

Références

+### Références -

Le concept principal utilisé par les algorithmes de ramasse-miettes est celui de référence. Dans ce contexte, un objet en référence un autre lorsqu'il a accès à lui (implicitement ou explicitement). Ainsi, un objet JavaScript référencera son prototype (référence implicite) et ses propriétés (référence explicite).

+Le concept principal utilisé par les algorithmes de ramasse-miettes est celui de _référence_. Dans ce contexte, un objet en référence un autre lorsqu'il a accès à lui (implicitement ou explicitement). Ainsi, un objet JavaScript référencera son [prototype](/fr/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain) (référence implicite) et ses propriétés (référence explicite). -

Dans ce contexte, la notion d'objet s'étend et dépasse celle utilisée pour décrire les objets JavaScript, elle contiendra notamment les portées de fonctions (ou la portée globale).

+Dans ce contexte, la notion d'objet s'étend et dépasse celle utilisée pour décrire les objets JavaScript, elle contiendra notamment les portées de fonctions (ou la portée globale). -

Compter les références

+### Compter les références -

L'algorithme le plus simple consiste à faire l'équivalence entre « un objet n'est plus nécessaire » et « un objet n'a pas d'objet le référençant ». Ainsi un objet peut être « ramassé » par le ramasse-miettes quand il n'y a plus de références pointant vers lui.

+L'algorithme le plus simple consiste à faire l'équivalence entre « un objet n'est plus nécessaire » et « un objet n'a pas d'objet le référençant ». Ainsi un objet peut être « ramassé » par le ramasse-miettes quand il n'y a plus de références pointant vers lui. -

Exemple

+#### Exemple -
var o = {
+```js
+var o = {
   a: {
     b: 2
   }
@@ -135,13 +137,14 @@ o2 = "yo"; // L'objet 'o' ne possède plus de références vers lui
 oa = null; // la propriété 'a' ne possède plus de références
            // vers elle. L'objet peut être ramassé et la mémoire
            // libérée.
-
+``` -

Une limitation : les cycles

+#### Une limitation : les cycles -

Cet algorithme est limité car il ne peut pas gérer les cycles (exemple : A référence B et B référence A, ce qui forme un cycle). Avec les cycles, des objets pourraient très bien ne plus être nécessaires et cependant il serait impossible de les ramasser pour libérer la mémoire en utilisant l'algorithme précédent car chaque objet serait référencé au moins une fois et aucun ne pourrait être « ramassé ». Les références circulaires peuvent parfois entraîner des fuites mémoire.

+Cet algorithme est limité car il ne peut pas gérer les cycles (exemple : A référence B et B référence A, ce qui forme un cycle). Avec les cycles, des objets pourraient très bien ne plus être nécessaires et cependant il serait impossible de les ramasser pour libérer la mémoire en utilisant l'algorithme précédent car chaque objet serait référencé au moins une fois et aucun ne pourrait être « ramassé ». Les références circulaires peuvent parfois entraîner des fuites mémoire. -
function f() {
+```js
+function f() {
   var o = {};
   var o2 = {};
   o.a = o2; // o référence o2
@@ -151,58 +154,61 @@ oa = null; // la propriété 'a' ne possède plus de références
 }
 
 f();
-
+``` -

Exemple réel

+#### Exemple réel -

Les navigateurs Internet Explorer 6 et 7 utilisent cet algorithme pour gérer les objets du DOM. Certains codes peuvent donc entraîner des fuites de mémoires, en voici un exemple :

+Les navigateurs Internet Explorer 6 et 7 utilisent cet algorithme pour gérer les objets du DOM. Certains codes peuvent donc entraîner des fuites de mémoires, en voici un exemple : -
var div;
+```js
+var div;
 window.onload = function() {
   div = document.getElementById("monElementDiv");
   div.referenceCirculaire = div;
   div.desDonnees = new Array(10000).join("*");
 };
-
+``` -

Dans cet exemple, l'élément du DOM monElementDiv possède une référence circulaire vers lui-même via la propriété referenceCirculaire. Si la propriété n'est pas retirée ou modifiée de façon explicite, un ramasse-miettes qui compte les références aura toujours au moins une référence comptée, ce qui gardera l'élément DOM en mémoire et ce même s'il a été retiré de l'arbre du DOM. Si l'élément du DOM contient beaucoup de données (ce qui est illustré ici avec la propriétés desDonnées), la mémoire consommée par ces données ne sera jamais libérée.

+Dans cet exemple, l'élément du DOM `monElementDiv` possède une référence circulaire vers lui-même via la propriété `referenceCirculaire`. Si la propriété n'est pas retirée ou modifiée de façon explicite, un ramasse-miettes qui compte les références aura toujours au moins une référence comptée, ce qui gardera l'élément DOM en mémoire et ce même s'il a été retiré de l'arbre du DOM. Si l'élément du DOM contient beaucoup de données (ce qui est illustré ici avec la propriétés `desDonnées`), la mémoire consommée par ces données ne sera jamais libérée. -

Algorithme « marquer et balayer » (mark-and-sweep)

+### Algorithme « marquer et balayer » (_mark-and-sweep_) -

Cet algorithme réduit la définition « un objet n'est plus nécessaire » à « un objet ne peut être atteint ».

+Cet algorithme réduit la définition « un objet n'est plus nécessaire » à « un objet ne peut être atteint ». -

L'utilisation de cet algorithme implique de savoir quels sont les objets racines (en JavaScript, la racine est l'objet global). De façon périodique, le ramasse-miettes commencera par ces racines, listera tous les objets référencés par ces racines, puis les objets référencés par eux etc. Le ramasse-miettes pourra ainsi construire une liste de tous les objets accessibles et collecter ceux qui ne sont plus accessibles.

+L'utilisation de cet algorithme implique de savoir quels sont les objets racines (en JavaScript, la racine est l'objet global). De façon périodique, le ramasse-miettes commencera par ces racines, listera tous les objets référencés par ces racines, puis les objets référencés par eux etc. Le ramasse-miettes pourra ainsi construire une liste de tous les objets accessibles et collecter ceux qui ne sont plus accessibles. -

Cet algorithme est meilleur que le précédent car la proposition « un objet possède 0 référence » implique « un objet ne peut être atteint ». En revanche, la réciproque n'est pas vraie comme nous avons pu le voir avec les cycles.

+Cet algorithme est meilleur que le précédent car la proposition « un objet possède 0 référence » implique « un objet ne peut être atteint ». En revanche, la réciproque n'est pas vraie comme nous avons pu le voir avec les cycles. -

En 2012, l'ensemble des navigateurs web modernes disposent d'un ramasse-miettes implémentant cet algorithme mark-and-sweep. L'ensemble des améliorations apportées dans ce domaine de JavaScript représentent des améliorations basées sur cet algorithme, ce ne sont pas de nouveaux algorithmes ou une nouvelle définition pour les objets à supprimer.

+En 2012, l'ensemble des navigateurs web modernes disposent d'un ramasse-miettes implémentant cet algorithme _mark-and-sweep_. L'ensemble des améliorations apportées dans ce domaine de JavaScript représentent des améliorations basées sur cet algorithme, ce ne sont pas de nouveaux algorithmes ou une nouvelle définition pour les objets à supprimer. -

Les cycles ne posent plus problème

+#### Les cycles ne posent plus problème -

Dans l'exemple ci-dessus, après le retour de la fonction, les deux objets ne sont plus référencés par quelque chose d'accessible depuis l'objet global. L'algorithme les marquera donc comme « non-accessibles ».

+Dans l'exemple ci-dessus, après le retour de la fonction, les deux objets ne sont plus référencés par quelque chose d'accessible depuis l'objet global. L'algorithme les marquera donc comme « non-accessibles ». -

Limitation : libérer la mémoire manuellement

+#### Limitation : libérer la mémoire manuellement -

On pourrait parfois avoir envie de décider quand libérer la mémoire. En 2019, il n'est pas possible de déclencher le ramasse miettes en JavaScript.

+On pourrait parfois avoir envie de décider quand libérer la mémoire. En 2019, il n'est pas possible de déclencher le ramasse miettes en JavaScript. -

Node.js

+## Node.js -

Node.js propose certaines options et outils pour configurer et déboguer des problèmes mémoires. Ces fonctionnalités peuvent ne pas être disponibles dans les environnements navigateur.

+Node.js propose certaines options et outils pour configurer et déboguer des problèmes mémoires. Ces fonctionnalités peuvent ne pas être disponibles dans les environnements navigateur. -

Options d'exécution

+### Options d'exécution -

La quantité de mémoire pour la mémoire du tas (heap) peut être augmentée avec une option :

+La quantité de mémoire pour la mémoire du tas (_heap_) peut être augmentée avec une option : -
node --max-old-space-size=6000 index.js
+```bash +node --max-old-space-size=6000 index.js +``` -

On peut également exposer le ramasse-miettes afin de déboguer des problèmes mémoires. Cela s'active via une option et s'utilise avec le débogueur Chrome :

+On peut également exposer le ramasse-miettes afin de déboguer des problèmes mémoires. Cela s'active via une option et s'utilise avec le débogueur Chrome : -
node --expose-gc --inspect index.js
+```bash +node --expose-gc --inspect index.js +``` -

Voir aussi

+## Voir aussi - +- [Article d'IBM sur les pratiques menant aux fuites mémoires en JavaScript (2007)](https://www.ibm.com/developerworks/web/library/wa-memleak/) (en anglais) +- [Billet de Kangax sur les méthodes à utiliser pour enregistrer les gestionnaires d'événements et éviter les fuites mémoires (2010)](https://msdn.microsoft.com/en-us/magazine/ff728624.aspx) (en anglais) +- [La performance pour les logiciels Mozilla et les modules complémentaires](/fr/docs/Performance) diff --git a/files/fr/web/javascript/reference/about/index.md b/files/fr/web/javascript/reference/about/index.md index 4f2bfd5e74..d51cc9129f 100644 --- a/files/fr/web/javascript/reference/about/index.md +++ b/files/fr/web/javascript/reference/about/index.md @@ -7,48 +7,42 @@ tags: translation_of: Web/JavaScript/Reference/About original_slug: Web/JavaScript/Reference/A_propos --- -
{{JsSidebar}}
+{{JsSidebar}} -

La référence JavaScript regroupe les différentes notions autour du langage JavaScript. L'ensemble du langage y est détaillé. Si vous développez une application JavaScript, vous pourrez utiliser ces différentes pages (d'où le titre de « référence »). Si vous apprenez JavaScript ou que vous souhaitez comprendre comment fonctionnent certains de ses composants, vous pouvez lire le Guide JavaScript.

+La référence JavaScript regroupe les différentes notions autour du langage JavaScript. L'ensemble du langage y est détaillé. Si vous développez une application JavaScript, vous pourrez utiliser ces différentes pages (d'où le titre de « référence »). Si vous apprenez JavaScript ou que vous souhaitez comprendre comment fonctionnent certains de ses composants, vous pouvez lire le [Guide JavaScript](/fr/docs/Web/JavaScript/Guide). -

Le langage JavaScript a été conçu pour être utilisé dans un environnement dans lequel il s'intègre : un navigateur, des scripts côté serveur, etc. De façon générale, cette référence ne cible pas un environnement en particulier et tente de rester le plus « agnostique » possible.

+Le langage JavaScript a été conçu pour être utilisé dans un environnement dans lequel il s'intègre : un navigateur, des scripts côté serveur, etc. De façon générale, cette référence ne cible pas un environnement en particulier et tente de rester le plus « agnostique » possible. -

Où trouver des informations sur JavaScript

+## Où trouver des informations sur JavaScript -

La documentation JavaScript sur les fonctionnalités essentielles du langage (qui correspondent à ECMAScript pour la plupart) se trouve dans les sections suivantes :

+La documentation JavaScript sur les fonctionnalités essentielles du langage (qui correspondent à [ECMAScript](/fr/docs/Web/JavaScript/Language_Resources) pour la plupart) se trouve dans les sections suivantes : - +- Le [Guide JavaScript](/fr/docs/Web/JavaScript/Guide) +- La [Référence JavaScript](/fr/docs/Web/JavaScript/Reference) -

Si vous découvrez JavaScript, vous pouvez débuter votre lecture avec le guide. Une fois les fondamentaux acquis, vous pourrez utiliser la référence pour obtenir plus d'informations sur les différents objets et éléments du langage.

+Si vous découvrez JavaScript, vous pouvez débuter votre lecture avec le [guide](/fr/docs/Web/JavaScript/Guide). Une fois les fondamentaux acquis, vous pourrez utiliser la [référence](/fr/docs/Web/JavaScript/Reference) pour obtenir plus d'informations sur les différents objets et éléments du langage. -

Structure de cette référence

+## Structure de cette référence -

La référence JavaScript s'organise autour de différents chapitres :

+La référence JavaScript s'organise autour de différents chapitres : -
-
Les objets natifs standards
-
Ce chapitre aborde l'ensemble des objets natifs standards JavaScript, ainsi que leurs méthodes et propriétés.
-
Les instructions et déclarations
-
Les applications JavaScript sont composées d'instructions organisées grâce à une syntaxe. Une instruction peut s'étaler sur plusieurs lignes et plusieurs instructions peuvent être présentes sur une ligne si elles sont séparées par des points-virugles.
-
Les expressions et opérateurs
-
Ce chapitre traite des opérateurs présents en JavaScript ainsi que des expressions et des mots-clés du langage.
-
Les fonctions
-
Ce chapitre aborde les concepts sur les fonctions en JavaScript.
-
Les classes
-
Ce chapitre présente les classes, un sucre syntaxique pour les objets ajouté avec ECMAScript 2015.
-
Les erreurs
-
Un chapitre sur les erreurs, les exceptions et les avertissements utilisées en JavaScript.
-
Les nouveautés en JavaScript
-
Ce chapitre aborde les différentes versions de JavaScript et les changements qui ont eu lieu.
-
+- [Les objets natifs standards](/fr/docs/Web/JavaScript/Reference/Objets_globaux) + - : Ce chapitre aborde l'ensemble des objets natifs standards JavaScript, ainsi que leurs méthodes et propriétés. +- [Les instructions et déclarations](/fr/docs/Web/JavaScript/Reference/Instructions) + - : Les applications JavaScript sont composées d'instructions organisées grâce à une syntaxe. Une instruction peut s'étaler sur plusieurs lignes et plusieurs instructions peuvent être présentes sur une ligne si elles sont séparées par des points-virugles. +- [Les expressions et opérateurs](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs) + - : Ce chapitre traite des opérateurs présents en JavaScript ainsi que des expressions et des mots-clés du langage. +- [Les fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) + - : Ce chapitre aborde les concepts sur les fonctions en JavaScript. +- [Les classes](/fr/docs/Web/JavaScript/Reference/Classes) + - : Ce chapitre présente les classes, un sucre syntaxique pour les objets ajouté avec ECMAScript 2015. +- [Les erreurs](/fr/docs/Web/JavaScript/Reference/Erreurs) + - : Un chapitre sur les erreurs, les exceptions et les avertissements utilisées en JavaScript. +- [Les nouveautés en JavaScript](/fr/docs/Web/JavaScript/New_in_JavaScript) + - : Ce chapitre aborde les différentes versions de JavaScript et les changements qui ont eu lieu. -

D'autres pages de la référence

+### D'autres pages de la référence - +- [Les fonctionnalités dépréciées et obsolètes](/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Annexes/Fonctionnalit%C3%A9s_d%C3%A9pr%C3%A9ci%C3%A9es) +- [La grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) +- [Les types de données et les structures de données](/fr/docs/Web/JavaScript/Structures_de_donn%C3%A9es) diff --git a/files/fr/web/javascript/reference/classes/constructor/index.md b/files/fr/web/javascript/reference/classes/constructor/index.md index f488f06dc5..ea9682c80d 100644 --- a/files/fr/web/javascript/reference/classes/constructor/index.md +++ b/files/fr/web/javascript/reference/classes/constructor/index.md @@ -9,24 +9,27 @@ tags: translation_of: Web/JavaScript/Reference/Classes/constructor browser-compat: javascript.classes.constructor --- -
{{jsSidebar("Classes")}}
+{{jsSidebar("Classes")}} -

La méthode constructor est une méthode qui est utilisée pour créer et initialiser un objet lorsqu'on utilise le mot clé class.

+La méthode **`constructor`** est une méthode qui est utilisée pour créer et initialiser un objet lorsqu'on utilise le mot clé [`class`](/fr/docs/Web/JavaScript/Reference/Statements/class). -
{{EmbedInteractiveExample("pages/js/classes-constructor.html")}}
+{{EmbedInteractiveExample("pages/js/classes-constructor.html")}} -

Syntaxe

+## Syntaxe -
constructor() { ... }
+```js
+constructor() { ... }
 constructor(argument0) { ... }
 constructor(argument0, argument1) { ... }
-constructor(argument0, argument1, ... , argumentN) { ... }
+constructor(argument0, argument1, ... , argumentN) { ... } +``` -

Description

+## Description -

Un constructeur vous permet de fournir toute initialisation personnalisée qui doit être effectuée avant que toute autre méthode puisse être appelée sur un objet instancié.

+Un constructeur vous permet de fournir toute initialisation personnalisée qui doit être effectuée avant que toute autre méthode puisse être appelée sur un objet instancié. -
class Person {
+```js
+class Person {
   constructor(name) {
     this.name = name;
   }
@@ -38,21 +41,27 @@ constructor(argument0, argument1, ... , argumentN) { ... }
const otto = new Person('Otto'); -otto.introduce(); +otto.introduce(); +``` -

Si vous ne fournissez pas votre propre constructeur, alors un constructeur par défaut sera fourni pour vous. Si votre classe est une classe de base, le constructeur par défaut est vide :

+Si vous ne fournissez pas votre propre constructeur, alors un constructeur par défaut sera fourni pour vous. Si votre classe est une classe de base, le constructeur par défaut est vide : -
constructor() {}
+```js +constructor() {} +``` -

Si votre classe est une classe dérivée, le constructeur par défaut appelle le constructeur parent, en transmettant tous les arguments qui ont été fournis :

+Si votre classe est une classe dérivée, le constructeur par défaut appelle le constructeur parent, en transmettant tous les arguments qui ont été fournis : -
constructor(...args) {
+```js
+constructor(...args) {
   super(...args);
-}
+} +``` -

Cela permet à un code comme celui-ci de fonctionner :

+Cela permet à un code comme celui-ci de fonctionner : -
class ValidationError extends Error {
+```js
+class ValidationError extends Error {
   printCustomerMessage() {
     return `La validation a échoué :-( (détails : ${this.message})`;
   }
@@ -68,13 +77,15 @@ try {
     console.log('Erreur inconnue', error);
     throw error;
   }
-}
+} +``` -

La classe ValidationError n'a pas besoin d'un constructeur explicite, car elle n'a pas besoin de faire d'initialisation personnalisée. Le constructeur par défaut se charge alors d'initialiser le parent Error à partir de l'argument qui lui est fourni.

+La classe `ValidationError` n'a pas besoin d'un constructeur explicite, car elle n'a pas besoin de faire d'initialisation personnalisée. Le constructeur par défaut se charge alors d'initialiser le parent `Error` à partir de l'argument qui lui est fourni. -

Cependant, si vous fournissez votre propre constructeur, et que votre classe dérive d'une certaine classe parente, alors vous devez appeler explicitement le constructeur de la classe parente en utilisant super. Par exemple :

+Cependant, si vous fournissez votre propre constructeur, et que votre classe dérive d'une certaine classe parente, alors vous devez appeler explicitement le constructeur de la classe parente en utilisant `super`. Par exemple : -
class ValidationError extends Error {
+```js
+class ValidationError extends Error {
   constructor(message) {
     super(message);  // appelle le constructeur de la classe parent
     this.name = 'ValidationError';
@@ -96,17 +107,19 @@ try {
     console.log('Unknown error', error);
     throw error;
   }
-}
+} +``` -

Il ne peut y avoir qu'une seule méthode spéciale portant le nom « constructor » dans une classe. Avoir plus d'une occurrence d'une méthode constructor dans une classe lancera une erreur SyntaxError.

+Il ne peut y avoir qu'une seule méthode spéciale portant le nom « `constructor` » dans une classe. Avoir plus d'une occurrence d'une méthode `constructor` dans une classe lancera une erreur [`SyntaxError`](/fr/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError). -

Exemples

+## Exemples -

Utilisation de la méthode du constructor

+### Utilisation de la méthode du `constructor` -

Cet extrait de code est tiré de l'échantillon de classes (démo en direct).

+Cet extrait de code est tiré de l'[échantillon de classes](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html) ([démo en direct](https://googlechrome.github.io/samples/classes-es6/index.html)). -
class Square extends Polygon {
+```js
+class Square extends Polygon {
   constructor(length) {
     // Ici, on appelle le constructeur de la classe parente avec des longueurs
     // fournies pour la largeur et la hauteur du polygone.
@@ -124,13 +137,15 @@ try {
     this.height = value**0.5;
     this.width = value**0.5;
   }
-}
+} +``` -

Un autre exemple

+### Un autre exemple -

Ici, le prototype de la classe Square est modifié — mais le constructeur de sa classe de base Polygon est toujours appelé lorsqu'une nouvelle instance d'un carré est créée.

+Ici, le prototype de la classe `Square` est modifié — mais le constructeur de sa classe de base `Polygon` est toujours appelé lorsqu'une nouvelle instance d'un carré est créée. -
class Polygon {
+```js
+class Polygon {
     constructor() {
         this.name = "Polygone";
     }
@@ -150,23 +165,21 @@ console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //fa
 console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true
 
 let newInstance = new Square();
-console.log(newInstance.name); // Polygone
+console.log(newInstance.name); // Polygone +``` -

Spécifications

+## Spécifications -

{{Specifications}}

+{{Specifications}} -

Compatibilité des navigateurs

+## Compatibilité des navigateurs -

{{Compat}}

+{{Compat}} -

Voir aussi

+## Voir aussi - +- [`super()`](/fr/docs/Web/JavaScript/Reference/Operators/super) +- [Expression `class`](/fr/docs/Web/JavaScript/Reference/Operators/class) +- [Déclaration `class`](/fr/docs/Web/JavaScript/Reference/Statements/class) +- [`Classes`](/fr/docs/Web/JavaScript/Reference/Classes) +- [Object.prototype.constructor](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) diff --git a/files/fr/web/javascript/reference/classes/extends/index.md b/files/fr/web/javascript/reference/classes/extends/index.md index 8e3af50594..2dee751c38 100644 --- a/files/fr/web/javascript/reference/classes/extends/index.md +++ b/files/fr/web/javascript/reference/classes/extends/index.md @@ -7,32 +7,30 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Classes/extends --- -
{{jsSidebar("Classes")}}
+{{jsSidebar("Classes")}} -

Le mot-clé extends est utilisé dans les déclarations et expressions de classes afin de signifier qu'un type représenté par une classe hérite d'un autre type.

+Le mot-clé **`extends`** est utilisé dans les [déclarations](/fr/docs/Web/JavaScript/Reference/Instructions/class) et [expressions de classes](/fr/docs/Web/JavaScript/Reference/Opérateurs/class) afin de signifier qu'un type représenté par une classe hérite d'un autre type. +{{EmbedInteractiveExample("pages/js/classes-extends.html", "taller")}} +## Syntaxe -
{{EmbedInteractiveExample("pages/js/classes-extends.html", "taller")}}
+ class ClasseFille extends ClasseParente { ... } -

Syntaxe

+## Description -
class ClasseFille extends ClasseParente { ... }
-
+Le mot-clé `extends` peut être utilisé pour créer des sous-classes de classes existantes (natives ou non). -

Description

+La propriété `.prototype` d'une classe fille (aussi appelée une _extension_) doit être un {{jsxref("Object")}} ou {{jsxref("null")}}. -

Le mot-clé extends peut être utilisé pour créer des sous-classes de classes existantes (natives ou non).

+## Exemples -

La propriété .prototype d'une classe fille (aussi appelée une extension) doit être un {{jsxref("Object")}} ou {{jsxref("null")}}.

+### Utiliser `extends` -

Exemples

+Ce fragment de code est tiré de [cet exemple](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html) et crée une classe `Carré` qui hérite de `Polygone` : -

Utiliser extends

- -

Ce fragment de code est tiré de cet exemple et crée une classe Carré qui hérite de Polygone :

- -
class Carré extends Polygone {
+```js
+class Carré extends Polygone {
   constructor(longueur) {
     // On utilise le constructeur de la classe parente
     // avec le mot-clé super
@@ -47,13 +45,15 @@ translation_of: Web/JavaScript/Reference/Classes/extends
     return this.hauteur * this.largeur;
   }
 
-}
+} +``` -

Utiliser extends avec des objets natifs

+### Utiliser `extends` avec des objets natifs -

Dans l'exemple suivant, on crée l'équivalent d'une sous-classe pour {{jsxref("Date")}} :

+Dans l'exemple suivant, on crée l'équivalent d'une sous-classe pour {{jsxref("Date")}} : -
class maDate extends Date {
+```js
+class maDate extends Date {
   constructor() {
     super();
   }
@@ -62,15 +62,17 @@ translation_of: Web/JavaScript/Reference/Classes/extends
     var mois = ['Jan','Fév','Mar','Avr','Mai','Juin','Juil','Août','Sep','Oct','Nov','Déc'];
     return this.getDate() + "-" + mois[this.getMonth()] + "-" + this.getFullYear();
   }
-}
+} +``` -

Ces exemples sont extraits de ces deux pages : démonstration, source.

+Ces exemples sont extraits de ces deux pages : [démonstration](https://googlechrome.github.io/samples/classes-es6/index.html), [source](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html). -

Étendre null

+### Étendre `null` -

Étendre {{jsxref("null")}} se fait comme avec une classe normale sauf que l'objet prototype n'hérite pas de {{jsxref("Object.prototype")}}.

+Étendre {{jsxref("null")}} se fait comme avec une classe normale sauf que l'objet prototype n'hérite pas de {{jsxref("Object.prototype")}}. -
class extensionNull extends null {
+```js
+class extensionNull extends null {
   constructor() {}
 }
 
@@ -78,37 +80,20 @@ Object.getPrototypeOf(extensionNull); // Function.prototype
 Object.getPrototypeOf(extensionNull.prototype); // null
 
 new extensionNull(); // ReferenceError
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-class-definitions', 'extends')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}}{{Spec2('ESDraft')}}
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.classes.extends")}}

- -

Voir aussi

- - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-class-definitions', 'extends')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-class-definitions', 'extends')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.classes.extends")}} + +## Voir aussi + +- [Les classes](/fr/docs/Web/JavaScript/Reference/Classes) +- [`super`](/fr/docs/Web/JavaScript/Reference/Opérateurs/super) diff --git a/files/fr/web/javascript/reference/classes/index.md b/files/fr/web/javascript/reference/classes/index.md index 33721a3faa..2808bc1d39 100644 --- a/files/fr/web/javascript/reference/classes/index.md +++ b/files/fr/web/javascript/reference/classes/index.md @@ -9,39 +9,43 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Classes --- -
{{JsSidebar("Classes")}}
+{{JsSidebar("Classes")}} -

Les classes JavaScript ont été introduites avec ECMAScript 2015. Elles sont un « sucre syntaxique » par rapport à l'héritage prototypal. En effet, cette syntaxe n'introduit pas un nouveau modèle d'héritage dans JavaScript ! Elle fournit uniquement une syntaxe plus simple pour créer des objets et manipuler l'héritage.

+Les classes JavaScript ont été introduites avec ECMAScript 2015. Elles sont un « sucre syntaxique » par rapport à l'héritage prototypal. En effet, cette syntaxe n'introduit pas un nouveau modèle d'héritage dans JavaScript ! Elle fournit uniquement une syntaxe plus simple pour créer des objets et manipuler l'héritage. -

Définir des classes

+## Définir des classes -

En réalité, les classes sont juste des fonctions spéciales. Ainsi, les classes sont définies de la même façon que les fonctions : par déclaration, ou par expression.

+En réalité, les classes sont juste des [fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) spéciales. Ainsi, les classes sont définies de la même façon que les fonctions : par déclaration, ou par expression. -

Les déclarations de classes

+### Les déclarations de classes -

Pour utiliser une déclaration de classe simple, on utilisera le mot-clé class, suivi par le nom de la classe que l'on déclare (ici « Rectangle »).

+Pour utiliser une déclaration de classe simple, on utilisera le mot-clé `class`, suivi par le nom de la classe que l'on déclare (ici « Rectangle »). -
class Rectangle {
+```js
+class Rectangle {
   constructor(hauteur, largeur) {
     this.hauteur = hauteur;
     this.largeur = largeur;
   }
-}
+} +``` -

Remontée des déclarations (hoisting)

+#### Remontée des déclarations (_hoisting_) -

Les déclarations de fonctions sont remontées dans le code. En revanche, ce n'est pas le cas pour les déclarations de classes. Ainsi, il est nécessaire de déclarer la classe avant de l'instancier. Dans le cas contraire, on obtient une {{jsxref("ReferenceError")}} :

+[Les déclarations de fonctions](/fr/docs/Web/JavaScript/Reference/Instructions/function) sont remontées dans le code. En revanche, ce n'est pas le cas pour les déclarations de classes. Ainsi, il est nécessaire de déclarer la classe avant de l'instancier. Dans le cas contraire, on obtient une {{jsxref("ReferenceError")}} : -
const p = new Rectangle(); // ReferenceError
+```js example-bad
+const p = new Rectangle(); // ReferenceError
 
 class Rectangle {}
-
+``` -

Les expressions de classes

+### Les expressions de classes -

Il est possible d'utiliser des expressions de classes, nommées ou anonymes. Si on utilise un nom dans l'expression, ce nom ne sera accessible que depuis le corps de la classe via la propriété {{jsxref("Function.name", "name")}} (cette valeur ne sera pas directement accessible pour les instances).

+Il est possible d'utiliser des expressions de classes, nommées ou anonymes. Si on utilise un nom dans l'expression, ce nom ne sera accessible que depuis le corps de la classe via la propriété {{jsxref("Function.name", "name")}} (cette valeur ne sera pas directement accessible pour les instances). -
// anonyme
+```js
+// anonyme
 let Rectangle = class {
   constructor(hauteur, largeur) {
     this.hauteur = hauteur;
@@ -56,31 +60,30 @@ let Rectangle = class Rectangle {
     this.largeur = largeur;
   }
 };
-
+``` -
-

Note : Les mêmes règles s'appliquent aux expressions de classes en ce qui concerne la remontée (hoisting) des classes (cf. le paragraphe précédent sur les remontées des déclarations de classe).

-
+> **Note :** Les mêmes règles s'appliquent aux expressions de classes en ce qui concerne la remontée (_hoisting_) des classes (cf. le paragraphe précédent sur les remontées des déclarations de classe). -

Corps d'une classe et définition des méthodes

+## Corps d'une classe et définition des méthodes -

Le corps d'une classe est la partie contenue entre les accolades. C'est dans cette partie que l'on définit les propriétés d'une classe comme ses méthodes et son constructeur.

+Le corps d'une classe est la partie contenue entre les accolades. C'est dans cette partie que l'on définit les propriétés d'une classe comme ses méthodes et son constructeur. -

Mode strict

+### Mode strict -

Le corps des classes, pour les expressions et pour les déclarations de classes, est exécuté en mode strict (autrement dit, le constructeur, les méthodes statiques, le prototype, les accesseurs (getters) et mutateurs (setters) sont exécutés en mode strict).

+Le corps des classes, pour les expressions et pour les déclarations de classes, est exécuté en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) (autrement dit, le constructeur, les méthodes statiques, le prototype, les accesseurs (_getters_) et mutateurs (_setters_) sont exécutés en mode strict). -

Constructeur

+### Constructeur -

La méthode constructor est une méthode spéciale qui permet de créer et d'initialiser les objet créés avec une classe. Il ne peut y avoir qu'une seule méthode avec le nom "constructor" pour une classe donnée. Si la classe contient plusieurs occurences d'une méthode constructor, cela provoquera une exception {{jsxref("SyntaxError")}}.

+La méthode [`constructor`](/fr/docs/Web/JavaScript/Reference/Classes/constructor) est une méthode spéciale qui permet de créer et d'initialiser les objet créés avec une classe. Il ne peut y avoir qu'une seule méthode avec le nom "constructor" pour une classe donnée. Si la classe contient plusieurs occurences d'une méthode `constructor`, cela provoquera une exception {{jsxref("SyntaxError")}}. -

Le constructeur ainsi déclaré peut utiliser le mot-clé super afin d'appeler le constructeur de la classe parente.

+Le constructeur ainsi déclaré peut utiliser le mot-clé `super` afin d'appeler le constructeur de la classe parente. -

Méthodes de prototype

+### Méthodes de prototype -

Voir aussi les définitions de méthode.

+Voir aussi les définitions de méthode. -
class Rectangle {
+```js
+class Rectangle {
   constructor(hauteur, largeur) {
     this.hauteur = hauteur;
     this.largeur = largeur;
@@ -97,13 +100,15 @@ let Rectangle = class Rectangle {
 
 const carré = new Rectangle(10, 10);
 
-console.log(carré.area);
+console.log(carré.area); +``` -

Méthodes statiques

+### Méthodes statiques -

Le mot-clé static permet de définir une méthode statique pour une classe. Les méthodes statiques sont appelées par rapport à la classe entière et non par rapport à une instance donnée (ces méthodes ne peuvent pas être appelées « depuis » une instance). Ces méthodes sont généralement utilisées sous formes d'utilitaires au sein d'applications.

+Le mot-clé [`static`](/fr/docs/Web/JavaScript/Reference/Classes/static) permet de définir une méthode statique pour une classe. Les méthodes statiques sont appelées par rapport à la classe entière et non par rapport à une [instance](/fr/docs/Web/JavaScript/Introduction_à_JavaScript_orienté_objet#L'instance) donnée (ces méthodes ne peuvent pas être appelées « depuis » une instance). Ces méthodes sont généralement utilisées sous formes d'utilitaires au sein d'applications. -
class Point {
+```js
+class Point {
   constructor(x, y) {
     this.x = x;
     this.y = y;
@@ -119,13 +124,15 @@ console.log(carré.area);
const p1 = new Point(5, 5); const p2 = new Point(10, 10); -console.log(Point.distance(p1, p2)); +console.log(Point.distance(p1, p2)); +``` -

Gestion de this pour le prototype et les méthodes statiques

+### Gestion de `this` pour le prototype et les méthodes statiques -

Lorsqu'une méthode statique ou une méthode liée au prototype est appelée sans valeur this, celle-ci vaudra undefined au sein de la fonction. Il n'y aura pas d'autodétermination de this (autoboxing en anglais). On aura le même résultat si on invoque ces fonctions dans du code non-strict car les fonctions liées aux classes sont exécutées en mode strict.

+Lorsqu'une méthode statique ou une méthode liée au prototype est appelée sans valeur `this`, celle-ci vaudra `undefined` au sein de la fonction. Il n'y aura pas d'autodétermination de `this` (_autoboxing_ en anglais). On aura le même résultat si on invoque ces fonctions dans du code non-strict car les fonctions liées aux classes sont exécutées en mode strict. -
class Animal {
+```js
+class Animal {
   crie() {
     return this;
   }
@@ -141,13 +148,15 @@ crie(); // undefined
 
 Animal.mange(); // class Animal
 let mange = Animal.mange;
-mange(); // undefined
+mange(); // undefined +``` -

Si on écrit le code avec des fonctions traditionnelles plutôt qu'avec des classes et qu'on utilise le mode non-strict, l'autodétermination de this sera faite en fonction du contexte dans lequel la fonction a été appelée. Si la valeur initiale est undefined, this correspondra à l'objet global.

+Si on écrit le code avec des fonctions traditionnelles plutôt qu'avec des classes et qu'on utilise le mode non-strict, l'autodétermination de `this` sera faite en fonction du contexte dans lequel la fonction a été appelée. Si la valeur initiale est `undefined`, `this` correspondra à l'objet global. -

L'autodétermination de this n'a pas lieu en mode strict, la valeur this est passée telle quelle.

+L'autodétermination de `this` n'a pas lieu en mode strict, la valeur `this` est passée telle quelle. -
function Animal() { }
+```js
+function Animal() { }
 
 Animal.prototype.crie = function() {
   return this;
@@ -163,75 +172,80 @@ crie(); // l'objet global
 
 let mange = Animal.mange;
 mange(); // l'objet global
-
+``` -

Propriétés des instances

+### Propriétés des instances -

Les propriétés des instances doivent être définies dans les méthodes de la classe :

+Les propriétés des instances doivent être définies dans les méthodes de la classe : -
class Rectangle {
+```js
+class Rectangle {
   constructor(hauteur, largeur) {
     this.hauteur = hauteur;
     this.largeur = largeur;
   }
-}
+} +``` -

Les propriétés statiques ou les données relatives au prototype doivent être définies en dehors de la déclaration comportant le corps de la classe :

+Les propriétés statiques ou les données relatives au prototype doivent être définies en dehors de la déclaration comportant le corps de la classe : -
Rectangle.largeurStatique = 20;
-Rectangle.prototype.largeurProto = 25;
+```js +Rectangle.largeurStatique = 20; +Rectangle.prototype.largeurProto = 25; +``` -

Déclarations de champs

+### Déclarations de champs -

{{SeeCompatTable}}

+{{SeeCompatTable}} -
-

Attention : Les déclarations de champs publics et privés sont une fonctionnalité expérimentale actuellement proposée pour être intégrée dans le standard ECMAScript. Elle n'est pas implémentée par la majorité des navigateurs mais on peut émuler cette fonctionnalité en utilisant un système de compilation tel que Babel.

-
+> **Attention :** Les déclarations de champs publics et privés sont une [fonctionnalité expérimentale actuellement proposée pour être intégrée dans le standard ECMAScript](https://github.com/tc39/proposal-class-fields). Elle n'est pas implémentée par la majorité des navigateurs mais on peut émuler cette fonctionnalité en utilisant un système de compilation tel que [Babel](https://babeljs.io/). -

Déclarations de champs publics

+#### Déclarations de champs publics -

En utilisant la syntaxe pour la déclaration des champs, on peut réécrire l'exemple précédent de la façon suivante :

+En utilisant la syntaxe pour la déclaration des champs, on peut réécrire l'exemple précédent de la façon suivante : -
class Rectangle {
+```js
+class Rectangle {
   hauteur = 0;
   largeur;
   constructor(hauteur, largeur) {
     this.hauteur = hauteur;
     this.largeur = largeur;
   }
-}
+} +``` -

En déclarant les champs en préalable, il est plus facile de comprendre la classe dans son ensemble. De plus, on s'assure que les champs soient toujours présents.

+En déclarant les champs en préalable, il est plus facile de comprendre la classe dans son ensemble. De plus, on s'assure que les champs soient toujours présents. -

Comme on peut le voir dans cet exemple, les champs peuvent éventuellement être déclarés avec une valeur par défaut.

+Comme on peut le voir dans cet exemple, les champs peuvent éventuellement être déclarés avec une valeur par défaut. -

Déclarations de champs privés

+#### Déclarations de champs privés -

En utilisant des champs privés, on peut revoir la définition de la façon suivante :

+En utilisant des champs privés, on peut revoir la définition de la façon suivante : -
class Rectangle {
+```js
+class Rectangle {
   #hauteur = 0;
   #largeur;
   constructor(hauteur, largeur){
     this.#hauteur = hauteur;
     this.#largeur = largeur;
   }
-}
+} +``` -

Si on utilise les champs privés hors de la classe, cela génèrera une erreur. Ces champs ne peuvent être lus ou modifiés que depuis le corps de la classe. En évitant d'exposer des éléments à l'extérieur, on s'assure que les portions de code qui consomment cette classe n'utilise pas ses détails internes et on peut alors maintenir la classe dans son ensemble et modifier les détails internes si besoin.

+Si on utilise les champs privés hors de la classe, cela génèrera une erreur. Ces champs ne peuvent être lus ou modifiés que depuis le corps de la classe. En évitant d'exposer des éléments à l'extérieur, on s'assure que les portions de code qui consomment cette classe n'utilise pas ses détails internes et on peut alors maintenir la classe dans son ensemble et modifier les détails internes si besoin. -
-

Note : Les champs privés doivent nécessairement être déclarés en premier dans les déclarations de champ.

-
+> **Note :** Les champs privés doivent nécessairement être déclarés en premier dans les déclarations de champ. -

Il n'est pas possible de créer des champs privés a posteriori au moment où on leur affecterait une valeur. Autrement dit, il est possible de déclarer une variable normale au moment voulu lorsqu'on lui affecte une valeur tandis que pour les champs privés, ces derniers doivent être déclarés (éventuellement initialisés) en amont, au début du corps de la classe.

+Il n'est pas possible de créer des champs privés _a posteriori_ au moment où on leur affecterait une valeur. Autrement dit, il est possible de déclarer une variable normale au moment voulu lorsqu'on lui affecte une valeur tandis que pour les champs privés, ces derniers doivent être déclarés (éventuellement initialisés) en amont, au début du corps de la classe. -

Créer une sous-classe avec extends

+## Créer une sous-classe avec `extends` -

Le mot-clé extends, utilisé dans les déclarations ou les expressions de classes, permet de créer une classe qui hérite d'une autre classe (on parle aussi de « sous-classe » ou de « classe-fille »).

+Le mot-clé [`extends`](/fr/docs/Web/JavaScript/Reference/Classes/extends), utilisé dans les déclarations ou les expressions de classes, permet de créer une classe qui hérite d'une autre classe (on parle aussi de « sous-classe » ou de « classe-fille »). -
class Animal {
+```js
+class Animal {
   constructor(nom) {
     this.nom = nom;
   }
@@ -248,13 +262,15 @@ class Chien extends Animal {
   parle() {
     console.log(`${this.nom} aboie.`);
   }
-}
+} +``` -

Si on déclare un constructeur dans une classe fille, on doit utiliser super() avant this.

+Si on déclare un constructeur dans une classe fille, on doit utiliser `super()` avant `this`. -

On peut également étendre des classes plus traditionnelles basées sur des constructeurs fonctionnels :

+On peut également étendre des classes plus _traditionnelles_ basées sur des constructeurs fonctionnels : -
function Animal (nom) {
+```js
+function Animal (nom) {
   this.nom = nom;
 }
 Animal.prototype.crie = function () {
@@ -271,11 +287,13 @@ class Chien extends Animal {
 let c = new Chien('Ida');
 c.crie();
 // Ida fait du bruit.
-// Ida aboie.
+// Ida aboie. +``` -

En revanche, les classes ne permettent pas d'étendre des objets classiques non-constructibles. Si on souhaite créer un lien d'héritage en un objet et une classe, on utilisera {{jsxref("Object.setPrototypeOf()")}} :

+En revanche, les classes ne permettent pas d'étendre des objets classiques non-constructibles. Si on souhaite créer un lien d'héritage en un objet et une classe, on utilisera {{jsxref("Object.setPrototypeOf()")}} : -
const Animal = {
+```js
+const Animal = {
   crie() {
     console.log(`${this.nom} fait du bruit.`);
   }
@@ -295,30 +313,34 @@ Object.setPrototypeOf(Chien.prototype, Animal);
 let d = new Chien('Ida');
 d.crie();
 // Ida fait du bruit
-// Ida aboie.
+// Ida aboie. +``` -

Le symbole species

+## Le symbole `species` -

Lorsqu'on souhaite renvoyer des objets {{jsxref("Array")}} avec une sous-classe MonArray, on peut utiliser symbole species pour surcharger le constructeur par défaut.

+Lorsqu'on souhaite renvoyer des objets {{jsxref("Array")}} avec une sous-classe `MonArray`, on peut utiliser symbole `species` pour surcharger le constructeur par défaut. -

Par exemple, si, lorsqu'on utilise des méthodes comme {{jsxref("Array.map","map()")}} qui renvoient le constructeur par défaut et qu'on veut qu'elles renvoient Array plutôt que MonArray, on utilisera {{jsxref("Symbol.species")}} :

+Par exemple, si, lorsqu'on utilise des méthodes comme {{jsxref("Array.map","map()")}} qui renvoient le constructeur par défaut et qu'on veut qu'elles renvoient `Array` plutôt que `MonArray`, on utilisera {{jsxref("Symbol.species")}} : -
class MonArray extends Array {
+```js
+class MonArray extends Array {
   // On surcharge species
   // avec le constructeur Array du parent
   static get [Symbol.species]() { return Array; }
 }
 let a = new MonArray(1,2,3);
-let mapped = a.map(x => x * x);
+let mapped = a.map(x => x * x);
 
 console.log(mapped instanceof MonArray); // false
-console.log(mapped instanceof Array);    // true
+console.log(mapped instanceof Array); // true +``` -

Utiliser super pour la classe parente

+## Utiliser super pour la classe parente -

Le mot-clé super est utilisé pour appeler les fonctions rattachées à un objet parent.

+Le mot-clé [`super`](/fr/docs/Web/JavaScript/Reference/Opérateurs/super) est utilisé pour appeler les fonctions rattachées à un objet parent. -
class Chat {
+```js
+class Chat {
   constructor(nom) {
     this.nom = nom;
   }
@@ -334,78 +356,55 @@ class Lion extends Chat {
     console.log(`${this.nom} rugit.`);
   }
 }
-
+``` -

Les mix-ins

+## Les _mix-ins_ -

Les sous-classes abstraites ou mix-ins sont des modèles (templates) pour des classes. Une classe ECMAScript ne peut avoir qu'une seule classe parente et il n'est donc pas possible, par exemple, d'hériter de plusieurs classes dont une classe abstraite. La fonctionnalité dont on souhaite disposer doit être fournie par la classe parente.

+Les sous-classes abstraites ou _mix-ins_ sont des modèles (_templates_) pour des classes. Une classe ECMAScript ne peut avoir qu'une seule classe parente et il n'est donc pas possible, par exemple, d'hériter de plusieurs classes dont une classe abstraite. La fonctionnalité dont on souhaite disposer doit être fournie par la classe parente. -

Une fonction peut prendre une classe parente en entrée et renvoyer une classe fille qui étend cette classe parente. Cela peut permettre d'émuler les mix-ins avec ECMAScript.

+Une fonction peut prendre une classe parente en entrée et renvoyer une classe fille qui étend cette classe parente. Cela peut permettre d'émuler les _mix-ins_ avec ECMAScript. -
let calculetteMixin = Base => class extends Base {
+```js
+let calculetteMixin = Base => class extends Base {
   calc() { }
 };
 
-let aleatoireMixin = Base => class extends Base {
+let aleatoireMixin = Base => class extends Base {
   randomiseur() { }
 };
-
+``` -

Une classe utilisant ces mix-ins peut alors être écrite de cette façon :

+Une classe utilisant ces _mix-ins_ peut alors être écrite de cette façon : -
class Toto { }
+```js
+class Toto { }
 class Truc extends calculetteMixin(aleatoireMixin(Toto)) { }
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ES2016', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2016')}}
{{SpecName('ES2017', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2017')}}
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}}
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.classes")}}

- -

Utilisation via l'éditeur multiligne dans Firefox

- -

Une classe ne peut pas être redéfinie. Si vous testez votre code via l'éditeur multiligne JavaScript de Firefox (Outils > Développement web > Editeur multiligne JavaScript) et que vous exécutez à plusieurs reprises votre code avec la définition d'une classe, vous obtiendrez une exception SyntaxError : redeclaration of let <class-name>.

- -

Pour relancer une définition, il faut utiliser le menu Exécuter > Recharger et exécuter. À ce sujet, voir le bug {{bug("1428672")}}.

- -

Voir aussi

- - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ES2016', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2016')}} | | +| {{SpecName('ES2017', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2017')}} | | +| {{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.classes")}} + +## Utilisation via l'éditeur multiligne dans Firefox + +Une classe ne peut pas être redéfinie. Si vous testez votre code via l'éditeur multiligne JavaScript de Firefox (Outils > Développement web > Editeur multiligne JavaScript) et que vous exécutez à plusieurs reprises votre code avec la définition d'une classe, vous obtiendrez une exception SyntaxError : _redeclaration of let \_. + +Pour relancer une définition, il faut utiliser le menu Exécuter > Recharger et exécuter. À ce sujet, voir le bug {{bug("1428672")}}. + +## Voir aussi + +- [Les fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) +- {{jsxref("Instructions/class", "Les déclarations de classes","",1)}} +- {{jsxref("Opérateurs/class", "Les expressions de classes","",1)}} +- {{jsxref("Opérateurs/super", "super")}} +- [Billet sur les classes (traduction en français)](https://tech.mozfr.org/post/2015/07/29/ES6-en-details-%3A-les-classes) +- [Champs publics et privés pour les classes (proposition de niveau 3)](https://github.com/tc39/proposal-class-fields) diff --git a/files/fr/web/javascript/reference/classes/private_class_fields/index.md b/files/fr/web/javascript/reference/classes/private_class_fields/index.md index 9d1187b01d..45ad084074 100644 --- a/files/fr/web/javascript/reference/classes/private_class_fields/index.md +++ b/files/fr/web/javascript/reference/classes/private_class_fields/index.md @@ -7,36 +7,34 @@ tags: - JavaScript translation_of: Web/JavaScript/Reference/Classes/Private_class_fields --- -
{{JsSidebar("Classes")}}
+{{JsSidebar("Classes")}}Les propriétés de classe sont publiques par défaut et peuvent être lues et modifiées à l'extérieur de la classe. Cependant, [une proposition expérimentale](https://github.com/tc39/proposal-class-fields), permettant de définir des variables privées dans une classe avec le préfixe `#`, est disponible. -
Les propriétés de classe sont publiques par défaut et peuvent être lues et modifiées à l'extérieur de la classe. Cependant, une proposition expérimentale, permettant de définir des variables privées dans une classe avec le préfixe #, est disponible.
+## Syntaxe -

Syntaxe

+ class ClassWithPrivateField { + #privateField + } -
class ClassWithPrivateField {
-  #privateField
-}
+    class ClassWithPrivateMethod {
+      #privateMethod() {
+        return 'hello world'
+     }
+    }
 
-class ClassWithPrivateMethod {
-  #privateMethod() {
-    return 'hello world'
- }
-}
-
-class ClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD
-}
-
+ class ClassWithPrivateStaticField { + static #PRIVATE_STATIC_FIELD + } -

Exemples

+## Exemples -

Champs privés statiques

+### Champs privés statiques -

Les champs privés sont accessibles depuis le constructeur et depuis l'intérieur de la déclaration de la classe elle-même.

+Les champs privés sont accessibles depuis le constructeur et depuis l'intérieur de la déclaration de la classe elle-même. -

La limitation des variables statiques ne pouvant être appelées que par des méthodes statiques tient toujours.

+La limitation des variables statiques ne pouvant être appelées que par des méthodes statiques tient toujours. -
class ClassWithPrivateStaticField {
+```js
+class ClassWithPrivateStaticField {
   static #PRIVATE_STATIC_FIELD
 
   static publicStaticMethod() {
@@ -45,15 +43,17 @@ class ClassWithPrivateStaticField {
   }
 }
 
-console.assert(ClassWithPrivateStaticField.publicStaticMethod() === 42)
+console.assert(ClassWithPrivateStaticField.publicStaticMethod() === 42) +``` -

Les champs statiques privés sont ajoutés au constructeur de la classe au moment de l'évaluation de classe..

+Les champs statiques privés sont ajoutés au constructeur de la classe au moment de l'évaluation de classe.. -

Il y a une restriction de provenance sur les champs statiques privés. Seule la classe qui a défini un champ statique privé peut y accéder.

+Il y a une restriction de provenance sur les champs statiques privés. Seule la classe qui a défini un champ statique privé peut y accéder. -

Ceci peut conduire à un comportement inattendu lors de l'utilisation de this.

+Ceci peut conduire à un comportement inattendu lors de l'utilisation de **`this`**. -
class BaseClassWithPrivateStaticField {
+```js
+class BaseClassWithPrivateStaticField {
   static #PRIVATE_STATIC_FIELD
 
   static basePublicStaticMethod() {
@@ -71,15 +71,16 @@ try {
 } catch(e) { error = e}
 
 console.assert(error instanceof TypeError)
-
+``` -

Champs d'instance privés

+### Champs d'instance privés -

Les champs d'instance privés sont déclarés avec des noms à # (prononcés "noms à hash", "hash names" en anglais), qui sont des identifieurs préfixés par #. Le # fait partie du nom lui-même. Il est utilisé tant pour la déclaration que pour l'accès.

+Les champs d'instance privés sont déclarés avec des **noms** à **#** (prononcés "_noms à hash_", "_hash names_" en anglais), qui sont des identifieurs préfixés par `#`. Le `#` fait partie du nom lui-même. Il est utilisé tant pour la déclaration que pour l'accès. -

L'encapsulation est forcée par le langage. C'est une erreur de syntaxe que de faire référence aux noms à # en dehors de leur portée.

+L'encapsulation est forcée par le langage. C'est une erreur de syntaxe que de faire référence aux noms à `#` en dehors de leur portée. -
class ClassWithPrivateField {
+```js
+class ClassWithPrivateField {
   #privateField
 
   constructor() {
@@ -90,17 +91,18 @@ console.assert(error instanceof TypeError)
 
 const instance = new ClassWithPrivateField()
 instance.#privateField === 42 // Erreur de syntaxe
-
+``` -

Méthodes Privées

+### Méthodes Privées -

Méthodes statiques privées

+#### Méthodes statiques privées -

Comme leur équivalents publics, les méthodes statiques privées sont appelées dans la classe elle-même, pas dans les instances de la classe. Comme les champs statiques privés, elles ne sont accessibles que depuis l'intérieur de la déclaration de la classe.

+Comme leur équivalents publics, les méthodes statiques privées sont appelées dans la classe elle-même, pas dans les instances de la classe. Comme les champs statiques privés, elles ne sont accessibles que depuis l'intérieur de la déclaration de la classe. -

Les méthodes statiques privées peuvent être des fonctions génératrices, asynchrones et génératrices asynchrones.

+Les méthodes statiques privées peuvent être des fonctions génératrices, asynchrones et génératrices asynchrones. -
class ClassWithPrivateStaticMethod {
+```js
+class ClassWithPrivateStaticMethod {
     static #privateStaticMethod() {
         return 42
     }
@@ -116,11 +118,12 @@ instance.#privateField === 42 // Erreur de syntaxe
 
 console.assert(ClassWithPrivateStaticMethod.publicStaticMethod1() === 42);
 console.assert(ClassWithPrivateStaticMethod.publicStaticMethod2() === 42);
-
+``` -

Cela peut conduire à un comportement inattendu lors de l'utilisation de this. Dans l'exemple suivant, this fait référence à la classe Derived (pas à la classe Base) lorsqu'on essaie d'appeler Derived.publicStaticMethod2(), et fait ainsi apparaître la même "restriction de provenance" que mentionné ci-dessus :

+Cela peut conduire à un comportement inattendu lors de l'utilisation de **`this`**. Dans l'exemple suivant, `this` fait référence à la classe `Derived` (pas à la classe `Base`) lorsqu'on essaie d'appeler `Derived.publicStaticMethod2()`, et fait ainsi apparaître la même "restriction de provenance" que mentionné ci-dessus : -
class Base {
+```js
+class Base {
     static #privateStaticMethod() {
         return 42;
     }
@@ -136,13 +139,14 @@ class Derived extends Base {}
 
 console.log(Derived.publicStaticMethod1()); // 42
 console.log(Derived.publicStaticMethod2()); // TypeError
-
+``` -

Méthodes d'instance privées

+#### Méthodes d'instance privées -

Les méthodes d'instance privées sont des méthodes disponibles dans les instances de classe privées, dont l'accès est restreint de la même manière que les champs d'instance privés.

+Les méthodes d'instance privées sont des méthodes disponibles dans les instances de classe privées, dont l'accès est restreint de la même manière que les champs d'instance privés. -
class ClassWithPrivateMethod {
+```js
+class ClassWithPrivateMethod {
   #privateMethod() {
     return 'hello world'
   }
@@ -154,11 +158,13 @@ console.log(Derived.publicStaticMethod2()); // TypeError
 
 const instance = new ClassWithPrivateMethod()
 console.log(instance.getPrivateMessage())
-// expected output: "hello worl​d"
+// expected output: "hello worl​d" +``` -

Les méthodes d'instance privées peuvent être des fonctions génératrices, asynchones ou génératrices asynchrones. Des accesseurs (getters) et des mutateurs (setters) privés sont aussi posibles :

+Les méthodes d'instance privées peuvent être des fonctions génératrices, asynchones ou génératrices asynchrones. Des accesseurs (getters) et des mutateurs (setters) privés sont aussi posibles : -
class ClassWithPrivateAccessor {
+```js
+class ClassWithPrivateAccessor {
   #message
 
   get #decoratedMessage() {
@@ -176,32 +182,19 @@ console.log(instance.getPrivateMessage())
 
 new ClassWithPrivateAccessor();
 // expected output: "✨hello worl​d✨"
-
- -

Spécifications

- - - - - - - - - - - - -
Spécification
{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}
+``` -

Compatibilité des navigateurs

+## Spécifications +| Spécification | +| ---------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}} | +## Compatibilité des navigateurs -

{{Compat("javascript.classes.private_class_fields")}}

+{{Compat("javascript.classes.private_class_fields")}} -

Voir aussi

+## Voir aussi - +- [Champs de classe publiques](/fr/docs/Web/JavaScript/Reference/Classes/Class_fields) +- [The Semantics of All JS Class Elements](https://rfrn.org/~shu/2018/05/02/the-semantics-of-all-js-class-elements.html) diff --git a/files/fr/web/javascript/reference/classes/public_class_fields/index.md b/files/fr/web/javascript/reference/classes/public_class_fields/index.md index 80b3096c8a..8630e5e473 100644 --- a/files/fr/web/javascript/reference/classes/public_class_fields/index.md +++ b/files/fr/web/javascript/reference/classes/public_class_fields/index.md @@ -8,64 +8,65 @@ tags: translation_of: Web/JavaScript/Reference/Classes/Public_class_fields original_slug: Web/JavaScript/Reference/Classes/Class_fields --- -
{{JsSidebar("Classes")}}{{SeeCompatTable}}
+{{JsSidebar("Classes")}}{{SeeCompatTable}} -
-

Note : Cette page décrit des fonctionnalités expérimentales.

+> **Note :** Cette page décrit des fonctionnalités expérimentales. +> +> Les déclarations de champs, tant publics que privés, sont [une fonctionnalité expérimentale (étape 3)](https://github.com/tc39/proposal-class-fields) proposée au [TC39](https://tc39.github.io/beta/), le comité des standards JavaScript. +> +> La prise en charge dans les navigateurs est limitée, mais cette fonctionnalité peut être utilisée à travers une étape de contruction avec des systèmes tels que [Babel](https://babeljs.io/). Voir [l'information de compatibilité](/fr/docs/Web/JavaScript/Reference/Classes/Class_fields$edit#Browser_compatibility) ci-dessous. -

Les déclarations de champs, tant publics que privés, sont une fonctionnalité expérimentale (étape 3) proposée au TC39, le comité des standards JavaScript.

+Les champs publics, tant statiques que d'instance, sont des propriétés qui peuvent être écrites, et qui sont énumérables et configurables. En tant que telles, à la différence de leurs contreparties privées, elles participent à l'héritage du prototype. -

La prise en charge dans les navigateurs est limitée, mais cette fonctionnalité peut être utilisée à travers une étape de contruction avec des systèmes tels que Babel. Voir l'information de compatibilité ci-dessous.

-
+## Syntaxe -

Les champs publics, tant statiques que d'instance, sont des propriétés qui peuvent être écrites, et qui sont énumérables et configurables. En tant que telles, à la différence de leurs contreparties privées, elles participent à l'héritage du prototype.

+ class ClasseAvecChampDInstance { +   champDInstance = 'champ d\'instance' + } -

Syntaxe

+ class ClasseAvecChampStatique { + static champStatique = 'champ statique' + } -
class ClasseAvecChampDInstance {
-  champDInstance = 'champ d\'instance'
-}
-
-class ClasseAvecChampStatique {
-  static champStatique = 'champ statique'
-}
-
-class ClasseAvecMethodeDInstancePublique {
-  methodePublique() {
-    return 'hello world'
-  }
-}
-
+ class ClasseAvecMethodeDInstancePublique { +   methodePublique() { +     return 'hello world' +   } + } -

Exemples

+## Exemples -

Champs statiques publics

+### Champs statiques publics -

Les champs statiques publics sont utiles lorsque vous voulez qu'un champ n'existe qu'une seule fois par classe, pas dans chaque instance que vous créez. Cela est utile pour des caches, une configuration fixe, ou tout autres données dont vous n'avez pas besoin qu'elles soient répliquées à travers les instances.

+Les champs statiques publics sont utiles lorsque vous voulez qu'un champ n'existe qu'une seule fois par classe, pas dans chaque instance que vous créez. Cela est utile pour des caches, une configuration fixe, ou tout autres données dont vous n'avez pas besoin qu'elles soient répliquées à travers les instances. -

Les champs statiques publics sont déclarés en utilisant le mot-clé static. Ils sont ajoutés au constructeur de la classe au moment de l'évaluation de la classe en utilisant {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. On y accède à nouveau à partir du constructeur de la classe.

+Les champs statiques publics sont déclarés en utilisant le mot-clé `static`. Ils sont ajoutés au constructeur de la classe au moment de l'évaluation de la classe en utilisant {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. On y accède à nouveau à partir du constructeur de la classe. -
class ClasseAvecChampStatique {
+```js
+class ClasseAvecChampStatique {
   static champStatique = 'champ statique'
 }
 
 console.log(ClasseAvecChampStatique.champStatique)
 // affichage attendu : "champ statique"​
-
+``` -

Les champs sans initialiseur sont initialisés à undefined.

+Les champs sans initialiseur sont initialisés à `undefined`. -
class ClasseAvecChampStatique {
+```js
+class ClasseAvecChampStatique {
   static champStatique
 }
 
 console.assert(ClasseAvecChampStatique.hasOwnProperty('champStatique'))
 console.log(ClasseAvecChampStatique.champStatique)
-// affichage attendu : "undefined"
+// affichage attendu : "undefined" +``` -

Les champs statiques publics ne sont pas réinitialisés dans les sous-classes, mais on peut y accéder via la chaîne de prototypes.

+Les champs statiques publics ne sont pas réinitialisés dans les sous-classes, mais on peut y accéder via la chaîne de prototypes. -
class ClasseAvecChampStatique {
+```js
+class ClasseAvecChampStatique {
   static champStatiqueDeBase = 'champ de base'
 }
 
@@ -77,11 +78,13 @@ console.log(SousClasseAvecChampStatique.sousChampStatique)
 // affichage attendu : "champ de la sous-classe"
 
 console.log(SousClasseAvecChampStatique.champStatiqueDeBase)
-// affichage attendu : "champ de base"
+// affichage attendu : "champ de base" +``` -

Lors de l'initialisation des champs, this fait référence au constructeur de la classe. Vous pouvez aussi le référencer par son nom, et utiliser super pour obtenir le constructeur de la superclasse (s'il en existe un) :

+Lors de l'initialisation des champs, `this` fait référence au constructeur de la classe. Vous pouvez aussi le référencer par son nom, et utiliser `super` pour obtenir le constructeur de la superclasse (s'il en existe un) : -
class ClasseAvecChampStatique {
+```js
+class ClasseAvecChampStatique {
   static champStatiqueDeBase = 'champ statique de base'
   static autreChampStatiqueDeBase = this.champStatiqueDeBase
 
@@ -97,36 +100,41 @@ console.log(ClasseAvecChampStatique.autreChampStatiqueDeBase)
 
 console.log(SousClasseAvecChampStatique.sousChampStatique)
 // affichage attendu : "affichage de la méthode statique de base"
-
+``` -

Champs d'instance publics

+### Champs d'instance publics -

Les champs d'instance publics existent dans chaque instance créée d'une classe. En déclarant un champ public, vous pouvez vous assurer que le champ est toujours présent, et que la définition de la classe est davantage auto-documentée.

+Les champs d'instance publics existent dans chaque instance créée d'une classe. En déclarant un champ public, vous pouvez vous assurer que le champ est toujours présent, et que la définition de la classe est davantage auto-documentée. -

Les champs d'instance publics sont ajoutés grâce à {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}, soit au moment de la construction dans la classe de base (avant que le corps du constructeur ne soit exécuté), soit juste après le retour de super() dans une sous-classe.

+Les champs d'instance publics sont ajoutés grâce à {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}, soit au moment de la construction dans la classe de base (avant que le corps du constructeur ne soit exécuté), soit juste après le retour de `super()` dans une sous-classe. -
class ClasseAvecChampDInstance {
+```js
+class ClasseAvecChampDInstance {
   champDInstance = 'champ d\'instance'
 }
 
 const instance = new ClasseAvecChampDInstance()
 console.log(instance.champDInstance)
-// affichage attendu : "champ d'instance"
+// affichage attendu : "champ d'instance" +``` -

Les champs sans initialiseur sont initialisés à undefined.

+Les champs sans initialiseur sont initialisés à `undefined`. -
class ClasseAvecChampDInstance {
+```js
+class ClasseAvecChampDInstance {
   champdDInstance
 }
 
 const instance = new ClasseAvecChampDInstance()
 console.assert(instance.hasOwnProperty('champDInstance'))
 console.log(instance.champDInstance);
-// affichage attendu : "undefined"
+// affichage attendu : "undefined" +``` -

À l'instar des propriétés, les noms de champ peuvent être calculés :

+À l'instar des propriétés, les noms de champ peuvent être calculés : -
const PREFIXE = 'prefixe';
+```js
+const PREFIXE = 'prefixe';
 
 class ClasseAvecNomDeChampCalcule {
     [`${PREFIXE}Champ`] = 'champ préfixé'
@@ -134,11 +142,13 @@ class ClasseAvecNomDeChampCalcule {
 
 const instance = new ClasseAvecNomDeChampCalcule()
 console.log(instance.prefixeChamp)
-// affichage attendu : "champ préfixé"
+// affichage attendu : "champ préfixé" +``` -

Lors de l'initialisation des champs, this fait référence à l'instance en cours de construction. Tout comme dans les méthodes d'instance publiques, si vous êtes dans une sous-classe, vous pouvez accéder au prototype de la superclasse en utilisant super.

+Lors de l'initialisation des champs, `this` fait référence à l'instance en cours de construction. Tout comme dans les méthodes d'instance publiques, si vous êtes dans une sous-classe, vous pouvez accéder au prototype de la superclasse en utilisant `super`. -
class ClasseAvecChampDInstance {
+```js
+class ClasseAvecChampDInstance {
   champDInstanceDeBase = 'champ de base'
   autreChampDInstanceDeBase = this.champDInstanceDeBase
   methodeDInstanceDeBase() { return 'affichage de la méthode de base' }
@@ -155,30 +165,34 @@ console.log(base.autreChampDInstanceDeBase)
 // affichage attendu : "champ de base"
 
 console.log(sous.sousChampDInstance)
-// affichage attendu : "affichage de la méthode de base"
+// affichage attendu : "affichage de la méthode de base" +``` -

Méthodes publiques

+### Méthodes publiques -

Méthodes statiques publiques

+#### Méthodes statiques publiques -

Le mot-clé static définit une méthode statique pour une classe. Les méthodes statiques ne sont pas appelées dans les instances de la classe. A la place, elles le sont dans la classe elle-même. Ce sont souvent des méthodes utilitaires, comme des fonctions pour créer ou cloner des objets.

+Le mot-clé **`static`** définit une méthode statique pour une classe. Les méthodes statiques ne sont pas appelées dans les instances de la classe. A la place, elles le sont dans la classe elle-même. Ce sont souvent des méthodes utilitaires, comme des fonctions pour créer ou cloner des objets. -
class ClasseAvecMethodeStatique {
+```js
+class ClasseAvecMethodeStatique {
   static methodeStatique() {
     return 'la méthode statique a été appelée.';
   }
 }
 
 console.log(ClasseAvecMethodeStatique.methodeStatique());
-// affichage attendu : "la méthode statique a été appelée."
+// affichage attendu : "la méthode statique a été appelée." +``` -

Les méthodes statiques sont ajoutées au constructeur de la classe grâce à {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} au moment de l'évaluation de la classe. Ces méthodes peuvent être écrites, ne sont pas énumérables et sont configurables.

+Les méthodes statiques sont ajoutées au constructeur de la classe grâce à {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} au moment de l'évaluation de la classe. Ces méthodes peuvent être écrites, ne sont pas énumérables et sont configurables. -

Méthodes d'instance publiques

+#### Méthodes d'instance publiques -

Comme leur nom l'implique, les méthodes d'instance publiques sont des fonctions disponibles dans les instances de la classe.

+Comme leur nom l'implique, les méthodes d'instance publiques sont des fonctions disponibles dans les instances de la classe. -
class ClasseAvecMethodeDInstancePublique {
+```js
+class ClasseAvecMethodeDInstancePublique {
   methodePublique() {
     return 'hello world'
   }
@@ -186,21 +200,25 @@ console.log(ClasseAvecMethodeStatique.methodeStatique());
 
 const instance = new ClasseAvecMethodeDInstancePublique()
 console.log(instance.methodePublique())
-// affichage attendu : "hello worl​d"
+// affichage attendu : "hello worl​d" +``` -

Les méthodes d'instance publiques sont ajoutées au prototype au moment de l'évaluation de la classe en utilisant {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. Elles peuvent être écrites, ne sont pas énumérables et sont configurables.

+Les méthodes d'instance publiques sont ajoutées au prototype au moment de l'évaluation de la classe en utilisant {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. Elles peuvent être écrites, ne sont pas énumérables et sont configurables. -

Vous pouvez utiliser des fonctions génératrices, asynchrones et génératrices asynchrones.

+Vous pouvez utiliser des fonctions génératrices, asynchrones et génératrices asynchrones. -
class ClasseAvecMethodesFantaisie {
+```js
+class ClasseAvecMethodesFantaisie {
   *methodeGeneratrice() { }
   async methodeAsynchrone() { }
   async *methodeGeneratriceAsynchrone() { }
-}
+} +``` -

A l'intérieur des méthodes d'instance, this fait référence à l'instance elle-même. Dans les sous-classes, super vous donne accès au prototype de la superclasse, ce qui vous permet d'appeler les méthodes de la superclasse.

+A l'intérieur des méthodes d'instance, `this` fait référence à l'instance elle-même. Dans les sous-classes, `super` vous donne accès au prototype de la superclasse, ce qui vous permet d'appeler les méthodes de la superclasse. -
class ClasseDeBase {
+```js
+class ClasseDeBase {
   msg = 'hello world'
   methodePubliqueDeBase() {
     return this.msg
@@ -216,11 +234,12 @@ class SousClasse extends ClasseDeBase {
 const instance = new SousClasse()
 console.log(instance.sousMethodePublique())
 // affichage attendu : "hello worl​d"
-
+``` -

Les accesseurs et les mutateurs sont des méthodes spéciales qui sont liées à une propriété de classe, et sont appelées lorsqu'on accède à cette propriété ou qu'on la définit. Utilisez la syntaxe get et set pour déclarer un accesseur ou un mutateur publique d'une instance.

+Les accesseurs et les mutateurs sont des méthodes spéciales qui sont liées à une propriété de classe, et sont appelées lorsqu'on accède à cette propriété ou qu'on la définit. Utilisez la syntaxe [get](https://developer.mozilla.org/fr-FR/docs/Web/JavaScript/Reference/Functions/get) et [set](https://developer.mozilla.org/fr-FR/docs/Web/JavaScript/Reference/Functions/set) pour déclarer un accesseur ou un mutateur publique d'une instance. -
class ClasseAvecGetSet {
+```js
+class ClasseAvecGetSet {
   #msg = 'hello world'
   get msg() {
     return this.#msg
@@ -237,29 +256,18 @@ console.log(instance.msg);
 instance.msg = 'gâteau';
 console.log(instance.msg);
 // affichage attendu : "hello gâteau"
-
+``` -

Spécifications

+## Spécifications - - - - - - - - - - - -
Spécification
{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}
+| Spécification | +| ---------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}} | -

Compatibilité des navigateurs

+## Compatibilité des navigateurs -

{{Compat("javascript.classes.public_class_fields")}}

+{{Compat("javascript.classes.public_class_fields")}} -

Voir aussi

+## Voir aussi - +- [The Semantics of All JS Class Elements](https://rfrn.org/~shu/2018/05/02/the-semantics-of-all-js-class-elements.html) diff --git a/files/fr/web/javascript/reference/classes/static/index.md b/files/fr/web/javascript/reference/classes/static/index.md index f93abc7411..f08b2b5a94 100644 --- a/files/fr/web/javascript/reference/classes/static/index.md +++ b/files/fr/web/javascript/reference/classes/static/index.md @@ -8,33 +8,32 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Classes/static --- -
{{jsSidebar("Classes")}}
+{{jsSidebar("Classes")}} -

Le mot-clé static permet de définir une méthode statique d'une classe. Les méthodes statiques ne sont pas disponibles sur les instances d'une classe mais sont appelées sur la classe elle-même. Les méthodes statiques sont généralement des fonctions utilitaires (qui peuvent permettre de créer ou de cloner des objets par exemple).

+Le mot-clé **`static`** permet de définir une méthode statique d'une classe. Les méthodes statiques ne sont pas disponibles sur les instances d'une classe mais sont appelées sur la classe elle-même. Les méthodes statiques sont généralement des fonctions utilitaires (qui peuvent permettre de créer ou de cloner des objets par exemple). -
{{EmbedInteractiveExample("pages/js/classes-static.html")}}
+{{EmbedInteractiveExample("pages/js/classes-static.html")}} -

Syntaxe

+## Syntaxe -
static nomMéthode() { ... }
+ static nomMéthode() { ... } -

Description

+## Description -

Les méthodes statiques sont utilisées lorsque la méthode ne s'applique qu'à la classe elle-même et pas à ses instances. Les méthodes statiques sont généralement utilisées pour créer des fonctions utilitaires.

+Les méthodes statiques sont utilisées lorsque la méthode ne s'applique qu'à la classe elle-même et pas à ses instances. Les méthodes statiques sont généralement utilisées pour créer des fonctions utilitaires. -

Exemples

+## Exemples -

Exemple classique

+### Exemple classique -

Dans l'exemple qui suit, on illustre :

+Dans l'exemple qui suit, on illustre : -
    -
  • comment une classe implémente une méthode statique
  • -
  • comment une classe avec une propriété statique peut être déclinée avec une sous-classe
  • -
  • comment une méthode statique peut ou ne peut pas être appelé
  • -
+- comment une classe implémente une méthode statique +- comment une classe avec une propriété statique peut être déclinée avec une sous-classe +- comment une méthode statique peut ou ne peut pas être appelé -
class Triple {
+```js
+class Triple {
   static triple(n) {
     if (n === undefined) {
       n = 1;
@@ -55,13 +54,14 @@ console.log(SuperTriple.triple(4)); // 144
 var tp = new Triple();
 console.log(SuperTriple.triple(4)); // 144 (pas d'impact de l'affectation du parent)
 console.log(tp.triple()); // tp.triple n'est pas une fonction
-
+``` -

Utilisation depuis une autre méthode statique

+### Utilisation depuis une autre méthode statique -

Afin d'appeler une autre méthode statique dans une méthode statique, on pourra utiliser {{jsxref("Opérateurs/L_opérateur_this","this")}}.

+Afin d'appeler une autre méthode statique dans une méthode statique, on pourra utiliser {{jsxref("Opérateurs/L_opérateur_this","this")}}. -
class StaticMethodCall {
+```js
+class StaticMethodCall {
   static staticMethod() {
     return 'Méthode statique appelée';
   }
@@ -72,13 +72,15 @@ console.log(tp.triple()); // tp.triple n'est pas une fonction
 StaticMethodCall.staticMethod();
 // 'Méthode statique appelée'
 StaticMethodCall.anotherStaticMethod();
-// 'Méthode statique appelée depuis une autre statique'
+// 'Méthode statique appelée depuis une autre statique' +``` -

Depuis les constructeurs de classes et les autres méthodes

+### Depuis les constructeurs de classes et les autres méthodes -

Les méthodes statiques ne sont pas directement accessibles via le mot-clé this. Il faut les appeler avec le nom de la classe qui préfixe le nom de la méthode statique NomDeClasse.MéthodeStatique() (comme pour les autres appels en dehors de la classe) ou avec la propriété constructor  : this.constructor.MéthodeStatique().

+Les méthodes statiques ne sont pas directement accessibles via le mot-clé [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this). Il faut les appeler avec le nom de la classe qui préfixe le nom de la méthode statique `NomDeClasse.MéthodeStatique()` (comme pour les autres appels en dehors de la classe) ou avec la propriété `constructor`  : `this.constructor.MéthodeStatique()`. -
class StaticMethodCall{
+```js
+class StaticMethodCall{
   constructor(){
     console.log(StaticMethodCall.staticMethod());
     // 'appel de la méthode statique'
@@ -90,38 +92,22 @@ StaticMethodCall.anotherStaticMethod();
   static  staticMethod(){
     return 'appel de la méthode statique.';
   }
-}
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.classes.static")}}

- -

Voir aussi

- - +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.classes.static")}} + +## Voir aussi + +- [Expression `class`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/class) +- [Déclaration `class`](/fr/docs/Web/JavaScript/Reference/Instructions/class) +- [Les classes](/fr/docs/Web/JavaScript/Reference/Classes) diff --git a/files/fr/web/javascript/reference/deprecated_and_obsolete_features/index.md b/files/fr/web/javascript/reference/deprecated_and_obsolete_features/index.md index 54f3bd85dd..bed483b8a9 100644 --- a/files/fr/web/javascript/reference/deprecated_and_obsolete_features/index.md +++ b/files/fr/web/javascript/reference/deprecated_and_obsolete_features/index.md @@ -9,285 +9,201 @@ tags: translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features original_slug: JavaScript/Reference/Annexes/Fonctionnalités_dépréciées --- -
{{JsSidebar("More")}}
+{{JsSidebar("More")}} -

Cette page liste les fonctionnalités de JavaScript qui sont dépréciées (deprecated) (c'est-à-dire que ces fonctionnalités sont toujours disponibles mais qu'il est prévu de les retirer) et les fonctionnalités obsolètes (celles qui ne sont plus utilisables).

+Cette page liste les fonctionnalités de JavaScript qui sont dépréciées (_deprecated_) (c'est-à-dire que ces fonctionnalités sont toujours disponibles mais qu'il est prévu de les retirer) et les fonctionnalités obsolètes (celles qui ne sont plus utilisables). -

Fonctionnalités dépréciées

+## Fonctionnalités dépréciées -

Ces fonctionnalités dépréciées peuvent toujours être utilisées mais avec une grande attention car elles pourront être supprimées complètements à l'avenir. En règle général, il faut les retirer du code qui les utilise.

+Ces fonctionnalités dépréciées peuvent toujours être utilisées mais avec une grande attention car elles pourront être supprimées complètements à l'avenir. En règle général, il faut les retirer du code qui les utilise. -

Propriétés de RegExp

+### Propriétés de `RegExp` -

Les propriétés suivantes sont dépréciées. Cela n'affecte pas le comportement de {{jsxref("Objets_globaux/String/replace", "replace", "Specifying_a_string_as_a_parameter")}} lorsqu'on utilise une chaîne de caractères en paramètre de remplacement :

+Les propriétés suivantes sont dépréciées. Cela n'affecte pas le comportement de {{jsxref("Objets_globaux/String/replace", "replace", "Specifying_a_string_as_a_parameter")}} lorsqu'on utilise une chaîne de caractères en paramètre de remplacement : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropriétéDescription
{{jsxref("RegExp.n", "$1-$9")}} -

Les sous-chaînes correspondantes s'il y en a.
- Attention : Utiliser ces propriétés peut causer certains problèmes car les extensions des navigateurs peuvent les modifier. À éviter !

-
{{jsxref("RegExp.input", "$_")}}Voir input.
{{jsxref("RegExp.multiline", "$*")}}Voir multiline.
{{jsxref("RegExp.lastMatch", "$&")}}Voir lastMatch.
{{jsxref("RegExp.lastMatch", "$&")}}Voir lastParen.
{{jsxref("RegExp.leftContext", "$`")}}Voir leftContext.
{{jsxref("RegExp.rightContext", "$'")}}Voir rightContext.
{{jsxref("RegExp.input", "input")}}La chaîne par rapport à laquelle on recherche une correspondance grâce à l'expression rationnelle.
{{jsxref("RegExp.lastMatch", "lastMatch")}}Les derniers caractères correspondants.
{{jsxref("RegExp.lastParen", "lastParen")}}La dernière sous-chaîne (groupe entre parenthèses) correspondante si elle existe.
{{jsxref("RegExp.leftContext", "leftContext")}}La sous-chaîne qui précède la correspondance la plus récente.
{{jsxref("RegExp.rightContext", "rightContext")}}La sous-chaîne qui suit la correspondance la plus récente.
PropriétéDescription
{{jsxref("RegExp.n", "$1-$9")}} +

+ Les sous-chaînes correspondantes s'il y en a.
Attention : Utiliser ces propriétés peut causer certains problèmes car les + extensions des navigateurs peuvent les modifier. À éviter ! +

+
{{jsxref("RegExp.input", "$_")}}Voir input.
{{jsxref("RegExp.multiline", "$*")}}Voir multiline.
{{jsxref("RegExp.lastMatch", "$&")}}Voir lastMatch.
{{jsxref("RegExp.lastMatch", "$&")}}Voir lastParen.
{{jsxref("RegExp.leftContext", "$`")}}Voir leftContext.
{{jsxref("RegExp.rightContext", "$'")}}Voir rightContext.
{{jsxref("RegExp.input", "input")}} + La chaîne par rapport à laquelle on recherche une correspondance grâce à + l'expression rationnelle. +
{{jsxref("RegExp.lastMatch", "lastMatch")}}Les derniers caractères correspondants.
{{jsxref("RegExp.lastParen", "lastParen")}} + La dernière sous-chaîne (groupe entre parenthèses) correspondante si + elle existe. +
{{jsxref("RegExp.leftContext", "leftContext")}}La sous-chaîne qui précède la correspondance la plus récente.
{{jsxref("RegExp.rightContext", "rightContext")}}La sous-chaîne qui suit la correspondance la plus récente.
-

Les propriétés qui suivent sont désormais des propriétés des instances de RegExp et ne sont plus des propriétés de l'objet RegExp :

+Les propriétés qui suivent sont désormais des propriétés des instances de `RegExp` et ne sont plus des propriétés de l'objet `RegExp` : - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropriétéDescription
{{jsxref("RegExp.global", "global")}}Permet d'utiliser une expression rationnelle pour relever l'ensemble des correspondances ou uniquement la première.
{{jsxref("RegExp.ignoreCase", "ignoreCase")}}Définit si la casse doit être ignorée ou non lors de la recherche d'une correspondance.
{{jsxref("RegExp.lastIndex", "lastIndex")}}L'index à partir duquel chercher la prochaine correspondance.
{{jsxref("RegExp.multiline", "multiline")}}Définit si la recherche doit s'effectuer sur une seule ligne ou plusieurs.
{{jsxref("RegExp.source", "source")}}Le texte du motif.
+| Propriété | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | +| {{jsxref("RegExp.global", "global")}} | Permet d'utiliser une expression rationnelle pour relever l'ensemble des correspondances ou uniquement la première. | +| {{jsxref("RegExp.ignoreCase", "ignoreCase")}} | Définit si la casse doit être ignorée ou non lors de la recherche d'une correspondance. | +| {{jsxref("RegExp.lastIndex", "lastIndex")}} | L'index à partir duquel chercher la prochaine correspondance. | +| {{jsxref("RegExp.multiline", "multiline")}} | Définit si la recherche doit s'effectuer sur une seule ligne ou plusieurs. | +| {{jsxref("RegExp.source", "source")}} | Le texte du motif. | -

Méthodes de RegExp

+### Méthodes de `RegExp` -
    -
  • La méthode compile est dépréciée.
  • -
  • La méthode valueOf n'est plus spécifiquement liée à RegExp. Utilisez {{jsxref("Object.valueOf()")}}.
  • -
+- La méthode `compile` est dépréciée. +- La méthode `valueOf` n'est plus spécifiquement liée à `RegExp`. Utilisez {{jsxref("Object.valueOf()")}}. -

Propriétés de Function

+### Propriétés de `Function` -
    -
  • Les propriétés {{jsxref("Objets_globaux/Function/caller", "caller")}} et {{jsxref("Objets_globaux/Function/arguments", "arguments")}} sont dépréciées car elles permettaient de fuiter l'appelant de la fonction. En lieu et place de la propriété arguments, c'est l'objet {{jsxref("Fonctions/arguments", "arguments")}} qui doit être utilisée (notamment dans les fermetures).
  • -
+- Les propriétés {{jsxref("Objets_globaux/Function/caller", "caller")}} et {{jsxref("Objets_globaux/Function/arguments", "arguments")}} sont dépréciées car elles permettaient de fuiter l'appelant de la fonction. En lieu et place de la propriété `arguments`, c'est l'objet {{jsxref("Fonctions/arguments", "arguments")}} qui doit être utilisée (notamment dans les fermetures). -

Générateur historique

+### Générateur historique -
    -
  • {{jsxref("Instructions/Legacy_generator_function", "L'instruction pour le générateur historique")}} et {{jsxref("Opérateurs/Legacy_generator_function", "l'expression de fonction du générateur historique")}} sont dépréciées. Il faut utiliser {{jsxref("Instructions/function*", "L'instruction function* ")}} et {{jsxref("Opérateurs/function*", "l'expression function*")}} à la place.
  • -
  • {{jsxref("Opérateurs/Compréhensions_de_tableau", "Les compréhensions de tableaux JS1.7/JS1.8", "#Diff.C3.A9rences_avec_les_compr.C3.A9hensions_pr.C3.A9c.C3.A9dentes_JS1.7.2FJS1.8")}} et {{jsxref("Opérateurs/Compréhensions_de_générateur", "les compréhensions de générateurs JS1.7/JS1.8", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}} sont dépréciées.
  • -
+- {{jsxref("Instructions/Legacy_generator_function", "L'instruction pour le générateur historique")}} et {{jsxref("Opérateurs/Legacy_generator_function", "l'expression de fonction du générateur historique")}} sont dépréciées. Il faut utiliser {{jsxref("Instructions/function*", "L'instruction function* ")}} et {{jsxref("Opérateurs/function*", "l'expression function*")}} à la place. +- {{jsxref("Opérateurs/Compréhensions_de_tableau", "Les compréhensions de tableaux JS1.7/JS1.8", "#Diff.C3.A9rences_avec_les_compr.C3.A9hensions_pr.C3.A9c.C3.A9dentes_JS1.7.2FJS1.8")}} et {{jsxref("Opérateurs/Compréhensions_de_générateur", "les compréhensions de générateurs JS1.7/JS1.8", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}} sont dépréciées. -

Itérateur

+### Itérateur -
    -
  • {{jsxref("Objets_globaux/StopIteration", "StopIteration")}} est déprécié.
  • -
  • {{jsxref("Objets_globaux/Iterator", "Iterator")}} est déprécié.
  • -
+- {{jsxref("Objets_globaux/StopIteration", "StopIteration")}} est déprécié. +- {{jsxref("Objets_globaux/Iterator", "Iterator")}} est déprécié. -

Méthode d'Object

+### Méthode d'`Object` -
    -
  • {{jsxref("Object.watch", "watch")}} et {{jsxref("Object.unwatch", "unwatch")}} sont dépréciés. L'objet {{jsxref("Proxy")}} doit être utilisé à la place.
  • -
  • __iterator__ est déprécié.
  • -
  • {{jsxref("Object.noSuchMethod", "__noSuchMethod__")}} est déprécié. {{jsxref("Proxy")}} doit être utilisé à la place.
  • -
+- {{jsxref("Object.watch", "watch")}} et {{jsxref("Object.unwatch", "unwatch")}} sont dépréciés. L'objet {{jsxref("Proxy")}} doit être utilisé à la place. +- `__iterator__` est déprécié. +- {{jsxref("Object.noSuchMethod", "__noSuchMethod__")}} est déprécié. {{jsxref("Proxy")}} doit être utilisé à la place. -

Méthodes de Date

+### Méthodes de `Date` -
    -
  • {{jsxref("Objets_globaux/Date/getYear", "getYear")}} et {{jsxref("Objets_globaux/Date/setYear", "setYear")}} sont impactés par le « bug de l'an 2000 » et ont été remplacés par {{jsxref("Objets_globaux/Date/getFullYear", "getFullYear")}} et {{jsxref("Objets_globaux/Date/setFullYear", "setFullYear")}}.
  • -
  • {{jsxref("Objets_globaux/Date/toISOString", "toISOString")}} doit être utilisé à la place de la méthode {{jsxref("Global_Objects/Date/toGMTString", "toGMTString")}} qui est dépréciée.
  • -
  • {{jsxref("Objets_globaux/Date/toLocaleFormat", "toLocaleFormat")}} est dépréciée.
  • -
+- {{jsxref("Objets_globaux/Date/getYear", "getYear")}} et {{jsxref("Objets_globaux/Date/setYear", "setYear")}} sont impactés par le « bug de l'an 2000 » et ont été remplacés par {{jsxref("Objets_globaux/Date/getFullYear", "getFullYear")}} et {{jsxref("Objets_globaux/Date/setFullYear", "setFullYear")}}. +- {{jsxref("Objets_globaux/Date/toISOString", "toISOString")}} doit être utilisé à la place de la méthode {{jsxref("Global_Objects/Date/toGMTString", "toGMTString")}} qui est dépréciée. +- {{jsxref("Objets_globaux/Date/toLocaleFormat", "toLocaleFormat")}} est dépréciée. -

Fonctions

+### Fonctions -
    -
  • {{jsxref("Opérateurs/Expression_de_fermetures", "Les expressions de fermetures", "", 1)}} sont dépréciées. Il faut utiliser {{jsxref("Opérateurs/L_opérateur_function", "function")}} ou {{jsxref("Fonctions/Fonctions_fléchées", "les fonctions fléchées", "", 1)}} à la place.
  • -
+- {{jsxref("Opérateurs/Expression_de_fermetures", "Les expressions de fermetures", "", 1)}} sont dépréciées. Il faut utiliser {{jsxref("Opérateurs/L_opérateur_function", "function")}} ou {{jsxref("Fonctions/Fonctions_fléchées", "les fonctions fléchées", "", 1)}} à la place. -

Proxy

+### Proxy -
    -
  • Proxy.create et Proxy.createFunction sont dépréciées. L'API {{jsxref("Objets_globaux/Proxy", "Proxy")}} doit être utilisée à la place.
  • -
  • Les trappes de captures suivantes sont obsolètes : -
      -
    • hasOwn ({{bug(980565)}}, Firefox 33).
    • -
    • getEnumerablePropertyKeys ({{bug(783829)}}, Firefox 37)
    • -
    • getOwnPropertyNames ({{bug(1007334)}}, Firefox 33)
    • -
    • keys ({{bug(1007334)}}, Firefox 33)
    • -
    -
  • -
+- [Proxy.create](/en-US/docs/Archive/Web/Old_Proxy_API) et [Proxy.createFunction](/en-US/docs/Archive/Web/Old_Proxy_API) sont dépréciées. L'API {{jsxref("Objets_globaux/Proxy", "Proxy")}} doit être utilisée à la place. +- Les trappes de captures suivantes sont obsolètes : -

Séquences d'échappement

+ - `hasOwn` ({{bug(980565)}}, Firefox 33). + - `getEnumerablePropertyKeys` ({{bug(783829)}}, Firefox 37) + - `getOwnPropertyNames` ({{bug(1007334)}}, Firefox 33) + - `keys` ({{bug(1007334)}}, Firefox 33) -
    -
  • Les séquences d'échappement octales (\ suivi par un, deux ou trois chiffres octaux) sont dépréciées pour les chaînes de caractères et les littéraux d'expressions rationnelles.
  • -
  • Les fonctions {{jsxref("Objets_globaux/escape", "escape")}} et {{jsxref("Objets_globaux/unescape", "unescape")}} sont dépréciées. Ce sont les méthodes et objets {{jsxref("Objets_globaux/encodeURI", "encodeURI")}}, {{jsxref("Objets_globaux/encodeURIComponent", "encodeURIComponent")}}, {{jsxref("Objets_globaux/decodeURI", "decodeURI")}} ou {{jsxref("Objets_globaux/decodeURIComponent", "decodeURIComponent")}} qui doivent être utilisées pour encoder/décoder les séquences d'échappement des caractères spéciaux.
  • -
+### Séquences d'échappement -

Méthodes de String

+- Les séquences d'échappement octales (\ suivi par un, deux ou trois chiffres octaux) sont dépréciées pour les chaînes de caractères et les littéraux d'expressions rationnelles. +- Les fonctions {{jsxref("Objets_globaux/escape", "escape")}} et {{jsxref("Objets_globaux/unescape", "unescape")}} sont dépréciées. Ce sont les méthodes et objets {{jsxref("Objets_globaux/encodeURI", "encodeURI")}}, {{jsxref("Objets_globaux/encodeURIComponent", "encodeURIComponent")}}, {{jsxref("Objets_globaux/decodeURI", "decodeURI")}} ou {{jsxref("Objets_globaux/decodeURIComponent", "decodeURIComponent")}} qui doivent être utilisées pour encoder/décoder les séquences d'échappement des caractères spéciaux. -
    -
  • Les méthodes d'enrobage HTML telles que {{jsxref("String.prototype.fontsize")}} et {{jsxref("String.prototype.big")}} sont dépréciées.
  • -
  • {{jsxref("String.prototype.quote")}} a été retiré de Firefox 37.
  • -
  • Le paramètre non-standard flags de {{jsxref("String.prototype.search")}}, {{jsxref("String.prototype.match")}}, et {{jsxref("String.prototype.replace")}} sont dépréciés.
  • -
  • {{jsxref("String.prototype.substr")}} ne sera sans doute pas retiré prochainement mais il est défini dans l'annexe B du standard ECMA-262 dont l'introduction précise clairement que « les développeurs ne devraient pass utiliser ou présupposer l'existence de ces fonctionnalités et de ces comportements lors de l'écriture de nouveau code ECMAScript ».
  • -
+### Méthodes de `String` -

Fonctionnalités obsolètes

+- [Les méthodes d'enrobage HTML](/fr/docs/tag/HTML%20wrapper%20methods) telles que {{jsxref("String.prototype.fontsize")}} et {{jsxref("String.prototype.big")}} sont dépréciées. +- {{jsxref("String.prototype.quote")}} a été retiré de Firefox 37. +- Le paramètre non-standard `flags` de {{jsxref("String.prototype.search")}}, {{jsxref("String.prototype.match")}}, et {{jsxref("String.prototype.replace")}} sont dépréciés. +- {{jsxref("String.prototype.substr")}} ne sera sans doute pas retiré prochainement mais il est défini dans l'[annexe B du standard ECMA-262](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-string.prototype.substr) dont l'introduction précise clairement que « les développeurs ne devraient pass utiliser ou présupposer l'existence de ces fonctionnalités et de ces comportements lors de l'écriture de nouveau code ECMAScript ». -

Ces fonctionnalités sont obsolètes et ont intégralement été retirées de JavaScript. Elles ne peuvent plus être utilisées.

+## Fonctionnalités obsolètes -

Object

+Ces fonctionnalités sont obsolètes et ont intégralement été retirées de JavaScript. Elles ne peuvent plus être utilisées. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropriétéDescription
{{jsxref("Objets_globaux/Object/count", "__count__")}}Renvoie le nombre de propriétés énumérables d'un objet défini par l'utillisateur.
{{jsxref("Objets_globaux/Object/Parent", "__parent__")}}Pointe vers le contexte d'un objet.
{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}Évalue une chaine de caractères étant du code JavaScript, dans le contexte de l'objet indiqué.
{{jsxref("Object.observe()")}}Observe les modifications apportées à un objet de façon asynchrone.
{{jsxref("Object.unobserve()")}}Retire les observateurs ajoutés à un objet.
{{jsxref("Object.getNotifier()")}}Crée un objet qui permet de déclencher un changement de façon synthétique.
+### Object -

Function

+| Propriété | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| {{jsxref("Objets_globaux/Object/count", "__count__")}} | Renvoie le nombre de propriétés énumérables d'un objet défini par l'utillisateur. | +| {{jsxref("Objets_globaux/Object/Parent", "__parent__")}} | Pointe vers le contexte d'un objet. | +| {{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}} | Évalue une chaine de caractères étant du code JavaScript, dans le contexte de l'objet indiqué. | +| {{jsxref("Object.observe()")}} | Observe les modifications apportées à un objet de façon asynchrone. | +| {{jsxref("Object.unobserve()")}} | Retire les observateurs ajoutés à un objet. | +| {{jsxref("Object.getNotifier()")}} | Crée un objet qui permet de déclencher un changement de façon synthétique. | - - - - - - - - - - - -
PropriétéDescription
{{jsxref("Objets_globaux/Function/arity", "arity")}}Nombre d'arguments déclarés pour une fonction.
+### `Function` -

Array

+| Propriété | Description | +| -------------------------------------------------------------------- | ---------------------------------------------- | +| {{jsxref("Objets_globaux/Function/arity", "arity")}} | Nombre d'arguments déclarés pour une fonction. | - - - - - - - - - - - - - - - -
PropriétéDescription
{{jsxref("Array.observe()")}}Observe les modifications apportées à un tableau de façon asynchrone.
{{jsxref("Array.unobserve()")}}Retire les observateurs ajoutés à un tableau.
+### `Array` + +| Propriété | Description | +| ---------------------------------------- | --------------------------------------------------------------------- | +| {{jsxref("Array.observe()")}} | Observe les modifications apportées à un tableau de façon asynchrone. | +| {{jsxref("Array.unobserve()")}} | Retire les observateurs ajoutés à un tableau. | -

Number

+### `Number` -
    -
  • {{jsxref("Number.toInteger()")}}
  • -
+- {{jsxref("Number.toInteger()")}} -

ParallelArray

+### `ParallelArray` -
    -
  • {{jsxref("ParallelArray")}}
  • -
+- {{jsxref("ParallelArray")}} -

Instructions

+### Instructions -
    -
  • {{jsxref("Instructions/for_each...in", "for each...in")}}, utiliser {{jsxref("Instructions/for...of", "for...of")}} à la place.
  • -
  • La décomposition de variables dans {{jsxref("Instructions/for...in", "for...in")}}, utiliser {{jsxref("Instructions/for...of", "for...of")}} à la place.
  • -
  • Les blocs et expressions let sont obsolètes.
  • -
+- {{jsxref("Instructions/for_each...in", "for each...in")}}, utiliser {{jsxref("Instructions/for...of", "for...of")}} à la place. +- La décomposition de variables dans {{jsxref("Instructions/for...in", "for...in")}}, utiliser {{jsxref("Instructions/for...of", "for...of")}} à la place. +- Les blocs et expressions `let` sont obsolètes. -

E4X

+### E4X -

Voir la page E4X pour plus d'informations.

+Voir la page [E4X](/fr/docs/E4X) pour plus d'informations. -

Sharp variables

+### Sharp variables -

Voir la page sur les variables « Sharp » en JavaScript pour plus d'informations.

+Voir la page [sur les variables « Sharp » en JavaScript](/en-US/docs/Archive/Web/Sharp_variables_in_JavaScript) pour plus d'informations. diff --git a/files/fr/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.md b/files/fr/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.md index 22c6e16c0b..8a6de2d8e6 100644 --- a/files/fr/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.md +++ b/files/fr/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.md @@ -9,48 +9,45 @@ translation_of: >- Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol original_slug: Web/JavaScript/Guide/Le_protocole_itérateur_historique --- -
{{JSSideBar("More")}}
+{{JSSideBar("More")}} -

Attention : Ce protocole historique était une fonctionnalité spécifique à SpiderMonkey et est supprimé à partir de Firefox 58. Pour utiliser des itérations par la suite, veuillez utiliser des boucles for..of ainsi que le protocole itérateur.

+> **Attention :** Ce protocole historique était une fonctionnalité spécifique à SpiderMonkey et est supprimé à partir de Firefox 58. Pour utiliser des itérations par la suite, veuillez utiliser des boucles [for..of](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) ainsi que le [protocole itérateur](/fr/docs/Web/JavaScript/Guide/Le_protocole_iterator). -

Le protocole itérateur obsolète, spécifique à Firefox

+## Le protocole itérateur obsolète, spécifique à Firefox -

Avant la version 26, Firefox implémentait un autre protocole d'itération semblable à celui défini par ES2015.

+Avant la version 26, Firefox implémentait un autre protocole d'itération semblable à celui défini par [ES2015](/fr/docs/Web/JavaScript/Guide/Le_protocole_iterator). -

Un objet est un itérateur historique lorsqu'il implémente une méthode next() avec la sémantique suivante et lorsqu'il renvoie une exception {{jsxref("Objets_globaux/StopIteration", "StopIteration")}} à la fin de l'itération :

+Un objet est un itérateur historique lorsqu'il implémente une méthode `next()` avec la sémantique suivante et lorsqu'il renvoie une exception {{jsxref("Objets_globaux/StopIteration", "StopIteration")}} à la fin de l'itération : - - - - - - - - - - + + + + + + + + + +
PropriétéValeur
next -

Une fonction sans argument qui renvoie une valeur.

-
PropriétéValeur
next

Une fonction sans argument qui renvoie une valeur.

-

Les différences entre le protocole historique et celui d'ES2015

+### Les différences entre le protocole historique et celui d'ES2015 -
    -
  • La valeur était directement renvoyée par la fonction next alors qu'avec le protocole ES2015, elle est contenue dans une propriété value
  • -
  • La fin de l'itération était signalée par un objet {{jsxref("Objets-globaux/StopIteration", "StopIteration")}}.
  • -
+- La valeur était directement renvoyée par la fonction `next` alors qu'avec le protocole ES2015, elle est contenue dans une propriété `value` +- La fin de l'itération était signalée par un objet {{jsxref("Objets-globaux/StopIteration", "StopIteration")}}. -

Un exemple simple utilisant l'ancien protocole

+### Un exemple simple utilisant l'ancien protocole -

Exemple

+#### Exemple -
function créerItérateur(tableau){
+```js
+function créerItérateur(tableau){
     var nextIndex = 0;
 
     return {
        next: function(){
-           if(nextIndex < tableau.length){
+           if(nextIndex < tableau.length){
                return tableau[nextIndex++];
            else
                throw new StopIteration();
@@ -70,11 +67,9 @@ catch(e){
          // fin de l'itération
     }
 }
-
+``` -

Voir aussi

+## Voir aussi - +- [Les itérateurs et générateurs](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs) +- [D'autres fonctionnalités dépréciées et obsolètes](/fr/docs/JavaScript/Reference/Annexes/Fonctionnalités_dépréciées) diff --git a/files/fr/web/javascript/reference/errors/already_has_pragma/index.md b/files/fr/web/javascript/reference/errors/already_has_pragma/index.md index 506c6bc246..a9aa355462 100644 --- a/files/fr/web/javascript/reference/errors/already_has_pragma/index.md +++ b/files/fr/web/javascript/reference/errors/already_has_pragma/index.md @@ -8,35 +8,37 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Already_has_pragma original_slug: Web/JavaScript/Reference/Erreurs/Already_has_pragma --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: -fichier- is being assigned a //# sourceMappingURL, but already has one.
+ Warning: -fichier- is being assigned a //# sourceMappingURL, but already has one. -

Type d'erreur

+## Type d'erreur -

Un avertissement. L'exécution du script JavaScript n'est pas interrompue.

+Un avertissement. L'exécution du script JavaScript n'est pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

Un fichier source map a été défini plus d'une fois pour un fichier source JavaScript donné.

+Un fichier _source map_ a été défini plus d'une fois pour un fichier source JavaScript donné. -

La plupart du temps, les fichiers sources des scripts JavaScript sont fusionnés et minifiés afin que les transferts de fichiers du serveur vers le navigateur soient plus efficaces. Grâce aux fichiers de correspondance des sources (source maps), il est possible d'indiquer au débogueur le code original correspondant. Il existe deux méthodes pour déclarer une correspondance de sources : en utilisant un commentaire ou définissant un en-tête pour le fichier JavaScript.

+La plupart du temps, les fichiers sources des scripts JavaScript sont fusionnés et minifiés afin que les transferts de fichiers du serveur vers le navigateur soient plus efficaces. Grâce [aux fichiers de correspondance des sources (_source maps_)](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/), il est possible d'indiquer au débogueur le code original correspondant. Il existe deux méthodes pour déclarer une correspondance de sources : en utilisant un commentaire ou définissant un en-tête pour le fichier JavaScript. -

Exemples

+## Exemples -

Voici une correspondance de source déclarée via un commentaire dans le fichier :

+Voici une correspondance de source déclarée via un commentaire dans le fichier : -
//# sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map
+```js example-good +//# sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map +``` -

Une autre méthode consiste à indiquer la source originale dans l'en-tête du fichier JavaScript :

+Une autre méthode consiste à indiquer la source originale dans l'en-tête du fichier JavaScript : -
X-SourceMap: /chemin/vers/le/fichier.js.map
+```js example-good +X-SourceMap: /chemin/vers/le/fichier.js.map +``` -

Voir aussi

+## Voir aussi - +- [Comment utiliser une correspondance de source - Les outils de développement Firefox](/fr/docs/Outils/Débogueur/Comment/Utiliser_une_source_map) +- [Une introduction aux correspondances de sources – HTML5 Rocks (en anglais)](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) diff --git a/files/fr/web/javascript/reference/errors/array_sort_argument/index.md b/files/fr/web/javascript/reference/errors/array_sort_argument/index.md index 6f7c3d07f2..b39add1b92 100644 --- a/files/fr/web/javascript/reference/errors/array_sort_argument/index.md +++ b/files/fr/web/javascript/reference/errors/array_sort_argument/index.md @@ -8,41 +8,41 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Array_sort_argument original_slug: Web/JavaScript/Reference/Erreurs/Array_sort_argument --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: argument is not a function object (Edge)
-TypeError: invalid Array.prototype.sort argument (Firefox)
-
+ TypeError: argument is not a function object (Edge) + TypeError: invalid Array.prototype.sort argument (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Que s'est-il passé ?

+## Que s'est-il passé ? -

L'argument passé à {{jsxref("Array.prototype.sort()")}} devrait être {{jsxref("undefined")}} ou être une fonction comparant ses opérandes.

+L'argument passé à {{jsxref("Array.prototype.sort()")}} devrait être {{jsxref("undefined")}} ou être une fonction comparant ses opérandes. -

Exemples

+## Exemples -

Cas invalides

+### Cas invalides -
[1, 3, 2].sort(5);  // TypeError
+```js example-bad
+[1, 3, 2].sort(5);  // TypeError
 
-var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y };
+var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y };
 [1, 3, 2].sort(cmp[this.key] || 'asc');  // TypeError
-
+``` -

Cas valides

+### Cas valides -
[1, 3, 2].sort();   // [1, 2, 3]
+```js example-good
+[1, 3, 2].sort();   // [1, 2, 3]
 
-var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y };
-[1, 3, 2].sort(cmp[this.key || 'asc']); // [1, 2, 3]
+var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y }; +[1, 3, 2].sort(cmp[this.key || 'asc']); // [1, 2, 3] +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Array.prototype.sort()")}}
  • -
+- {{jsxref("Array.prototype.sort()")}} diff --git a/files/fr/web/javascript/reference/errors/bad_octal/index.md b/files/fr/web/javascript/reference/errors/bad_octal/index.md index 4b14545161..eeea43f7ac 100644 --- a/files/fr/web/javascript/reference/errors/bad_octal/index.md +++ b/files/fr/web/javascript/reference/errors/bad_octal/index.md @@ -10,44 +10,44 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Bad_octal original_slug: Web/JavaScript/Reference/Erreurs/Bad_octal --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: SyntaxError: 08 is not a legal ECMA-262 octal constant.
-Warning: SyntaxError: 09 is not a legal ECMA-262 octal constant.
-
+ Warning: SyntaxError: 08 is not a legal ECMA-262 octal constant. + Warning: SyntaxError: 09 is not a legal ECMA-262 octal constant. -

Type d'erreur

+## Type d'erreur -

Un avertissement, l'exécution du script JavaScript ne sera pas interrompue.

+Un avertissement, l'exécution du script JavaScript ne sera pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

Les littéraux de nombres décimaux peuvent démarrer par un zéro suivi d'un autre chiffre. Si tous les chiffres après le 0 de tête sont inférieurs à 8, le nombre est interprété comme un nombre en notation octale. Or, cela ne peut pas être le cas avec 08 et 09 et JavaScript produit un avertissement.

+Les littéraux de nombres décimaux peuvent démarrer par un zéro suivi d'un autre chiffre. Si tous les chiffres après le 0 de tête sont inférieurs à 8, le nombre est interprété comme un nombre en notation octale. Or, cela ne peut pas être le cas avec `08` et `09` et JavaScript produit un avertissement. -

Les littéraux en notation octale et les séquences d'échappement octales sont désormais dépréciées (il y a aura donc un avertissement complémentaire sur la dépréciation de ces notations). Avec ECMAScript 6 et les versions ultérieures, la syntaxe utilise un zéro initial, suivi de la lettre latine « o » en majuscule ou en minuscule ((0o ou 0O). Pour plus d'informations à ce sujet, voir la page sur la grammaire lexicale JavaScript.

+Les littéraux en notation octale et les séquences d'échappement octales sont désormais dépréciées (il y a aura donc un avertissement complémentaire sur la dépréciation de ces notations). Avec ECMAScript 6 et les versions ultérieures, la syntaxe utilise un zéro initial, suivi de la lettre latine « o » en majuscule ou en minuscule ((`0o` ou `0O)`. Pour plus d'informations à ce sujet, voir la page sur [la grammaire lexicale JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Octaux). -

Exemples

+## Exemples -

Nombres invalides en notation octale

+### Nombres invalides en notation octale -
08;
+```js example-bad
+08;
 09;
 // SyntaxError: 08 is not a legal ECMA-262 octal constant
-// SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated +``` -

Nombres valides en notation octale

+### Nombres valides en notation octale -

On utilisera un zéro suivi de la lettre « o » pour indiquer un nombre exprimé en notation octale :

+On utilisera un zéro suivi de la lettre « o » pour indiquer un nombre exprimé en notation octale : -
0O755;
+```js example-good
+0O755;
 0o644;
-
+``` -

Voir aussi

+## Voir aussi - +- [La grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Octaux) +- [SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated](/fr/docs/Web/JavaScript/Reference/Errors/Deprecated_octal) diff --git a/files/fr/web/javascript/reference/errors/bad_radix/index.md b/files/fr/web/javascript/reference/errors/bad_radix/index.md index c620439cae..ecc2b20a37 100644 --- a/files/fr/web/javascript/reference/errors/bad_radix/index.md +++ b/files/fr/web/javascript/reference/errors/bad_radix/index.md @@ -8,57 +8,54 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Bad_radix original_slug: Web/JavaScript/Reference/Erreurs/Bad_radix --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
RangeError: invalid argument (Edge)
-RangeError: radix must be an integer at least 2 and no greater than 36 (Firefox)
-RangeError: toString() radix argument must be between 2 and 36 (Chrome)
-
+ RangeError: invalid argument (Edge) + RangeError: radix must be an integer at least 2 and no greater than 36 (Firefox) + RangeError: toString() radix argument must be between 2 and 36 (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

C'est le paramètre utilisé avec la méthode {{jsxref("Number.prototype.toString()")}} ou avec la méthode {{jsxref("BigInt.prototype.toString()")}} pour indiquer la base de conversion qui est en cause. Ce paramètre, optionnel, doit être un nombre entier, compris entre 2 et 36 qui inique la base du système numérique dans lequel on veut représenter les valeurs numériques.

+C'est le paramètre utilisé avec la méthode {{jsxref("Number.prototype.toString()")}} ou avec la méthode {{jsxref("BigInt.prototype.toString()")}} pour indiquer la base de conversion qui est en cause. Ce paramètre, optionnel, doit être un nombre entier, compris entre 2 et 36 qui inique la base du système numérique dans lequel on veut représenter les valeurs numériques. -

Pourquoi limiter la base à 36 ? Lorsqu'une base est supérieure à 10, on utilise les caractères de l'alphabet pour représenter les chiffres. Or, l'alphabet latin ne possède que 26 caractères. En utilisant donc les 10 chiffres arabes et ces caractères, on possède 36 caractères pour représenter les chiffres d'un nombre.

+Pourquoi limiter la base à 36 ? Lorsqu'une base est supérieure à 10, on utilise les caractères de l'alphabet pour représenter les chiffres. Or, l'alphabet latin ne possède que 26 caractères. En utilisant donc les 10 chiffres arabes et ces caractères, on possède 36 caractères pour représenter les chiffres d'un nombre. -

Généralement, on emploie cette méthode avec des bases fréquemment utilisées :

+Généralement, on emploie cette méthode avec des bases fréquemment utilisées : - +- 2 pour [les nombres binaires](https://fr.wikipedia.org/wiki/Syst%C3%A8me_binaire), +- 8 pour [les nombres octaux](https://fr.wikipedia.org/wiki/Syst%C3%A8me_octal), +- 10 pour [les nombres décimaux](https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%C3%A9cimal), +- 16 pour [les nombres hexadécimaux](https://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal). -

Examples

+## Examples -

Exemples invalides

+### Exemples invalides -
(42).toString(0);
+```js example-bad
+(42).toString(0);
 (42).toString(1);
 (42).toString(37);
 (42).toString(150);
 // On ne peut pas utiliser une telle
 // chaîne pour du formatage :
 (12071989).toString("MM-dd-yyyy");
-
+``` -

Exemples valides

+### Exemples valides -
(42).toString(2);     // "101010" (binary)
+```js example-good
+(42).toString(2);     // "101010" (binary)
 (13).toString(8);     // "15"     (octal)
 (0x42).toString(10);  // "66"     (decimal)
 (100000).toString(16) // "186a0"  (hexadecimal)
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Number.prototype.toString()")}}
  • -
+- {{jsxref("Number.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md b/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md index 9f1632d1a0..17657e237b 100644 --- a/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md +++ b/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md @@ -8,100 +8,81 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag original_slug: Web/JavaScript/Reference/Erreurs/Bad_regexp_flag --- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Syntax error in regular expression (Edge)
-SyntaxError: invalid regular expression flag "x" (Firefox)
-SyntaxError: Invalid regular expression flags (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

Quel est le problème ?

- -

Un marqueur (flag) invalide est utilisé dans une expression rationnelle. Un littéral d'expression rationnelle se compose d'un motif entouré de deux barres obliques, les marqueurs sont ajoutés après la seconde barre oblique. On peut également les indiquer dans le deuxième paramètre du constructeur {{jsxref("RegExp")}}. Les marqueurs d'une expression rationnelle peuvent être utilisés séparément ou combinés, dans n'importe quel ordre. Il existe uniquement cinq marqueurs autorisés en ECMAScript.

- -

Pour ajouter un marqueur sur une expression rationnelle, on utilisera cette syntaxe :

- -
var re = /motif/marqueurs;
-
- -

ou encore :

- -
var re = new RegExp('motif', 'marqueurs');
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Marqueurs autorisés pour les expressions rationnelles
MarqueurDescription
gRecherche globale.
iRecherche non-sensible à la casse.
mRecherche sur plusieurs lignes.
uUnicode : le motif est interprété comme une suite de codets Unicode.
yLa recherche effectuée est « adhérente » et recherche une correspondance à la position indiquée dans la chaîne cible (cf. {{jsxref("RegExp.sticky", "sticky")}}).
- -

Exemples

- -

Seuls cinq marqueurs d'expression rationnelle sont valides :

- -
/toto/truc;
+{{jsSidebar("Errors")}}
+
+## Message
+
+    SyntaxError: Syntax error in regular expression (Edge)
+    SyntaxError: invalid regular expression flag "x" (Firefox)
+    SyntaxError: Invalid regular expression flags (Chrome)
+
+## Type d'erreur
+
+{{jsxref("SyntaxError")}}
+
+## Quel est le problème ?
+
+Un marqueur (_flag_) invalide est utilisé dans une expression rationnelle. Un littéral d'expression rationnelle se compose d'un motif entouré de deux barres obliques, les marqueurs sont ajoutés après la seconde barre oblique. On peut également les indiquer dans le deuxième paramètre du constructeur {{jsxref("RegExp")}}. Les marqueurs d'une expression rationnelle peuvent être utilisés séparément ou combinés, dans n'importe quel ordre. Il existe uniquement cinq marqueurs autorisés en ECMAScript.
+
+Pour ajouter un marqueur sur une expression rationnelle, on utilisera cette syntaxe :
+
+```js
+var re = /motif/marqueurs;
+```
+
+ou encore :
+
+```js
+var re = new RegExp('motif', 'marqueurs');
+```
+
+| Marqueur | Description                                                                                                                                                                  |
+| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `g`      | Recherche globale.                                                                                                                                                           |
+| i        | Recherche non-sensible à la casse.                                                                                                                                           |
+| m        | Recherche sur plusieurs lignes.                                                                                                                                              |
+| u        | Unicode : le motif est interprété comme une suite de codets Unicode.                                                                                                         |
+| y        | La recherche effectuée est « adhérente » et recherche une correspondance à la position indiquée dans la chaîne cible (cf. {{jsxref("RegExp.sticky", "sticky")}}). |
+
+## Exemples
+
+Seuls cinq marqueurs d'expression rationnelle sont valides :
+
+```js example-bad
+/toto/truc;
 
 // SyntaxError: invalid regular expression flag "t"
-
+``` -

Peut-être souhaitiez-vous créer une expression rationnelle ? Une expression qui contient deux barres obliques est interprétée comme un littéral d'expression rationnelle :

+Peut-être souhaitiez-vous créer une expression rationnelle ? Une expression qui contient deux barres obliques est interprétée comme un littéral d'expression rationnelle : -
let obj = {
+```js example-bad
+let obj = {
   url: /docs/Web
 };
 
 // SyntaxError: invalid regular expression flag "W"
-
+``` -

Peut-être souhaitiez-vous créer une chaîne de caractères ? Dans ce cas, il faut ajouter des quotes (simples ou doubles) afin de former un littéral de chaîne de caractères :

+Peut-être souhaitiez-vous créer une chaîne de caractères ? Dans ce cas, il faut ajouter des quotes (simples ou doubles) afin de former un littéral de chaîne de caractères : -
let obj = {
+```js example-good
+let obj = {
   url: '/docs/Web'
-};
+}; +``` -

Marqueurs valides

+### Marqueurs valides -

Voir le tableau ci-avant pour la liste des marqueurs autorisés pour manipuler les expressions rationnelles en JavaScript.

+Voir le tableau ci-avant pour la liste des marqueurs autorisés pour manipuler les expressions rationnelles en JavaScript. -
/toto/g;
+```js example-good
+/toto/g;
 /toto/gim;
 /toto/uy;
-
+``` -

Voir aussi

+## Voir aussi - +- [Les expressions rationnelles](/fr/docs/Web/JavaScript/Guide/Expressions_régulières) +- [XRegEx](http://xregexp.com/flags/) – une bibliothèque relative aux expressions rationnelles qui fournit quatre nouveaux marqueurs (_flags_) (`n`, `s`, `x`, `A`) diff --git a/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md b/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md index 787f099067..f50090e6ec 100644 --- a/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md +++ b/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md @@ -9,50 +9,51 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Bad_return_or_yield original_slug: Web/JavaScript/Reference/Erreurs/Bad_return_or_yield --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: 'return' statement outside of function (Edge)
-SyntaxError: return not in function (Firefox)
-SyntaxError: yield not in function (Firefox)
-
+ SyntaxError: 'return' statement outside of function (Edge) + SyntaxError: return not in function (Firefox) + SyntaxError: yield not in function (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}.

+{{jsxref("SyntaxError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Une instruction return ou yield est utilisée en dehors d'une fonction. Il est possible que des accolades soient manquantes. Les mots-clés return et yield doivent être utilisés dans une fonction car ils permettent de terminer ou d'arrêter/reprendre l'exécution d'une fonction et de définir une valeur qui doit être renvoyée à l'appelant de la fonction.

+Une instruction [`return`](/fr/docs/Web/JavaScript/Reference/Instructions/return) ou [`yield`](/fr/docs/Web/JavaScript/Reference/Opérateurs/yield) est utilisée en dehors d'une [fonction](/fr/docs/Web/JavaScript/Guide/Fonctions). Il est possible que des accolades soient manquantes. Les mots-clés `return` et `yield` doivent être utilisés dans une fonction car ils permettent de terminer ou d'arrêter/reprendre l'exécution d'une fonction et de définir une valeur qui doit être renvoyée à l'appelant de la fonction. -

Exemples

+## Exemples -
var encouragement = function(score) {
+```js example-bad
+var encouragement = function(score) {
   if (score === 147)
     return "Super !";
   };
-  if (score > 100) {
+  if (score > 100) {
     return "Un record!";
   }
 }
 
-// SyntaxError: return not in function
+// SyntaxError: return not in function +``` -

À première vue, les accolades semblent correctes mais en regardant de plus près, on voit qu'il manque une accolade ouvrante ("{") après la première instruction if. La version correcte serait :

+À première vue, les accolades semblent correctes mais en regardant de plus près, on voit qu'il manque une accolade ouvrante ("{") après la première instruction `if`. La version correcte serait : -
var encouragement = function(score) {
+```js example-good
+var encouragement = function(score) {
   if (score === 147) {
     return "Maximum!";
   }
-  if (score > 100) {
+  if (score > 100) {
     return "Century!";
   }
-};
+}; +``` -

Voir aussi

+## Voir aussi - +- [`return`](/fr/docs/Web/JavaScript/Reference/Instructions/return) +- [`yield`](/fr/docs/Web/JavaScript/Reference/Opérateurs/yield) diff --git a/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md b/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md index 35fcf07a52..a560955088 100644 --- a/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md +++ b/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md @@ -8,34 +8,34 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type original_slug: Web/JavaScript/Reference/Erreurs/Called_on_incompatible_type --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: 'this' is not a Set object (Edge)
-TypeError: Function.prototype.toString called on incompatible object (Firefox)
-TypeError: Function.prototype.bind called on incompatible target (Firefox)
-TypeError: Method Set.prototype.add called on incompatible receiver undefined (Chrome)
-TypeError: Bind must be called on a function (Chrome)
-
+ TypeError: 'this' is not a Set object (Edge) + TypeError: Function.prototype.toString called on incompatible object (Firefox) + TypeError: Function.prototype.bind called on incompatible target (Firefox) + TypeError: Method Set.prototype.add called on incompatible receiver undefined (Chrome) + TypeError: Bind must be called on a function (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Lorsque cette erreur est levée, cela signifie qu'une fonction (d'un objet donné) est appelé avec une valeur this qui ne correspond pas au type attendu par la fonction.

+Lorsque cette erreur est levée, cela signifie qu'une fonction (d'un objet donné) est appelé avec une valeur `this` qui ne correspond pas au type attendu par la fonction. -

Cela peut se produire lorsqu'on utilise les méthodes {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}} et qu'on fournit un argument this dont le type n'est pas celui attendu.

+Cela peut se produire lorsqu'on utilise les méthodes {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}} et qu'on fournit un argument `this` dont le type n'est pas celui attendu. -

Cela peut également se produire quand on fournit une fonction (sous la forme d'un objet) comme argument d'une autre fonction. Dans ce cas, l'objet ne sera pas capturé comme valeur this pour la fonction. Pour contourner ce problème, on peut fournir une fonction lambda qui effectue l'appel ou utiliser la fonction {{jsxref("Function.prototype.bind()")}} afin que this soit l'objet attendu.

+Cela peut également se produire quand on fournit une fonction (sous la forme d'un objet) comme argument d'une autre fonction. Dans ce cas, l'objet ne sera pas capturé comme valeur `this` pour la fonction. Pour contourner ce problème, on peut fournir une fonction lambda qui effectue l'appel ou utiliser la fonction {{jsxref("Function.prototype.bind()")}} afin que `this` soit l'objet attendu. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
var monSet = new Set;
+```js example-bad
+var monSet = new Set;
 ['truc', 'bidule'].forEach(monSet.add);
 // monSet.add est une fonction mais
 // "monSet" n'est pas capturé en tant que this.
@@ -47,30 +47,27 @@ var maFonction = function () {
 // maFonction.bind est une fonction
 // mais "maFonction" n'est pas capturé en tant
 // que this.
+```
 
-
+### Exemples valides -

Exemples valides

- -
var monSet = new Set;
+```js example-good
+var monSet = new Set;
 ['truc', 'bidule'].forEach(monSet.add.bind(monSet));
 // Cela fonctionne car on lie "monSet" avec this.
 
 var maFonction = function () {
   console.log(this)
 };
-['truc', 'bidule'].forEach(x => maFonction.bind(x));
+['truc', 'bidule'].forEach(x => maFonction.bind(x));
 // Cela fonctionne car on utilise
 // la fonction "bind" ce qui permet de
 // créer une fonction lambda qui propage
 // l'argument.
+```
 
-
- -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Function.prototype.call()")}}
  • -
  • {{jsxref("Function.prototype.apply()")}}
  • -
  • {{jsxref("Function.prototype.bind()")}}
  • -
+- {{jsxref("Function.prototype.call()")}} +- {{jsxref("Function.prototype.apply()")}} +- {{jsxref("Function.prototype.bind()")}} diff --git a/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md b/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md index 1ac434163b..351754cba4 100644 --- a/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md +++ b/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md @@ -9,30 +9,30 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init original_slug: Web/JavaScript/Reference/Erreurs/Cant_access_lexical_declaration_before_init --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
ReferenceError: Use before delaration (Edge)
-ReferenceError: can't access lexical declaration `X' before initialization (Firefox)
-ReferenceError: 'x' is not defined (Chrome)
-
+ ReferenceError: Use before delaration (Edge) + ReferenceError: can't access lexical declaration `X' before initialization (Firefox) + ReferenceError: 'x' is not defined (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("ReferenceError")}}

+{{jsxref("ReferenceError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il y a eu un accès à une variable déclarée avec let ou const avant que celle-ci ait été initialisée. Cela peut se produire dans n'importe quelle instruction de bloc avec une variable déclarée avec let ou const et qui est utilisée avant son initialisation.

+Il y a eu un accès à une variable déclarée avec `let` ou `const` avant que celle-ci ait été initialisée. Cela peut se produire dans n'importe quelle instruction de bloc avec une variable déclarée avec `let` ou `const` et qui est utilisée avant son initialisation. -

Exemple

+## Exemple -

Exemples invalides

+### Exemples invalides -

Dans l'exemple qui suit, la variable toto est redéclarée dans le bloc avec un second let et elle n'est donc pas initialisée.

+Dans l'exemple qui suit, la variable `toto` est redéclarée dans le bloc avec un second `let` et elle n'est donc pas initialisée. -
function test(){
+```js example-bad
+function test(){
    let toto = 33;
    if (true) {
       let toto = (toto + 55);
@@ -41,23 +41,22 @@ ReferenceError: 'x' is not defined (Chrome)
    }
 }
 test();
-
+``` -

Exemples valides

+### Exemples valides -

Afin que toto puisse être modifiée au sein de l'instruction if, on enlèvera la redéclaration dans ce bloc :

+Afin que `toto` puisse être modifiée au sein de l'instruction `if`, on enlèvera la redéclaration dans ce bloc : -
function test(){
+```js example-good
+function test(){
    let toto = 33;
    if (true) {
       toto = (toto + 55);
    }
 }
 test();
-
+``` -

Voir aussi

+## Voir aussi - +- [La « zone morte temporelle » (ou TDZ pour « _Temporal Dead Zone_ ») et les erreurs avec `let`]() diff --git a/files/fr/web/javascript/reference/errors/cant_access_property/index.md b/files/fr/web/javascript/reference/errors/cant_access_property/index.md index e9ea7c5e0c..20c4ffd4a6 100644 --- a/files/fr/web/javascript/reference/errors/cant_access_property/index.md +++ b/files/fr/web/javascript/reference/errors/cant_access_property/index.md @@ -8,53 +8,53 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_access_property original_slug: Web/JavaScript/Reference/Erreurs/Cant_access_property --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Unable to get property {x} of undefined or null reference (Edge)
-TypeError: can't access property {x} of {y} (Firefox)
-TypeError: {y} is undefined, can't access property {x} of it (Firefox)
-TypeError: {y} is null, can't access property {x} of it (Firefox)
+    TypeError: Unable to get property {x} of undefined or null reference (Edge)
+    TypeError: can't access property {x} of {y} (Firefox)
+    TypeError: {y} is undefined, can't access property {x} of it (Firefox)
+    TypeError: {y} is null, can't access property {x} of it (Firefox)
 
-Exemples
-TypeError: x is undefined, can't access property "prop" of it
-TypeError: x is null, can't access property "prop" of it
-TypeError: can't access property "prop" of undefined
-TypeError: can't access property "prop" of null
-
+ Exemples + TypeError: x is undefined, can't access property "prop" of it + TypeError: x is null, can't access property "prop" of it + TypeError: can't access property "prop" of undefined + TypeError: can't access property "prop" of null -

Types d'erreur

+## Types d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

On a tenté d'accéder à une propriété sur la valeur {{jsxref("undefined")}} ou {{jsxref("null")}}.

+On a tenté d'accéder à une propriété sur la valeur {{jsxref("undefined")}} ou {{jsxref("null")}}. -

Exemples

+## Exemples -

Cas invalides

+### Cas invalides -
// undefined et null ne possèdent aucune propriété et aucune méthode substring
+```js example-bad
+// undefined et null ne possèdent aucune propriété et aucune méthode substring
 var toto = undefined;
 toto.substring(1); // TypeError: x is undefined, can't access property "substring" of it
 
 var toto = null;
 toto.substring(1); // TypeError: x is null, can't access property "substring" of it
-
+``` -

Corriger le problème

+### Corriger le problème -

Pour détecter le cas où la valeur utilisée est undefined ou null, on peut utiliser l'opérateur typeof. Par exemple :

+Pour détecter le cas où la valeur utilisée est `undefined` ou `null`, on peut utiliser l'opérateur [`typeof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof). Par exemple : -
if (typeof toto !== 'undefined') {
+```js
+if (typeof toto !== 'undefined') {
   // On sait alors que toto est bien défini et on peut utiliser ses propriétés s'il en a.
-}
+} +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("undefined")}}
  • -
  • {{jsxref("null")}}
  • -
+- {{jsxref("undefined")}} +- {{jsxref("null")}} diff --git a/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md b/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md index 29b72aaa47..771d329791 100644 --- a/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md +++ b/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md @@ -9,48 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_assign_to_property original_slug: Web/JavaScript/Reference/Erreurs/Cant_assign_to_property --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: can't assign to property "x" on {y}: not an object (Firefox)
-TypeError: Cannot create property 'x' on {y} (Chrome)
-
+ TypeError: can't assign to property "x" on {y}: not an object (Firefox) + TypeError: Cannot create property 'x' on {y} (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

En mode strict, une exception {{jsxref("TypeError")}} est déclenchée lorsqu'on tente de créer une propriété sur une valeur primitive telle qu'un symbole, une chaîne de caractères, un nombre ou un booleén.

+En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), une exception {{jsxref("TypeError")}} est déclenchée lorsqu'on tente de créer une propriété sur [une valeur primitive](/fr/docs/Web/JavaScript/Structures_de_données#Les_valeurs_primitives) telle qu'un symbole, une chaîne de caractères, un nombre ou un booleén. -

Le problème peut être lié à une valeur qui se trouve à un endroit inattendu ou qu'un équivalent objet d'une valeur primitive est attendu (ex. {{jsxref("String")}} pour la chaîne de caractères ou {{jsxref("Number")}} pour un nombre).

+Le problème peut être lié à une valeur qui se trouve à un endroit inattendu ou qu'un équivalent objet d'une valeur primitive est attendu (ex. {{jsxref("String")}} pour la chaîne de caractères ou {{jsxref("Number")}} pour un nombre). -

Exemples

+## Exemples -

Exemple invalide

+### Exemple invalide -
'use strict';
+```js example-bad
+'use strict';
 
 var foo = "my string";
 // The following line does nothing if not in strict mode.
 foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object
-
+``` -

Exemple valide

+### Exemple valide -

On pourra corriger le problème en convertissant la valeur primitive en sont équivalent objet avec un constructeur (ici {{jsxref("String")}} pour .

+On pourra corriger le problème en convertissant la valeur primitive en sont équivalent objet avec un constructeur (ici {{jsxref("String")}} pour . -
'use strict';
+```js example-good
+'use strict';
 
 var foo = new String("my string");
 foo.bar = {};
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Strict_mode")}}
  • -
  • {{Glossary("primitive")}}
  • -
+- {{jsxref("Strict_mode")}} +- {{Glossary("primitive")}} diff --git a/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md b/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md index 674ffd0138..8849cda16d 100644 --- a/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md +++ b/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md @@ -8,59 +8,60 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible original_slug: Web/JavaScript/Reference/Erreurs/Cant_define_property_object_not_extensible --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Cannot create property for a non-extensible object (Edge)
-TypeError: can't define property "x": "obj" is not extensible (Firefox)
-TypeError: Cannot define property: "x", object is not extensible. (Chrome)
-
+ TypeError: Cannot create property for a non-extensible object (Edge) + TypeError: can't define property "x": "obj" is not extensible (Firefox) + TypeError: Cannot define property: "x", object is not extensible. (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La plupart du temps, un objet est extensible, ce qui signifie qu'on peut lui ajouter de nouvelles propriétés. Cependant, dans ce cas, on a utilisé la méthode {{jsxref("Object.preventExtensions()")}} afin de marquer l'objet comme non-extensible. Celui-ci ne pourra donc pas recevoir de nouvelles propriétés en plus de celles dont il dispose déjà.

+La plupart du temps, un objet est extensible, ce qui signifie qu'on peut lui ajouter de nouvelles propriétés. Cependant, dans ce cas, on a utilisé la méthode {{jsxref("Object.preventExtensions()")}} afin de marquer l'objet comme non-extensible. Celui-ci ne pourra donc pas recevoir de nouvelles propriétés en plus de celles dont il dispose déjà. -

Exemples

+## Exemples -

En mode strict, si on essaie d'ajouter une nouvelle propriété sur un objet non-extensible, on obtient une exception TypeError. En mode non-strict, l'ajout de la nouvelle propriété est ignoré silencieusement.

+En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), si on essaie d'ajouter une nouvelle propriété sur un objet non-extensible, on obtient une exception `TypeError`. En mode non-strict, l'ajout de la nouvelle propriété est ignoré silencieusement. -
'use strict';
+```js example-bad
+'use strict';
 
 var obj = {};
 Object.preventExtensions(obj);
 
 obj.x = 'toto';
 // TypeError: can't define property "x": "obj" is not extensible
-
+``` -

Pour le mode strict ete le mode non-strict, un appel à {{jsxref("Object.defineProperty()")}} déclenchera une exception lorsqu'on utilisera cette méthode pour ajouter une nouvelle propriété à un objet non-extenssible.

+Pour le mode strict ete le mode non-strict, un appel à {{jsxref("Object.defineProperty()")}} déclenchera une exception lorsqu'on utilisera cette méthode pour ajouter une nouvelle propriété à un objet non-extenssible. -
var obj = { };
+```js example-bad
+var obj = { };
 Object.preventExtensions(obj);
 
 Object.defineProperty(obj,
   'x', { value: "toto" }
 );
 // TypeError: can't define property "x": "obj" is not extensible
-
+``` -

Pour corriger cet erreur, il faut retirer l'appel à {{jsxref("Object.preventExtensions()")}} pour que l'objet soit extensible, soit ajouter la propriété avant que l'objet devienne non-extensible, soit retirer l'ajout de cette propriété si elle n'est pas nécessaire.

+Pour corriger cet erreur, il faut retirer l'appel à {{jsxref("Object.preventExtensions()")}} pour que l'objet soit extensible, soit ajouter la propriété avant que l'objet devienne non-extensible, soit retirer l'ajout de cette propriété si elle n'est pas nécessaire. -
'use strict';
+```js example-good
+'use strict';
 
 var obj = {};
 obj.x = 'toto'; // On ajoute la propriété avant de
                // bloquer l'ajout d'autres propriétés
 
-Object.preventExtensions(obj);
+Object.preventExtensions(obj); +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Object.preventExtensions()")}}
  • -
+- {{jsxref("Object.preventExtensions()")}} diff --git a/files/fr/web/javascript/reference/errors/cant_delete/index.md b/files/fr/web/javascript/reference/errors/cant_delete/index.md index 7ec2b3bac8..c2e807eecf 100644 --- a/files/fr/web/javascript/reference/errors/cant_delete/index.md +++ b/files/fr/web/javascript/reference/errors/cant_delete/index.md @@ -9,30 +9,30 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_delete original_slug: Web/JavaScript/Reference/Erreurs/Cant_delete --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Calling delete on 'x' is not allowed in strict mode (Edge)
-TypeError: property "x" is non-configurable and can't be deleted. (Firefox)
-TypeError: Cannot delete property 'x' of #<Object> (Chrome)
-
+ TypeError: Calling delete on 'x' is not allowed in strict mode (Edge) + TypeError: property "x" is non-configurable and can't be deleted. (Firefox) + TypeError: Cannot delete property 'x' of # (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}} in strict mode only.

+{{jsxref("TypeError")}} in strict mode only. -

Quel est le problème ?

+## Quel est le problème ? -

Une instruction demande la suppression d'une propriété non-configurable. L'attribut configurable permet de contrôler si la propriété peut être supprimée de l'objet auquel elle est rattachée et si ces attributs (en dehors de writable) peuvent être modifiés.

+Une instruction demande la suppression d'une propriété [non-configurable](/fr/docs/Web/JavaScript/Structures_de_données#Propriétés). L'attribut `configurable` permet de contrôler si la propriété peut être supprimée de l'objet auquel elle est rattachée et si ces attributs (en dehors de `writable`) peuvent être modifiés. -

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération de suppression renverra false.

+Cette erreur ne se produit qu'en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). En mode non-strict, l'opération de suppression renverra `false`. -

Exemples

+## Exemples -

Les propriétés non-configurables ne sont pas très fréquentes mais il est possible d'en créer grâce à {{jsxref("Object.defineProperty()")}} ou à  {{jsxref("Object.freeze()")}}.

+Les propriétés non-configurables ne sont pas très fréquentes mais il est possible d'en créer grâce à {{jsxref("Object.defineProperty()")}} ou à  {{jsxref("Object.freeze()")}}. -
"use strict";
+```js example-bad
+"use strict";
 var obj = Object.freeze({name: "Elsa", score: 157});
 delete obj.score;  // TypeError
 
@@ -44,17 +44,17 @@ delete obj.toto;  // TypeError
 "use strict";
 var frozenArray = Object.freeze([0, 1, 2]);
 frozenArray.pop();  // TypeError
-
+``` -

Certaines propriétés natives de JavaScript sont non-configurables. Peut-être que le code tente de supprimer une constante mathématique :

+Certaines propriétés natives de JavaScript sont non-configurables. Peut-être que le code tente de supprimer une constante mathématique : -
"use strict";
-delete Math.PI;  // TypeError
+```js example-bad +"use strict"; +delete Math.PI; // TypeError +``` -

Voir aussi

+## Voir aussi -
    -
  • L'opérateur delete
  • -
  • {{jsxref("Object.defineProperty()")}}
  • -
  • {{jsxref("Object.freeze()")}}
  • -
+- [L'opérateur `delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete) +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.freeze()")}} diff --git a/files/fr/web/javascript/reference/errors/cant_redefine_property/index.md b/files/fr/web/javascript/reference/errors/cant_redefine_property/index.md index 5311f957a5..0c445fd4a6 100644 --- a/files/fr/web/javascript/reference/errors/cant_redefine_property/index.md +++ b/files/fr/web/javascript/reference/errors/cant_redefine_property/index.md @@ -8,45 +8,45 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property original_slug: Web/JavaScript/Reference/Erreurs/Cant_redefine_property --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Cannot modify non-writable property {x} (Edge)
-TypeError: can't redefine non-configurable property "x" (Firefox)
-TypeError: Cannot redefine property: "x" (Chrome)
-
+ TypeError: Cannot modify non-writable property {x} (Edge) + TypeError: can't redefine non-configurable property "x" (Firefox) + TypeError: Cannot redefine property: "x" (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

On essaie de redéfinir une propriété alors que celle-ci est non-configurable. L'attribut configurable permet d'indiquer si la propriété peut être supprimée d'un objet et si ses attributs (en dehors de writable) peuvent être modifiés. Généralement, les propriétés d'un objet créées avec un initialisateur d'objet sont configurables. Cependant, lorsqu'on utilise la méthode {{jsxref("Object.defineProperty()")}}, la propriété n'est pas configurable par défaut.

+On essaie de redéfinir une propriété alors que celle-ci est [non-configurable](/fr/docs/Web/JavaScript/Structures_de_données#Propriétés). L'attribut `configurable` permet d'indiquer si la propriété peut être supprimée d'un objet et si ses attributs (en dehors de `writable`) peuvent être modifiés. Généralement, les propriétés d'un objet créées avec un [initialisateur d'objet](/fr/docs/Web/JavaScript/Reference/Opérateurs/Initialisateur_objet) sont configurables. Cependant, lorsqu'on utilise la méthode {{jsxref("Object.defineProperty()")}}, la propriété n'est pas configurable par défaut. -

Exemples

+## Exemples -

Propriétés non-configurables créées avec Object.defineProperty()

+### Propriétés non-configurables créées avec `Object.defineProperty()` -

La méthode {{jsxref("Object.defineProperty()")}} crée des propriétés non-configurables si on n'indique pas le contraire :

+La méthode {{jsxref("Object.defineProperty()")}} crée des propriétés non-configurables si on n'indique pas le contraire : -
var obj = Object.create({});
+```js example-bad
+var obj = Object.create({});
 Object.defineProperty(obj, "toto", {value: "machin"});
 
 Object.defineProperty(obj, "toto", {value: "bidule"});
 // TypeError: can't redefine non-configurable property "toto"
-
+``` -

Si on veut pouvoir redéfinir la propriété "toto" dans la suite du code, il faudra la créer comme étant configurable.

+Si on veut pouvoir redéfinir la propriété "toto" dans la suite du code, il faudra la créer comme étant configurable. -
var obj = Object.create({});
+```js example-good
+var obj = Object.create({});
 Object.defineProperty(obj, "toto", {value: "machin", configurable: true});
-Object.defineProperty(obj, "toto", {value: "bidule", configurable: true});
+Object.defineProperty(obj, "toto", {value: "bidule", configurable: true}); +``` -

Voir aussi

+## Voir aussi - +- [\[\[Configurable\]\]](/fr/docs/Web/JavaScript/Structures_de_données#Propriétés) +- {{jsxref("Object.defineProperty()")}} diff --git a/files/fr/web/javascript/reference/errors/cyclic_object_value/index.md b/files/fr/web/javascript/reference/errors/cyclic_object_value/index.md index aa50f933f9..58de02ab6d 100644 --- a/files/fr/web/javascript/reference/errors/cyclic_object_value/index.md +++ b/files/fr/web/javascript/reference/errors/cyclic_object_value/index.md @@ -8,45 +8,47 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Cyclic_object_value original_slug: Web/JavaScript/Reference/Erreurs/Cyclic_object_value --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: cyclic object value (Firefox)
-TypeError: Converting circular structure to JSON (Chrome and Opera)
-TypeError: Circular reference in value argument not supported (Edge)
-
+ TypeError: cyclic object value (Firefox) + TypeError: Converting circular structure to JSON (Chrome and Opera) + TypeError: Circular reference in value argument not supported (Edge) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Lorsqu'on appelle la méthode {{jsxref("JSON.stringify()")}}, les structures de références cycliques ne peuvent pas être converties en chaîne de caractères car le format JSON ne prend pas en charge les références (bien qu'un brouillon IETF existe).

+Lorsqu'on appelle la méthode {{jsxref("JSON.stringify()")}}, les structures de références cycliques ne peuvent pas être converties en chaîne de caractères car [le format JSON](https://www.json.org/) ne prend pas en charge les références (bien qu'[un brouillon IETF existe](http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03)). -

Exemples

+## Exemples -

Avec une structure circulaire comme la suivante :

+Avec une structure circulaire comme la suivante : -
var a = {};
+```js
+var a = {};
 var b = {};
 a.child = b;
 b.child = a;
-
+``` -

{{jsxref("JSON.stringify()")}} échouera :

+{{jsxref("JSON.stringify()")}} échouera : -
JSON.stringify(a);
+```js example-bad
+JSON.stringify(a);
 // TypeError: cyclic object value
-
+``` -

Il est nécessaire de contrôler l'existence de cycles avant la conversion en chaîne de caractères. On peut par exemple fournir une fonction de remplacement comme deuxième argument de la fonction {{jsxref("JSON.stringify()")}}.

+Il est nécessaire de contrôler l'existence de cycles avant la conversion en chaîne de caractères. On peut par exemple fournir une fonction de remplacement comme deuxième argument de la fonction {{jsxref("JSON.stringify()")}}. -
const getCircularReplacer = () => {
+```js
+const getCircularReplacer = () => {
   const seen = new WeakSet();
-  return (key, value) => {
-    if (typeof value === "object" && value !== null) {
+  return (key, value) => {
+    if (typeof value === "object" && value !== null) {
       if (seen.has(value)) {
         return;
       }
@@ -57,13 +59,12 @@ b.child = a;
 };
 
 JSON.stringify(circularReference, getCircularReplacer());
-// {"otherData":123}
+// {"otherData":123} +``` -

On peut également utiliser une bibliothèque ou une fonction utilitaire pour ce scénario. comme cycle.js.

+On peut également utiliser une bibliothèque ou une fonction utilitaire pour ce scénario. comme [cycle.js](https://github.com/douglascrockford/JSON-js/blob/master/cycle.js). -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("JSON.stringify")}}
  • -
  • cycle.js qui introduit deux fonctions : JSON.decycle et JSON.retrocycle qui permettent d'encoder et de décoder des structures cycliques en JSON.
  • -
+- {{jsxref("JSON.stringify")}} +- [cycle.js](https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) qui introduit deux fonctions : `JSON.decycle` `et JSON.retrocycle` qui permettent d'encoder et de décoder des structures cycliques en JSON. diff --git a/files/fr/web/javascript/reference/errors/dead_object/index.md b/files/fr/web/javascript/reference/errors/dead_object/index.md index ba4498fd26..0f65953ae7 100644 --- a/files/fr/web/javascript/reference/errors/dead_object/index.md +++ b/files/fr/web/javascript/reference/errors/dead_object/index.md @@ -8,43 +8,44 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Dead_object original_slug: Web/JavaScript/Reference/Erreurs/Dead_object --- -
{{JSSidebar("Errors")}}
+{{JSSidebar("Errors")}} -

Message

+## Message -
TypeError: can't access dead object
-
+ TypeError: can't access dead object -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Afin d'améliorer l'utilisation de la mémoire et de prévenir les fuites mémoire, Firefox empêche les modules complémentaires de conserver des références fortes vers les objets du DOM après que leur document parent a été détruit. Un objet mort (dead) est un objet qui contient une référence forte vers un éléments du DOM, même après que celui-ci a été détruit dans le DOM. Pour éviter ces problèmes, les références aux objets du DOM d'un document étranger devraient être enregistrées dans un objet spécifique à ce document et être nettoyées lors de la suppression du document. On peut également utiliser les objets qui permettent d'enregistrer des références faibles.

+Afin d'améliorer l'utilisation de la mémoire et de prévenir les fuites mémoire, Firefox empêche les modules complémentaires de conserver des références fortes vers les objets du DOM après que leur document parent a été détruit. Un objet mort (_dead_) est un objet qui contient une référence forte vers un éléments du DOM, même après que celui-ci a été détruit dans le DOM. Pour éviter ces problèmes, les références aux objets du DOM d'un document étranger devraient être enregistrées dans un objet spécifique à ce document et être nettoyées lors de la suppression du document. On peut également utiliser les objets qui permettent d'enregistrer [des références faibles](/fr/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference). -

Vérifier si un objet est mort

+## Vérifier si un objet est mort -

Components.utils fournit une méthode isDeadWrapper() qui peut être utilisée par du code privilégié :

+[`Components.utils`](/fr/docs/Components.utils) fournit une méthode `isDeadWrapper()` qui peut être utilisée par du code privilégié : -
if (Components.utils.isDeadWrapper(window)) {
+```js
+if (Components.utils.isDeadWrapper(window)) {
   // dead
-}
+} +``` -

Du code sans privilège ne pourra pas accéder à Component.utils et pourra simplement intercepter l'exception :

+Du code sans privilège ne pourra pas accéder à `Component.utils` et pourra simplement intercepter l'exception : -
try {
+```js
+try {
   String(window);
 }
 catch (e) {
   console.log("window est problablement mort ");
-}
+} +``` -

Voir aussi

+## Voir aussi - +- [Que signifie “can’t access dead object” ? (en anglais)](https://blog.mozilla.org/addons/2012/09/12/what-does-cant-access-dead-object-mean/) +- [Les causes principales des fuites mémoire dans les extensions](/fr/docs/Extensions/Common_causes_of_memory_leaks_in_extensions) +- [`Components.utils`](/fr/docs/Components.utils) +- [Compartiments zombies](/en-US/docs/Mozilla/Zombie_compartments#Zombie_compartments) diff --git a/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md b/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md index 4451a729be..19d3f9b747 100644 --- a/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md +++ b/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md @@ -10,34 +10,34 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode original_slug: Web/JavaScript/Reference/Erreurs/Delete_in_strict_mode --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Calling delete on expression not allowed in strict mode (Edge)
-SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox)
-SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)
-
+ SyntaxError: Calling delete on expression not allowed in strict mode (Edge) + SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox) + SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+{{jsxref("SyntaxError")}}, uniquement en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

Les variables JavaScript ne peuvent pas être supprimées grâce à l'opérateur delete. En mode strict, toute tentative de suppression d'une variable lèvera une exception.

+Les variables JavaScript ne peuvent pas être supprimées grâce à l'opérateur [`delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete). En mode strict, toute tentative de suppression d'une variable lèvera une exception. -

L'opérateur delete sert uniquement à supprimer des propriétés sur un objet. Les propriétés d'un objet sont « qualifiées » si elles sont configurables.

+L'opérateur `delete` sert uniquement à supprimer des propriétés sur un objet. Les propriétés d'un objet sont « qualifiées » si elles sont configurables. -

Contrairement à ce qu'on pourrait penser, l'opérateur delete n'a rien à voir avec la libération de la mémoire. La gestion de la mémoire se fait indirectement en cassant les références utilisées. Pour plus d'informations, consulter les pages sur delete et la gestion de la mémoire en JavaScript.

+Contrairement à ce qu'on pourrait penser, l'opérateur `delete` n'a rien à voir avec la libération de la mémoire. La gestion de la mémoire se fait indirectement en cassant les références utilisées. Pour plus d'informations, consulter les pages sur [`delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete) et [la gestion de la mémoire en JavaScript](/fr/docs/Web/JavaScript/Gestion_de_la_mémoire). -

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération renvoie simplement false.

+Cette erreur ne se produit qu'en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). En mode non-strict, l'opération renvoie simplement `false`. -

Exemples

+## Exemples -

Essayer de supprimer une variable normale avec delete ne fonctionne pas, voire lève une exception en mode strict :

+Essayer de supprimer une variable normale avec `delete` ne fonctionne pas, voire lève une exception en mode strict : -
'use strict';
+```js example-bad
+'use strict';
 
 var x;
 
@@ -47,23 +47,22 @@ delete x;
 
 // SyntaxError: applying the 'delete' operator to
 // an unqualified name is deprecated
-
+``` -

Pour libérer le contenu d'une variable, on peut la passer à {{jsxref("null")}} :

+Pour libérer le contenu d'une variable, on peut la passer à {{jsxref("null")}} : -
'use strict';
+```js example-good
+'use strict';
 
 var x;
 // ...
 x = null;
 
 // x peut être ramassée par le ramasse-miettes
-
+``` -

Voir aussi

+## Voir aussi - +- [`delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete) +- [La gestion de la mémoire en JavaScript](/fr/docs/Web/JavaScript/Gestion_de_la_mémoire) +- [TypeError: property "x" is non-configurable and can't be deleted](/en-US/docs/Web/JavaScript/Reference/Errors/Cant_delete) diff --git a/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md b/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md index 669f4903a9..d9aba3fe1e 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md @@ -8,31 +8,31 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_caller_or_arguments_usage --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: 'arguments', 'callee' and 'caller' are restricted function properties and cannot be accessed in this context (Edge)
-Warning: ReferenceError: deprecated caller usage (Firefox)
-Warning: ReferenceError: deprecated arguments usage (Firefox)
-TypeError: 'callee' and 'caller' cannot be accessed in strict mode. (Safari)
-
+ TypeError: 'arguments', 'callee' and 'caller' are restricted function properties and cannot be accessed in this context (Edge) + Warning: ReferenceError: deprecated caller usage (Firefox) + Warning: ReferenceError: deprecated arguments usage (Firefox) + TypeError: 'callee' and 'caller' cannot be accessed in strict mode. (Safari) -

Type d'erreur

+## Type d'erreur -

Un avertissement uniquement affiché en mode strict qui prend la forme d'une {{jsxref("ReferenceError")}}. L'exécution du script JavaScript n'est pas interrompue.

+Un avertissement uniquement affiché en mode strict qui prend la forme d'une {{jsxref("ReferenceError")}}. L'exécution du script JavaScript n'est pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

En mode strict, les propriétés {{jsxref("Function.caller")}} et/ou {{jsxref("Function.arguments")}} sont utilisées alors qu'elles ne devraient pas l'être. Ces propriétés sont dépréciées car elles font fuiter des informations sur l'appelant de la fonction et ne sont pas standards. De plus, ces propriétés rendent certaines optimisations plus complexe et peuvent nuire aux performances.

+[En mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), les propriétés {{jsxref("Function.caller")}} et/ou {{jsxref("Function.arguments")}} sont utilisées alors qu'elles ne devraient pas l'être. Ces propriétés sont dépréciées car elles font fuiter des informations sur l'appelant de la fonction et ne sont pas standards. De plus, ces propriétés rendent certaines optimisations plus complexe et peuvent nuire aux performances. -

Exemples

+## Exemples -

Utilisation de function.caller ou de arguments.callee.caller

+### Utilisation de `function.caller` ou de `arguments.callee.caller` -

{{jsxref("Function.caller")}} et arguments.callee.caller sont dépréciées (se référer aux articles de la référence pour plus d'informations).

+{{jsxref("Function.caller")}} et [`arguments.callee.caller`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/callee) sont dépréciées (se référer aux articles de la référence pour plus d'informations). -
"use strict";
+```js example-bad
+"use strict";
 
 function myFunc() {
   if (myFunc.caller == null) {
@@ -44,19 +44,21 @@ function myFunc() {
 
 myFunc();
 // Warning: ReferenceError: deprecated caller usage
-// "La fonction a été appelée depuis la portée globale !"
+// "La fonction a été appelée depuis la portée globale !" +``` -

Function.arguments

+### `Function.arguments` -

{{jsxref("Function.arguments")}} est dépréciée (se référer à l'article sur cette propriété pour plus d'informations).

+{{jsxref("Function.arguments")}} est dépréciée (se référer à l'article sur cette propriété pour plus d'informations). -
"use strict";
+```js example-bad
+"use strict";
 
 function f(n) { g(n - 1); }
 
 function g(n) {
   console.log('before: ' + g.arguments[0]);
-  if (n > 0) { f(n); }
+  if (n > 0) { f(n); }
   console.log('after: ' + g.arguments[0]);
 }
 
@@ -64,13 +66,11 @@ f(2);
 
 console.log('returned: ' + g.arguments);
 // Warning: ReferenceError: deprecated arguments usage
-
+``` -

Voir aussi

+## Voir aussi - +- [Les fonctionnalités obsolètes et dépréciées](/fr/docs/JavaScript/Reference/Annexes/Fonctionnalités_dépréciées) +- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) +- {{jsxref("Function.arguments")}} +- {{jsxref("Function.caller")}} and [`arguments.callee.caller`](/fr/docs/Web/JavaScript/Reference/Functions/arguments/callee) diff --git a/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md b/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md index 5cd6889b74..8f709e61a9 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md @@ -8,73 +8,76 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_expression_closures --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: expression closures are deprecated
-
+ Warning: expression closures are deprecated -

Type d'erreur

+## Type d'erreur -

Un avertissement, l'exécution du code JavaScript ne sera pas interrompue.

+Un avertissement, l'exécution du code JavaScript ne sera pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

La syntaxe non-standard avec une expression de fermeture est dépréciée et ne devrait plus être utilisée. Cette syntaxe sera complètement retirée avec le bug {{bug(1083458)}} et les scripts qui l'utilisent déclencheront alors une exception {{jsxref("SyntaxError")}}.

+La syntaxe non-standard avec [une expression de fermeture](/fr/docs/Web/JavaScript/Reference/Opérateurs/Expression_closures) est dépréciée et ne devrait plus être utilisée. Cette syntaxe sera complètement retirée avec le bug {{bug(1083458)}} et les scripts qui l'utilisent déclencheront alors une exception {{jsxref("SyntaxError")}}. -

Exemples

+## Exemples -

Syntaxe dépréciée

+### Syntaxe dépréciée -

Les expression de fermeture permettent de ne pas utiliser les accolades ou les instructions return au sein d'une déclaration de fonction ou pour une définition de méthode dans un objet.

+Les expression de fermeture permettent de ne pas utiliser les accolades ou les instructions `return` au sein d'une déclaration de fonction ou pour une définition de méthode dans un objet. -
var x = function() 1;
+```js example-bad
+var x = function() 1;
 
 var obj = {
   count: function() 1
 };
-
+``` -

Syntaxe standard

+### Syntaxe standard -

Pour convertir cette syntaxe non-standard en une syntaxe standard, il suffit d'ajouter des accolades et l'instruction return.

+Pour convertir cette syntaxe non-standard en une syntaxe standard, il suffit d'ajouter des accolades et l'instruction return. -
var x = function() { return 1; }
+```js example-good
+var x = function() { return 1; }
 
 var obj = {
   count: function() { return 1; }
 };
-
+``` -

Syntaxe standard avec les fonctions fléchées

+### Syntaxe standard avec les fonctions fléchées -

On peut aussi utiliser les fonctions fléchées :

+On peut aussi utiliser [les fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées) : -
var x = () => 1;
+```js example-good +var x = () => 1; +``` -

Syntaxe standard avec la notation raccourcie pour les méthodes

+### Syntaxe standard avec la notation raccourcie pour les méthodes -

On retrouve parfois les expressions de fermeture dans les accesseurs et les mutateurs, par exemple :

+On retrouve parfois les expressions de fermeture dans les accesseurs et les mutateurs, par exemple : -
var obj = {
+```js example-bad
+var obj = {
   get x() 1,
   set x(v) this.v = v
 };
-
+``` -

Grâce aux définitions de méthodes ES2015, on peut convertir le fragment de code précédent en :

+Grâce aux [définitions de méthodes](/fr/docs/Web/JavaScript/Reference/Fonctions/Définition_de_méthode) ES2015, on peut convertir le fragment de code précédent en : -
var obj = {
+```js example-good
+var obj = {
   get x() { return 1 },
   set x(v) { this.v = v }
 };
-
+``` -

Voir aussi

+## Voir aussi - +- [Les expressions de fermeture](/fr/docs/Web/JavaScript/Reference/Opérateurs/Expression_closures) +- [Les fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées) +- [Les définitions de méthode](/fr/docs/Web/JavaScript/Reference/Fonctions/Définition_de_méthode) diff --git a/files/fr/web/javascript/reference/errors/deprecated_octal/index.md b/files/fr/web/javascript/reference/errors/deprecated_octal/index.md index 067c0a363a..9b9b9c92f6 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_octal/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_octal/index.md @@ -9,61 +9,62 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_octal original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_octal --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Octal numeric literals and escape characters not allowed in strict mode (Edge)
-SyntaxError:
-"0"-prefixed octal literals and octal escape sequences are deprecated;
-for octal literals use the "0o" prefix instead
-
+ SyntaxError: Octal numeric literals and escape characters not allowed in strict mode (Edge) + SyntaxError: + "0"-prefixed octal literals and octal escape sequences are deprecated; + for octal literals use the "0o" prefix instead -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+{{jsxref("SyntaxError")}}, uniquement en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

Les littéraux en base octale et les séquences d'échappement octales sont dépréciées et lèvent une exception {{jsxref("SyntaxError")}} en mode strict. À partir d'ECMAScript 2015, la syntaxe standard utilise un zéro suivi de la lettre « o » (en minuscule ou en majuscule) (0o or 0O).

+Les littéraux en base octale et les séquences d'échappement octales sont dépréciées et lèvent une exception {{jsxref("SyntaxError")}} en mode strict. À partir d'ECMAScript 2015, la syntaxe standard utilise un zéro suivi de la lettre « o » (en minuscule ou en majuscule) (`0o` or `0O)`. -

Exemples

+## Exemples -

Littéraux en base octale préfixés par 0

+### Littéraux en base octale préfixés par 0 -
"use strict";
+```js example-bad
+"use strict";
 
 03;
 
 // SyntaxError: "0"-prefixed octal literals and octal escape sequences
-// are deprecated
+// are deprecated +``` -

Séquences d'échappement en base octale

+### Séquences d'échappement en base octale -
"use strict";
+```js example-bad
+"use strict";
 
 "\251";
 
 // SyntaxError: "0"-prefixed octal literals and octal escape sequences
 // are deprecated
-
+``` -

Littéraux valides

+### Littéraux valides -

Pour former un littéral en base octal, on pourra utiliser un zéro suivi de la lettre « o » :

+Pour former un littéral en base octal, on pourra utiliser un zéro suivi de la lettre « o » : -
0o3;
-
+```js example-good +0o3; +``` -

Pour former une séquence d'échappement en base octale, on écrira une séquence d'échappement en base hexadécimale :

+Pour former une séquence d'échappement en base octale, on écrira une séquence d'échappement en base hexadécimale : -
'\xA9';
+```js example-good +'\xA9'; +``` -

Voir aussi

+## Voir aussi - +- [La grammaire lexicale JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Octaux) +- [Warning: 08/09 is not a legal ECMA-262 octal constant](/fr/docs/Web/JavaScript/Reference/Erreurs/Bad_octal) diff --git a/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md b/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md index 8d36de23af..f08481d96a 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md @@ -10,50 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_source_map_pragma --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
+    Warning: SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
 
-Warning: SyntaxError: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
-
+ Warning: SyntaxError: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead -

Type d'erreur

+## Type d'erreur -

Un avertissement prenant la forme d'une exception {{jsxref("SyntaxError")}}. L'exécution du code JavaScript n'est pas interrompue.

+Un avertissement prenant la forme d'une exception {{jsxref("SyntaxError")}}. L'exécution du code JavaScript n'est pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

Une syntaxe dépréciée a été utilisée pour indiquer une correspondance de source (source map) dans le code JavaScript.

+Une syntaxe dépréciée a été utilisée pour indiquer une correspondance de source (_source map_) dans le code JavaScript. -

Il arrive souvent que les fichiers sources JavaScript soient combinés et minifiés afin que le transfert depuis le serveur vers le client soit plus efficace. Grâce aux correspondances de source (ou source maps), le débogueur peut utiliser les sources des fichiers correspondants aux fichiers minifiés.

+Il arrive souvent que les fichiers sources JavaScript soient combinés et minifiés afin que le transfert depuis le serveur vers le client soit plus efficace. Grâce [aux correspondances de source (ou _source maps_)](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/), le débogueur peut utiliser les sources des fichiers correspondants aux fichiers minifiés. -

La spécification sur cet outil a évolué car il existait un conflit de syntaxe avec IE (après //@cc_on, la correspondance était interprétée comme un test conditionnel de compilation du moteur JScript). Ce commentaire de compilation conditionnelle pour IE est peu connu mais son existence entraînait des erreurs avec jQuery et d'autres bibliothèques.

+La spécification sur cet outil a évolué car il existait un conflit de syntaxe avec IE (après `//@cc_on`, la correspondance était interprétée comme un test conditionnel de compilation du moteur JScript).[ Ce commentaire de compilation conditionnelle](https://msdn.microsoft.com/en-us/library/8ka90k2e%28v=vs.94%29.aspx) pour IE est peu connu mais son existence entraînait des erreurs avec [jQuery](https://bugs.jquery.com/ticket/13274) et d'autres bibliothèques. -

Exemples

+## Exemples -

Syntaxe dépréciée

+### Syntaxe dépréciée -

La syntaxe utilisant l'arobase (@) est dépréciée :

+La syntaxe utilisant l'arobase (@) est dépréciée : -
//@ sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map
-
+```js example-bad +//@ sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map +``` -

Syntaxe standard

+### Syntaxe standard -

Il faut utiliser le dièse (#) :

+Il faut utiliser le dièse (#) : -
//# sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map
+```js example-good +//# sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map +``` -

Autrement, on peut indiquer la correspondance dans un en-tête {{HTTPHeader("SourceMap")}} pour servir le fichier JavaScript afin d'éviter tout commentaire :

+Autrement, on peut indiquer la correspondance dans un en-tête {{HTTPHeader("SourceMap")}} pour servir le fichier JavaScript afin d'éviter tout commentaire : -
X-SourceMap: /path/to/file.js.map
+```js example-good +X-SourceMap: /path/to/file.js.map +``` -

Voir aussi

+## Voir aussi - +- [Comment utiliser les _source map_ – Documentation des outils Firefox](/fr/docs/Outils/Débogueur/Comment/Utiliser_une_source_map) +- [Introduction to source maps – HTML5 rocks](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) +- {{HTTPHeader("SourceMap")}} diff --git a/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md b/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md index f348c0b4d8..fa9305c553 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md @@ -8,65 +8,66 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_String_generics original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_String_generics --- -
{{jsSidebar("Errors")}}
- -
Les méthodes génériques pour les chaînes de caractères ont été retirées à partir de Firefox 68.
- -

Message

- -
Warning: String.charAt            is deprecated; use String.prototype.charAt            instead
-Warning: String.charCodeAt        is deprecated; use String.prototype.charCodeAt        instead
-Warning: String.concat            is deprecated; use String.prototype.concat            instead
-Warning: String.contains          is deprecated; use String.prototype.contains          instead
-Warning: String.endsWith          is deprecated; use String.prototype.endsWith          instead
-Warning: String.includes          is deprecated; use String.prototype.includes          instead
-Warning: String.indexOf           is deprecated; use String.prototype.indexOf           instead
-Warning: String.lastIndexOf       is deprecated; use String.prototype.lastIndexOf       instead
-Warning: String.localeCompare     is deprecated; use String.prototype.localeCompare     instead
-Warning: String.match             is deprecated; use String.prototype.match             instead
-Warning: String.normalize         is deprecated; use String.prototype.normalize         instead
-Warning: String.replace           is deprecated; use String.prototype.replace           instead
-Warning: String.search            is deprecated; use String.prototype.search            instead
-Warning: String.slice             is deprecated; use String.prototype.slice             instead
-Warning: String.split             is deprecated; use String.prototype.split             instead
-Warning: String.startsWith        is deprecated; use String.prototype.startsWith        instead
-Warning: String.substr            is deprecated; use String.prototype.substr            instead
-Warning: String.substring         is deprecated; use String.prototype.substring         instead
-Warning: String.toLocaleLowerCase is deprecated; use String.prototype.toLocaleLowerCase instead
-Warning: String.toLocaleUpperCase is deprecated; use String.prototype.toLocaleUpperCase instead
-Warning: String.toLowerCase       is deprecated; use String.prototype.toLowerCase       instead
-Warning: String.toUpperCase       is deprecated; use String.prototype.toUpperCase       instead
-Warning: String.trim              is deprecated; use String.prototype.trim              instead
-Warning: String.trimLeft          is deprecated; use String.prototype.trimLeft          instead
-Warning: String.trimRight         is deprecated; use String.prototype.trimRight         instead
-
- -

Type d'erreur

- -

Un avertissement, l'exécution du script n'est pas interrompue.

- -

Quel est le problème ?

- -

Les méthodes génériques non-standards de {{jsxref("String")}} sont dépréciées et ont été retirées à partir de Firefox 68 (il n'y a pas de prise en charge des navigateurs en dehors de Firefox). Les méthodes génériques sont des méthodes utilisées pour manipuler les instances de ce type d'objet et qui sont disponibles sur l'objet String, ce qui permet de les appliquer à n'importe quel objet.

- -

Exemples

- -

Syntaxe dépréciée

- -
var num = 15;
-String.replace(num, /5/, '2');
- -

Syntaxe standard

- -
var num = 15;
+{{jsSidebar("Errors")}}Les méthodes génériques pour les chaînes de caractères ont été retirées à partir de Firefox 68.
+
+## Message
+
+    Warning: String.charAt            is deprecated; use String.prototype.charAt            instead
+    Warning: String.charCodeAt        is deprecated; use String.prototype.charCodeAt        instead
+    Warning: String.concat            is deprecated; use String.prototype.concat            instead
+    Warning: String.contains          is deprecated; use String.prototype.contains          instead
+    Warning: String.endsWith          is deprecated; use String.prototype.endsWith          instead
+    Warning: String.includes          is deprecated; use String.prototype.includes          instead
+    Warning: String.indexOf           is deprecated; use String.prototype.indexOf           instead
+    Warning: String.lastIndexOf       is deprecated; use String.prototype.lastIndexOf       instead
+    Warning: String.localeCompare     is deprecated; use String.prototype.localeCompare     instead
+    Warning: String.match             is deprecated; use String.prototype.match             instead
+    Warning: String.normalize         is deprecated; use String.prototype.normalize         instead
+    Warning: String.replace           is deprecated; use String.prototype.replace           instead
+    Warning: String.search            is deprecated; use String.prototype.search            instead
+    Warning: String.slice             is deprecated; use String.prototype.slice             instead
+    Warning: String.split             is deprecated; use String.prototype.split             instead
+    Warning: String.startsWith        is deprecated; use String.prototype.startsWith        instead
+    Warning: String.substr            is deprecated; use String.prototype.substr            instead
+    Warning: String.substring         is deprecated; use String.prototype.substring         instead
+    Warning: String.toLocaleLowerCase is deprecated; use String.prototype.toLocaleLowerCase instead
+    Warning: String.toLocaleUpperCase is deprecated; use String.prototype.toLocaleUpperCase instead
+    Warning: String.toLowerCase       is deprecated; use String.prototype.toLowerCase       instead
+    Warning: String.toUpperCase       is deprecated; use String.prototype.toUpperCase       instead
+    Warning: String.trim              is deprecated; use String.prototype.trim              instead
+    Warning: String.trimLeft          is deprecated; use String.prototype.trimLeft          instead
+    Warning: String.trimRight         is deprecated; use String.prototype.trimRight         instead
+
+## Type d'erreur
+
+Un avertissement, l'exécution du script n'est pas interrompue.
+
+## Quel est le problème ?
+
+Les méthodes génériques non-standards de {{jsxref("String")}} sont dépréciées et ont été retirées à partir de Firefox 68 (il n'y a pas de prise en charge des navigateurs en dehors de Firefox). Les méthodes génériques sont des méthodes utilisées pour manipuler les instances de ce type d'objet et qui sont disponibles sur l'objet `String`, ce qui permet de les appliquer à n'importe quel objet.
+
+## Exemples
+
+### Syntaxe dépréciée
+
+```js example-bad
+var num = 15;
+String.replace(num, /5/, '2');
+```
+
+### Syntaxe standard
+
+```js example-good
+var num = 15;
 String(num).replace(/5/, '2');
-
+``` -

Shim

+## Shim -

Voici une méthode qui permet d'avoir les méthodes génériques au sein des navigateurs qui ne les prennent pas en charge :

+Voici une méthode qui permet d'avoir les méthodes génériques au sein des navigateurs qui ne les prennent pas en charge : -
/*globals define*/
+```js
+/*globals define*/
 // Assumes all supplied String instance methods already present
 // (one may use shims for these if not available)
 (function() {
@@ -93,14 +94,13 @@ String(num).replace(/5/, '2');
       };
     };
 
-  for (i = 0; i < methodCount; i++) {
+  for (i = 0; i < methodCount; i++) {
     assignStringGeneric(methods[i]);
   }
-}());
+}()); +``` -

Voir aussi

+## Voir aussi - +- {{jsxref("String")}} +- [Les méthodes génériques pour les tableaux](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array#Les_méthodes_génériques_de_manipulation_de_tableaux) (également dépréciées). diff --git a/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md b/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md index 444295566c..362fb57677 100644 --- a/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md +++ b/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md @@ -8,85 +8,89 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_toLocaleFormat --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead
-
+ Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead -

Type d'erreur

+## Type d'erreur -

Un avertissement, l'exécution du script JavaScript n'est pas interrompue.

+Un avertissement, l'exécution du script JavaScript n'est pas interrompue. -

Quel est le problème ?

+## Quel est le problème ? -

La méthode non-standard {{jsxref("Date.prototype.toLocaleFormat")}} est dépréciée et ne devrait plus être utilisée. Elle utilise une chaîne de caractères qui indique le format avec la même syntaxe que la fonction strftime() en C. Cette fonction n'est plus disponible à partir de Firefox 58.

+La méthode non-standard {{jsxref("Date.prototype.toLocaleFormat")}} est dépréciée et ne devrait plus être utilisée. Elle utilise une chaîne de caractères qui indique le format avec la même syntaxe que la fonction `strftime()` en C. Cette fonction n'est plus disponible à partir de Firefox 58. -

Exemples

+## Exemples -

Syntaxe dépréciée

+### Syntaxe dépréciée -

La méthode {{jsxref("Date.prototype.toLocaleFormat")}} est dépréciée et sera retirée (aucune prise en charge par les autres navigateurs en dehors de Firefox).

+La méthode {{jsxref("Date.prototype.toLocaleFormat")}} est dépréciée et sera retirée (aucune prise en charge par les autres navigateurs en dehors de Firefox). -
var today = new Date();
+```js example-bad
+var today = new Date();
 var date = today.toLocaleFormat('%A %e %B %Y');
 
 console.log(date);
 // En français
-// "Vendredi 10 mars 2017"
+// "Vendredi 10 mars 2017" +``` -

Utiliser une syntaxe standard grâce à l'API ECMAScript Intl

+### Utiliser une syntaxe standard grâce à l'API ECMAScript Intl -

Le standard ECMA-402 (l'API ECMAScript Intl) définit des objets et méthodes standards qui permettent de mettre en forme des dates et heures (disponible à partir de Chrome 24, de Firefox 29, d'IE11 et de  Safari10).

+Le standard ECMA-402 (l'API ECMAScript Intl) définit des objets et méthodes standards qui permettent de mettre en forme des dates et heures (disponible à partir de Chrome 24, de Firefox 29, d'IE11 et de  Safari10). -

Si on souhaite uniquement formater une date, on pourra utiliser la méthode {{jsxref("Date.prototype.toLocaleDateString")}}.

+Si on souhaite uniquement formater une date, on pourra utiliser la méthode {{jsxref("Date.prototype.toLocaleDateString")}}. -
var today = new Date();
+```js example-good
+var today = new Date();
 var options = { weekday: 'long', year: 'numeric',
                 month: 'long', day: 'numeric' };
 var date = today.toLocaleDateString('fr-FR', options);
 
 console.log(date);
 // "Vendredi 10 mars 2017"
-
+``` -

Si on manipule plus de dates, on peut utiliser l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} qui permet de mettre en cache certains des calculs afin d'avoir une mise en forme rapide (ce qui s'avère utile lorsqu'on a une boucle par exemple) :

+Si on manipule plus de dates, on peut utiliser l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} qui permet de mettre en cache certains des calculs afin d'avoir une mise en forme rapide (ce qui s'avère utile lorsqu'on a une boucle par exemple) : -
var options = { weekday: 'long', year: 'numeric',
+```js example-good
+var options = { weekday: 'long', year: 'numeric',
                 month: 'long', day: 'numeric' };
 var dateFormatter = new Intl.DateTimeFormat('de-DE', options)
 
 var dates = [Date.UTC(2012, 11, 20, 3, 0, 0),
              Date.UTC(2014, 04, 12, 8, 0, 0)];
 
-dates.forEach(date => console.log(dateFormatter.format(date)));
+dates.forEach(date => console.log(dateFormatter.format(date)));
 
 // "Donnerstag, 20. Dezember 2012"
 // "Montag, 12. Mai 2014"
-
+``` -

Utiliser les méthodes de l'objet Date

+### Utiliser les méthodes de l'objet `Date` -

L'objet {{jsxref("Date")}} dispose de plusieurs méthodes qui permettent de construire une chaîne de caractères pour une date donnée. Ainsi

+L'objet {{jsxref("Date")}} dispose de plusieurs méthodes qui permettent de construire une chaîne de caractères pour une date donnée. Ainsi -
(new Date()).toLocaleFormat("%Y%m%d");
+```js example-bad
+(new Date()).toLocaleFormat("%Y%m%d");
 // "20170310"
-
+``` -

Pourra être converti en :

+Pourra être converti en : -
let now = new Date();
+```js example-good
+let now = new Date();
 let date = now.getFullYear() * 10000 +
           (now.getMonth() + 1) * 100 + now.getDate();
 
 console.log(date);
-// "20170310"
+// "20170310" +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Date.prototype.toLocaleFormat")}}
  • -
  • {{jsxref("Date.prototype.toLocaleDateString")}}
  • -
  • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
  • -
+- {{jsxref("Date.prototype.toLocaleFormat")}} +- {{jsxref("Date.prototype.toLocaleDateString")}} +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} diff --git a/files/fr/web/javascript/reference/errors/equal_as_assign/index.md b/files/fr/web/javascript/reference/errors/equal_as_assign/index.md index 2e420be691..400fb4a797 100644 --- a/files/fr/web/javascript/reference/errors/equal_as_assign/index.md +++ b/files/fr/web/javascript/reference/errors/equal_as_assign/index.md @@ -8,47 +8,49 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign original_slug: Web/JavaScript/Reference/Erreurs/Equal_as_assign --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: SyntaxError: test for equality (==) mistyped as assignment (=)?
-
+ Warning: SyntaxError: test for equality (==) mistyped as assignment (=)? -

Type d'erreur

+## Type d'erreur -

Uniquement pour Firefox. Un avertissement sous la forme d'une exception {{jsxref("SyntaxError")}}, généré uniquement si la préférence javascript.options.strict vaut true.

+Uniquement pour Firefox. Un avertissement sous la forme d'une exception {{jsxref("SyntaxError")}}, généré uniquement si la préférence `javascript.options.strict` vaut `true`. -

Quel est le problème ?

+## Quel est le problème ? -

Le code utilise une affectation (=) là où on attendrait un test d'égalité (==). Afin d'aider au débogage, le moteur JavaScript déclenche des avertissements lorsqu'il détecte ce motif.

+Le code utilise une affectation (`=`) là où on attendrait un test d'égalité (`==`). Afin d'aider au débogage, le moteur JavaScript déclenche des avertissements lorsqu'il détecte ce motif. -

Exemples

+## Exemples -

Des affectations utilisées au sein d'expressions conditionnelles

+### Des affectations utilisées au sein d'expressions conditionnelles -

Il est conseillé de ne pas utiliser d'affectations simples dans des expressions conditionnelles (comme le test effectué avec if...else) car on peut confondre les deux à la lecture du code. Ainsi, on n'utilisera pas la forme suivante :

+Il est conseillé de ne pas utiliser d'affectations simples dans des expressions conditionnelles (comme le test effectué avec [`if...else`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else)) car on peut confondre les deux à la lecture du code. Ainsi, on n'utilisera pas la forme suivante : -
if (x = y) {
+```js example-bad
+if (x = y) {
   // do the right thing
 }
-
+``` -

Si on doit effectivement affecter une variable dans une expression conditionnelle, on entourera l'affectation d'une paire de parenthèses supplémentaires afin de montrer qu'on veut bien effectuer une affectation, comme ceci :

+Si on doit effectivement affecter une variable dans une expression conditionnelle, on entourera l'affectation d'une paire de parenthèses supplémentaires afin de montrer qu'on veut bien effectuer une affectation, comme ceci : -
if ((x = y)) {
+```js
+if ((x = y)) {
   // exécuter le code
-}
+} +``` -

Autrement (généralement), on veut plutôt utiliser un opérateur de comparaison (== ou === par exemple) :

+Autrement (généralement), on veut plutôt utiliser un opérateur de comparaison (`==` ou `===` par exemple) : -
if (x == y) {
+```js
+if (x == y) {
   // exécuter le code
-}
+} +``` -

Voir aussi

+## Voir aussi - +- [`if...else`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else) +- [Les opérateurs de comparaison](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison) diff --git a/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md b/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md index 26954d8e79..7d1e4dc118 100644 --- a/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md +++ b/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md @@ -7,95 +7,100 @@ tags: translation_of: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated original_slug: Web/JavaScript/Reference/Erreurs/For-each-in_loops_are_deprecated --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead
-
+ Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead -

Type d'erreur

+## Type d'erreur -

Avertissement.

+Avertissement. -

Quel est le problème ?

+## Quel est le problème ? -

L'instruction {{jsxref("Instructions/for_each...in", "for each (variable in obj)")}} présente à partir de JavaScript 1.6 est une instruction dépréciée et est amenée à disparaître dans un avenir proche.

+L'instruction {{jsxref("Instructions/for_each...in", "for each (variable in obj)")}} présente à partir de JavaScript 1.6 est une instruction dépréciée et est amenée à disparaître dans un avenir proche. -

Exemples

+## Exemples -

Itérer sur un objet

+### Itérer sur un objet -

{{jsxref("Instructions/for_each...in", "for each...in")}} pouvait être utilisé pour parcourir les valeurs contenues dans un objet.

+{{jsxref("Instructions/for_each...in", "for each...in")}} pouvait être utilisé pour parcourir les valeurs contenues dans un objet. -

Syntaxe dépréciée

+#### Syntaxe dépréciée -
var objet = { a: 10, b: 20 };
+```js example-bad
+var objet = { a: 10, b: 20 };
 
 for each (var x in objet) {
   console.log(x);        // 10
                          // 20
 }
-
+``` -

Syntaxe alternative, standard

+#### Syntaxe alternative, standard -

On peut désormais utilisé l'instruction de boucle standard {{jsxref("Instructions/for...in", "for...in")}} afin d'itérer sur les clés d'un objet et de récupérer les valeurs des propriétés :

+On peut désormais utilisé l'instruction de boucle standard {{jsxref("Instructions/for...in", "for...in")}} afin d'itérer sur les clés d'un objet et de récupérer les valeurs des propriétés : -
var objet = { a: 10, b: 20 };
+```js example-good
+var objet = { a: 10, b: 20 };
 
 for (var key in objet) {
   var x = objet[key];
   console.log(x);        // 10
                          // 20
 }
-
+``` -

Ou alors, on peut utiliser {{jsxref("Instructions/for...of", "for...of")}} (ES2015) et {{jsxref("Object.values")}} (ES2017) afin d'obtenir un tableau des valeurs associées à un objet pour ensuite le parcourir :

+Ou alors, on peut utiliser {{jsxref("Instructions/for...of", "for...of")}} (ES2015) et {{jsxref("Object.values")}} (ES2017) afin d'obtenir un tableau des valeurs associées à un objet pour ensuite le parcourir : -
var objet = { a: 10, b: 20 };
+```js example-good
+var objet = { a: 10, b: 20 };
 
 for (var x of Object.values(objet)) {
   console.log(x);        // 10
                          // 20
 }
-
+``` -

Itérer sur un tableau

+### Itérer sur un tableau -

{{jsxref("Instructions/for_each...in", "for each...in")}} pouvait être utilisée afin de parcourir les éléments d'un tableau.

+{{jsxref("Instructions/for_each...in", "for each...in")}} pouvait être utilisée afin de parcourir les éléments d'un tableau. -

Syntaxe dépréciée

+#### Syntaxe dépréciée -
var array = [10, 20, 30];
+```js example-bad
+var array = [10, 20, 30];
 
 for each (var x in array) {
   console.log(x);        // 10
                          // 20
                          // 30
 }
-
+``` -

Syntaxe alternative, standard

+#### Syntaxe alternative, standard -

On peut obtenir le même effet avec les boucles {{jsxref("Instructions/for...of", "for...of")}} (ES2015).

+On peut obtenir le même effet avec les boucles {{jsxref("Instructions/for...of", "for...of")}} (ES2015). -
var array = [10, 20, 30];
+```js example-good
+var array = [10, 20, 30];
 
 for (var x of array) {
   console.log(x);        // 10
                          // 20
                          // 30
 }
-
+``` -

Parcourir un tableau qui vaille null ou undefined

+### Parcourir un tableau qui vaille `null` ou `undefined` -

{{jsxref("Instructions/for_each...in", "for each...in")}} ne fera rien si la valeur fournie est null ou undefined. En revanche, {{jsxref("Instructions/for...of", "for...of")}} lèvera une exception dans ces cas.

+{{jsxref("Instructions/for_each...in", "for each...in")}} ne fera rien si la valeur fournie est `null` ou `undefined`. En revanche, {{jsxref("Instructions/for...of", "for...of")}} lèvera une exception dans ces cas. -

Syntaxe dépréciée

+#### Syntaxe dépréciée -
function func(array) {
+```js example-bad
+function func(array) {
   for each (var x in array) {
     console.log(x);
   }
@@ -104,13 +109,14 @@ func([10, 20]);        // 10
                        // 20
 func(null);            // rien ne s'affiche
 func(undefined);       // rien ne s'affiche
-
+``` -

Syntaxe alternative, standard

+#### Syntaxe alternative, standard -

Pour réécrire les instructions {{jsxref("Instructions/for_each...in", "for each...in")}} afin que les valeurs null ou undefined puissent être gérées avec {{jsxref("Instructions/for...of", "for...of")}}, il faudra rajouter une protection :

+Pour réécrire les instructions {{jsxref("Instructions/for_each...in", "for each...in")}} afin que les valeurs `null` ou `undefined` puissent être gérées avec {{jsxref("Instructions/for...of", "for...of")}}, il faudra rajouter une protection : -
function func(array) {
+```js example-good
+function func(array) {
   if (array) {
     for (var x of array) {
       console.log(x);
@@ -121,49 +127,50 @@ func([10, 20]);        // 10
                        // 20
 func(null);            // rien ne s'affiche
 func(undefined);       // rien ne s'affiche
-
+``` -

Itérer sur les tuples clé-valeur d'un objet

+### Itérer sur les tuples clé-valeur d'un objet -

Syntaxe dépréciée

+#### Syntaxe dépréciée -

On pouvait utiliser une forme syntaxique particulière, désormais dépréciée, qui combine {{jsxref("Instructions/for_each...in", "for each...in")}} et l'objet déprécié {{jsxref("Iterator")}}.

+On pouvait utiliser une forme syntaxique particulière, désormais dépréciée, qui combine {{jsxref("Instructions/for_each...in", "for each...in")}} et l'objet déprécié {{jsxref("Iterator")}}. -
var object = { a: 10, b: 20 };
+```js example-bad
+var object = { a: 10, b: 20 };
 
 for each (var [key, value] in Iterator(object)) {
   console.log(key, value);  // "a", 10
                             // "b", 20
 }
-
+``` -

Syntaxe alternative, standard

+#### Syntaxe alternative, standard -

On peut désormais utiliser la boucle {{jsxref("Instructions/for...in", "for...in")}} afin de parcourir les différentes clés d'un objet pour ensuite récupérer les valeurs associées :

+On peut désormais utiliser la boucle {{jsxref("Instructions/for...in", "for...in")}} afin de parcourir les différentes clés d'un objet pour ensuite récupérer les valeurs associées : -
var object = { a: 10, b: 20 };
+```js example-good
+var object = { a: 10, b: 20 };
 
 for (var key in object) {
   var value = object[key];
   console.log(key, value);  // "a", 10
                             // "b", 20
 }
-
+``` -

Ou encore, on peut utiliser {{jsxref("Instructions/for...of", "for...of")}} (ES2015) et {{jsxref("Object.entries")}} (ES2017) pour récupérer un tableau contenant les clés et les valeurs d'un objet qu'on pourra ensuite parcourir :

+Ou encore, on peut utiliser {{jsxref("Instructions/for...of", "for...of")}} (ES2015) et {{jsxref("Object.entries")}} (ES2017) pour récupérer un tableau contenant les clés et les valeurs d'un objet qu'on pourra ensuite parcourir : -
var object = { a: 10, b: 20 };
+```js example-good
+var object = { a: 10, b: 20 };
 
 for (var [key, value] of Object.entries(object)) {
   console.log(key, value);  // "a", 10
                             // "b", 20
 }
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Instructions/for...of", "for...of")}}
  • -
  • {{jsxref("Object.values")}}
  • -
  • {{jsxref("Object.entries")}}
  • -
+- {{jsxref("Instructions/for...of", "for...of")}} +- {{jsxref("Object.values")}} +- {{jsxref("Object.entries")}} diff --git a/files/fr/web/javascript/reference/errors/getter_only/index.md b/files/fr/web/javascript/reference/errors/getter_only/index.md index 01fd2c0e14..d308e5b583 100644 --- a/files/fr/web/javascript/reference/errors/getter_only/index.md +++ b/files/fr/web/javascript/reference/errors/getter_only/index.md @@ -9,28 +9,28 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Getter_only original_slug: Web/JavaScript/Reference/Erreurs/Getter_only --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge)
-TypeError: setting getter-only property "x" (Firefox)
-TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome)
-
+ TypeError: Assignment to read-only properties is not allowed in strict mode (Edge) + TypeError: setting getter-only property "x" (Firefox) + TypeError: Cannot set property "prop" of # which has only a getter (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}, uniquement en mode strict.

+{{jsxref("TypeError")}}, uniquement en [mode strict](/en-US/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

On essaie de fournir une nouvelle valeur pour une propriété qui ne dispose que d'un accesseur. Ceci échouera en mode non-strict mais lèvera une exception {{jsxref("TypeError")}} en mode strict.

+On essaie de fournir une nouvelle valeur pour une propriété qui ne dispose que d'un [accesseur](/fr/docs/Web/JavaScript/Reference/Fonctions/get). Ceci échouera en mode non-strict mais lèvera une exception {{jsxref("TypeError")}} en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Exemples

+## Exemples -

Dans l'exemple qui suit, on voit comment créer un accesseur sur une propriété. En revanche, dans la définition de l'objet, on n'inclut aucun mutateur et une exception TypeError sera déclenchée lorsqu'on voudra modifier la propriété temperature pour la passer à 30. Pour plus de détails, on pourra consulter la page {{jsxref("Object.defineProperty()")}}.

+Dans l'exemple qui suit, on voit comment créer un accesseur sur une propriété. En revanche, dans la définition de l'objet, on n'inclut aucun [mutateur](/fr/docs/Web/JavaScript/Reference/Fonctions/set) et une exception `TypeError` sera déclenchée lorsqu'on voudra modifier la propriété `temperature` pour la passer à `30`. Pour plus de détails, on pourra consulter la page {{jsxref("Object.defineProperty()")}}. -
"use strict";
+```js example-bad
+"use strict";
 
 function Archiver() {
   var temperature = null;
@@ -47,11 +47,12 @@ arc.temperature; // 'get!'
 
 arc.temperature = 30;
 // TypeError: setting a property that has only a getter
-
+``` -

Pour corriger cette erreur, soit on retire la ligne 16 (où on tente de modifier la propriété) soit on implémente un mutateur, comme ceci :

+Pour corriger cette erreur, soit on retire la ligne 16 (où on tente de modifier la propriété) soit on implémente un mutateur, comme ceci : -
"use strict";
+```js example-good
+"use strict";
 
 function Archiver() {
   var temperature = null;
@@ -75,11 +76,10 @@ var arc = new Archiver();
 arc.temperature; // 'get!'
 arc.temperature = 11;
 arc.temperature = 13;
-arc.getArchive(); // [{ val: 11 }, { val: 13 }]
+arc.getArchive(); // [{ val: 11 }, { val: 13 }] +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Object.defineProperty()")}}
  • -
  • {{jsxref("Object.defineProperties()")}}
  • -
+- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.defineProperties()")}} diff --git a/files/fr/web/javascript/reference/errors/identifier_after_number/index.md b/files/fr/web/javascript/reference/errors/identifier_after_number/index.md index 1401b41432..b2ca711e5a 100644 --- a/files/fr/web/javascript/reference/errors/identifier_after_number/index.md +++ b/files/fr/web/javascript/reference/errors/identifier_after_number/index.md @@ -8,32 +8,32 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Identifier_after_number original_slug: Web/JavaScript/Reference/Erreurs/Identifier_after_number --- -
{{JSSidebar("Errors")}}
+{{JSSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Unexpected identifier after numeric literal (Edge)
-SyntaxError: identifier starts immediately after numeric literal (Firefox)
-SyntaxError: Unexpected number (Chrome)
-
+ SyntaxError: Unexpected identifier after numeric literal (Edge) + SyntaxError: identifier starts immediately after numeric literal (Firefox) + SyntaxError: Unexpected number (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Les noms qu'on donne aux variables (aussi appelés « identifiants ») doivent respecter certaines règles…

+Les noms qu'on donne aux variables (aussi appelés « identifiants ») doivent respecter certaines règles… -

En JavaScript, un identifiant doit commencer par une lettre, un tiret bas (_) ou un dollar ($), il ne peut pas commencer par un chiffre. Seuls les caractères après le premier peuvent être des chiffres.

+En JavaScript, un identifiant doit commencer par une lettre, un tiret bas (\_) ou un dollar ($), il ne peut pas commencer par un chiffre. Seuls les caractères après le premier peuvent être des chiffres. -

Exemples

+## Exemples -

Des variables dont le nom commence par un chiffre

+### Des variables dont le nom commence par un chiffre -

En JavaScript, les noms des variables ne peuvent pas commencer par un chiffre. Aussi, le script suivant provoquera des erreurs :

+En JavaScript, les noms des variables ne peuvent pas commencer par un chiffre. Aussi, le script suivant provoquera des erreurs : -
var 1vie = 'toto';
+```js example-bad
+var 1vie = 'toto';
 // SyntaxError: identifier starts immediately after numeric literal
 
 var toto = 1vie;
@@ -41,17 +41,16 @@ var toto = 1vie;
 
 alert(1.toto);
 // SyntaxError: identifier starts immediately after numeric literal
-
+``` -

Pour éviter ce problème, il faudra renommer les variables afin d'éviter d'utiliser un chiffre au début :

+Pour éviter ce problème, il faudra renommer les variables afin d'éviter d'utiliser un chiffre au début : -
var vie1 = 'toto';
+```js example-good
+var vie1 = 'toto';
 var toto = vie1;
-
+``` -

Voir aussi

+## Voir aussi - +- [La grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) +- [Les variables](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Variables) dans le [Guide JavaScript](/fr/docs/Web/JavaScript/Guide) diff --git a/files/fr/web/javascript/reference/errors/illegal_character/index.md b/files/fr/web/javascript/reference/errors/illegal_character/index.md index 9c886718f5..d1da414713 100644 --- a/files/fr/web/javascript/reference/errors/illegal_character/index.md +++ b/files/fr/web/javascript/reference/errors/illegal_character/index.md @@ -8,30 +8,30 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Illegal_character original_slug: Web/JavaScript/Reference/Erreurs/Illegal_character --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Invalid character (Edge)
-SyntaxError: illegal character (Firefox)
-SyntaxError: Invalid or unexpected token (Chrome)
-
+ SyntaxError: Invalid character (Edge) + SyntaxError: illegal character (Firefox) + SyntaxError: Invalid or unexpected token (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Dans le code, il y a un élément de la syntaxe qui n'est pas à la bonne place. Pour détecter les erreurs de ce type, vous pouvez utiliser un éditeur de texte qui prend en charge la coloration syntaxique et qui met en évidence les caractères problématiques (par exemple si on a utilisé un tiret () au lieu d'un moins ( - ) ou des guillemets anglais () à la place de doubles quotes ( " ).

+Dans le code, il y a un élément de la syntaxe qui n'est pas à la bonne place. Pour détecter les erreurs de ce type, vous pouvez utiliser un éditeur de texte qui prend en charge la coloration syntaxique et qui met en évidence les caractères problématiques (par exemple si on a utilisé un tiret (` – `) au lieu d'un moins ( - ) ou des guillemets anglais (` “ `) à la place de doubles quotes ( " ). -

Exemples

+## Exemples -

Caractères ressemblants

+### Caractères ressemblants -

Certains caractères ressemblent à des caractères spéciaux en JavaScript mais n'en sont pas. Dans ce cas, lorsque le moteur analysera le code, il échouera.

+Certains caractères ressemblent à des caractères spéciaux en JavaScript mais n'en sont pas. Dans ce cas, lorsque le moteur analysera le code, il échouera. -
“Ceci ressemble à une chaîne de caractères.”;
+```js example-bad
+“Ceci ressemble à une chaîne de caractères.”;
 // “ n'est pas le caractère "
 // SyntaxError: illegal character
 
@@ -40,45 +40,50 @@ SyntaxError: Invalid or unexpected token (Chrome)
 // SyntaxError: illegal character
 
 var toto = "truc";
-// ; (<37e>) n'est pas le caractère ;
+// ; (<37e>) n'est pas le caractère ;
 // SyntaxError: illegal character
-
+``` -

On peut corriger ce point en utilisant les bons caractères :

+On peut corriger ce point en utilisant les bons caractères : -
"Ceci est vraiment une chaîne de caractères.";
+```js example-good
+"Ceci est vraiment une chaîne de caractères.";
 42 - 13;
 var toto = "truc";
-
+``` -

Certains éditeurs et environnements de développement intégrés indiqueront la présence de tels caractères avec une coloration syntaxique différente. Toutefois, tous les éditeurs n'ont pas une telle fonctionnalité et si vous n'arrivez pas à déterminer l'origine du problème, il vaudra sans doute mieux supprimer la ligne incriminée et la resaisir manuellement.

+Certains éditeurs et environnements de développement intégrés indiqueront la présence de tels caractères avec une coloration syntaxique différente. Toutefois, tous les éditeurs n'ont pas une telle fonctionnalité et si vous n'arrivez pas à déterminer l'origine du problème, il vaudra sans doute mieux supprimer la ligne incriminée et la resaisir manuellement. -

Caractères oubliés

+### Caractères oubliés -

On oublie parfois un caractère.

+On oublie parfois un caractère. -
var couleurs = ['#000', #333', '#666'];
+```js example-bad
+var couleurs = ['#000', #333', '#666'];
 // SyntaxError: illegal character
-
+``` -

Dans ce cas, il suffit de rajouter la quote pour '#333'.

+Dans ce cas, il suffit de rajouter la quote pour `'#333'`. -
var couleurs = ['#000', '#333', '#666'];
+```js example-good +var couleurs = ['#000', '#333', '#666']; +``` -

Caractères cachés

+### Caractères cachés -

Lorsque vous copiez/collez du code depuis des sources externes, celles-ci peuvent contenir des caractères invalides difficiles à discerner.

+Lorsque vous copiez/collez du code depuis des sources externes, celles-ci peuvent contenir des caractères invalides difficiles à discerner. -
var toto = 'truc';​
+```js example-bad
+var toto = 'truc';​
 // SyntaxError: illegal character
-
+``` -

Lorsqu'on inspecte ce code grâce à un éditeur de texte (par exemple Vim), on peut voir qu'il y en fait un espace sans chasse (ZWSP) (U+200B).

+Lorsqu'on inspecte ce code grâce à un éditeur de texte (par exemple Vim), on peut voir qu'il y en fait un [espace sans chasse (ZWSP) (U+200B)](https://fr.wikipedia.org/wiki/Espace_sans_chasse). -
var toto = 'truc';​<200b>
+```js +var toto = 'truc';​<200b> +``` -

Voir aussi

+## Voir aussi - +- [La grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) diff --git a/files/fr/web/javascript/reference/errors/in_operator_no_object/index.md b/files/fr/web/javascript/reference/errors/in_operator_no_object/index.md index 104971982d..4a07499692 100644 --- a/files/fr/web/javascript/reference/errors/in_operator_no_object/index.md +++ b/files/fr/web/javascript/reference/errors/in_operator_no_object/index.md @@ -8,67 +8,71 @@ tags: translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object original_slug: Web/JavaScript/Reference/Erreurs/in_operator_no_object --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Invalid operand to 'in' (Edge)
-TypeError: right-hand side of 'in' should be an object, got 'x' (Firefox)
-TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome)
-
+ TypeError: Invalid operand to 'in' (Edge) + TypeError: right-hand side of 'in' should be an object, got 'x' (Firefox) + TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

L'opérateur in peut uniquement être utilisé pour vérifier qu'une propriété appartient à un objet. Il ne peut pas être utilisé pour rechercher des caractères dans des chaînes de caractères, des nombres ou dans d'autres types de données en dehors des objets.

+L'[opérateur `in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in) peut uniquement être utilisé pour vérifier qu'une propriété appartient à un objet. Il ne peut pas être utilisé pour rechercher des caractères dans des chaînes de caractères, des nombres ou dans d'autres types de données en dehors des objets. -

Exemples

+## Exemples -

Rechercher un texte dans une chaîne de caractères

+### Rechercher un texte dans une chaîne de caractères -

À la différence de certains langages de programmation (Python par exemple), JavaScript ne permet pas de chercher des textes dans une chaîne de caractères grâce à l'opérateur in.

+À la différence de certains langages de programmation (Python par exemple), JavaScript ne permet pas de chercher des textes dans une chaîne de caractères grâce à l'opérateur [`in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in). -
"Coucou" in "Coucou monde";
+```js example-bad
+"Coucou" in "Coucou monde";
 // TypeError: cannot use 'in' operator to search for 'Coucou' in 'Coucou monde'
-
+``` -

On utilisera plutôt la méthode {{jsxref("String.prototype.indexOf()")}} :

+On utilisera plutôt la méthode {{jsxref("String.prototype.indexOf()")}} : -
"Coucou monde".indexOf("Coucou") !== -1;
-// true
+```js example-good +"Coucou monde".indexOf("Coucou") !== -1; +// true +``` -

null ou undefined ne fonctionnent pas

+### `null` ou `undefined` ne fonctionnent pas -

Avant d'utiliser in, il faut s'assurer que la valeur qu'on inspecte n'est pas {{jsxref("null")}} ou {{jsxref("undefined")}}.

+Avant d'utiliser `in`, il faut s'assurer que la valeur qu'on inspecte n'est pas {{jsxref("null")}} ou {{jsxref("undefined")}}. -
var toto = null;
+```js example-bad
+var toto = null;
 "truc" in toto;
 // TypeError: cannot use 'in' operator to search for 'truc' in 'toto" (Chrome)
 // TypeError: right-hand side of 'in' should be an object, got null (Firefox)
-
+``` -

L'opérateur in doit être utilisé avec un objet.

+L'opérateur `in` doit être utilisé avec un objet. -
var toto = { machin: "bidule" };
+```js example-good
+var toto = { machin: "bidule" };
 "truc" in toto; // false
 
 "PI" in Math; // true
 "pi" in Math; // false
-
+``` -

Rechercher dans un tableau

+### Rechercher dans un tableau -

Attention lorsqu'on utilise l'opérateur in quand on recherche une valeur dans un objet {{jsxref("Array")}}. L'opérateur in vérifie la présence de l'index mais pas la valeur présente à cet index.

+Attention lorsqu'on utilise l'opérateur `in` quand on recherche une valeur dans un objet {{jsxref("Array")}}. L'opérateur `in` vérifie la présence de l'index mais pas la valeur présente à cet index. -
var arbres = ['cèdre', 'bouleau', 'pin', 'sapin', 'érable'];
+```js
+var arbres = ['cèdre', 'bouleau', 'pin', 'sapin', 'érable'];
 3 in arbres; // true
-"pin" in arbres; // false
+"pin" in arbres; // false +``` -

Voir aussi

+## Voir aussi - +- [L'opérateur `in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in) diff --git a/files/fr/web/javascript/reference/errors/index.md b/files/fr/web/javascript/reference/errors/index.md index 7110b7682a..aeaeeb5519 100644 --- a/files/fr/web/javascript/reference/errors/index.md +++ b/files/fr/web/javascript/reference/errors/index.md @@ -6,19 +6,17 @@ tags: translation_of: Web/JavaScript/Reference/Errors original_slug: Web/JavaScript/Reference/Erreurs --- -

{{jsSidebar("Errors")}}

+{{jsSidebar("Errors")}} -

Errare ECMAScript est
- Vous trouverez ci-après une liste d'erreurs causées par le moteur JavaScript. Ces erreurs peuvent aider à déboguer certains problèmes mais leur signification n'est pas toujours claire. Chacune de ces pages fournit donc des explications et informations supplémentaires à propos de ces erreurs.

+_Errare ECMAScript est_… +Vous trouverez ci-après une liste d'erreurs causées par le moteur JavaScript. Ces erreurs peuvent aider à déboguer certains problèmes mais leur signification n'est pas toujours claire. Chacune de ces pages fournit donc des explications et informations supplémentaires à propos de ces erreurs. -

D'un point de vue technique, chaque erreur est un objet {{jsxref("Error")}} et possède une propriété name (son nom) et une propriété message.

+D'un point de vue technique, chaque erreur est un objet {{jsxref("Error")}} et possède une propriété `name` (son nom) et une propriété `message`. -

Liste d'erreurs

+## Liste d'erreurs -

{{ListSubPages("/fr/docs/Web/JavaScript/Reference/Erreurs")}}

+{{ListSubPages("/fr/docs/Web/JavaScript/Reference/Erreurs")}} -

Voir aussi

+## Voir aussi - +- [Qu'est-ce qui a cloché ? Diagnostiquer un problème JavaScript](/fr/docs/Learn/JavaScript/First_steps/What_went_wrong) : un tutoriel introductif pour réparer les erreurs JavaScript diff --git a/files/fr/web/javascript/reference/errors/invalid_array_length/index.md b/files/fr/web/javascript/reference/errors/invalid_array_length/index.md index aa5fd0d701..b8db76535a 100644 --- a/files/fr/web/javascript/reference/errors/invalid_array_length/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_array_length/index.md @@ -8,40 +8,38 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length original_slug: Web/JavaScript/Reference/Erreurs/Invalid_array_length --- -
{{jsSidebar("Erreurs")}}
+{{jsSidebar("Erreurs")}} -

Message

+## Message -
RangeError: Array length must be a finite positive integer (Edge)
-RangeError: invalid array length (Firefox)
-RangeError: Invalid array length (Chrome)
-RangeError: Invalid array buffer length (Chrome)
-
+ RangeError: Array length must be a finite positive integer (Edge) + RangeError: invalid array length (Firefox) + RangeError: Invalid array length (Chrome) + RangeError: Invalid array buffer length (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Deux cas de figures peuvent causer cette erreur :

+Deux cas de figures peuvent causer cette erreur : -
    -
  • La création d'un tableau {{jsxref("Array")}} ou {{jsxref("ArrayBuffer")}} dont la longueur est négative ou supérieure ou égale à 2^32
  • -
  • La modification de la propriété {{jsxref("Array.length")}} pour que celle-ci ait une valeur négative ou supérieure ou égale à 2^32.
  • -
+- La création d'un tableau {{jsxref("Array")}} ou {{jsxref("ArrayBuffer")}} dont la longueur est négative ou supérieure ou égale à 2^32 +- La modification de la propriété {{jsxref("Array.length")}} pour que celle-ci ait une valeur négative ou supérieure ou égale à 2^32. -

Les tailles des objets Array et ArrayBuffer sont limitées car leurs longueurs (length) sont représentées par des entiers non-signés sur 32 bits. Ces valeurs sont donc nécessairement comprises dans l'intervalle allant de 0 à 2^32-1.

+Les tailles des objets `Array` et `ArrayBuffer` sont limitées car leurs longueurs (`length`) sont représentées par des entiers non-signés sur 32 bits. Ces valeurs sont donc nécessairement comprises dans l'intervalle allant de 0 à 2^32-1. -

Si vous utilisez le constructeur pour Array, il est probable que vous souhaitiez utiliser la notation littérale plutôt que le constructeur. En effet, le premier argument de ce constructeur correspond à la longueur du tableau.

+Si vous utilisez le constructeur pour `Array`, il est probable que vous souhaitiez utiliser la notation littérale plutôt que le constructeur. En effet, le premier argument de ce constructeur correspond à la longueur du tableau. -

Sinon, vous pouvez réduire la longueur utilisée afin que celle-ci soit dans l'intervalle valide avant de l'utiliser pour une telle création ou modification.

+Sinon, vous pouvez réduire la longueur utilisée afin que celle-ci soit dans l'intervalle valide avant de l'utiliser pour une telle création ou modification. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
new Array(Math.pow(2, 40))
+```js example-bad
+new Array(Math.pow(2, 40))
 new Array(-1)
 new ArrayBuffer(Math.pow(2, 32))
 new ArrayBuffer(-1)
@@ -51,11 +49,12 @@ a.length = a.length - 1;         // set -1 to the length property
 
 let b = new Array(Math.pow(2, 32) - 1);
 b.length = b.length + 1;         // set 2^32 to the length property
-
+``` -

Exemples valides

+### Exemples valides -
[ Math.pow(2, 40) ]                     // [ 1099511627776 ]
+```js example-good
+[ Math.pow(2, 40) ]                     // [ 1099511627776 ]
 [ -1 ]                                  // [ -1 ]
 new ArrayBuffer(Math.pow(2, 32) - 1)
 new ArrayBuffer(0)
@@ -68,13 +67,11 @@ b.length = Math.min(0xffffffff, b.length + 1);
 
 // 0xffffffff est la notation hexadécimale
 // pour 2^32 - 1
-// ce qu'on peut également écrire (-1 >>> 0)
-
+// ce qu'on peut également écrire (-1 >>> 0) +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Array")}}
  • -
  • {{jsxref("Array.length")}}
  • -
  • {{jsxref("ArrayBuffer")}}
  • -
+- {{jsxref("Array")}} +- {{jsxref("Array.length")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md b/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md index 5a441e32a9..b35d7cdcc1 100644 --- a/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md @@ -8,24 +8,24 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side original_slug: Web/JavaScript/Reference/Erreurs/Invalid_assignment_left-hand_side --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
ReferenceError: invalid assignment left-hand side
-
+ ReferenceError: invalid assignment left-hand side -

Type d'erreur

+## Type d'erreur -

{{jsxref("ReferenceError")}}.

+{{jsxref("ReferenceError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Un affectation inattendue a eu lieu. Cela peut être dû à un mélange entre un opérateur d'affectation et un opérateur de comparaison. Un seul signe égal affectera une valeur à une variable alors que les opérateurs == ou === comparent des valeurs entre elles.

+Un affectation inattendue a eu lieu. Cela peut être dû à un mélange entre [un opérateur d'affectation](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation) et [un opérateur de comparaison](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison). Un seul signe égal affectera une valeur à une variable alors que les opérateurs `==` ou `===` comparent des valeurs entre elles. -

Exemples

+## Exemples -
if (Math.PI = 3 || Math.PI = 4) {
+```js example-bad
+if (Math.PI = 3 || Math.PI = 4) {
   console.log('Nope !');
 }
 // ReferenceError: invalid assignment left-hand side
@@ -34,22 +34,21 @@ var str = 'Hello, '
 += 'is it me '
 += 'you\'re looking for?';
 // ReferenceError: invalid assignment left-hand side
-
+``` -

Dans l'instruction if, plutôt qu'une affectation, on voudra plutôt utiliser un opérateur == ou === et l'opérateur de concaténation (+) à la place pour la chaîne.

+Dans l'instruction `if`, plutôt qu'une affectation, on voudra plutôt utiliser un opérateur `==` ou `===` et l'opérateur de concaténation (+) à la place pour la chaîne. -
if (Math.PI == 3 || Math.PI == 4) {
+```js example-good
+if (Math.PI == 3 || Math.PI == 4) {
   console.log('no way!');
 }
 
 var str = 'Hello, '
 + 'from the '
 + 'other side!';
-
+``` -

Voir aussi

+## Voir aussi - +- [Opérateurs d'affectation](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_d_affectation) +- [Opérateurs de comparaison](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison) diff --git a/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md b/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md index 76219c8d9f..8205bb266e 100644 --- a/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md @@ -8,84 +8,91 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment original_slug: Web/JavaScript/Reference/Erreurs/Invalid_const_assignment --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: invalid assignment to const "x" (Firefox)
-TypeError: Assignment to constant variable. (Chrome)
-TypeError: Redeclaration of const 'x' (Edge)
-
+ TypeError: invalid assignment to const "x" (Firefox) + TypeError: Assignment to constant variable. (Chrome) + TypeError: Redeclaration of const 'x' (Edge) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une constante est une valeur qui ne peut pas être modifiée lors de l'exécution du programme. Elle ne peut pas être modifiée grâce à une réaffectation ou grâce à une redéclaration. En JavaScript, les constantes sont déclarées grâce au mot-clé const.

+Une constante est une valeur qui ne peut pas être modifiée lors de l'exécution du programme. Elle ne peut pas être modifiée grâce à une réaffectation ou grâce à une redéclaration. En JavaScript, les constantes sont déclarées grâce au mot-clé [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const). -

Exemples

+## Exemples -

Redéclaration invalide

+### Redéclaration invalide -

Si on affecte une valeur à une constante dans la même portée de bloc que celui qui contient l'affectation initiale, une exception sera levée :

+Si on affecte une valeur à une constante dans la même portée de bloc que celui qui contient l'affectation initiale, une exception sera levée : -
const COLUMNS = 80;
+```js example-bad
+const COLUMNS = 80;
 
 // ...
 
-COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'
+COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS' +``` -

Résoudre le problème

+### Résoudre le problème -

Il existe plusieurs façons de résoudre ce problème et il faut au préalable comprendre le rôle de la constante en question.

+Il existe plusieurs façons de résoudre ce problème et il faut au préalable comprendre le rôle de la constante en question. -

Utiliser un autre nom

+#### Utiliser un autre nom -

Si on souhaite déclarer une autre constante, on peut utiliser un autre nom que celui qui est déjà pris dans cette portée :

+Si on souhaite déclarer une autre constante, on peut utiliser un autre nom que celui qui est déjà pris dans cette portée : -
const COLUMNS = 80;
-const WIDE_COLUMNS = 120;
+```js example-good +const COLUMNS = 80; +const WIDE_COLUMNS = 120; +``` -

const, let ou var ?

+#### `const`, `let` ou `var` ? -

const ne doit pas être utilisé si on ne souhaite pas déclarer de constante. Peut-être qu'on souhaite simplement déclarer une variable avec une portée de bloc grâce à let ou une variable globale avec var.

+`const` ne doit pas être utilisé si on ne souhaite pas déclarer de constante. Peut-être qu'on souhaite simplement déclarer une variable avec une portée de bloc grâce à [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) ou une variable globale avec [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). -
let columns = 80;
+```js example-good
+let columns = 80;
 
 // ...
 
 let columns = 120;
-
+``` -

Gérer les portées

+#### Gérer les portées -

On peut également vérifier qu'on est dans la bonne portée. Est-ce que la constante devait apparaître dans la portée en question ou devait être utilisée dans une fonction ?

+On peut également vérifier qu'on est dans la bonne portée. Est-ce que la constante devait apparaître dans la portée en question ou devait être utilisée dans une fonction ? -
const COLUMNS = 80;
+```js example-good
+const COLUMNS = 80;
 
 function setupBigScreenEnvironment() {
   const COLUMNS = 120;
-}
+} +``` -

const et l'immuabilité

+### `const` et l'immuabilité -

La déclaration const crée une référence en lecture seule vers une valeur. Elle ne signifie pas que la valeur en question est immuable mais uniquement que l'identifiant de la référence ne peut pas recevoir de nouvelle valeur. Ainsi, si le contenu est un objet, celui-ci pourra toujours être modifié :

+La déclaration `const` crée une référence en lecture seule vers une valeur. Elle ne signifie pas que la valeur en question est immuable mais uniquement que l'identifiant de la référence ne peut pas recevoir de nouvelle valeur. Ainsi, si le contenu est un objet, celui-ci pourra toujours être modifié : -
const obj = {toto: 'truc'};
+```js example-bad
+const obj = {toto: 'truc'};
 obj = {toto: 'bidule'}; // TypeError: invalid assignment to const `obj'
-
+``` -

En revanche, on peut modifier les propriétés :

+En revanche, on peut modifier les propriétés : -
obj.toto = 'bidule';
-obj; // Object { toto: "bidule" }
+```js example-good +obj.toto = 'bidule'; +obj; // Object { toto: "bidule" } +``` -

Voir aussi

+## Voir aussi - +- [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const) +- [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) +- [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) diff --git a/files/fr/web/javascript/reference/errors/invalid_date/index.md b/files/fr/web/javascript/reference/errors/invalid_date/index.md index a89f979fbc..ab0905ac9f 100644 --- a/files/fr/web/javascript/reference/errors/invalid_date/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_date/index.md @@ -8,50 +8,52 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_date original_slug: Web/JavaScript/Reference/Erreurs/Invalid_date --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
RangeError: invalid date (Edge)
-RangeError: invalid date (Firefox)
-RangeError: invalid time value (Chrome)
-RangeError: Provided date is not in valid range (Chrome)
-
+ RangeError: invalid date (Edge) + RangeError: invalid date (Firefox) + RangeError: invalid time value (Chrome) + RangeError: Provided date is not in valid range (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une chaîne de caractères indiquant une date invalide a été fournie comme argument au constructeur {{jsxref("Date")}} ou à la méthode {{jsxref("Date.parse()")}}.

+Une chaîne de caractères indiquant une date invalide a été fournie comme argument au constructeur {{jsxref("Date")}} ou à la méthode {{jsxref("Date.parse()")}}. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Les chaînes de caractères qui ne peuvent pas être converties en date ou les dates qui contiennent des éléments illégaux pour le format ISO renvoient généralement {{jsxref("NaN")}}. Cependant, selon l'implémentation, les chaînes de caractères qui ne respectent pas le format ISO pour les dates peuvent déclencher une exception RangeError: invalid date. Les instructions suivantes déclencheront cette erreur dans Firefox :

+Les chaînes de caractères qui ne peuvent pas être converties en date ou les dates qui contiennent des éléments illégaux pour le format ISO renvoient généralement {{jsxref("NaN")}}. Cependant, selon l'implémentation, les chaînes de caractères qui ne respectent pas le format ISO pour les dates peuvent déclencher une exception `RangeError: invalid date`. Les instructions suivantes déclencheront cette erreur dans Firefox : -
new Date('toto-truc 2014');
+```js example-bad
+new Date('toto-truc 2014');
 new Date('2014-25-23').toISOString();
 new Date('toto-truc 2014').toString();
-
+``` -

En revanche, cette instruction renverra {{jsxref("NaN")}} dans Firefox :

+En revanche, cette instruction renverra {{jsxref("NaN")}} dans Firefox : -
Date.parse('toto-truc 2014'); // NaN
+```js example-bad +Date.parse('toto-truc 2014'); // NaN +``` -

Pour plus de détails, consulter la documentation sur {{jsxref("Date.parse()")}}.

+Pour plus de détails, consulter la documentation sur {{jsxref("Date.parse()")}}. -

Exemples valides

+### Exemples valides -
new Date('05 October 2011 14:48 UTC');
-new Date(1317826080); // timestamp Unix pour le 5 octobre 2011 14:48:00 UTC
+```js example-good +new Date('05 October 2011 14:48 UTC'); +new Date(1317826080); // timestamp Unix pour le 5 octobre 2011 14:48:00 UTC +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Date")}}
  • -
  • {{jsxref("Date.prototype.parse()")}}
  • -
  • {{jsxref("Date.prototype.toISOString()")}}
  • -
+- {{jsxref("Date")}} +- {{jsxref("Date.prototype.parse()")}} +- {{jsxref("Date.prototype.toISOString()")}} diff --git a/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md b/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md index 2ae766aadc..64160b2884 100644 --- a/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md @@ -9,28 +9,28 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-in_initializer --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: for-in loop head declarations cannot have an initializer (Edge)
-SyntaxError: for-in loop head declarations may not have initializers (Firefox)
-SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)
-
+ SyntaxError: for-in loop head declarations cannot have an initializer (Edge) + SyntaxError: for-in loop head declarations may not have initializers (Firefox) + SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+{{jsxref("SyntaxError")}}, uniquement en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

L'en-tête d'une boucle for...in contient une expression d'initialisation, c'est-à-dire qu'une variable est déclarée et qu'on lui affecte une valeur. Ceci n'est pas autorisé en mode strict (et ignoré en mode non-strict).

+L'en-tête d'une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) contient une expression d'initialisation, c'est-à-dire qu'une variable est déclarée et qu'on lui affecte une valeur. Ceci n'est pas autorisé en mode strict (et ignoré en mode non-strict). -

Exemples

+## Exemples -

Cet exemple déclenchera une exception SyntaxError :

+Cet exemple déclenchera une exception `SyntaxError` : -
"use strict";
+```js example-bad
+"use strict";
 
 var obj = {a: 1, b: 2, c: 3 };
 
@@ -39,37 +39,38 @@ for (var i = 0 in obj) {
 }
 
 // SyntaxError: for-in loop head declarations may not have initializers
-
+``` -

Boucle for-in valide

+### Boucle for-in valide -

On peut retirer l'initialisateur de l'en-tête de la boucle :

+On peut retirer l'initialisateur de l'en-tête de la boucle : -
"use strict";
+```js example-good
+"use strict";
 
 var obj = {a: 1, b: 2, c: 3 };
 
 for (var i in obj) {
   console.log(obj[i]);
 }
-
+``` -

Parcours d'un tableau

+### Parcours d'un tableau -

Il ne faut pas utiliser de boucle for...in pour parcourir un tableau (Array). Peut-être souhaitiez-vous utiliser une boucle for pour parcourir le tableau ? Cette boucle for permet également d'utiliser un initialisateur :

+[Il ne faut pas utiliser de boucle `for...in` pour parcourir un tableau (`Array`)](/fr/docs/Web/JavaScript/Reference/Instructions/for...in#Utiliser_for...in_et_parcourir_un_tableau). Peut-être souhaitiez-vous utiliser une boucle `for` pour parcourir le tableau ? Cette boucle `for` permet également d'utiliser un initialisateur : -
var arr = [ "a", "b", "c" ]
+```js example-good
+var arr = [ "a", "b", "c" ]
 
-for (var i = 2; i < arr.length; i++) {
+for (var i = 2; i < arr.length; i++) {
   console.log(arr[i]);
 }
 
-// "c"
+// "c" +``` -

Voir aussi

+## Voir aussi -
    -
  • for...in
  • -
  • for...of interdit également d'utiliser un initialisateur en mode strict et non-strict
  • -
  • for permet de définir un initialisateur lors de l'itération et doit être privilégié pour parcourir un tableau
  • -
+- [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) +- [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) interdit également d'utiliser un initialisateur en mode strict et non-strict +- [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) permet de définir un initialisateur lors de l'itération et doit être privilégié pour parcourir un tableau diff --git a/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md b/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md index 943b5399fc..932f1f44ce 100644 --- a/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md @@ -10,41 +10,43 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-of_initializer --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: for-of loop head declarations cannot have an initializer (Edge)
-SyntaxError: a declaration in the head of a for-of loop can't have an initializer (Firefox)
-SyntaxError: for-of loop variable declaration may not have an initializer. (Chrome)
-
+ SyntaxError: for-of loop head declarations cannot have an initializer (Edge) + SyntaxError: a declaration in the head of a for-of loop can't have an initializer (Firefox) + SyntaxError: for-of loop variable declaration may not have an initializer. (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

L'en-tête d'une boucle for...of contient une expression d'initialisation, c'est-à-dire qu'une variable est déclarée et qu'on lui affecte une valeur. Ceci n'est pas autorisé pour les boucles for-of. En revanche, les boucles for permettent d'avoir un initialisateur.

+L'en-tête d'une boucle [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) contient une expression d'initialisation, c'est-à-dire qu'une variable est déclarée et qu'on lui affecte une valeur. Ceci n'est pas autorisé pour les boucles `for-of`. En revanche, les boucles [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) permettent d'avoir un initialisateur. -

Exemples

+## Exemples -

Boucles for-of invalides

+### Boucles `for-of` invalides -
let iterable = [10, 20, 30];
+```js example-bad
+let iterable = [10, 20, 30];
 
 for (let value = 50 of iterable) {
   console.log(value);
 }
 
 // SyntaxError: a declaration in the head of a for-of loop can't
-// have an initializer
+// have an initializer +``` -

Boucles for-of valides

+### Boucles `for-of` valides -

Il faut retirer l'initialisateur de l'en-tête de la boucle pour ne plus avoir l'erreur. Si cette valeur devait servir d'incrément, on peut ajouter l'addition dans le corps de la boucle.

+Il faut retirer l'initialisateur de l'en-tête de la boucle pour ne plus avoir l'erreur. Si cette valeur devait servir d'incrément, on peut ajouter l'addition dans le corps de la boucle. -
let iterable = [10, 20, 30];
+```js example-good
+let iterable = [10, 20, 30];
 
 for (let value of iterable) {
   value += 50;
@@ -53,12 +55,10 @@ for (let value of iterable) {
 // 60
 // 70
 // 80
-
+``` -

Voir aussi

+## Voir aussi - +- [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) +- [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) interdit également d'utiliser un initialisateur en mode strict ([SyntaxError: for-in loop head declarations may not have initializers](/fr/docs/Web/JavaScript/Reference/Errors/Invalid_for-in_initializer)) +- [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) permet de définir un initialisateur lors de l'itération diff --git a/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md b/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md index a9fe80e977..12e1bc3e14 100644 --- a/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md +++ b/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md @@ -10,26 +10,27 @@ tags: translation_of: Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand original_slug: Web/JavaScript/Reference/Erreurs/invalid_right_hand_side_instanceof_operand --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: invalid 'instanceof' operand "x" (Firefox)
-TypeError: "x" is not a function (Firefox)
-TypeError: Right-hand side of 'instanceof' is not an object (Chrome)
-TypeError: Right-hand side of 'instanceof' is not callable (Chrome)
+ TypeError: invalid 'instanceof' operand "x" (Firefox) + TypeError: "x" is not a function (Firefox) + TypeError: Right-hand side of 'instanceof' is not an object (Chrome) + TypeError: Right-hand side of 'instanceof' is not callable (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

L'opérateur instanceof attend un opérande droit qui soit un objet constructeur, c'est-à-dire un objet possédant une propriété prototype et qui puisse être appelé.

+L'opérateur [`instanceof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/instanceof) attend un opérande droit qui soit un objet constructeur, c'est-à-dire un objet possédant une propriété `prototype` et qui puisse être appelé. -

Exemples

+## Exemples -
"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
+```js example-bad
+"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
 42 instanceof 0;      // TypeError: invalid 'instanceof' operand 0
 
 function Toto() {}
@@ -38,11 +39,12 @@ var x = new Toto();
 
 x instanceof f;       // TypeError: invalid 'instanceof' operand f
 x instanceof x;       // TypeError: x is not a function
-
+``` -

Pour corriger ces erreurs, il faut remplacer l'opérateur instanceof avec l'opérateur typeof ou s'assurer que l'opérande droit est la fonction et non le résultat de son évaluation.

+Pour corriger ces erreurs, il faut remplacer l'opérateur `instanceof` avec l'opérateur [`typeof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof) ou s'assurer que l'opérande droit est la fonction et non le résultat de son évaluation. -
typeof "test" == "string";  // true
+```js example-good
+typeof "test" == "string";  // true
 typeof 42 == "number"       // true
 
 function Toto() {}
@@ -51,13 +53,9 @@ var x = new Toto();
 
 x instanceof f;             // true
 x instanceof Toto;          // true
-
+``` -

Voir aussi

+## Voir aussi - - -

 

+- L'opérateur [`instanceof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/instanceof) +- L'opérateur [`typeof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof) diff --git a/files/fr/web/javascript/reference/errors/is_not_iterable/index.md b/files/fr/web/javascript/reference/errors/is_not_iterable/index.md index 1aba992ca7..f2c751c136 100644 --- a/files/fr/web/javascript/reference/errors/is_not_iterable/index.md +++ b/files/fr/web/javascript/reference/errors/is_not_iterable/index.md @@ -9,37 +9,38 @@ tags: translation_of: Web/JavaScript/Reference/Errors/is_not_iterable original_slug: Web/JavaScript/Reference/Erreurs/is_not_iterable --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: 'x' is not iterable (Firefox, Chrome)
-TypeError: 'x' is not a function or its return value is not iterable (Chrome)
-
+ TypeError: 'x' is not iterable (Firefox, Chrome) + TypeError: 'x' is not a function or its return value is not iterable (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La valeur passée comme opérande droit de for…of ou comme argument d'une fonction telle que {{jsxref("Promise.all")}} ou {{jsxref("TypedArray.from")}} n'est pas un objet itérable.  Un objet itérable peut être un objet itérable natif tel qu'un objet {{jsxref("Array")}}, {{jsxref("String")}} ou {{jsxref("Map")}} ou le résultat d'un générateur ou un objet qui implémente le protocole itérable.

+La valeur passée comme opérande droit de [`for…of` ](/fr/docs/Web/JavaScript/Reference/Instructions/for...of)ou comme argument d'une fonction telle que {{jsxref("Promise.all")}} ou {{jsxref("TypedArray.from")}} n'est pas [un objet itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration).  Un objet itérable peut être un objet itérable natif tel qu'un objet {{jsxref("Array")}}, {{jsxref("String")}} ou {{jsxref("Map")}} ou le résultat d'un générateur ou un objet qui implémente [le protocole itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_«_itérable_»). -

Exemples

+## Exemples -

Parcourir les propriétés d'un objet

+### Parcourir les propriétés d'un objet -

En JavaScript, les objets ne sont pas itérables car ils n'implémentent pas le protocole itérable. On ne peut donc pas utiliser for...of afin d'en parcourir les propriétés.

+En JavaScript, les objets ne sont pas itérables car ils n'implémentent pas le [protocole itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_«_itérable_»). On ne peut donc pas utiliser `for...of` afin d'en parcourir les propriétés. -
var obj = { 'France': 'Paris', 'England': 'London' };
+```js example-bad
+var obj = { 'France': 'Paris', 'England': 'London' };
 for (let p of obj) { // TypeError: obj is not iterable
     // …
 }
-
+``` -

Si on souhaite utiliser un itérateur pour parcourir les propriétés (leurs noms ou leurs valeurs), on pourra utiliser les méthodes {{jsxref("Object.keys")}} ou {{jsxref("Object.entries")}} qui fournissent des itérateurs :

+Si on souhaite utiliser un itérateur pour parcourir les propriétés (leurs noms ou leurs valeurs), on pourra utiliser les méthodes {{jsxref("Object.keys")}} ou {{jsxref("Object.entries")}} qui fournissent des itérateurs : -
var obj = { 'France': 'Paris', 'England': 'London' };
+```js example-good
+var obj = { 'France': 'Paris', 'England': 'London' };
 // On parcourt les noms des propriétés
 for (let country of Object.keys(obj)) {
     var capital = obj[country];
@@ -48,11 +49,12 @@ for (let country of Object.keys(obj)) {
 
 for (const [country, capital] of Object.entries(obj))
     console.log(country, capital);
-
+``` -

On pourrait également utiliser un objet {{jsxref("Map")}} :

+On pourrait également utiliser un objet {{jsxref("Map")}} : -
var map = new Map;
+```js example-good
+var map = new Map;
 map.set('France', 'Paris');
 map.set('England', 'London');
 // On parcourt les noms des propriétés
@@ -66,37 +68,40 @@ for (let capital of map.values())
 
 for (const [country, capital] of map.entries())
     console.log(country, capital);
-
+``` -

Itérer grâce à un générateur

+### Itérer grâce à un générateur -

Les générateurs sont des fonctions qui, lorsqu'elles sont appelées, produisent des objets itérables.

+[Les générateurs](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs) sont des fonctions qui, lorsqu'elles sont appelées, produisent des objets itérables. -
function* generate(a, b) {
+```js example-bad
+function* generate(a, b) {
   yield a;
   yield b;
 }
 
 for (let x of generate) // TypeError: generate is not iterable
     console.log(x);
-
+``` -

Lorsqu'elles ne sont pas appelées, l'objet {{jsxref("Function")}} correspondant au générateur peut être appelé mais il n'est pass itérable. Il ne faut donc pas oublier d'invoquer le générateur afin de parcourir les valeurs de l'itérateur qu'il produit.

+Lorsqu'elles ne sont pas appelées, l'objet {{jsxref("Function")}} correspondant au générateur peut être appelé mais il n'est pass itérable. Il ne faut donc pas oublier d'invoquer le générateur afin de parcourir les valeurs de l'itérateur qu'il produit. -
function* generate(a, b) {
+```js example-good
+function* generate(a, b) {
     yield a;
     yield b;
 }
 
 for (let x of generate(1,2))
     console.log(x);
-
+``` -

Parcourir un itérable spécifique

+### Parcourir un itérable spécifique -

Les itérables spécifiques (custom iterables) peuvent être créés en implémentant la méthode {{jsxref("Symbol.iterator")}}. En implémentant cette méthode, il faut s'assurer que la valeur renvoyée est un objet qui est un itérateur. Autrement dit, l'objet renvoyé doit posséder une méthode next().

+Les itérables spécifiques (_custom iterables_) peuvent être créés en implémentant la méthode {{jsxref("Symbol.iterator")}}. En implémentant cette méthode, il faut s'assurer que la valeur renvoyée est un objet qui est un itérateur. Autrement dit, l'objet renvoyé doit posséder une méthode `next()`. -
const monIterableVide = {
+```js example-bad
+const monIterableVide = {
     [Symbol.iterator]() {
         return [] // [] est un iterable mais pas un itérateur
                   // car il n'a pas de méthode next
@@ -104,26 +109,25 @@ for (let x of generate(1,2))
 }
 
 Array.from(monIterableVide);  // TypeError: monIterableVide is not iterable
-
+``` -

Voici une implémentation correcte :

+Voici une implémentation correcte : -
const monIterableVide = {
+```js example-good
+const monIterableVide = {
     [Symbol.iterator]() {
         return [][Symbol.iterator]()
     }
 }
 
 Array.from(monIterableVide);  // []
-
- -

Voir aussi

- - +``` + +## Voir aussi + +- [Le protocole itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_«_itérable_») +- {{jsxref("Object.keys")}} +- {{jsxref("Object.entries")}} +- {{jsxref("Map")}} +- [Les générateurs](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs#Générateurs) +- [`for…of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) diff --git a/files/fr/web/javascript/reference/errors/json_bad_parse/index.md b/files/fr/web/javascript/reference/errors/json_bad_parse/index.md index 800d8fd05f..870dc1812b 100644 --- a/files/fr/web/javascript/reference/errors/json_bad_parse/index.md +++ b/files/fr/web/javascript/reference/errors/json_bad_parse/index.md @@ -10,104 +10,110 @@ tags: translation_of: Web/JavaScript/Reference/Errors/JSON_bad_parse original_slug: Web/JavaScript/Reference/Erreurs/JSON_bad_parse --- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: JSON.parse: unterminated string literal
-SyntaxError: JSON.parse: bad control character in string literal
-SyntaxError: JSON.parse: bad character in string literal
-SyntaxError: JSON.parse: bad Unicode escape
-SyntaxError: JSON.parse: bad escape character
-SyntaxError: JSON.parse: unterminated string
-SyntaxError: JSON.parse: no number after minus sign
-SyntaxError: JSON.parse: unexpected non-digit
-SyntaxError: JSON.parse: missing digits after decimal point
-SyntaxError: JSON.parse: unterminated fractional number
-SyntaxError: JSON.parse: missing digits after exponent indicator
-SyntaxError: JSON.parse: missing digits after exponent sign
-SyntaxError: JSON.parse: exponent part is missing a number
-SyntaxError: JSON.parse: unexpected end of data
-SyntaxError: JSON.parse: unexpected keyword
-SyntaxError: JSON.parse: unexpected character
-SyntaxError: JSON.parse: end of data while reading object contents
-SyntaxError: JSON.parse: expected property name or '}'
-SyntaxError: JSON.parse: end of data when ',' or ']' was expected
-SyntaxError: JSON.parse: expected ',' or ']' after array element
-SyntaxError: JSON.parse: end of data when property name was expected
-SyntaxError: JSON.parse: expected double-quoted property name
-SyntaxError: JSON.parse: end of data after property name when ':' was expected
-SyntaxError: JSON.parse: expected ':' after property name in object
-SyntaxError: JSON.parse: end of data after property value in object
-SyntaxError: JSON.parse: expected ',' or '}' after property value in object
-SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal
-SyntaxError: JSON.parse: property names must be double-quoted strings
-SyntaxError: JSON.parse: expected property name or '}'
-SyntaxError: JSON.parse: unexpected character
-SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
-SyntaxError: JSON.parse Error: Invalid character at position {0} (Edge)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

Quel est le problème ?

- -

Lorsque la méthode {{jsxref("JSON.parse()")}} analyse (parse) une chaîne de caractères en JSON, cette chaîne doit être du JSON valide et une exception sera levée si la syntaxe est incorrecte.

- -

Exemples

- -

JSON.parse() n'accepte pas les virgules en fin de tableau

- -

Les deux lignes qui suivent déclencheront une exception SyntaxError :

- -
JSON.parse('[1, 2, 3, 4, ]');
+{{jsSidebar("Errors")}}
+
+## Message
+
+    SyntaxError: JSON.parse: unterminated string literal
+    SyntaxError: JSON.parse: bad control character in string literal
+    SyntaxError: JSON.parse: bad character in string literal
+    SyntaxError: JSON.parse: bad Unicode escape
+    SyntaxError: JSON.parse: bad escape character
+    SyntaxError: JSON.parse: unterminated string
+    SyntaxError: JSON.parse: no number after minus sign
+    SyntaxError: JSON.parse: unexpected non-digit
+    SyntaxError: JSON.parse: missing digits after decimal point
+    SyntaxError: JSON.parse: unterminated fractional number
+    SyntaxError: JSON.parse: missing digits after exponent indicator
+    SyntaxError: JSON.parse: missing digits after exponent sign
+    SyntaxError: JSON.parse: exponent part is missing a number
+    SyntaxError: JSON.parse: unexpected end of data
+    SyntaxError: JSON.parse: unexpected keyword
+    SyntaxError: JSON.parse: unexpected character
+    SyntaxError: JSON.parse: end of data while reading object contents
+    SyntaxError: JSON.parse: expected property name or '}'
+    SyntaxError: JSON.parse: end of data when ',' or ']' was expected
+    SyntaxError: JSON.parse: expected ',' or ']' after array element
+    SyntaxError: JSON.parse: end of data when property name was expected
+    SyntaxError: JSON.parse: expected double-quoted property name
+    SyntaxError: JSON.parse: end of data after property name when ':' was expected
+    SyntaxError: JSON.parse: expected ':' after property name in object
+    SyntaxError: JSON.parse: end of data after property value in object
+    SyntaxError: JSON.parse: expected ',' or '}' after property value in object
+    SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal
+    SyntaxError: JSON.parse: property names must be double-quoted strings
+    SyntaxError: JSON.parse: expected property name or '}'
+    SyntaxError: JSON.parse: unexpected character
+    SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
+    SyntaxError: JSON.parse Error: Invalid character at position {0} (Edge)
+
+## Type d'erreur
+
+{{jsxref("SyntaxError")}}
+
+## Quel est le problème ?
+
+Lorsque la méthode {{jsxref("JSON.parse()")}} analyse (_parse_) une chaîne de caractères en JSON, cette chaîne doit être du JSON valide et une exception sera levée si la syntaxe est incorrecte.
+
+## Exemples
+
+### `JSON.parse()` n'accepte pas les virgules en fin de tableau
+
+Les deux lignes qui suivent déclencheront une exception `SyntaxError` :
+
+```js example-bad
+JSON.parse('[1, 2, 3, 4, ]');
 JSON.parse('{"foo" : 1, }');
 // SyntaxError JSON.parse: unexpected character
 // at line 1 column 14 of the JSON data
-
+``` -

Pour que la méthode puisse analyser le JSON correctement, on évitera les virgules en fin de tableau :

+Pour que la méthode puisse analyser le JSON correctement, on évitera les virgules en fin de tableau : -
JSON.parse('[1, 2, 3, 4 ]');
-JSON.parse('{"foo" : 1 }');
+```js example-good +JSON.parse('[1, 2, 3, 4 ]'); +JSON.parse('{"foo" : 1 }'); +``` -

Les noms des propriétés doivent être entre double quotes

+### Les noms des propriétés doivent être entre double quotes -

On ne peut pas utiliser de quotes simples pour indiquer le nom d'une propriété (ex. 'toto').

+On ne peut pas utiliser de quotes simples pour indiquer le nom d'une propriété (ex. `'toto'`). -
JSON.parse("{'toto' : 1 }");
+```js example-bad
+JSON.parse("{'toto' : 1 }");
 // SyntaxError: JSON.parse: expected property name or '}'
-// at line 1 column 2 of the JSON data
+// at line 1 column 2 of the JSON data +``` -

À la place, on écrira "toto" :

+À la place, on écrira `"toto"` : -
JSON.parse('{"toto" : 1 }');
+```js example-good +JSON.parse('{"toto" : 1 }'); +``` -

Zéros en début de nombres et points décimaux

+### Zéros en début de nombres et points décimaux -

On ne peut pas utiliser de zéros en début de nombre (ex. 01). Par ailleurs, les nombres décimaux doivent avoir une partie décimale, on ne peut pas terminer un nombre par un point.

+On ne peut pas utiliser de zéros en début de nombre (ex. 01). Par ailleurs, les nombres décimaux doivent avoir une partie décimale, on ne peut pas terminer un nombre par un point. -
JSON.parse('{"toto" : 01 }');
+```js example-bad
+JSON.parse('{"toto" : 01 }');
 // SyntaxError: JSON.parse: expected ',' or '}' after property value
 // in object at line 1 column 2 of the JSON data
 
 JSON.parse('{"toto" : 1. }');
 // SyntaxError: JSON.parse: unterminated fractional number
 // at line 1 column 2 of the JSON data
-
+``` -

Pour que cela fonctionne, on écrira simplement 1 sans 0 devant et au moins un chiffre après le séparateur décimal :

+Pour que cela fonctionne, on écrira simplement 1 sans 0 devant et au moins un chiffre après le séparateur décimal : -
JSON.parse('{"toto" : 1 }');
+```js example-good
+JSON.parse('{"toto" : 1 }');
 JSON.parse('{"toto" : 1.0 }');
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("JSON")}}
  • -
  • {{jsxref("JSON.parse()")}}
  • -
  • {{jsxref("JSON.stringify()")}}
  • -
+- {{jsxref("JSON")}} +- {{jsxref("JSON.parse()")}} +- {{jsxref("JSON.stringify()")}} diff --git a/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md b/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md index a06f5cc5c9..bc5d9e5ba0 100644 --- a/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md +++ b/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md @@ -8,33 +8,33 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Malformed_formal_parameter original_slug: Web/JavaScript/Reference/Erreurs/Malformed_formal_parameter --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected {x} (Edge)
-SyntaxError: malformed formal parameter (Firefox)
-
+ SyntaxError: Expected {x} (Edge) + SyntaxError: malformed formal parameter (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La méthode {{jsxref("Function()")}} a été utilisée avec au moins deux arguments. Le dernier argument correspond au code source de la nouvelle fonction qui est créée. Les autres arguments sont la liste des arguments passés à la fonction.

+La méthode {{jsxref("Function()")}} a été utilisée avec au moins deux arguments. Le dernier argument correspond au code source de la nouvelle fonction qui est créée. Les autres arguments sont la liste des arguments passés à la fonction. -

C'est cette liste d'arguments qui est, pour une certaine raison, invalide. Il s'agit peut-être d'un mot-clé (if ou var par exemple) utilisé comme un nom d'argument, ou d'un signe de ponctuation mal placé. Il peut également s'agir d'une valeur invalide comme un nombre ou un objet.

+C'est cette liste d'arguments qui est, pour une certaine raison, invalide. Il s'agit peut-être d'un mot-clé (`if` ou `var` par exemple) utilisé comme un nom d'argument, ou d'un signe de ponctuation mal placé. Il peut également s'agir d'une valeur invalide comme un nombre ou un objet. -

OK mais pourquoi cette formulation étrange ?

+## OK mais pourquoi cette formulation étrange ? -

En effet, "Formal parameter" est une manière étrange de dire  « argument de fonction ». Le mot "malformed" (malformé) est utilisé car les ingénieurs travaillant sur Firefox engineers apprécient énormément les romans gothiques du XIXe.

+En effet, "Formal parameter" est une manière étrange de dire  « argument de fonction ». Le mot "malformed" (malformé) est utilisé car les ingénieurs travaillant sur Firefox engineers apprécient énormément les romans gothiques du XIXe. -

Examples

+## Examples -

Exemples invalides

+### Exemples invalides -
var f = Function("x y", "return x + y;");
+```js example-bad
+var f = Function("x y", "return x + y;");
 // SyntaxError (virgule manquante)
 
 var f = Function("x,", "return x;");
@@ -42,11 +42,12 @@ var f = Function("x,", "return x;");
 
 var f = Function(37, "console.log('OK')");
 // SyntaxError (des nombres ne peuvent être des noms)
-
+``` -

Exemples valides

+### Exemples valides -
 // Ponctuation correcte
+```js example-good
+ // Ponctuation correcte
 var f = Function("x, y", "return x + y;");
 
 var f = Function("x", "return x;");
@@ -54,12 +55,10 @@ var f = Function("x", "return x;");
 // Voici une alternative plus rapide
 // si vous pouvez éviter Function
 var f = function (x) { return x; };
-
+``` -

Voir aussi

+## Voir aussi - +- {{jsxref("Function()")}} +- [Le chapitre du Guide JavaScript sur les fonctions](/fr/docs/Web/JavaScript/Guide/Fonctions) +- [_Frankenstein_ par Mary Wollstonecraft Shelley](https://www.gutenberg.org/ebooks/84) ("_Cursed (although I curse myself) be the hands that formed you! You have made me wretched beyond expression. You have left me no power to consider whether I am just to you or not. Begone! Relieve me from the sight of your detested form._") diff --git a/files/fr/web/javascript/reference/errors/malformed_uri/index.md b/files/fr/web/javascript/reference/errors/malformed_uri/index.md index dfe037e1aa..3a4c4f4d08 100644 --- a/files/fr/web/javascript/reference/errors/malformed_uri/index.md +++ b/files/fr/web/javascript/reference/errors/malformed_uri/index.md @@ -8,60 +8,63 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Malformed_URI original_slug: Web/JavaScript/Reference/Erreurs/Malformed_URI --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
URIError: The URI to be encoded contains invalid character (Edge)
-URIError: malformed URI sequence (Firefox)
-URIError: URI malformed (Chrome)
-
+ URIError: The URI to be encoded contains invalid character (Edge) + URIError: malformed URI sequence (Firefox) + URIError: URI malformed (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("URIError")}}

+{{jsxref("URIError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il y a eu une erreur lors de l'encodage ou du décodage de l'URI. Un argument fourni à {{jsxref("decodeURI")}}, {{jsxref("encodeURI")}}, {{jsxref("encodeURIComponent")}} ou à {{jsxref("decodeURIComponent")}} n'était pas valide et la fonction concernée n'a pas pu encoder ou décoder la valeur correctement.

+Il y a eu une erreur lors de l'encodage ou du décodage de l'URI. Un argument fourni à {{jsxref("decodeURI")}}, {{jsxref("encodeURI")}}, {{jsxref("encodeURIComponent")}} ou à {{jsxref("decodeURIComponent")}} n'était pas valide et la fonction concernée n'a pas pu encoder ou décoder la valeur correctement. -

Exemples

+## Exemples -

Encodage

+### Encodage -

L'encodage permet de remplacer certains caractères par une, deux, trois voire quatre séquences d'échappement qui représente l'encodage UTF-8 du caractère. Une exception {{jsxref("URIError")}} sera levée si on tente d'encoder un caractère surrogate qui ne fait pas partie d'une paire de codets :

+L'encodage permet de remplacer certains caractères par une, deux, trois voire quatre séquences d'échappement qui représente l'encodage UTF-8 du caractère. Une exception {{jsxref("URIError")}} sera levée si on tente d'encoder un caractère _surrogate_ qui ne fait pas partie d'une paire de codets : -
encodeURI('\uD800');
+```js example-bad
+encodeURI('\uD800');
 // "URIError: malformed URI sequence"
 
 encodeURI('\uDFFF');
 // "URIError: malformed URI sequence"
-
+``` -

En revanche, si on dispose de la paire de codets :

+En revanche, si on dispose de la paire de codets : -
encodeURI('\uD800\uDFFF');
-// "%F0%90%8F%BF"
+```js example-good +encodeURI('\uD800\uDFFF'); +// "%F0%90%8F%BF" +``` -

Décodage

+### Décodage -

Le décodage permet de remplacer chaque séquence d'échappement dans le composant encodé par le caractère qu'elle représente. S'il n'existe aucun caractère correspondant, une exception sera déclenchée :

+Le décodage permet de remplacer chaque séquence d'échappement dans le composant encodé par le caractère qu'elle représente. S'il n'existe aucun caractère correspondant, une exception sera déclenchée : -
decodeURIComponent('%E0%A4%A');
+```js example-bad
+decodeURIComponent('%E0%A4%A');
 // "URIError: malformed URI sequence"
-
+``` -

Avec la valeur d'entrée correcte, on a généralement quelque chose qui ressemble à :

+Avec la valeur d'entrée correcte, on a généralement quelque chose qui ressemble à : -
decodeURIComponent('JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B');
-// "JavaScript_шеллы"
+```js example-good +decodeURIComponent('JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B'); +// "JavaScript_шеллы" +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("URIError")}}
  • -
  • {{jsxref("decodeURI")}}
  • -
  • {{jsxref("encodeURI")}}
  • -
  • {{jsxref("encodeURIComponent")}}
  • -
  • {{jsxref("decodeURIComponent")}}
  • -
+- {{jsxref("URIError")}} +- {{jsxref("decodeURI")}} +- {{jsxref("encodeURI")}} +- {{jsxref("encodeURIComponent")}} +- {{jsxref("decodeURIComponent")}} diff --git a/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md b/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md index c51fef7551..1aa8577010 100644 --- a/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md +++ b/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md @@ -9,26 +9,26 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_bracket_after_list original_slug: Web/JavaScript/Reference/Erreurs/Missing_bracket_after_list --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: missing ] after element list
-
+ SyntaxError: missing ] after element list -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}.

+{{jsxref("SyntaxError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Il y a une erreur dans le littéral de tableau qui est uilisé. Il manque un crochet fermant ("]") ou une virgule qui sépare les éléments.

+Il y a une erreur dans le littéral de tableau qui est uilisé. Il manque un crochet fermant ("`]`") ou une virgule qui sépare les éléments. -

Exemples

+## Exemples -

Littéraux de tableaux incomplets

+### Littéraux de tableaux incomplets -
var liste = [1, 2,
+```js example-bad
+var liste = [1, 2,
 
 var instruments = [
   "Ukulele",
@@ -37,11 +37,12 @@ var instruments = [
 };
 
 var data = [{toto: "truc"} {titi: "bidule"}];
-
+``` -

Les versions correctes seraient :

+Les versions correctes seraient : -
var liste = [1, 2];
+```js example-good
+var liste = [1, 2];
 
 var instruments = [
  "Ukulele",
@@ -49,10 +50,9 @@ var instruments = [
  "Piano"
 ];
 
-var data = [{toto: "truc"}, {titi: "bidule"}];
+var data = [{toto: "truc"}, {titi: "bidule"}]; +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Array")}}
  • -
+- {{jsxref("Array")}} diff --git a/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md b/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md index 9e6595726c..d5170353ac 100644 --- a/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md +++ b/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md @@ -8,71 +8,77 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id original_slug: Web/JavaScript/Reference/Erreurs/Missing_colon_after_property_id --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected ':' (Edge)
-SyntaxError: missing : after property id (Firefox)
-
+ SyntaxError: Expected ':' (Edge) + SyntaxError: missing : after property id (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Lorsqu'on crée un objet en utilisant un initialisateur d'objet, il faut utiliser un deux-points ( : ) afin de séparer les clés des valeurs pour les propriétés de l'objet.

+Lorsqu'on crée un objet en utilisant un [initialisateur d'objet](/fr/docs/Web/JavaScript/Reference/Opérateurs/Initialisateur_objet), il faut utiliser un deux-points ( : ) afin de séparer les clés des valeurs pour les propriétés de l'objet. -
var obj = { cleDeLaPropriete: 'valeur' };
-
+```js +var obj = { cleDeLaPropriete: 'valeur' }; +``` -

Exemples

+## Exemples -

Deux-points et signe égal

+### Deux-points et signe égal -

Le code qui suit provoquera une erreur car on utilise un signe égal (=) à la place du deux-points.

+Le code qui suit provoquera une erreur car on utilise un signe égal (=) à la place du deux-points. -
var obj = { cleDeLaPropriete = 'valeur' };
+```js example-bad
+var obj = { cleDeLaPropriete = 'valeur' };
 // SyntaxError: missing : after property id
-
+``` -

Pour corriger ce problème, on peut utiliser un deux-points ou bien affecter la nouvelle propriété après avoir créé l'objet :

+Pour corriger ce problème, on peut utiliser un deux-points ou bien affecter la nouvelle propriété après avoir créé l'objet : -
var obj = { cleDeLaPropriete: 'valeur' };
+```js example-good
+var obj = { cleDeLaPropriete: 'valeur' };
 
 // ou encore :
 
 var obj = { };
 obj['cleDeLaPropriete'] = 'valeur';
-
+``` -

Propriétés vides

+### Propriétés vides -

On ne peut pas créer de propriétés vides de cette façon :

+On ne peut pas créer de propriétés vides de cette façon : -
var obj = { cleDeLaPropriete; };
+```js example-bad
+var obj = { cleDeLaPropriete; };
 // SyntaxError: missing : after property id
-
+``` -

Si vous souhaitez définir une propriété sans valeur, vous pouvez utiliser le mot-clé {{jsxref("null")}} :

+Si vous souhaitez définir une propriété sans valeur, vous pouvez utiliser le mot-clé {{jsxref("null")}} : -
var obj = { cleDeLaPropriete: null };
+```js example-good +var obj = { cleDeLaPropriete: null }; +``` -

Propriétés calculées

+### Propriétés calculées -

Si vous souhaitez créer une clé de propriété à partir d'une expression, il faudra utiliser des crochets pour encadrer l'expression (sinon le nom de la propriété ne pourra pas être calculé) :

+Si vous souhaitez créer une clé de propriété à partir d'une expression, il faudra utiliser des crochets pour encadrer l'expression (sinon le nom de la propriété ne pourra pas être calculé) : -
var obj = { 'tr'+'uc': 'toto' };
+```js example-bad
+var obj = { 'tr'+'uc': 'toto' };
 // SyntaxError: missing : after property id
-
+``` -

Pour corriger l'erreur, il faudra placer l'expression entre crochets :

+Pour corriger l'erreur, il faudra placer l'expression entre crochets : -
var obj = { ['tr'+'uc']: 'toto' };
+```js example-good +var obj = { ['tr'+'uc']: 'toto' }; +``` -

Voir aussi

+## Voir aussi - +- [Initialisateur d'objet](/fr/docs/Web/JavaScript/Reference/Opérateurs/Initialisateur_objet) diff --git a/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md b/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md index c8ee04b3c8..89f612ede3 100644 --- a/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md +++ b/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md @@ -8,61 +8,64 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_function_body --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected '}' (Edge)
-SyntaxError: missing } after function body (Firefox)
-
+ SyntaxError: Expected '}' (Edge) + SyntaxError: missing } after function body (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il y a une erreur de syntaxe près d'une création de fonction. Dans ce cas, il est préférable de vérifier que les parenthèses et accolades fermantes sont bien présentes et dans le bon ordre. Indenter et formater le code peut vous aider à vous y retrouver parmi les éventuels différents niveaux d'imbrication.

+Il y a une erreur de syntaxe près d'une création de fonction. Dans ce cas, il est préférable de vérifier que les parenthèses et accolades fermantes sont bien présentes et dans le bon ordre. Indenter et formater le code peut vous aider à vous y retrouver parmi les éventuels différents niveaux d'imbrication. -

Exemples

+## Exemples -

Oubli d'une accolade fermante

+### Oubli d'une accolade fermante -

La plupart du temps, il s'agit d'une accolade manquante dans le code de la fonction :

+La plupart du temps, il s'agit d'une accolade manquante dans le code de la fonction : -
var charge = function() {
+```js example-bad
+var charge = function() {
   if (soleil) {
     utiliserPanneauSolaire();
   } else {
     utiliserVelo();
 };
-
+``` -

La forme correcte est :

+La forme correcte est : -
var charge = function() {
+```js example-good
+var charge = function() {
   if (soleil) {
     utiliserPanneauSolaire();
   } else {
     utiliserVelo();
   }
-};
+}; +``` -

Une erreur de ce type peut être moins visible lorsqu'on utilise les fonctions qui sont appelées immédiatement, les fermetures ou d'autres formes qui utilisent de nombreuses parenthèses et/ou accolades comme par exemple :

+Une erreur de ce type peut être moins visible lorsqu'on utilise les fonctions qui sont appelées immédiatement, [les fermetures](/fr/docs/Web/JavaScript/Closures) ou d'autres formes qui utilisent de nombreuses parenthèses et/ou accolades comme par exemple : -
(function() { if (true) { return false; } );
-
+```js example-bad +(function() { if (true) { return false; } ); +``` -

Généralement, mettre en forme et vérifier l'indentation permet de repérer ces erreurs.

+Généralement, mettre en forme et vérifier l'indentation permet de repérer ces erreurs. -
(function() {
+```js example-good
+(function() {
   if (true) {
     return false;
   }
-});
+}); +``` -

Voir aussi

+## Voir aussi - +- [Les fonctions](/fr/docs/Web/JavaScript/Guide/Fonctions) diff --git a/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md b/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md index f845a673c6..720e6c5cd4 100644 --- a/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md +++ b/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md @@ -8,46 +8,45 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_property_list --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected '}' (Edge)
-SyntaxError: missing } after property list (Firefox)
-
+ SyntaxError: Expected '}' (Edge) + SyntaxError: missing } after property list (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il y a une coquille dans le littéral objet utilisé. Cela peut être dû à une accolade manquante ou à une virgule manquante. Il est aussi utile de vérifier que les accolades et les parenthèses sont bien ordonnées. Pour ce type d'erreur, une bonne indentation permet de repérer plus facilement la coquille parmi les lignes de code.

+Il y a une coquille dans le [littéral objet](/fr/docs/Web/JavaScript/Reference/Opérateurs/Initialisateur_objet) utilisé. Cela peut être dû à une accolade manquante ou à une virgule manquante. Il est aussi utile de vérifier que les accolades et les parenthèses sont bien ordonnées. Pour ce type d'erreur, une bonne indentation permet de repérer plus facilement la coquille parmi les lignes de code. -

Exemples

+## Exemples -

Une virgule oubliée

+### Une virgule oubliée -

Il arrive parfois que ce soit une virgule absente dans le littéral qui entraîne cette erreur :

+Il arrive parfois que ce soit une virgule absente dans le littéral qui entraîne cette erreur : -
var obj = {
+```js example-bad
+var obj = {
   a: 1,
   b: { maProp: 2 }
   c: 3
 };
-
+``` -

La version correcte correspondante est :

+La version correcte correspondante est : -
var obj = {
+```js example-good
+var obj = {
   a: 1,
   b: { maProp: 2 },
   c: 3
 };
-
+``` -

Voir aussi

+## Voir aussi - +- [Les littéraux objets](/fr/docs/Web/JavaScript/Reference/Opérateurs/Initialisateur_objet) diff --git a/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md b/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md index e5956f0f04..635c238646 100644 --- a/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md +++ b/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md @@ -8,28 +8,28 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_formal_parameter original_slug: Web/JavaScript/Reference/Erreurs/Missing_formal_parameter --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: missing formal parameter (Firefox)
-
+ SyntaxError: missing formal parameter (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

« Formal parameter » (ou « paramètre formel ») est une façon de désigner un paramètre d'une fonction. Ici, certains des paramètres de la fonction sont invalides. Lorsqu'on déclare une fonction, les paramètres doivent être des identifiants et non des valeurs (telles que des nombres, des chaînes de caractères ou des objets). La déclaration et l'appel de la fonction forment deux étapes distinctes. Les déclarations utilisent uniquement des identifiants comme paramètres. Lorsqu'on appelle une fonction, on fournit les valeurs à utiliser.

+« _Formal parameter_ » (ou « paramètre formel ») est une façon de désigner un paramètre d'une fonction. Ici, certains des paramètres de la fonction sont invalides. Lorsqu'on déclare une fonction, les paramètres doivent être des identifiants et non des valeurs (telles que des nombres, des chaînes de caractères ou des objets). La déclaration et l'appel de la fonction forment deux étapes distinctes. Les déclarations utilisent uniquement des identifiants comme paramètres. Lorsqu'on appelle une fonction, on fournit les valeurs à utiliser. -

En JavaScript, les identifiants peuvent contenir n'importe quel caractère alphanumérique (ou "$" or "_") et ne doivent pas commencer par un nombre. Un identifiant n'est pas une chaîne de caractères, une chaîne de caractères est une donnée alors qu'un identifiant fait partie du code.

+En JavaScript, les identifiants peuvent contenir n'importe quel caractère alphanumérique (ou "$" or "\_") et ne doivent pas commencer par un nombre. Un identifiant n'est pas une chaîne de caractères, une chaîne de caractères est une donnée alors qu'un identifiant fait partie du code. -

Exemples

+## Exemples -

Lorsqu'on définit une fonction, les paramètres doivent être des identifiants. Aucune des fonctions suivantes ne répond à ce critère (elles lèvent donc toutes une erreur) car elles utilisent des valeurs :

+Lorsqu'on définit une fonction, les paramètres doivent être des identifiants. Aucune des fonctions suivantes ne répond à ce critère (elles lèvent donc toutes une erreur) car elles utilisent des valeurs : -
function carre(3) {
+```js example-bad
+function carre(3) {
   return nombre * nombre;
 };
 // SyntaxError: missing formal parameter
@@ -43,11 +43,12 @@ function log({ obj: "value"}) {
   console.log(arg)
 };
 // SyntaxError: missing formal parameter
-
+``` -

Il faut utiliser des identifiants lors de la déclaration des fonctions :

+Il faut utiliser des identifiants lors de la déclaration des fonctions : -
function carre(nombre) {
+```js example-good
+function carre(nombre) {
   return nombre * nombre;
 };
 
@@ -57,22 +58,20 @@ function salutation(salut) {
 
 function log(arg) {
   console.log(arg)
-};
+}; +``` -

Ensuite, on pourra appeler ces fonctions avec les arguments voulus :

+Ensuite, on pourra appeler ces fonctions avec les arguments voulus : -
carre(2); // 4
+```js
+carre(2); // 4
 salutation("Coucou"); // "Coucou"
 log({obj: "value"});  // Object { obj: "value" }
-
- -

Voir aussi

- - +``` + +## Voir aussi + +- Les autres erreurs relatives aux paramètres formels : + + - [SyntaxError: Malformed formal parameter](/fr/docs/Web/JavaScript/Reference/Errors/Malformed_formal_parameter) + - [SyntaxError: redeclaration of formal parameter "x"](/fr/docs/Web/JavaScript/Reference/Errors/Redeclared_parameter) diff --git a/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md b/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md index e368d0982c..5110b755a0 100644 --- a/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md +++ b/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md @@ -8,53 +8,55 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_initializer_in_const original_slug: Web/JavaScript/Reference/Erreurs/Missing_initializer_in_const --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Const must be initalized (Edge)
-SyntaxError: missing = in const declaration (Firefox)
-SyntaxError: Missing initializer in const declaration (Chrome)
-
+ SyntaxError: Const must be initalized (Edge) + SyntaxError: missing = in const declaration (Firefox) + SyntaxError: Missing initializer in const declaration (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une constante est une valeur qui ne peut pas être modifiée par le programme pendant l'exécution. Elle ne peut pas être changée avec une réaffectation ou une redéclaration. En JavaScript, les constantes sont déclarées grâce au mot-clé const. Il est également nécessaire de fournir une valeur d'initialisation dans l'instruction où on déclare la constante (ce qui est logique vu qu'on ne peut pas la modifier ensuite).

+Une constante est une valeur qui ne peut pas être modifiée par le programme pendant l'exécution. Elle ne peut pas être changée avec une réaffectation ou une redéclaration. En JavaScript, les constantes sont déclarées grâce au mot-clé [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const). Il est également nécessaire de fournir une valeur d'initialisation dans l'instruction où on déclare la constante (ce qui est logique vu qu'on ne peut pas la modifier ensuite). -

Exemples

+## Exemples -

Valeur d'initialisation manquante

+### Valeur d'initialisation manquante -

À la différence de var ou de let, il est nécessaire d'indiquer une valeur lors de la déclaration. Si aucune valeur n'est indiquée, une exception sera levée :

+À la différence de `var` ou de `let`, il est nécessaire d'indiquer une valeur lors de la déclaration. Si aucune valeur n'est indiquée, une exception sera levée : -
const COLUMNS;
-// SyntaxError: missing = in const declaration
+```js example-bad +const COLUMNS; +// SyntaxError: missing = in const declaration +``` -

Résoudre le problème

+### Résoudre le problème -

On a le choix entre plusieurs options pour résoudre ce problème. Il faut comprendre le rôle de la constante en question.

+On a le choix entre plusieurs options pour résoudre ce problème. Il faut comprendre le rôle de la constante en question. -

Ajouter une valeur constante

+#### Ajouter une valeur constante -

On peut indiquer la valeur de la constante dans la même instruction :

+On peut indiquer la valeur de la constante dans la même instruction : -
const COLONNES = 80;
+```js example-good +const COLONNES = 80; +``` -

const, let ou var ?

+#### `const`, `let` ou `var` ? -

const ne doit pas être utilisé si on ne souhaite pas déclarer de constante. Peut-être qu'on souhaite simplement déclarer une variable avec une portée de bloc grâce à let ou une variable globale avec var. Ces deux instructions ne nécessitent pas de valeur initiale.

+`const` ne doit pas être utilisé si on ne souhaite pas déclarer de constante. Peut-être qu'on souhaite simplement déclarer une variable avec une portée de bloc grâce à [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) ou une variable globale avec [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). Ces deux instructions ne nécessitent pas de valeur initiale. -
let colonnes;
-
+```js example-good +let colonnes; +``` -

Voir aussi

+## Voir aussi - +- [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const) +- [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) +- [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) diff --git a/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md b/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md index d46591c96f..d777c273e3 100644 --- a/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md +++ b/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md @@ -8,28 +8,28 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator original_slug: Web/JavaScript/Reference/Erreurs/Missing_name_after_dot_operator --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: missing name after . operator
-
+ SyntaxError: missing name after . operator -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

L'opérateur . (le point) est utilisé pour accéder aux propriétés d'un objet. Il est nécessaire d'indiquer le nom de la propriété à laquelle on souhaite accéder. Pour les propriétés dont le nom est calculé, il est préférable d'utiliser les crochets pour encadrer le nom. Cela permet de calculer une expression dont le résultat sera le nom de la propriété recherchée. Peut-être cherchiez-vous à utiliser l'opérateur de concaténation ? C'est l'opérateur + qu'il faut utiliser dans ce cas. Pour plus de détails, voir les exemples ci-après.

+L'opérateur `.` (le point) est utilisé pour [accéder aux propriétés d'un objet](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_membres). Il est nécessaire d'indiquer le nom de la propriété à laquelle on souhaite accéder. Pour les propriétés dont le nom est calculé, il est préférable d'utiliser les crochets pour encadrer le nom. Cela permet de calculer une expression dont le résultat sera le nom de la propriété recherchée. Peut-être cherchiez-vous à utiliser l'opérateur de concaténation ? C'est l'opérateur `+` qu'il faut utiliser dans ce cas. Pour plus de détails, voir les exemples ci-après. -

Exemples

+## Exemples -

Accéder à une propriété

+### Accéder à une propriété -

Pour accéder à une propriété en JavaScript, on utilise le point (.) ou les crochets ([]) mais pas une combinaison des deux. Les crochets sont notamment utiles lorsqu'on souhaite accéder à des propriétés dont le nom est calculé.

+[Pour accéder à une propriété](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_membres) en JavaScript, on utilise le point (.) ou les crochets (`[]`) mais pas une combinaison des deux. Les crochets sont notamment utiles lorsqu'on souhaite accéder à des propriétés dont le nom est calculé. -
var obj = { toto: { truc: "bidule", machin2: "bidule2" } };
+```js example-bad
+var obj = { toto: { truc: "bidule", machin2: "bidule2" } };
 var i = 2;
 
 obj.[toto].[truc]
@@ -37,11 +37,12 @@ obj.[toto].[truc]
 
 obj.toto."machin"+i;
 // SyntaxError: missing name after . operator
-
+``` -

Pour corriger ce fragment de code, on pourra accéder aux propriétés de la façon suivante :

+Pour corriger ce fragment de code, on pourra accéder aux propriétés de la façon suivante : -
obj.toto.truc; // "bidule"
+```js example-good
+obj.toto.truc; // "bidule"
 // ou autrement
 obj["toto"]["truc"]; // "bidule"
 
@@ -49,22 +50,24 @@ obj["toto"]["truc"]; // "bidule"
 // nom est calculé, il faut les
 // crochets
 obj.toto["machin" + i]; // "bidule2"
-
+``` -

Accéder à une propriété ou concaténer ?

+### Accéder à une propriété ou concaténer ? -

Si vous avez l'habitude de développer en utilisant un autre langage de programmation tel que {{Glossary("PHP")}}, il est possible de mélanger certains opérateurs et d'utiliser le point comme opérateur de concaténation, qui est l'opérateur + en JavaScript :

+Si vous avez l'habitude de développer en utilisant un autre langage de programmation tel que {{Glossary("PHP")}}, il est possible de mélanger certains opérateurs et d'utiliser le point comme opérateur de concaténation, qui est l'opérateur `+` en JavaScript : -
console.log("Coucou " . "monde");
+```js example-bad
+console.log("Coucou " . "monde");
 
-// SyntaxError: missing name after . operator
+// SyntaxError: missing name after . operator +``` -

À la place, on écrira :

+À la place, on écrira : -
console.log("Coucou " + "monde");
+```js example-good +console.log("Coucou " + "monde"); +``` -

Voir aussi

+## Voir aussi - +- [Les accesseurs de propriété](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_membres) diff --git a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md index f59707b152..b9bf2d9afb 100644 --- a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md +++ b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md @@ -8,50 +8,53 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_argument_list --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected ')' (Edge)
-SyntaxError: missing ) after argument list (Firefox)
-
+ SyntaxError: Expected ')' (Edge) + SyntaxError: missing ) after argument list (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}.

+{{jsxref("SyntaxError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

 

-

Il y a une erreur avec la façon dont une fonction est appelée . Cela peut être une faute de frappe, un opérateur manquant, ou une chaîne non-échappée, par exemple .

-

Exemple

+Il y a une erreur avec la façon dont une fonction est appelée . Cela peut être une faute de frappe, un opérateur manquant, ou une chaîne non-échappée, par exemple . -

Parce qu'il n'y a pas d'opérateur "+" pour concaténer la chaîne de caractères, JavaScript s'attend à trouver une parenthèse après "PI : ", qu'il considère comme  l'argument de la fonction log. 

+## Exemple -
console.log("PI: " Math.PI);
+Parce qu'il n'y a pas d'opérateur "+" pour concaténer la chaîne de caractères, JavaScript s'attend à trouver une parenthèse après "PI : ", qu'il considère comme  l'argument de la fonction `log. `
+
+```js example-bad
+console.log("PI: " Math.PI);
 // SyntaxError: missing ) after argument list
-
+``` -

La fonction log peut être corrigée en ajoutant un opérateur "+".

+La fonction `log` peut être corrigée en ajoutant un opérateur "+". -
console.log("PI: " + Math.PI);
-// "PI: 3.141592653589793"
+```js example-good +console.log("PI: " + Math.PI); +// "PI: 3.141592653589793" +``` -

Chaînes non terminées

+### Chaînes non terminées -
console.log('"Java" + "Script" = \"' + 'Java' + 'Script\");
-// SyntaxError: missing ) after argument list
+```js example-bad +console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"); +// SyntaxError: missing ) after argument list +``` -

Dans cet exemple, le moteur JavaScript considère qu'on souhaitait avoir ); dans la chaîne de caractères et l'ignore. Aussi, le moteur considère que l'appelle à console.log n'est pas terminé et qu'il manque une parenthèse fermante. Pour corriger ce problème, on peut rajouter une quote ' après la chaîne de caractères "Script" :

+Dans cet exemple, le moteur JavaScript considère qu'on souhaitait avoir `);` dans la chaîne de caractères et l'ignore. Aussi, le moteur considère que l'appelle à `console.log` n'est pas terminé et qu'il manque une parenthèse fermante. Pour corriger ce problème, on peut rajouter une quote `'` après la chaîne de caractères `"Script"` : -
console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"');
+```js example-good
+console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"');
 // '"Java" + "Script" = "JavaScript"'
-
+``` -

Voir aussi

+## Voir aussi - +- [Functions](/fr/docs/Web/JavaScript/Guide/Functions) diff --git a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md index 52018f1d8d..f1afdee5d9 100644 --- a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md +++ b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md @@ -8,64 +8,67 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_condition --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected ')' (Edge)
-SyntaxError: missing ) after condition (Firefox)
-
+ SyntaxError: Expected ')' (Edge) + SyntaxError: missing ) after condition (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il y a une erreur pour la condition écrite dans l'instruction if. Pour chaque langage de programmation, on utilise des instructions pour choisir quel bloc d'instructions exécuter selon les différentes entrées. L'instruction if permet d'exécuter une instruction si une condition donnée est vérifiée. En JavaScript, il faut que cette condition apparaisse entre parenthèses après le mot-clé  if :

+Il y a une erreur pour la condition écrite dans l'instruction [`if`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else). Pour chaque langage de programmation, on utilise des instructions pour choisir quel bloc d'instructions exécuter selon les différentes entrées. L'instruction `if` permet d'exécuter une instruction si une condition donnée est vérifiée. En JavaScript, il faut que cette condition apparaisse entre parenthèses après le mot-clé  `if` : -
if (condition) {
+```js
+if (condition) {
   // faire quelque chose si la condition est vraie
-}
+} +``` -

Exemples

+## Exemples -

Il s'agit peut-être simplement d'une coquille et il suffit alors de vérifier les parenthèses (ou plutôt leur absence) :

+Il s'agit peut-être simplement d'une coquille et il suffit alors de vérifier les parenthèses (ou plutôt leur absence) : -
if (3 > Math.PI {
+```js example-bad
+if (3 > Math.PI {
   console.log("Pardon ?");
 }
 
 // SyntaxError: missing ) after condition
-
+``` -

Pour corriger ce fragment de code, on ajoutera une parenthèse pour fermer la condition :

+Pour corriger ce fragment de code, on ajoutera une parenthèse pour fermer la condition : -
if (3 > Math.PI) {
+```js example-good
+if (3 > Math.PI) {
   console.log("Pardon ?");
-}
+} +``` -

Si vous avez l'habitude d'utiliser un autre langage de programmation, peut-être avez-vous utilisé un mot-clé qui n'existe pas en JavaScript ?

+Si vous avez l'habitude d'utiliser un autre langage de programmation, peut-être avez-vous utilisé un mot-clé qui n'existe pas en JavaScript ? -
if (done is true) {
+```js example-bad
+if (done is true) {
  console.log("we are done!");
 }
 
 // SyntaxError: missing ) after condition
-
+``` -

Pour corriger cette erreur, on utilisera un opérateur de comparaison correct :

+Pour corriger cette erreur, on utilisera [un opérateur de comparaison](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison) correct : -
if (done === true) {
+```js example-good
+if (done === true) {
  console.log("Et voilà !");
-}
+} +``` -

Voir aussi

+## Voir aussi - +- [`if...else`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else) +- [Les opérateurs de comparaisons](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_comparaison) +- [Choisir quel code exécuter : les structures conditionnelles](/fr/docs/Learn/JavaScript/Building_blocks/conditionals) diff --git a/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md b/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md index cb9e5c0312..9ef0310199 100644 --- a/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md +++ b/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md @@ -9,76 +9,82 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement original_slug: Web/JavaScript/Reference/Erreurs/Missing_semicolon_before_statement --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Expected ';' (Edge)
-SyntaxError: missing ; before statement (Firefox)
-
+ SyntaxError: Expected ';' (Edge) + SyntaxError: missing ; before statement (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}.

+{{jsxref("SyntaxError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Un point-virgule est absent quelque part. En JavaScript, les instructions doivent se terminer par des points-virgules. Certaines de ces instructions sont traitées par l'insertion automatique de point-virgule (ASI pour Automatic Semicolon Insertion), mais pour le code qui provoque l'erreur, un point-virgule est nécessaire afin que le moteur JavaScript puisse analyser le code source correctement.

+Un point-virgule est absent quelque part. En JavaScript, [les instructions doivent se terminer par des points-virgules](/fr/docs/Web/JavaScript/Reference/Instructions). Certaines de ces instructions sont traitées par [l'insertion automatique de point-virgule (_ASI_ pour _Automatic Semicolon Insertion)_](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Insertion_automatique_de_points-virgules), mais pour le code qui provoque l'erreur, un point-virgule est nécessaire afin que le moteur JavaScript puisse analyser le code source correctement. -

La plupart du temps, cette erreur est la conséquence d'une autre erreur : ne pas « fermer » les chaînes de caractères correctement ou utiliser var de façon incorrecte. Il peut également y avoir trop de parenthèses à un endroit. Lorsque cette erreur apparaît, faites attention à la syntaxe du code environnant.

+La plupart du temps, cette erreur est la conséquence d'une autre erreur : ne pas « fermer » les chaînes de caractères correctement ou utiliser `var` de façon incorrecte. Il peut également y avoir trop de parenthèses à un endroit. Lorsque cette erreur apparaît, faites attention à la syntaxe du code environnant. -

Exemples

+## Exemples -

Les chaînes laissées ouvertes

+### Les chaînes laissées ouvertes -

Cette erreur est parfois simplement provoquée par une chaîne dont les quotes ne sont pas échappées correctement ou qui ne sont pas correctement délimitées. Le moteur JavaScript s'attend donc à trouver la fin de la chaîne. Par exemple :

+Cette erreur est parfois simplement provoquée par une chaîne dont les quotes ne sont pas échappées correctement ou qui ne sont pas correctement délimitées. Le moteur JavaScript s'attend donc à trouver la fin de la chaîne. Par exemple : -
var toto = 'Ouvrir l'œil';
-// SyntaxError: missing ; before statement
+```js example-bad +var toto = 'Ouvrir l'œil'; +// SyntaxError: missing ; before statement +``` -

Pour éviter cela, on pourra utiliser des doubles quotes ou échapper l'apostrophe :

+Pour éviter cela, on pourra utiliser des doubles quotes ou échapper l'apostrophe : -
var toto = "Ouvrir l'œil";
+```js example-good
+var toto = "Ouvrir l'œil";
 var toto = 'Ouvrir l\'œil';
-
+``` -

Déclarer des propriétés avec var

+### Déclarer des propriétés avec `var` -

On ne peut pas déclarer de propriétés sur un objet ou un tableau avec une déclaration var.

+On **ne peut pas** déclarer de propriétés sur un objet ou un tableau avec une déclaration `var`. -
var obj = {};
+```js example-bad
+var obj = {};
 var obj.toto = "coucou"; // SyntaxError missing ; before statement
 
 var array = [];
 var array[0] = "monde"; // SyntaxError missing ; before statement
-
+``` -

Pour éviter cela, on n'utilisera pas le mot-clé var qui est inutile dans ces cas :

+Pour éviter cela, on n'utilisera pas le mot-clé `var` qui est inutile dans ces cas : -
var obj = {};
+```js example-good
+var obj = {};
 obj.toto = "coucou";
 
 var array = [];
 array[0] = "monde";
-
+``` -

Mauvais mots-clés

+### Mauvais mots-clés -

Il peut arriver, notamment lorsqu'on provient d'un autre langage de programmation, d'utiliser des mots-clés qui n'ont pas du tout le même sens en JavaScript :

+Il peut arriver, notamment lorsqu'on provient d'un autre langage de programmation, d'utiliser des mots-clés qui n'ont pas du tout le même sens en JavaScript : -
def print(info){
+```js example-bad
+def print(info){
   console.log(info);
-}; // SyntaxError missing ; before statement
+}; // SyntaxError missing ; before statement +``` -

À la place de def, on utilisera le mot-clé function :

+À la place de `def`, on utilisera le mot-clé `function` : -
function print(info){
+```js example-good
+function print(info){
   console.log(info);
-};
+}; +``` -

Voir aussi

+## Voir aussi - +- [L'insertion automatique de points-virgules](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Insertion_automatique_de_points-virgules) +- [Les instructions JavaScript](/fr/docs/Web/JavaScript/Reference/Instructions) diff --git a/files/fr/web/javascript/reference/errors/more_arguments_needed/index.md b/files/fr/web/javascript/reference/errors/more_arguments_needed/index.md index 3417499581..7175be5198 100644 --- a/files/fr/web/javascript/reference/errors/more_arguments_needed/index.md +++ b/files/fr/web/javascript/reference/errors/more_arguments_needed/index.md @@ -8,43 +8,43 @@ tags: translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed original_slug: Web/JavaScript/Reference/Erreurs/More_arguments_needed --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: argument is not an Object and is not null (Edge)
-TypeError: Object.create requires at least 1 argument, but only 0 were passed
-TypeError: Object.setPrototypeOf requires at least 2 arguments, but only 0 were passed
-TypeError: Object.defineProperties requires at least 1 argument, but only 0 were passed
-
+ TypeError: argument is not an Object and is not null (Edge) + TypeError: Object.create requires at least 1 argument, but only 0 were passed + TypeError: Object.setPrototypeOf requires at least 2 arguments, but only 0 were passed + TypeError: Object.defineProperties requires at least 1 argument, but only 0 were passed -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Lors de l'appel de la fonction, il y a eu une erreur due au manque d'argument. La fonction doit recevoir plus de paramètres afin de pouvoir fonctionner.

+Lors de l'appel de la fonction, il y a eu une erreur due au manque d'argument. La fonction doit recevoir plus de paramètres afin de pouvoir fonctionner. -

Exemples

+## Exemples -

La méthode {{jsxref("Object.create()")}} nécessite au moins un argument et {{jsxref("Object.setPrototypeOf()")}} requiert deux paramètres :

+La méthode {{jsxref("Object.create()")}} nécessite au moins un argument et {{jsxref("Object.setPrototypeOf()")}} requiert deux paramètres : -
var obj = Object.create();
+```js example-bad
+var obj = Object.create();
 // TypeError: Object.create requires more than 0 arguments
 
 var obj = Object.setPrototypeOf({});
 // TypeError: Object.setPrototypeOf requires more than 1 argument
-
+``` -

On peut corriger cet exemple en utilisant {{jsxref("null")}} comme prototype :

+On peut corriger cet exemple en utilisant {{jsxref("null")}} comme prototype : -
var obj = Object.create(null);
+```js example-good
+var obj = Object.create(null);
 
-var obj = Object.setPrototypeOf({}, null);
+var obj = Object.setPrototypeOf({}, null); +``` -

Voir aussi

+## Voir aussi - +- [Les fonctions](/fr/docs/Web/JavaScript/Guide/Fonctions) diff --git a/files/fr/web/javascript/reference/errors/negative_repetition_count/index.md b/files/fr/web/javascript/reference/errors/negative_repetition_count/index.md index 2b653b11f0..e4f0865fbe 100644 --- a/files/fr/web/javascript/reference/errors/negative_repetition_count/index.md +++ b/files/fr/web/javascript/reference/errors/negative_repetition_count/index.md @@ -8,39 +8,39 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count original_slug: Web/JavaScript/Reference/Erreurs/Negative_repetition_count --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
RangeError: argument out of range (Edge)
-RangeError: repeat count must be non-negative (Firefox)
-RangeError: Invalid count value (Chrome)
-
+ RangeError: argument out of range (Edge) + RangeError: repeat count must be non-negative (Firefox) + RangeError: Invalid count value (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La méthode {{jsxref("String.prototype.repeat()")}} a été utilisée avec un argument négatif. Or, cet argument doit être compris dans l'intervalle [0, +∞).

+La méthode {{jsxref("String.prototype.repeat()")}} a été utilisée avec un argument négatif. Or, cet argument doit être compris dans l'intervalle \[0, +∞). -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
'abc'.repeat(-1); // RangeError 
+```js example-bad +'abc'.repeat(-1); // RangeError +``` -

Exemples valides

+### Exemples valides -
'abc'.repeat(0);    // ''
+```js example-good
+'abc'.repeat(0);    // ''
 'abc'.repeat(1);    // 'abc'
 'abc'.repeat(2);    // 'abcabc'
 'abc'.repeat(3.5);  // 'abcabcabc' (converti en entier)
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("String.prototype.repeat()")}}
  • -
+- {{jsxref("String.prototype.repeat()")}} diff --git a/files/fr/web/javascript/reference/errors/no_non-null_object/index.md b/files/fr/web/javascript/reference/errors/no_non-null_object/index.md index 2dd59d1667..d635131c4b 100644 --- a/files/fr/web/javascript/reference/errors/no_non-null_object/index.md +++ b/files/fr/web/javascript/reference/errors/no_non-null_object/index.md @@ -8,60 +8,62 @@ tags: translation_of: Web/JavaScript/Reference/Errors/No_non-null_object original_slug: Web/JavaScript/Reference/Erreurs/No_non-null_object --- -
{{JSSidebar("Errors")}}
+{{JSSidebar("Errors")}} -

Message

+## Message -
TypeError: Invalid descriptor for property {x} (Edge)
-TypeError: "x" is not a non-null object (Firefox)
-TypeError: Property description must be an object: "x" (Chrome)
-TypeError: Invalid value used in weak set (Chrome)
-
+ TypeError: Invalid descriptor for property {x} (Edge) + TypeError: "x" is not a non-null object (Firefox) + TypeError: Property description must be an object: "x" (Chrome) + TypeError: Invalid value used in weak set (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Un objet devrait être trouvé et n'est pas fourni. La valeur {{jsxref("null")}} n'est pas un objet et ne fonctionnera pas, il est nécessaire de fournir un véritable objet pour que le code en question fonctionne.

+Un objet devrait être trouvé et n'est pas fourni. La valeur {{jsxref("null")}} n'est pas un objet et ne fonctionnera pas, il est nécessaire de fournir un véritable objet pour que le code en question fonctionne. -

Exemples

+## Exemples -

Absence d'un descripteur de propriété

+### Absence d'un descripteur de propriété -

Lorsqu'on utilise des méthodes telles que {{jsxref("Object.create()")}}, {{jsxref("Object.defineProperty()")}} ou {{jsxref("Object.defineProperties()")}}, le paramètre optionnel de description des propriétés doit être un descripteur sous la forme d'un objet. Si la valeur fournie n'est pas un objet (mais par exemple un nombre), l'appel à la méthode déclenchera une erreur :

+Lorsqu'on utilise des méthodes telles que {{jsxref("Object.create()")}}, {{jsxref("Object.defineProperty()")}} ou {{jsxref("Object.defineProperties()")}}, le paramètre optionnel de description des propriétés doit être un descripteur sous la forme d'un objet. Si la valeur fournie n'est pas un objet (mais par exemple un nombre), l'appel à la méthode déclenchera une erreur : -
Object.defineProperty({}, 'cle', 1);
+```js example-bad
+Object.defineProperty({}, 'cle', 1);
 // TypeError: 1 is not a non-null object
 
 Object.defineProperty({}, 'cle', null);
 // TypeError: null is not a non-null object
-
+``` -

Un descripteur de propriété valide aura la structure suivante :

+Un descripteur de propriété valide aura la structure suivante : -
Object.defineProperty({}, 'cle', { value: 'toto', writable: false });
-
+```js example-good +Object.defineProperty({}, 'cle', { value: 'toto', writable: false }); +``` -

Les clés de WeakMap et WeakSet sont des objets

+### Les clés de `WeakMap` et `WeakSet` sont des objets -

Les objets {{jsxref("WeakMap")}} et {{jsxref("WeakSet")}} utilisent des objets comme clé. On ne peut pas utiliser d'autres types de valeurs pour les clés de ces objets.

+Les objets {{jsxref("WeakMap")}} et {{jsxref("WeakSet")}} utilisent des objets comme clé. On ne peut pas utiliser d'autres types de valeurs pour les clés de ces objets. -
var ws = new WeakSet();
+```js example-bad
+var ws = new WeakSet();
 ws.add('toto');
-// TypeError: "toto" is not a non-null object
+// TypeError: "toto" is not a non-null object +``` -

À la place, on utilisera des objets :

+À la place, on utilisera des objets : -
ws.add({toto: 'truc'});
+```js example-good
+ws.add({toto: 'truc'});
 ws.add(window);
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Object.create()")}}
  • -
  • {{jsxref("Object.defineProperty()")}}, {{jsxref("Object.defineProperties()")}}
  • -
  • {{jsxref("WeakMap")}}, {{jsxref("WeakSet")}}
  • -
+- {{jsxref("Object.create()")}} +- {{jsxref("Object.defineProperty()")}}, {{jsxref("Object.defineProperties()")}} +- {{jsxref("WeakMap")}}, {{jsxref("WeakSet")}} diff --git a/files/fr/web/javascript/reference/errors/no_properties/index.md b/files/fr/web/javascript/reference/errors/no_properties/index.md index d45bd65c93..8309c98d5e 100644 --- a/files/fr/web/javascript/reference/errors/no_properties/index.md +++ b/files/fr/web/javascript/reference/errors/no_properties/index.md @@ -9,35 +9,33 @@ tags: translation_of: Web/JavaScript/Reference/Errors/No_properties original_slug: Web/JavaScript/Reference/Erreurs/No_properties --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Unable to get property {x} of undefined or null reference (Edge)
-TypeError: null has no properties (Firefox)
-TypeError: undefined has no properties (Firefox)
-
+ TypeError: Unable to get property {x} of undefined or null reference (Edge) + TypeError: null has no properties (Firefox) + TypeError: undefined has no properties (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Les valeurs {{jsxref("null")}} et {{jsxref("undefined")}} n'ont aucunes propriétés auxquelles accéder.

+Les valeurs {{jsxref("null")}} et {{jsxref("undefined")}} n'ont aucunes propriétés auxquelles accéder. -

Exemples

+## Exemples -
null.toto;
+```js example-bad
+null.toto;
 // TypeError: null has no properties
 
 undefined.truc;
 // TypeError: undefined has no properties
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("null")}}
  • -
  • {{jsxref("undefined")}}
  • -
+- {{jsxref("null")}} +- {{jsxref("undefined")}} diff --git a/files/fr/web/javascript/reference/errors/no_variable_name/index.md b/files/fr/web/javascript/reference/errors/no_variable_name/index.md index 035c83faa9..def7f7fc2f 100644 --- a/files/fr/web/javascript/reference/errors/no_variable_name/index.md +++ b/files/fr/web/javascript/reference/errors/no_variable_name/index.md @@ -8,77 +8,85 @@ tags: translation_of: Web/JavaScript/Reference/Errors/No_variable_name original_slug: Web/JavaScript/Reference/Erreurs/No_variable_name --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: missing variable name (Firefox)
-SyntaxError: Unexpected token = (Chrome)
+ SyntaxError: missing variable name (Firefox) + SyntaxError: Unexpected token = (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Il manque un nom pour une variable. Cela est probablement dû à une erreur de syntaxe dans le code. Peut-être qu'une variable est placée au mauvais endroit ou peut-être qu'il manque un nom car on n'a pas trouvé de nom pertinent… (ce qui est souvent assez difficile).

+Il manque un nom pour une variable. Cela est probablement dû à une erreur de syntaxe dans le code. Peut-être qu'une variable est placée au mauvais endroit ou peut-être qu'il manque un nom car on n'a pas trouvé de nom pertinent… (ce qui est souvent assez difficile). -

Exemples

+## Exemples -

Absence d'un nom pour une variable

+### Absence d'un nom pour une variable -
var = "toto";
-
+```js example-bad +var = "toto"; +``` -

Il est souvent compliqué de trouver le bon nom pour une variable…

+Il est souvent compliqué de trouver le bon nom pour une variable… -
var àDéfautDeMieux = "toto";
+```js example-good +var àDéfautDeMieux = "toto"; +``` -

Les mots-clés réservés ne peuvent pas être utilisés comme noms de variables

+### Les mots-clés réservés ne peuvent pas être utilisés comme noms de variables -

Quelques mots-clés sont réservés et ne peuvent pas être utilisés comme noms de variable :

+Quelques mots-clés sont [réservés](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Mots-clés) et ne peuvent pas être utilisés comme noms de variable : -
var debugger = "zuuuuut";
+```js example-bad
+var debugger = "zuuuuut";
 // SyntaxError: missing variable name
-
+``` -

Déclarer plusieurs variables

+### Déclarer plusieurs variables -

Attention aux virgules lorsqu'on déclare plusieurs variables… Y a-t-il plus de virgules que nécessairee ? Une virgule est-elle utilisée à la place d'un point-virgule ?

+Attention aux virgules lorsqu'on déclare plusieurs variables… Y a-t-il plus de virgules que nécessairee ? Une virgule est-elle utilisée à la place d'un point-virgule ? -
var x, y = "toto",
+```js example-bad
+var x, y = "toto",
 var x, = "toto"
 
 var un = document.getElementById('un'),
 var deux = document.getElementById('deux'),
 
 // SyntaxError: missing variable name
-
+``` -

Voici une version corrigée :

+Voici une version corrigée : -
var x, y = "toto";
+```js example-good
+var x, y = "toto";
 var x = "toto";
 
 var un = document.getElementById('un');
-var deux = document.getElementById('deux');
+var deux = document.getElementById('deux'); +``` -

Tableaux

+### Tableaux -

Pour former un littéral de tableau ({{jsxref("Array")}}), il est nécessaire d'ajouter des crochets autour des valeurs des éléments. Le fragment de code suivant ne fonctionnera pas :

+Pour former un littéral de tableau ({{jsxref("Array")}}), il est nécessaire d'ajouter des crochets autour des valeurs des éléments. Le fragment de code suivant ne fonctionnera pas : -
var arr = 1,2,3,4,5;
+```js example-bad
+var arr = 1,2,3,4,5;
 // SyntaxError: missing variable name
-
+``` -

Voici la forme équivalente correcte :

+Voici la forme équivalente correcte : -
var arr = [1,2,3,4,5];
+```js example-good +var arr = [1,2,3,4,5]; +``` -

Voir aussi

+## Voir aussi - +- [Choisir de bons noms de variable (en anglais)](http://wiki.c2.com/?GoodVariableNames) +- [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) +- [Guide JavaScript : Les déclarations de variable](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Déclarations) diff --git a/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md b/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md index bbb5b3569c..720a30d67c 100644 --- a/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md +++ b/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md @@ -9,76 +9,77 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element original_slug: Web/JavaScript/Reference/Erreurs/Non_configurable_array_element --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: can't delete non-configurable array element (Firefox)
-TypeError: Cannot delete property '2' of [object Array] (Chrome)
-
+ TypeError: can't delete non-configurable array element (Firefox) + TypeError: Cannot delete property '2' of [object Array] (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

On a voulu raccourcir la longueur d'un tableau mais l'un des éléments de ce tableau est non-configurable. Lorsqu'on tronque un tableau, les éléments situés au-delà de la nouvelle longueur seront supprimés. Dans ce cas, c'est cette suppression qui n'a pas pu être effectuée.

+On a voulu [raccourcir la longueur d'un tableau](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/length#Tronquer_un_tableau) mais l'un des éléments de ce tableau est [non-configurable](/fr/docs/Web/JavaScript/Structures_de_données#Propriétés). Lorsqu'on tronque un tableau, les éléments situés au-delà de la nouvelle longueur seront supprimés. Dans ce cas, c'est cette suppression qui n'a pas pu être effectuée. -

L'attribut configurable permet de contrôler si la propriété peut être supprimée d'un objet et si ses attributs (en dehors de writable) peuvent être modifiés.

+L'attribut `configurable` permet de contrôler si la propriété peut être supprimée d'un objet et si ses attributs (en dehors de `writable`) peuvent être modifiés. -

La plupart du temps, les propriétés d'un objet créé avec un littéral de tableau sont configurables. Toutefois, si on utilise {{jsxref("Object.defineProperty()")}} par exemple, la propriété n'est pas configurable par défaut.

+La plupart du temps, les propriétés d'un objet créé avec [un littéral de tableau](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array#Syntaxe) sont configurables. Toutefois, si on utilise {{jsxref("Object.defineProperty()")}} par exemple, la propriété n'est pas configurable par défaut. -

Exemples

+## Exemples -

Propriétés non-configurables créées avec  Object.defineProperty

+### Propriétés non-configurables créées avec  `Object.defineProperty` -

Par défaut, la méthode {{jsxref("Object.defineProperty()")}} crée des propriétés non-configurables si on n'indique pas expressément le contraire :

+Par défaut, la méthode {{jsxref("Object.defineProperty()")}} crée des propriétés non-configurables si on n'indique pas expressément le contraire : -
var arr = [];
+```js example-bad
+var arr = [];
 Object.defineProperty(arr, 0, {value: 0});
 Object.defineProperty(arr, 1, {value: "1"});
 
 arr.length = 1;
 // TypeError: can't delete non-configurable array element
-
+``` -

Si on veut tronquer le tableau, il faut que les éléments excédants soient configurables :

+Si on veut tronquer le tableau, il faut que les éléments excédants soient configurables : -
var arr = [];
+```js example-good
+var arr = [];
 Object.defineProperty(arr, 0, {value: 0, configurable: true});
 Object.defineProperty(arr, 1, {value: "1", configurable: true});
 
 arr.length = 1;
-
+``` -

Tableaux scellés (seal)

+### Tableaux scellés (`seal`) -

La méthode {{jsxref("Object.seal()")}} permet de marquer l'ensemble des propriétés (ici les éléments du tableau) comme non-configurables :

+La méthode {{jsxref("Object.seal()")}} permet de marquer l'ensemble des propriétés (ici les éléments du tableau) comme non-configurables : -
var arr = [1,2,3];
+```js example-bad
+var arr = [1,2,3];
 Object.seal(arr);
 
 arr.length = 1;
 // TypeError: can't delete non-configurable array element
-
+``` -

Pour corriger l'erreur, il faut retirer l'appel à {{jsxref("Object.seal()")}} ou réaliser une copie du tableau. Dans ce dernier cas, on notera que tronquer la copie du tableau ne modifie pas la longueur du tableau original.

+Pour corriger l'erreur, il faut retirer l'appel à {{jsxref("Object.seal()")}} ou réaliser une copie du tableau. Dans ce dernier cas, on notera que tronquer la copie du tableau ne modifie pas la longueur du tableau original. -
var arr = [1,2,3];
+```js example-good
+var arr = [1,2,3];
 Object.seal(arr);
 
 // On copie le tableau initial pour tronquer cette copie
 var copie = Array.from(arr);
 copie.length = 1;
 // arr.length == 3
-
+``` -

Voir aussi

+## Voir aussi - +- [La propriété interne `[[Configurable]]`](/fr/docs/Web/JavaScript/Structures_de_données#Propriétés) +- {{jsxref("Array.length")}} +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.seal()")}} diff --git a/files/fr/web/javascript/reference/errors/not_a_codepoint/index.md b/files/fr/web/javascript/reference/errors/not_a_codepoint/index.md index 2da0d021ee..5f8bcf650b 100644 --- a/files/fr/web/javascript/reference/errors/not_a_codepoint/index.md +++ b/files/fr/web/javascript/reference/errors/not_a_codepoint/index.md @@ -8,50 +8,50 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint original_slug: Web/JavaScript/Reference/Erreurs/Not_a_codepoint --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
RangeError: Invalid code point {0} (Edge)
-RangeError: {0} is not a valid code point (Firefox)
-RangeError: Invalid code point {0} (Chrome)
-
+ RangeError: Invalid code point {0} (Edge) + RangeError: {0} is not a valid code point (Firefox) + RangeError: Invalid code point {0} (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La méthode {{jsxref("String.fromCodePoint()")}} a été utilisée mais elle n'accepte que les points de code valides (code points) et la valeur fournie en argument n'est pas un point de code valide (ex. NaN, -1).

+La méthode {{jsxref("String.fromCodePoint()")}} a été utilisée mais elle n'accepte que les points de code valides (_code points_) et la valeur fournie en argument n'est pas un point de code valide (ex. `NaN`, `-1`). -

Un point de code est une valeur de code Unicode et s'inscrit dans un intervalle allant de 0 à 0x10FFFF.

+Un [point de code](https://fr.wikipedia.org/wiki/Point_de_code) est une valeur de code Unicode et s'inscrit dans un intervalle allant de `0` à `0x10FFFF`. -

Les valeurs {{jsxref("NaN")}}, les entiers négatifs (-1), les flottants (3.14) ou les valeur supérieures à 0x10FFFF (1114111) ne peuvent pas être utilisées avec cette méthode.

+Les valeurs {{jsxref("NaN")}}, les entiers négatifs (`-1`), les flottants (`3.14`) ou les valeur supérieures à `0x10FFFF` (`1114111`) ne peuvent pas être utilisées avec cette méthode. -

Examples

+## Examples -

Exemples invalides

+### Exemples invalides -
String.fromCodePoint('_');      // RangeError
+```js example-bad
+String.fromCodePoint('_');      // RangeError
 String.fromCodePoint(Infinity); // RangeError
 String.fromCodePoint(-1);       // RangeError
 String.fromCodePoint(3.14);     // RangeError
 String.fromCodePoint(3e-2);     // RangeError
-String.fromCodePoint(NaN);      // RangeError
+String.fromCodePoint(NaN); // RangeError +``` -

Exemples valides

+### Exemples valides -
String.fromCodePoint(42);       // "*"
+```js example-good
+String.fromCodePoint(42);       // "*"
 String.fromCodePoint(65, 90);   // "AZ"
 String.fromCodePoint(0x404);    // "\u0404"
 String.fromCodePoint(0x2F804);  // "\uD87E\uDC04"
 String.fromCodePoint(194564);   // "\uD87E\uDC04"
 String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07"
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("String.fromCodePoint()")}}
  • -
+- {{jsxref("String.fromCodePoint()")}} diff --git a/files/fr/web/javascript/reference/errors/not_a_constructor/index.md b/files/fr/web/javascript/reference/errors/not_a_constructor/index.md index 211e4e952c..a6c6372d7d 100644 --- a/files/fr/web/javascript/reference/errors/not_a_constructor/index.md +++ b/files/fr/web/javascript/reference/errors/not_a_constructor/index.md @@ -8,39 +8,39 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor original_slug: Web/JavaScript/Reference/Erreurs/Not_a_constructor --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Object doesn't support this action (Edge)
-TypeError: "x" is not a constructor
+    TypeError: Object doesn't support this action (Edge)
+    TypeError: "x" is not a constructor
 
-TypeError: Math is not a constructor
-TypeError: JSON is not a constructor
-TypeError: Symbol is not a constructor
-TypeError: Reflect is not a constructor
-TypeError: Intl is not a constructor
-TypeError: SIMD is not a constructor
-TypeError: Atomics is not a constructor
-
+ TypeError: Math is not a constructor + TypeError: JSON is not a constructor + TypeError: Symbol is not a constructor + TypeError: Reflect is not a constructor + TypeError: Intl is not a constructor + TypeError: SIMD is not a constructor + TypeError: Atomics is not a constructor -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une variable ou un objet a été utilisé comme un constructeur alors que cet objet ou cette variable n'est pas un constructeur. Pour plus d'informations sur les constructeurs, voir la page sur l'opérateur new.

+Une variable ou un objet a été utilisé comme un constructeur alors que cet objet ou cette variable n'est pas un constructeur. Pour plus d'informations sur les constructeurs, voir la page sur [l'opérateur `new`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_new). -

De nombreux objets globaux tels que {{jsxref("String")}} ou {{jsxref("Array")}}, sont constructibles avec new. Cependant, d'autres objets globaux ne le sont pas (leurs propriétés et méthodes sont statiques). Les objets standards natifs suivants ne sont pas des constructeur : {{jsxref("Math")}}, {{jsxref("JSON")}}, {{jsxref("Symbol")}}, {{jsxref("Reflect")}}, {{jsxref("Intl")}}, {{jsxref("SIMD")}}, {{jsxref("Atomics")}}.

+De nombreux objets globaux tels que {{jsxref("String")}} ou {{jsxref("Array")}}, sont constructibles avec `new`. Cependant, d'autres objets globaux ne le sont pas (leurs propriétés et méthodes sont statiques). Les objets standards natifs suivants ne sont pas des constructeur : {{jsxref("Math")}}, {{jsxref("JSON")}}, {{jsxref("Symbol")}}, {{jsxref("Reflect")}}, {{jsxref("Intl")}}, {{jsxref("SIMD")}}, {{jsxref("Atomics")}}. -

Les fonctions génératrices ne peuvent pas non plus être utilisées comme des constructeurs.

+[Les fonctions génératrices](/fr/docs/Web/JavaScript/Reference/Instructions/function*) ne peuvent pas non plus être utilisées comme des constructeurs. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
var Voiture = 1;
+```js example-bad
+var Voiture = 1;
 new Voiture();
 // TypeError: Voiture is not a constructor
 
@@ -53,45 +53,48 @@ new Symbol();
 function* f() {};
 var obj = new f;
 // TypeError: f is not a constructor
-
+``` -

Créer un constructeur voiture

+### Créer un constructeur `voiture` -

Imaginons qu'on veuille représenter des voitures sous forme d'objets. On appellera ce type voiture et on lui ajoutera des propriétés pour le fabricant, le modèle et l'année. Pour cela, on pourra écrire la fonction suivante :

+Imaginons qu'on veuille représenter des voitures sous forme d'objets. On appellera ce type `voiture` et on lui ajoutera des propriétés pour le fabricant, le modèle et l'année. Pour cela, on pourra écrire la fonction suivante : -
function Voiture(fabriquant, modèle, année) {
+```js
+function Voiture(fabriquant, modèle, année) {
   this.fabriquant = fabriquant;
   this.modèle = modèle;
   this.année = année;
 }
-
+``` -

On peut désormais créer un objet maVoiture comme ceci :

+On peut désormais créer un objet `maVoiture` comme ceci : -
var maVoiture = new Voiture("Renault", "Twingo", 2006);
+```js +var maVoiture = new Voiture("Renault", "Twingo", 2006); +``` -

Avec les promesses

+### Avec les promesses -

Lorsqu'on renvoie une promesse immédiatement tenue ou rompue, il n'est pas nécessaire d'utiliser new Promise() pour la manipuler. Il faut plutôt utiliser les méthodes statiques {{jsxref("Promise.resolve()")}} ou {{jsxref("Promise.reject()")}} :

+Lorsqu'on renvoie une promesse immédiatement tenue ou rompue, il n'est pas nécessaire d'utiliser `new Promise()` pour la manipuler. Il faut plutôt utiliser les méthodes statiques {{jsxref("Promise.resolve()")}} ou {{jsxref("Promise.reject()")}} : -
// Dans ce cas on aura une exception
+```js example-bad
+// Dans ce cas on aura une exception
 // "this is not a constructor"
 return new Promise.resolve(true);
-
+``` -
// Cette formulation fonctionne mais
+```js
+// Cette formulation fonctionne mais
 // est inutilement longue
-return new Promise((resolve, reject) => { resolve(true); });
+return new Promise((resolve, reject) => { resolve(true); });
 
 // On pourra autrement utiliser les
 // méthodes statiques
 return Promise.resolve(true);
 return Promise.reject(false);
-
+``` -

Voir aussi

+## Voir aussi - +- {{Glossary("constructor")}} +- [L'opérateur `new`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_new) diff --git a/files/fr/web/javascript/reference/errors/not_a_function/index.md b/files/fr/web/javascript/reference/errors/not_a_function/index.md index 8675a249ae..e6b948eebe 100644 --- a/files/fr/web/javascript/reference/errors/not_a_function/index.md +++ b/files/fr/web/javascript/reference/errors/not_a_function/index.md @@ -8,82 +8,82 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Not_a_function original_slug: Web/JavaScript/Reference/Erreurs/Not_a_function --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Object doesn't support property or method {x} (Edge)
-TypeError: "x" is not a function
-
+ TypeError: Object doesn't support property or method {x} (Edge) + TypeError: "x" is not a function -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Une valeur a été utilisée pour un appel de fonction alors que cette valeur n'est pas une fonction. Autrement dit, un fragment de code attendait une fonction mais a reçu des valeurs d'un autre type.

+Une valeur a été utilisée pour un appel de fonction alors que cette valeur n'est pas une fonction. Autrement dit, un fragment de code attendait une fonction mais a reçu des valeurs d'un autre type. -

Il est possible qu'il y ait une coquille dans le nom de la fonction. Peut être que l'objet sur lequel la méthode est invoquée ne possède pas cette fonction (par exemple, les objets Array possèdent une fonction map() mais d'autres objets ne l'ont pas).

+Il est possible qu'il y ait une coquille dans le nom de la fonction. Peut être que l'objet sur lequel la méthode est invoquée ne possède pas cette fonction (par exemple, les objets `Array` possèdent une fonction `map()` mais d'autres objets ne l'ont pas). -

Il existe de nombreuses fonctions natives qui fonctionnent à l'aide d'une fonction (callback) passée en argument :

+Il existe de nombreuses fonctions natives qui fonctionnent à l'aide d'une fonction (_callback_) passée en argument : -
    -
  • Pour les objets {{jsxref("Array")}} ou {{jsxref("TypedArray")}}, voici les fonctions qui utilisent une fonction en argument : -
      -
    • {{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}},  {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}
    • -
    -
  • -
  • Pour les objets {{jsxref("Map")}} et {{jsxref("Set")}}, voici les méthodes concernées : -
      -
    • {{jsxref("Map.prototype.forEach()")}} and {{jsxref("Set.prototype.forEach()")}}
    • -
    -
  • -
+- Pour les objets {{jsxref("Array")}} ou {{jsxref("TypedArray")}}, voici les fonctions qui utilisent une fonction en argument : -

Exemples

+ - {{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}},  {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}} -

Une coquille dans le nom de la fonction

+- Pour les objets {{jsxref("Map")}} et {{jsxref("Set")}}, voici les méthodes concernées : -

Dans ce cas, qui arrive bien trop souvent, il y a une faute d'orthographe dans le nom de la fonction utilisée :

+ - {{jsxref("Map.prototype.forEach()")}} and {{jsxref("Set.prototype.forEach()")}} -
var x = document.getElementByID("toto");
+## Exemples
+
+### Une coquille dans le nom de la fonction
+
+Dans ce cas, qui arrive bien trop souvent, il y a une faute d'orthographe dans le nom de la fonction utilisée :
+
+```js example-bad
+var x = document.getElementByID("toto");
 // TypeError: document.getElementByID is not a function
-
+``` -

Le nom de la fonction est (dans cet exemple) getElementById (attention à la casse pour les noms en JavaScript) :

+Le nom de la fonction est (dans cet exemple) `getElementById` (attention à la casse pour les noms en JavaScript) : -
var x = document.getElementById("toto");
-
+```js example-good +var x = document.getElementById("toto"); +``` -

Appeler une fonction sur le mauvais objet

+### Appeler une fonction sur le mauvais objet -

Certaines méthodes ne fonctionnent que pour certains types d'objet et utilisent une fonction en argument. Ainsi, dans cet exemple, on utilise {{jsxref("Array.prototype.map()")}} qui ne fonctionne que sur les objets {{jsxref("Array")}}.

+Certaines méthodes ne fonctionnent que pour certains types d'objet et utilisent une fonction en argument. Ainsi, dans cet exemple, on utilise {{jsxref("Array.prototype.map()")}} qui ne fonctionne que sur les objets {{jsxref("Array")}}. -
var obj = { a: 13, b: 37, c: 42 };
+```js example-bad
+var obj = { a: 13, b: 37, c: 42 };
 
 obj.map(function(num) {
   return num * 2;
 });
 
-// TypeError: obj.map is not a function
+// TypeError: obj.map is not a function +``` -

Il faudra utiliser un tableau à la place :

+Il faudra utiliser un tableau à la place : -
var nombres = [1, 4, 9];
+```js example-good
+var nombres = [1, 4, 9];
 
 nombres.map(function(num) {
   return num * 2;
 });
 
 // Array [ 2, 8, 18 ]
-
+``` -

Utiliser le même nom pour une méthode et une propriété

+### Utiliser le même nom pour une méthode et une propriété -

Lorsqu'on écrit une classe, on peut malheureusement utiliser le même nom pour une propriété et une méthode. Lorsqu'on appellera la fonction, celle-ci aura été remplacée par la propriété et cela déclenchera une erreur :

+Lorsqu'on écrit une classe, on peut malheureusement utiliser le même nom pour une propriété et une méthode. Lorsqu'on appellera la fonction, celle-ci aura été remplacée par la propriété et cela déclenchera une erreur : -
var Chien = function () {
+```js example-bad
+var Chien = function () {
  this.age = 11;
  this.couleur = "noir";
  this.nom = "Ralph";
@@ -98,11 +98,12 @@ Chien.prototype.nom = function(nom) {
 
 var monNouveauChien = new Chien();
 monNouveauChien.nom("Cassidy"); // Uncaught TypeError: monNouveauChien.nom is not a function
-
+``` -

Pour résoudre le problème, on utilisera deux noms distincts pour la propriété et la méthode :

+Pour résoudre le problème, on utilisera deux noms distincts pour la propriété et la méthode : -
var Chien = function () {
+```js example-good
+var Chien = function () {
  this.age = 11;
  this.couleur = "noir";
  this.nomChien = "Ralph";
@@ -117,40 +118,45 @@ Chien.prototype.nom = function(nom) {
 
 var monNouveauChien = new Chien();
 monNouveauChien.nom("Cassidy"); // Chien { age: 11, couleur: "noir", nomChien: "Cassidy" }
-
+``` -

Utiliser des parenthèses pour la multiplication

+### Utiliser des parenthèses pour la multiplication -

En notation mathématique, on peut écrire 2(3+5) pour indiquer qu'on souhaite multiplier 2 par 3 + 5. Toutefois, une telle écriture n'est pas valide en JavaScript car il faut préciser l'opérateur de multiplication :

+En notation mathématique, on peut écrire 2(3+5) pour indiquer qu'on souhaite multiplier 2 par 3 + 5. Toutefois, une telle écriture n'est pas valide en JavaScript car il faut préciser l'opérateur de multiplication : -
var seize = 2(3 + 5);
+```js example-bad
+var seize = 2(3 + 5);
 console.log('2 x (3 + 5) vaut ' + String(seize));
-// Uncaught TypeError: 2 is not a function
+// Uncaught TypeError: 2 is not a function +``` -

Pour corriger, il suffit d'ajouter l'opérateur * :

+Pour corriger, il suffit d'ajouter l'opérateur `*` : -
var seize = 2 * (3 + 5);
+```js example-good
+var seize = 2 * (3 + 5);
 console.log('2 x (3 + 5) is ' + String(seize));
 //2 x (3 + 5) is 16
-
+``` -

Importer un module exporté correctement

+### Importer un module exporté correctement -

Assurez-vous d'importer le module correctement. Si par exemple, on dispose d'une bibliothèque helpers.js avec le code suivant :

+Assurez-vous d'importer le module correctement. Si par exemple, on dispose d'une bibliothèque `helpers.js` avec le code suivant : -
let helpers = function () { };
+```js
+let helpers = function () { };
 helpers.log = function(msg) {
   console.log(msg);
 };
 
-export default helpers;
+export default helpers; +``` -

Pour l'importer côté application, on écrira :

+Pour l'importer côté application, on écrira : -
import helpers from './helpers'
+```js +import helpers from './helpers' +``` -

Voir aussi

+## Voir aussi - +- [Les fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) diff --git a/files/fr/web/javascript/reference/errors/not_defined/index.md b/files/fr/web/javascript/reference/errors/not_defined/index.md index d88edd4f04..51fa9d1bff 100644 --- a/files/fr/web/javascript/reference/errors/not_defined/index.md +++ b/files/fr/web/javascript/reference/errors/not_defined/index.md @@ -9,63 +9,65 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Not_defined original_slug: Web/JavaScript/Reference/Erreurs/Not_defined --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
ReferenceError: "x" is not defined
-
+ ReferenceError: "x" is not defined -

Type d'erreur

+## Type d'erreur -

{{jsxref("ReferenceError")}}.

+{{jsxref("ReferenceError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Une variable qui n'existe pas est référencée quelque part. Cette variable doit être déclarée ou il faut vérifier qu'elle est disponible dans le script concerné ou dans la portée utilisée.

+Une variable qui n'existe pas est référencée quelque part. Cette variable doit être déclarée ou il faut vérifier qu'elle est disponible dans le script concerné ou dans la portée utilisée. -
-

Note : Lors du chargement d'une bibliothèque comme jQuery, assurez-vous de bien charger la bibliothèque avant d'accéder aux variables comme $. La balise {{HTMLElement("script")}} utilisée pour charger la bibliothèque doit être présente avant le code qui l'utilise.

-
+> **Note :** Lors du chargement d'une bibliothèque comme jQuery, assurez-vous de bien charger la bibliothèque avant d'accéder aux variables comme `$`. La balise {{HTMLElement("script")}} utilisée pour charger la bibliothèque doit être présente avant le code qui l'utilise. -

Exemples

+## Exemples -

Exemple de variable non déclarée

+### Exemple de variable non déclarée -
toto.substring(1); // ReferenceError: toto is not defined
-
+```js example-bad +toto.substring(1); // ReferenceError: toto is not defined +``` -

La variable toto n'est définie nulle part. De plus, il faut qu'elle soit une chaîne de caractères afin que la méthode {{jsxref("String.prototype.substring()")}} puisse fonctionner.

+La variable `toto` n'est définie nulle part. De plus, il faut qu'elle soit une chaîne de caractères afin que la méthode {{jsxref("String.prototype.substring()")}} puisse fonctionner. -
var toto = "truc";
-toto.substring(1); // "ruc"
+```js example-good +var toto = "truc"; +toto.substring(1); // "ruc" +``` -

Exemple de portée invalide

+### Exemple de portée invalide -

Une variable doit être disponible dans le contexte d'exécution où elle est utilisée. Les variables définies au sein d'une fonction ne peuvent pas être utilisées en dehors de cette fonction car la variable appartient à la portée de la fonction.

+Une variable doit être disponible dans le contexte d'exécution où elle est utilisée. Les variables définies au sein d'une fonction ne peuvent pas être utilisées en dehors de cette fonction car la variable appartient à la _portée_ de la fonction. -
function numbers () {
+```js example-bad
+function numbers () {
   var num1 = 2,
       num2 = 3;
   return num1 + num2;
 }
 
-console.log(num1); // ReferenceError num1 is not defined.
+console.log(num1); // ReferenceError num1 is not defined. +``` -

Toutefois, une fonction peut accéder aux variables et aux fonctions définies dans la portée dans laquelle elle s'inscrit. Ainsi, une fonction définie dans la portée globale peut utiliser toutes les variables définies dans la portée globale.

+Toutefois, une fonction peut accéder aux variables et aux fonctions définies dans la portée dans laquelle elle s'inscrit. Ainsi, une fonction définie dans la portée globale peut utiliser toutes les variables définies dans la portée globale. -
var num1 = 2,
+```js example-good
+var num1 = 2,
     num2 = 3;
 
 function numbers () {
   return num1 + num2;
 }
 
-console.log(num1); // 2
+console.log(num1); // 2 +``` -

Voir aussi

+## Voir aussi - +- [La déclaration de variables dans le guide JavaScript](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Déclaration_de_variables) +- [Les notions de portées dans le guide JavaScript](/fr/docs/Web/JavaScript/Guide/Fonctions#Portée_d'une_fonction) diff --git a/files/fr/web/javascript/reference/errors/precision_range/index.md b/files/fr/web/javascript/reference/errors/precision_range/index.md index 52adf5bcd1..7b5ee16527 100644 --- a/files/fr/web/javascript/reference/errors/precision_range/index.md +++ b/files/fr/web/javascript/reference/errors/precision_range/index.md @@ -8,66 +8,43 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Precision_range original_slug: Web/JavaScript/Reference/Erreurs/Precision_range --- -
{{jsSidebar("Errors")}}
- -

Message

- -
RangeError: The number of fractional digits is out of range (Edge)
-RangeError: The precision is out of range (Edge)
-RangeError: precision {0} out of range (Firefox)
-RangeError: toExponential() argument must be between 0 and 20 (Chrome)
-RangeError: toFixed() digits argument must be between 0 and 20 (Chrome)
-RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

Quel est le problème ?

- -

Un argument dont la précision est en dehors de l'intervalle valide, prévu par le moteur JavaScript, a été utilisé pour une de ces méthodes :

- -
    -
  • {{jsxref("Number.prototype.toExponential()")}}
  • -
  • {{jsxref("Number.prototype.toFixed()")}}
  • -
  • {{jsxref("Number.prototype.toPrecision()")}}
  • -
- -

Généralement, ces méthodes acceptent des arguments de précision compris entre 0 et 20 (voire 21). Cependant, la spécification ECMAScript permet de gérer des valeurs en dehors de cet intervalle.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
MéthodeFirefox (SpiderMonkey)Chrome, Opera (V8)
{{jsxref("Number.prototype.toExponential()")}}0 to 1000 to 20
{{jsxref("Number.prototype.toFixed()")}}-20 to 1000 to 20
{{jsxref("Number.prototype.toPrecision()")}}1 to 1001 to 21
- -

Exemples

- -

Exemples invalides

- -
77.1234.toExponential(-1);  // RangeError
+{{jsSidebar("Errors")}}
+
+## Message
+
+    RangeError: The number of fractional digits is out of range (Edge)
+    RangeError: The precision is out of range (Edge)
+    RangeError: precision {0} out of range (Firefox)
+    RangeError: toExponential() argument must be between 0 and 20 (Chrome)
+    RangeError: toFixed() digits argument must be between 0 and 20 (Chrome)
+    RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
+
+## Type d'erreur
+
+{{jsxref("RangeError")}}
+
+## Quel est le problème ?
+
+Un argument dont la précision est en dehors de l'intervalle valide, prévu par le moteur JavaScript, a été utilisé pour une de ces méthodes :
+
+- {{jsxref("Number.prototype.toExponential()")}}
+- {{jsxref("Number.prototype.toFixed()")}}
+- {{jsxref("Number.prototype.toPrecision()")}}
+
+Généralement, ces méthodes acceptent des arguments de précision compris entre 0 et 20 (voire 21). Cependant, la spécification ECMAScript permet de gérer des valeurs en dehors de cet intervalle.
+
+| Méthode                                                      | Firefox (SpiderMonkey) | Chrome, Opera (V8) |
+| ------------------------------------------------------------ | ---------------------- | ------------------ |
+| {{jsxref("Number.prototype.toExponential()")}} | 0 to 100               | 0 to 20            |
+| {{jsxref("Number.prototype.toFixed()")}}         | -20 to 100             | 0 to 20            |
+| {{jsxref("Number.prototype.toPrecision()")}} | 1 to 100               | 1 to 21            |
+
+## Exemples
+
+### Exemples invalides
+
+```js example-bad
+77.1234.toExponential(-1);  // RangeError
 77.1234.toExponential(101); // RangeError
 
 2.34.toFixed(-100);         // RangeError
@@ -75,11 +52,12 @@ RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
 
 1234.5.toPrecision(-1);     // RangeError
 1234.5.toPrecision(101);    // RangeError
-
+``` -

Exemples valides

+### Exemples valides -
77.1234.toExponential(4); // 7.7123e+1
+```js example-good
+77.1234.toExponential(4); // 7.7123e+1
 77.1234.toExponential(2); // 7.71e+1
 
 2.34.toFixed(1); // 2.3
@@ -88,12 +66,10 @@ RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
 5.123456.toPrecision(5); // 5.1235
 5.123456.toPrecision(2); // 5.1
 5.123456.toPrecision(1); // 5
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Number.prototype.toExponential()")}}
  • -
  • {{jsxref("Number.prototype.toFixed()")}}
  • -
  • {{jsxref("Number.prototype.toPrecision()")}}
  • -
+- {{jsxref("Number.prototype.toExponential()")}} +- {{jsxref("Number.prototype.toFixed()")}} +- {{jsxref("Number.prototype.toPrecision()")}} diff --git a/files/fr/web/javascript/reference/errors/property_access_denied/index.md b/files/fr/web/javascript/reference/errors/property_access_denied/index.md index cb7818d3c3..2e8b3fc24d 100644 --- a/files/fr/web/javascript/reference/errors/property_access_denied/index.md +++ b/files/fr/web/javascript/reference/errors/property_access_denied/index.md @@ -9,40 +9,39 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Property_access_denied original_slug: Web/JavaScript/Reference/Erreurs/Property_access_denied --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Error: Permission denied to access property "x"
-
+ Error: Permission denied to access property "x" -

Type d'erreur

+## Type d'erreur -

{{jsxref("Error")}}.

+{{jsxref("Error")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Il y a eu une tentative d'accès non-autorisée à un objet sur lequel vous n'avez pas de permissions. Généralement, cela se produit lorsqu'un élément {{HTMLElement("iframe")}} est chargée depuis un domaine différent et que la condition de même origine n'est pas respectée.

+Il y a eu une tentative d'accès non-autorisée à un objet sur lequel vous n'avez pas de permissions. Généralement, cela se produit lorsqu'un élément {{HTMLElement("iframe")}} est chargée depuis un domaine différent et que [la condition de même origine](/fr/docs/Web/JavaScript/Same_origin_policy_for_JavaScript) n'est pas respectée. -

Exemples

+## Exemples -
<!DOCTYPE html>
-<html>
-  <head>
-    <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
-    <script>
+```html
+
+
+  
+    
+    
+  
+  
+
+```
 
-

Voir aussi

+## Voir aussi - +- {{HTMLElement("iframe")}} +- [Condition d'origine (_same-origin policy_)](/fr/docs/Web/JavaScript/Same_origin_policy_for_JavaScript) diff --git a/files/fr/web/javascript/reference/errors/read-only/index.md b/files/fr/web/javascript/reference/errors/read-only/index.md index d46e5a80e7..e207e6dc2a 100644 --- a/files/fr/web/javascript/reference/errors/read-only/index.md +++ b/files/fr/web/javascript/reference/errors/read-only/index.md @@ -8,34 +8,34 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Read-only original_slug: Web/JavaScript/Reference/Erreurs/Read-only --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge)
-TypeError: "x" is read-only (Firefox)
-TypeError: 0 is read-only (Firefox)
-TypeError: Cannot assign to read only property 'x' of #<Object> (Chrome)
-TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)
-
+ TypeError: Assignment to read-only properties is not allowed in strict mode (Edge) + TypeError: "x" is read-only (Firefox) + TypeError: 0 is read-only (Firefox) + TypeError: Cannot assign to read only property 'x' of # (Chrome) + TypeError: Cannot assign to read only property '0' of [object Array] (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La variable globale ou la propriété ne peut pas recevoir de valeur ou être modifiée car elle est en lecture seule (d'un point de vue technique, il s'agit d'une propriété de donnée en lecture seule).

+La variable globale ou la propriété ne peut pas recevoir de valeur ou être modifiée car elle est en lecture seule (d'un point de vue technique, il s'agit d'[une propriété de donnée en lecture seule](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty#Attribut_writable)). -

Cette erreur ne se produit qu'avec le mode strict. En mode non-strict, l'affectation est ignorée silencieusement.

+Cette erreur ne se produit qu'avec [le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). En mode non-strict, l'affectation est ignorée silencieusement. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Les propriétés en lecture seule ne sont pas fréquemment utilisées mais on peut en créer en utilisant les méthodes {{jsxref("Object.defineProperty()")}} ou {{jsxref("Object.freeze()")}}.

+Les propriétés en lecture seule ne sont pas fréquemment utilisées mais on peut en créer en utilisant les méthodes {{jsxref("Object.defineProperty()")}} ou {{jsxref("Object.freeze()")}}. -
"use strict";
+```js example-bad
+"use strict";
 var obj = Object.freeze({name: "Elsa", score: 157});
 obj.score = 0;  // TypeError
 
@@ -46,24 +46,27 @@ NB_POUMONS = 3;  // TypeError
 "use strict";
 var frozenArray = Object.freeze([0, 1, 2]);
 frozenArray[0]++;  // TypeError
-
+``` -

Quelques propriétés natives JavaScript sont également en lecture seule. Par exemple, on obtient cette erreur lorsqu'on souhaite redéfinir une constante mathématique.

+Quelques propriétés natives JavaScript sont également en lecture seule. Par exemple, on obtient cette erreur lorsqu'on souhaite redéfinir une constante mathématique. -
"use strict";
+```js example-bad
+"use strict";
 Math.PI = 4;  // TypeError
-
+``` -

La variable globale undefined est également en lecture seule. On ne peut donc pas faire disparaître la fameuse erreur "undefined is not a function" avec ce code :

+La variable globale `undefined` est également en lecture seule. On ne peut donc pas faire disparaître la fameuse erreur "_undefined is not a function_" avec ce code : -
"use strict";
+```js example-bad
+"use strict";
 undefined = function () {};
 // TypeError: "undefined" is read-only
-
+``` -

Exemples valides

+### Exemples valides -
"use strict";
+```js example-good
+"use strict";
 var obj = Object.freeze({name: "Score", points: 157});
 obj = {name: obj.name, points: 0};
 // En changeant d'objet, ça fonctionne
@@ -71,11 +74,9 @@ obj = {name: obj.name, points: 0};
 "use strict";
 var NB_POUMONS = 2;  // `var` fonctionne
 NB_POUMONS = 3;  // ok
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Object.defineProperty()")}}
  • -
  • {{jsxref("Object.freeze()")}}
  • -
+- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.freeze()")}} diff --git a/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md b/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md index 55c0e38653..947a60aae8 100644 --- a/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md +++ b/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md @@ -8,56 +8,53 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter original_slug: Web/JavaScript/Reference/Erreurs/Redeclared_parameter --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Let/Const redeclaration (Edge)
-SyntaxError: redeclaration of formal parameter "x" (Firefox)
-SyntaxError: Identifier "x" has already been declared (Chrome)
-
+ SyntaxError: Let/Const redeclaration (Edge) + SyntaxError: redeclaration of formal parameter "x" (Firefox) + SyntaxError: Identifier "x" has already been declared (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Le même nom de variable est présent comme paramètre de la fonction et dans une affectation let au sein du corps de cette fonction et il n'est pas possible de redéclarer la même variable dans la même fonction ou dans le même bloc avec let.

+Le même nom de variable est présent comme paramètre de la fonction et dans une affectation [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) au sein du corps de cette fonction et il n'est pas possible de redéclarer la même variable dans la même fonction ou dans le même bloc avec `let`. -

Exemples

+## Exemples -

Dans le fragment de code qui suit, la variable arg redéclare l'argument passé à la fonction.

+Dans le fragment de code qui suit, la variable `arg` redéclare l'argument passé à la fonction. -
function f(arg) {
+```js example-bad
+function f(arg) {
   let arg = "toto";
 }
 
 // SyntaxError: redeclaration of formal parameter "arg"
-
+``` -

Si on souhaite changer la valeur de arg dans le corps de la fonction, c'est possible mais il ne faut pas la redéclarer. Autrement dit, on peut retirer le mot-clé let. Si on souhaite plutôt créer une nouvelle variable, mieux vaudra utiliser un autre nom afin d'éviter les conflits avec les noms des paramètres existants.

+Si on souhaite changer la valeur de `arg` dans le corps de la fonction, c'est possible mais il ne faut pas la redéclarer. Autrement dit, on peut retirer le mot-clé `let`. Si on souhaite plutôt créer une nouvelle variable, mieux vaudra utiliser un autre nom afin d'éviter les conflits avec les noms des paramètres existants. -
function f(arg) {
+```js example-good
+function f(arg) {
   arg = "toto";
 }
 
 function f(arg) {
   let truc = "toto";
 }
-
+``` -

Notes de compatibilité

+## Notes de compatibilité -
    -
  • Avant Firefox 49 {{geckoRelease(49)}}, cela provoquait une exception {{jsxref("TypeError")}} ({{bug(1275240)}}).
  • -
+- Avant Firefox 49 {{geckoRelease(49)}}, cela provoquait une exception {{jsxref("TypeError")}} ({{bug(1275240)}}). -

Voir aussi

+## Voir aussi - +- [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) +- [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const) +- [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) +- [Déclarer des variables](/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Déclarations) dans le [guide JavaScript](/fr/docs/Web/JavaScript/Guide) diff --git a/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md b/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md index 4afa3f08ed..aae211ac07 100644 --- a/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md +++ b/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md @@ -9,81 +9,81 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value original_slug: Web/JavaScript/Reference/Erreurs/Reduce_of_empty_array_with_no_initial_value --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: reduce of empty array with no initial value
-
+ TypeError: reduce of empty array with no initial value -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}

+{{jsxref("TypeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

En JavaScript, il existe plusieurs fonctions qui permettent de réduire un tableau :

+En JavaScript, il existe plusieurs fonctions qui permettent de réduire un tableau : -
    -
  • {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}} ainsi que
  • -
  • {{jsxref("TypedArray.prototype.reduce()")}},  {{jsxref("TypedArray.prototype.reduceRight()")}}).
  • -
+- {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}} ainsi que +- {{jsxref("TypedArray.prototype.reduce()")}},  {{jsxref("TypedArray.prototype.reduceRight()")}}). -

Ces fonctions utilisent un argument optionnel valeurInitiale (qui sera utilisée comme premier argument pour le premier appel du callback). Toutefois, si aucune valeur initiale explicite est fournie, la méthode utilisera le premier élément de l'objet  {{jsxref("Array")}} / {{jsxref("TypedArray")}} comme valeur initiale. Cette exception est déclenchée lorsqu'on souhaite réduire un tableau vide car aucune valeur initiale n'a été fournie.

+Ces fonctions utilisent un argument optionnel `valeurInitiale` (qui sera utilisée comme premier argument pour le premier appel du `callback`). Toutefois, si aucune valeur initiale explicite est fournie, la méthode utilisera le premier élément de l'objet  {{jsxref("Array")}} / {{jsxref("TypedArray")}} comme valeur initiale. Cette exception est déclenchée lorsqu'on souhaite réduire un tableau vide car aucune valeur initiale n'a été fournie. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Ce problème se produit lorsqu'on combine une méthode de filtrage ({{jsxref("Array.prototype.filter()")}}, {{jsxref("TypedArray.prototype.filter()")}}) qui retire tous les éléments du tableau. Si on applique ensuite une réduction, il n'y aura pas de valeur initiale.

+Ce problème se produit lorsqu'on combine une méthode de filtrage ({{jsxref("Array.prototype.filter()")}}, {{jsxref("TypedArray.prototype.filter()")}}) qui retire tous les éléments du tableau. Si on applique ensuite une réduction, il n'y aura pas de valeur initiale. -
var ints = [0, -1, -2, -3, -4, -5];
-ints.filter(x => x > 0)         // cet appel retire tous les éléments
-    .reduce((x, y) => x + y)    // aucun ne peut alors être utilisé comme valeur initiale
+```js example-bad +var ints = [0, -1, -2, -3, -4, -5]; +ints.filter(x => x > 0) // cet appel retire tous les éléments + .reduce((x, y) => x + y) // aucun ne peut alors être utilisé comme valeur initiale +``` -

Cela peut également se produire si on utilise un sélecteur avec une coquille ou que la liste contient un nombre d'élément inattendu:

+Cela peut également se produire si on utilise un sélecteur avec une coquille ou que la liste contient un nombre d'élément inattendu: -
var names = document.getElementsByClassName("names");
-var name_list = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
-
+```js example-bad +var names = document.getElementsByClassName("names"); +var name_list = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name); +``` -

Exemples valides

+### Exemples valides -

On peut résoudre ces problèmes de deux façons.

+On peut résoudre ces problèmes de deux façons. -

On peut fournir une valeur initiale qui soit l'élément neutre de la réduction (par exemple 0 si on additionne, 1 si on multiplie ou la chaîne vide si on concatène du texte).

+On peut fournir une valeur initiale qui soit l'élément neutre de la réduction (par exemple 0 si on additionne, 1 si on multiplie ou la chaîne vide si on concatène du texte). -
var ints = [0, -1, -2, -3, -4, -5];
-ints.filter(x => x > 0)         // removes all elements
-    .reduce((x, y) => x + y, 0) // the initial value is the neutral element of the addition
-
+```js example-good +var ints = [0, -1, -2, -3, -4, -5]; +ints.filter(x => x > 0) // removes all elements + .reduce((x, y) => x + y, 0) // the initial value is the neutral element of the addition +``` -

On peut également gérer le cas où le tableau est vide, avant d'appeler reduce ou dans le callback après avoir ajouté une valeur initiale.

+On peut également gérer le cas où le tableau est vide, avant d'appeler `reduce` ou dans le _callback_ après avoir ajouté une valeur initiale. -
var names = document.getElementsByClassName("names");
+```js example-good
+var names = document.getElementsByClassName("names");
 
 var nameList1 = "";
-if (names1.length >= 1)
-  nameList1 = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
+if (names1.length >= 1)
+  nameList1 = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
 // nameList1 == "" lorsque names est vide
 
-var nameList2 = Array.prototype.reduce.call(names, (acc, name) => {
+var nameList2 = Array.prototype.reduce.call(names, (acc, name) => {
   if (acc == "") // la valeur initiale
     return name;
   return acc + ", " + name;
 }, "");
 // nameList2 == "" lorsque names est vide
-
- -

Voir aussi

- -
    -
  • {{jsxref("Array.prototype.reduce()")}}
  • -
  • {{jsxref("Array.prototype.reduceRight()")}}
  • -
  • {{jsxref("TypedArray.prototype.reduce()")}}
  • -
  • {{jsxref("TypedArray.prototype.reduceRight()")}}
  • -
  • {{jsxref("Array")}}
  • -
  • {{jsxref("TypedArray")}}
  • -
  • {{jsxref("Array.prototype.filter()")}}
  • -
  • {{jsxref("TypedArray.prototype.filter()")}}
  • -
+``` + +## Voir aussi + +- {{jsxref("Array.prototype.reduce()")}} +- {{jsxref("Array.prototype.reduceRight()")}} +- {{jsxref("TypedArray.prototype.reduce()")}} +- {{jsxref("TypedArray.prototype.reduceRight()")}} +- {{jsxref("Array")}} +- {{jsxref("TypedArray")}} +- {{jsxref("Array.prototype.filter()")}} +- {{jsxref("TypedArray.prototype.filter()")}} diff --git a/files/fr/web/javascript/reference/errors/reserved_identifier/index.md b/files/fr/web/javascript/reference/errors/reserved_identifier/index.md index f632ea336e..e911418f06 100644 --- a/files/fr/web/javascript/reference/errors/reserved_identifier/index.md +++ b/files/fr/web/javascript/reference/errors/reserved_identifier/index.md @@ -8,75 +8,74 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier original_slug: Web/JavaScript/Reference/Erreurs/Reserved_identifier --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: The use of a future reserved word for an identifier is invalid (Edge)
-SyntaxError: "x" is a reserved identifier (Firefox)
-SyntaxError: Unexpected reserved word (Chrome)
+ SyntaxError: The use of a future reserved word for an identifier is invalid (Edge) + SyntaxError: "x" is a reserved identifier (Firefox) + SyntaxError: Unexpected reserved word (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Les mots-clés réservés lèveront une exception s'ils sont utilisés en tant qu'identifiants. Voici les mots-clés réservés en mode strict et en mode sloppy :

+[Les mots-clés réservés](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Mots-clés_réservés_selon_ECMAScript_2015) lèveront une exception s'ils sont utilisés en tant qu'identifiants. Voici les mots-clés réservés en mode strict et en mode _sloppy_ : -
    -
  • enum
  • -
+- `enum` -

Voici les mots-clés uniquement réservés en mode strict :

+Voici les mots-clés uniquement réservés en mode strict : -
    -
  • implements
  • -
  • interface
  • -
  • {{jsxref("Statements/let", "let")}}
  • -
  • package
  • -
  • private
  • -
  • protected
  • -
  • public
  • -
  • static
  • -
+- `implements` +- `interface` +- {{jsxref("Statements/let", "let")}} +- `package` +- `private` +- `protected` +- `public` +- `static` -

Exemples

+## Exemples -

Mots-clés réservés en modes strict et non-strict

+### Mots-clés réservés en modes strict et non-strict -

L'identifiant enum est réservé dans les différents cas :

+L'identifiant `enum` est réservé dans les différents cas : -
var enum = { RED: 0, GREEN: 1, BLUE: 2 };
+```js example-bad
+var enum = { RED: 0, GREEN: 1, BLUE: 2 };
 // SyntaxError: enum is a reserved identifier
-
+``` -

En mode strict, d'autres mots-clés sont réservés :

+En mode strict, d'autres mots-clés sont réservés : -
"use strict";
+```js example-bad
+"use strict";
 var package = ["pomme", "poire", "pêches"];
 // SyntaxError: package is a reserved identifier
-
+``` -

Pour ne pas avoir l'erreur, il faudra renommer les variables :

+Pour ne pas avoir l'erreur, il faudra renommer les variables : -
var enumCouleurs = { RED: 0, GREEN: 1, BLUE: 2 };
-var liste = ["pomme", "poire", "pêches"];
+```js example-good +var enumCouleurs = { RED: 0, GREEN: 1, BLUE: 2 }; +var liste = ["pomme", "poire", "pêches"]; +``` -

Mettre à jour les anciens navigateurs

+### Mettre à jour les anciens navigateurs -

Si vous utilisez un ancien navigateur qui n'implémente pas let ou class, vous devrez mettre à jour votre navigateur :

+Si vous utilisez un ancien navigateur qui n'implémente pas [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) ou [`class`](/fr/docs/Web/JavaScript/Reference/Instructions/class), vous devrez mettre à jour votre navigateur : -
"use strict";
+```js
+"use strict";
 class DocArchiver {}
 
 // SyntaxError: class is a reserved identifier
 // (lève une exception dans les anciens navigateurs
 // tels que Firefox 44 et les versions antérieures)
-
+``` -

Voir aussi

+## Voir aussi - +- [Utiliser de bons noms de variable](https://wiki.c2.com/?GoodVariableNames) diff --git a/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md b/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md index 78ad63d9f3..1c4eddce51 100644 --- a/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md +++ b/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md @@ -8,43 +8,42 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large original_slug: Web/JavaScript/Reference/Erreurs/Resulting_string_too_large --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
RangeError: argument out of range (Edge)
-RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
-RangeError: Invalid count value (Chrome)
-
+ RangeError: argument out of range (Edge) + RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox) + RangeError: Invalid count value (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("RangeError")}}

+{{jsxref("RangeError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La méthode {{jsxref("String.prototype.repeat()")}}, qui permet de répéter une chaîne de caractères, a été utilisée avec un argument qui n'est pas compris entre 0 et {{jsxref("Infinity")}} (exclue) (ce qui correspond à l'intervalle [0, +∞))

+La méthode {{jsxref("String.prototype.repeat()")}}, qui permet de répéter une chaîne de caractères, a été utilisée avec un argument qui n'est pas compris entre 0 et {{jsxref("Infinity")}} (exclue) (ce qui correspond à l'intervalle \[0, +∞)) -

La chaîne de caractères crée par cette méthode ne doit pas dépasser la taille maximale d'une chaîne. Cette taille varie selon le moteur JavaScript. Pour Firefox (SpiderMonkey), la taille maximale d'une chaîne de caractères vaut 2^28-1 (0xFFFFFFF).

+La chaîne de caractères crée par cette méthode ne doit pas dépasser la taille maximale d'une chaîne. Cette taille varie selon le moteur JavaScript. Pour Firefox (SpiderMonkey), la taille maximale d'une chaîne de caractères vaut 2^28-1 (`0xFFFFFFF`). -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
'abc'.repeat(Infinity); // RangeError
+```js example-bad
+'abc'.repeat(Infinity); // RangeError
 'a'.repeat(2**28);      // RangeError
-
+``` -

Exemples valides

+### Exemples valides -
'abc'.repeat(0);    // ''
+```js example-good
+'abc'.repeat(0);    // ''
 'abc'.repeat(1);    // 'abc'
 'abc'.repeat(2);    // 'abcabc'
 'abc'.repeat(3.5);  // 'abcabcabc' (count will be converted to integer)
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("String.prototype.repeat()")}}
  • -
+- {{jsxref("String.prototype.repeat()")}} diff --git a/files/fr/web/javascript/reference/errors/stmt_after_return/index.md b/files/fr/web/javascript/reference/errors/stmt_after_return/index.md index 4d506a6285..0105e66e3a 100644 --- a/files/fr/web/javascript/reference/errors/stmt_after_return/index.md +++ b/files/fr/web/javascript/reference/errors/stmt_after_return/index.md @@ -7,44 +7,40 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return original_slug: Web/JavaScript/Reference/Erreurs/Stmt_after_return --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Warning: unreachable code after return statement (Firefox)
-
+ Warning: unreachable code after return statement (Firefox) -

Type d'erreur

+## Type d'erreur -

Avertissement

+Avertissement -

Quel est le problème ?

+## Quel est le problème ? -

Ce problème peut avoir deux origines :

+Ce problème peut avoir deux origines : -
    -
  • Une expression a été utilisée après l'instruction {{jsxref("Instructions/return", "return")}}
  • -
  • Une instruction return a été utilisée sans point virgule mais une expression suivait cette instruction.
  • -
+- Une expression a été utilisée après l'instruction {{jsxref("Instructions/return", "return")}} +- Une instruction `return` a été utilisée sans point virgule mais une expression suivait cette instruction. -

Lorsqu'une expression existe après une instruction return valide, un avertissement est produit pour alerter qu'une portion du code ne peut pas être atteinte et ne sera donc jamais lue et exécutée.

+Lorsqu'une expression existe après une instruction `return` valide, un avertissement est produit pour alerter qu'une portion du code ne peut pas être atteinte et ne sera donc jamais lue et exécutée. -

Pourquoi est-il préférable d'ajouter des points-virgules après les instructions return ? Si on utilise une instruction return sans point-virgule, cela peut créer une ambiguïté : est-ce que le développeur souhaite que le code qui suit sur la ligne d'après soit exécuté ou non ? L'avertissement relève cette ambiguïté afin de mieux la percevoir pour la lever.

+Pourquoi est-il préférable d'ajouter des points-virgules après les instructions `return` ? Si on utilise une instruction `return` sans point-virgule, cela peut créer une ambiguïté : est-ce que le développeur souhaite que le code qui suit sur la ligne d'après soit exécuté ou non ? L'avertissement relève cette ambiguïté afin de mieux la percevoir pour la lever. -

Les avertissements ne seront pas affichés pour les return sans point-virgule si ces instructions suivent :

+Les avertissements ne seront pas affichés pour les `return` sans point-virgule si ces instructions suivent : -
    -
  • {{jsxref("Instructions/throw", "throw")}}
  • -
  • {{jsxref("Instructions/break", "break")}}
  • -
  • {{jsxref("Instructions/var", "var")}}
  • -
  • {{jsxref("Instructions/function", "function")}}
  • -
+- {{jsxref("Instructions/throw", "throw")}} +- {{jsxref("Instructions/break", "break")}} +- {{jsxref("Instructions/var", "var")}} +- {{jsxref("Instructions/function", "function")}} -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
function f() {
+```js example-bad
+function f() {
   var x = 3;
   x += 4;
   return x;   // return permet de finir la fonction sur le champ
@@ -55,11 +51,12 @@ function f() {
   return     // Cette instruction est traitée `return;`
     3 + 4;   // La fonction termine et cette ligne n'est jamais traitée
 }
-
+``` -

Exemples valides

+### Exemples valides -
function f() {
+```js example-good
+function f() {
   var x = 3;
   x += 4;
   x -= 3;
@@ -71,10 +68,8 @@ function f() {
   return 3 + 4  // OK : un return sans point-virgule
                 // avec une expression sur la même ligne
 }
-
+``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Instructions/return", "L'ajout automatique de point-virgule", "#Ajout_automatique_de_point-virgule", 1)}}
  • -
+- {{jsxref("Instructions/return", "L'ajout automatique de point-virgule", "#Ajout_automatique_de_point-virgule", 1)}} diff --git a/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md b/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md index 26abbf3a40..22d30809a4 100644 --- a/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md +++ b/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md @@ -9,108 +9,109 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params original_slug: Web/JavaScript/Reference/Erreurs/Strict_Non_Simple_Params --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Edge:
-Cannot apply strict mode on functions with non-simple parameter list
+    Edge:
+    Cannot apply strict mode on functions with non-simple parameter list
 
-Firefox:
-SyntaxError: "use strict" not allowed in function with default parameter
-SyntaxError: "use strict" not allowed in function with rest parameter
-SyntaxError: "use strict" not allowed in function with destructuring parameter
+    Firefox:
+    SyntaxError: "use strict" not allowed in function with default parameter
+    SyntaxError: "use strict" not allowed in function with rest parameter
+    SyntaxError: "use strict" not allowed in function with destructuring parameter
 
-Chrome:
-SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
-
+ Chrome: + SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}.

+{{jsxref("SyntaxError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Une directive "use strict" apparaît au début d'une fonction qui possède l'un des paramètres suivants :

+Une directive `"use strict"` apparaît au début d'une fonction qui possède l'un des paramètres suivants : -
    -
  • {{jsxref("Fonctions/Valeurs_par_défaut_des_arguments", "Des paramètres par défaut", "", 1)}}
  • -
  • {{jsxref("Fonctions/paramètres_du_reste", "Des paramètres du reste", "", 1)}}
  • -
  • {{jsxref("Opérateurs/Affecter_par_décomposition", "Des paramètres décomposés", "", 1)}}
  • -
+- {{jsxref("Fonctions/Valeurs_par_défaut_des_arguments", "Des paramètres par défaut", "", 1)}} +- {{jsxref("Fonctions/paramètres_du_reste", "Des paramètres du reste", "", 1)}} +- {{jsxref("Opérateurs/Affecter_par_décomposition", "Des paramètres décomposés", "", 1)}} -

Selon la spécification ECMAScript, une directive "use strict" ne peut pas être utilisée pour de telles fonctions.

+Selon la spécification ECMAScript, une directive `"use strict"` ne peut pas être utilisée pour de telles fonctions. -

Exemples

+## Exemples -

Déclaration de fonction

+### Déclaration de fonction -

Dans l'exemple qui suit, la fonction somme possède deux paramètres par défaut a=1 et b=2.

+Dans l'exemple qui suit, la fonction `somme` possède deux paramètres par défaut `a=1` et `b=2`. -
function somme(a = 1, b = 2) {
+```js example-bad
+function somme(a = 1, b = 2) {
   // SyntaxError: "use strict" not allowed in function with default parameter
   "use strict";
   return a + b;
 }
-
+``` -

Si on veut que la fonction soit en mode strict et que le script entier ou que la fonction englobante peut être en mode strict, il suffira de déplacer l'instruction "use strict" en dehors du corps de la méthode.

+Si on veut que la fonction soit en mode strict et que le script entier ou que la fonction englobante peut être en mode strict, il suffira de déplacer l'instruction `"use strict"` en dehors du corps de la méthode. -
"use strict";
+```js example-good
+"use strict";
 function somme(a = 1, b = 2) {
   return a + b;
 }
-
+``` -

Expression de fonction

+### Expression de fonction -

Il est également possible d'utiliser les expressions de fonction pour résoudre ce problème :

+Il est également possible d'utiliser les expressions de fonction pour résoudre ce problème : -
var somme = function somme([a, b]) {
+```js example-bad
+var somme = function somme([a, b]) {
   // SyntaxError: "use strict" not allowed in function with destructuring parameter
   "use strict";
   return a + b;
 };
-
+``` -

On peut convertir le fragment de code précédent avec l'expression suivante :

+On peut convertir le fragment de code précédent avec l'expression suivante : -
var somme = (function() {
+```js example-good
+var somme = (function() {
   "use strict";
   return function somme([a, b]) {
     return a + b;
   };
 })();
-
+``` -

Fonction fléchée

+### Fonction fléchée -

Si on a une fonction fléchée qui doit accéder à la variable this on peut utiliser une fonction fléchée comme fonction englobante :

+Si on a une fonction fléchée qui doit accéder à la variable `this` on peut utiliser une fonction fléchée comme fonction englobante : -
var callback = (...args) => {
+```js example-bad
+var callback = (...args) => {
   // SyntaxError: "use strict" not allowed in function with rest parameter
   "use strict";
   return this.run(args);
 };
-
+``` -

This can be converted into following expression.

+This can be converted into following expression. -
var callback = (() => {
+```js example-good
+var callback = (() => {
   "use strict";
-  return (...args) => {
+  return (...args) => {
     return this.run(args);
   };
 })();
-
- -

Voir aussi

- -
    -
  • {{jsxref("Strict_mode", "Le mode strict", "", 1)}}
  • -
  • {{jsxref("Instructions/function", "L'instruction function", "", 1)}}
  • -
  • {{jsxref("Op%C3%A9rateurs/L_op%C3%A9rateur_function", "Les expressions de fonction", "", 1)}}
  • -
  • {{jsxref("Fonctions/Valeurs_par_d%C3%A9faut_des_arguments", "Les paramètres par défaut", "", 1)}}
  • -
  • {{jsxref("Fonctions/paramètres_du_reste", "Les paramètres du reste", "", 1)}}
  • -
  • {{jsxref("Opérateurs/Affecter_par_décomposition", "Les paramètres décomposés", "", 1)}}
  • -
+``` + +## Voir aussi + +- {{jsxref("Strict_mode", "Le mode strict", "", 1)}} +- {{jsxref("Instructions/function", "L'instruction function", "", 1)}} +- {{jsxref("Op%C3%A9rateurs/L_op%C3%A9rateur_function", "Les expressions de fonction", "", 1)}} +- {{jsxref("Fonctions/Valeurs_par_d%C3%A9faut_des_arguments", "Les paramètres par défaut", "", 1)}} +- {{jsxref("Fonctions/paramètres_du_reste", "Les paramètres du reste", "", 1)}} +- {{jsxref("Opérateurs/Affecter_par_décomposition", "Les paramètres décomposés", "", 1)}} diff --git a/files/fr/web/javascript/reference/errors/too_much_recursion/index.md b/files/fr/web/javascript/reference/errors/too_much_recursion/index.md index 097eff25b7..62e269f74a 100644 --- a/files/fr/web/javascript/reference/errors/too_much_recursion/index.md +++ b/files/fr/web/javascript/reference/errors/too_much_recursion/index.md @@ -9,62 +9,64 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion original_slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Error: Out of stack space (Edge)
-InternalError: too much recursion (Firefox)
-RangeError: Maximum call stack size exceeded (Chrome)
-
+ Error: Out of stack space (Edge) + InternalError: too much recursion (Firefox) + RangeError: Maximum call stack size exceeded (Chrome) -

Type d'erreur

+## Type d'erreur -

{{jsxref("InternalError")}}.

+{{jsxref("InternalError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Une fonction qui s'appelle elle-même est une fonction recursive. Lorsqu'une certaine condition est respectée, la fonction arrête de s'appeler elle-même, c'est ce qu'on appelle le cas initial.

+Une fonction qui s'appelle elle-même est une fonction _recursive_. Lorsqu'une certaine condition est respectée, la fonction arrête de s'appeler elle-même, c'est ce qu'on appelle le cas initial. -

D'une certaine façon, une récursion est semblable à une boucle. Les deux exécutent le même code plusieurs fois, et les deux ont besoin d'une condition d'arrêt afin d'éviter une boucle infinie ou une récursion infinie. Lorsqu'il y a trop de niveaux de récursion ou une récursion infinie, JavaScript lèvera cette erreur.

+D'une certaine façon, une récursion est semblable à une boucle. Les deux exécutent le même code plusieurs fois, et les deux ont besoin d'une condition d'arrêt afin d'éviter une boucle infinie ou une récursion infinie. Lorsqu'il y a trop de niveaux de récursion ou une récursion infinie, JavaScript lèvera cette erreur. -

Exemples

+## Exemples -

Cette fonction récursive est exécutée 10 fois comme l'indique la condition de sortie :

+Cette fonction récursive est exécutée 10 fois comme l'indique la condition de sortie : -
function loop(x) {
-  if (x >= 10) // "x >= 10" is the exit condition
+```js
+function loop(x) {
+  if (x >= 10) // "x >= 10" is the exit condition
     return;
   // do stuff
   loop(x + 1); // the recursive call
 }
-loop(0);
+loop(0); +``` -

Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas :

+Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas : -
function loop(x) {
-  if (x >= 1000000000000)
+```js example-bad
+function loop(x) {
+  if (x >= 1000000000000)
     return;
   // do stuff
   loop(x + 1);
 }
 loop(0);
 
-// InternalError: too much recursion
+// InternalError: too much recursion +``` -

Si la fonction récursive ne possède pas de cas initial, il n'y aura pas de condition de sortie et la fonction continuera de s'appeler indéfiniment.

+Si la fonction récursive ne possède pas de cas initial, il n'y aura pas de condition de sortie et la fonction continuera de s'appeler indéfiniment. -
function boucle(x) {
+```js example-bad
+function boucle(x) {
   boucle(x + 1);
   // il n'y a pas de cas initial
 }
 
 boucle(0);
-
+``` -

Voir aussi

+## Voir aussi - +- {{Glossary("Récursion")}} +- [Les fonctions récursives](/fr/docs/Web/JavaScript/Guide/Fonctions#La_récursivité) diff --git a/files/fr/web/javascript/reference/errors/undeclared_var/index.md b/files/fr/web/javascript/reference/errors/undeclared_var/index.md index 26293dc271..8344607e21 100644 --- a/files/fr/web/javascript/reference/errors/undeclared_var/index.md +++ b/files/fr/web/javascript/reference/errors/undeclared_var/index.md @@ -8,60 +8,58 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Undeclared_var original_slug: Web/JavaScript/Reference/Erreurs/Undeclared_var --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
ReferenceError: assignment to undeclared variable "x" (Firefox)
-ReferenceError: "x" is not defined (Chrome)
-ReferenceError: Variable undefined in strict mode (Edge)
-
+ ReferenceError: assignment to undeclared variable "x" (Firefox) + ReferenceError: "x" is not defined (Chrome) + ReferenceError: Variable undefined in strict mode (Edge) -

Type d'erreur

+## Type d'erreur -

Une erreur {{jsxref("ReferenceError")}}, uniquement en mode strict.

+Une erreur {{jsxref("ReferenceError")}}, uniquement [en mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

Une valeur a été affectée à une variable non-déclarée. Autrement dit, il y a eu une affectation qui n'utilise pas le mot-clé var. Il existe certaines différences entre les variables déclarées et les variables non déclarées ce qui peut entraîner des résultats étranges. C'est pour cette raison que le moteur affiche une erreur en mode strict.

+Une valeur a été affectée à une variable non-déclarée. Autrement dit, il y a eu une affectation qui n'utilise pas le mot-clé [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). Il existe certaines différences entre les variables déclarées et les variables non déclarées ce qui peut entraîner des résultats étranges. C'est pour cette raison que le moteur affiche une erreur en mode strict. -

Trois choses à noter lorsqu'on évoque les variables déclarées/non déclarées :

+Trois choses à noter lorsqu'on évoque les variables déclarées/non déclarées : -
    -
  • Les variables déclarées sont contraintes dans le contexte d'exécution dans lequel elles sont déclarées. Les variables non déclarées sont toujours globales.
  • -
  • Les variables déclarées sont créées avant que le code soit exécuté. Les variables non déclarées n'existent pas tant que le code qui leur est affecté est exécuté.
  • -
  • Les variables déclarées sont des propriétés non-configurables de leur contexte d'exécution (la fonction ou l'espace global). Les variables non-déclarées sont configurables (elles peuvent être supprimées).
  • -
+- Les variables déclarées sont contraintes dans le contexte d'exécution dans lequel elles sont déclarées. Les variables non déclarées sont toujours globales. +- Les variables déclarées sont créées avant que le code soit exécuté. Les variables non déclarées n'existent pas tant que le code qui leur est affecté est exécuté. +- Les variables déclarées sont des propriétés non-configurables de leur contexte d'exécution (la fonction ou l'espace global). Les variables non-déclarées sont configurables (elles peuvent être supprimées). -

Pour plus de détails et d'exemple, se référer à la page sur var.

+Pour plus de détails et d'exemple, se référer à la page sur [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). -

Les erreurs à propos des affectations sur les variables non déclarées se produisent uniquement en mode strict. En mode non-strict, elles sont ignorées silencieusement.

+Les erreurs à propos des affectations sur les variables non déclarées se produisent uniquement [en mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). En mode non-strict, elles sont ignorées silencieusement. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Ici, la variable truc n'est pas déclarée :

+Ici, la variable `truc` n'est pas déclarée : -
function toto() {
+```js example-bad
+function toto() {
   "use strict";
   truc = true;
 }
 toto(); // ReferenceError: assignment to undeclared variable truc
-
+``` -

Exemples valides

+### Exemples valides -

Afin de déclarer truc, on peut ajouter le mot-clé var devant.

+Afin de déclarer `truc`, on peut ajouter le mot-clé [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) devant. -
function toto() {
+```js example-good
+function toto() {
   "use strict";
   var truc = true;
 }
-toto();
+toto(); +``` -

Voir aussi

+## Voir aussi - +- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) diff --git a/files/fr/web/javascript/reference/errors/undefined_prop/index.md b/files/fr/web/javascript/reference/errors/undefined_prop/index.md index b3b000d302..3577d40eb6 100644 --- a/files/fr/web/javascript/reference/errors/undefined_prop/index.md +++ b/files/fr/web/javascript/reference/errors/undefined_prop/index.md @@ -9,38 +9,39 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Undefined_prop original_slug: Web/JavaScript/Reference/Erreurs/Undefined_prop --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
ReferenceError: reference to undefined property "x" (Firefox)
-
+ ReferenceError: reference to undefined property "x" (Firefox) -

Type d'erreur

+## Type d'erreur -

Uniquement pour Firefox. Une erreur {{jsxref("ReferenceError")}} lancée en avertissement, uniquement si la préférence javascript.options.strict vaut true.

+Uniquement pour Firefox. Une erreur {{jsxref("ReferenceError")}} lancée en avertissement, uniquement si la préférence `javascript.options.strict` vaut `true`. -

Quel est le problème ?

+## Quel est le problème ? -

Le code tente d'accéder à une propriété inexistante d'un objet. Il existe deux méthodes pour accéder aux propriétés. Pour plus de détails, on pourra lire la page de la référence sur les accesseurs de propriété.

+Le code tente d'accéder à une propriété inexistante d'un objet. Il existe deux méthodes pour accéder aux propriétés. Pour plus de détails, on pourra lire la page de la référence sur [les accesseurs de propriété](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_membres). -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Ici, la propriété truc n'est pas une propriété définie et on obtient alors une ReferenceError.

+Ici, la propriété `truc` n'est pas une propriété définie et on obtient alors une `ReferenceError`. -
"use strict";
+```js example-bad
+"use strict";
 
 var toto = {};
 toto.truc; // ReferenceError: reference to undefined property "bar"
-
+``` -

Exemples valides

+### Exemples valides -

Pour éviter cette erreur, il faut que truc soit une variable  « définie » ou vérifier son existence avant de l'utiliser (en utilisant par exemple la méthode {{jsxref("Object.prototype.hasOwnProperty()")}}).

+Pour éviter cette erreur, il faut que `truc` soit une variable  « définie » ou vérifier son existence avant de l'utiliser (en utilisant par exemple la méthode {{jsxref("Object.prototype.hasOwnProperty()")}}). -
"use strict";
+```js example-good
+"use strict";
 
 var toto = {};
 
@@ -49,10 +50,9 @@ console.log(toto.truc); // "lune"
 
 if (foo.hasOwnProperty("truc")) {
   console.log(toto.truc);
-}
+} +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("Opérateurs/Opérateurs_de_membres", "Accesseurs de propriété", 0, 1)}}
  • -
+- {{jsxref("Opérateurs/Opérateurs_de_membres", "Accesseurs de propriété", 0, 1)}} diff --git a/files/fr/web/javascript/reference/errors/unexpected_token/index.md b/files/fr/web/javascript/reference/errors/unexpected_token/index.md index 771455c514..f2a9fb865a 100644 --- a/files/fr/web/javascript/reference/errors/unexpected_token/index.md +++ b/files/fr/web/javascript/reference/errors/unexpected_token/index.md @@ -9,70 +9,74 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Unexpected_token original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_token --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: expected expression, got "x"
-SyntaxError: expected property name, got "x"
-SyntaxError: expected target, got "x"
-SyntaxError: expected rest argument name, got "x"
-SyntaxError: expected closing parenthesis, got "x"
-SyntaxError: expected '=>' after argument list, got "x"
-
+ SyntaxError: expected expression, got "x" + SyntaxError: expected property name, got "x" + SyntaxError: expected target, got "x" + SyntaxError: expected rest argument name, got "x" + SyntaxError: expected closing parenthesis, got "x" + SyntaxError: expected '=>' after argument list, got "x" -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

La syntaxe du langage « attendait » un élément mais quelque chose d'autre est écrit à la place dans le script. Cela peut simplement être dû à une coquille dans le code.

+La syntaxe du langage « attendait » un élément mais quelque chose d'autre est écrit à la place dans le script. Cela peut simplement être dû à une coquille dans le code. -

Exemples

+## Exemples -

Expression attendue

+### Expression attendue -

Lorsqu'on enchaîne des expressions, par exemple, les virgules ne sont pas autorisées en fin d'expression :

+Lorsqu'on enchaîne des expressions, par exemple, les virgules ne sont pas autorisées en fin d'expression : -
for (let i = 0; i < 5,; ++i) {
+```js example-bad
+for (let i = 0; i < 5,; ++i) {
   console.log(i);
 }
 // SyntaxError: expected expression, got ')'
-
+``` -

Pour corriger cette erreur, on peut retirer la virgule superflue ou bien ajouter une autre expression :

+Pour corriger cette erreur, on peut retirer la virgule superflue ou bien ajouter une autre expression : -
for (let i = 0; i < 5; ++i) {
+```js example-good
+for (let i = 0; i < 5; ++i) {
   console.log(i);
 }
-
+``` -

Parenthèses manquantes

+### Parenthèses manquantes -

Il peut également arriver que des parenthèses manquent autour des instructions if :

+Il peut également arriver que des parenthèses manquent autour des instructions `if` : -
function round(n, upperBound, lowerBound){
-  if(n > upperBound) || (n < lowerBound){
+```js example-bad
+function round(n, upperBound, lowerBound){
+  if(n > upperBound) || (n < lowerBound){
     throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
-  }else if(n < ((upperBound + lowerBound)/2)){
+  }else if(n < ((upperBound + lowerBound)/2)){
     return lowerBound;
   }else{
     return upperBound;
   }
-} // SyntaxError: expected expression, got '||'
+} // SyntaxError: expected expression, got '||' +``` -

Si on compte les parenthèses ouvrantes et fermantes, c'est correct mais on peut voir que le OU logique (||) n'est contenu au sein d'aucune paire de parenthèses.

+Si on compte les parenthèses ouvrantes et fermantes, c'est correct mais on peut voir que le OU logique (`||`) n'est contenu au sein d'aucune paire de parenthèses. -

Pour corriger ce problème, il suffit d'ajouter une paire de parenthèses englobante :

+Pour corriger ce problème, il suffit d'ajouter une paire de parenthèses englobante : -
function round(n, upperBound, lowerBound){
-  if((n > upperBound) || (n < lowerBound)){
+```js example-good
+function round(n, upperBound, lowerBound){
+  if((n > upperBound) || (n < lowerBound)){
     throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
-  }else if(n < ((upperBound + lowerBound)/2)){
+  }else if(n < ((upperBound + lowerBound)/2)){
     return lowerBound;
   }else{
     return upperBound;
   }
 }
-
+``` diff --git a/files/fr/web/javascript/reference/errors/unexpected_type/index.md b/files/fr/web/javascript/reference/errors/unexpected_type/index.md index 6b54febd7b..31477ea2b2 100644 --- a/files/fr/web/javascript/reference/errors/unexpected_type/index.md +++ b/files/fr/web/javascript/reference/errors/unexpected_type/index.md @@ -9,36 +9,36 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Unexpected_type original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_type --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: Unable to get property {x} of undefined or null reference (Edge)
-TypeError: "x" is (not) "y" (Firefox)
+    TypeError: Unable to get property {x} of undefined or null reference (Edge)
+    TypeError: "x" is (not) "y" (Firefox)
 
-Examples:
-TypeError: "x" is undefined
-TypeError: "x" is null
-TypeError: "undefined" is not an object
-TypeError: "x" is not an object or null
-TypeError: "x" is not a symbol
-
+ Examples: + TypeError: "x" is undefined + TypeError: "x" is null + TypeError: "undefined" is not an object + TypeError: "x" is not an object or null + TypeError: "x" is not a symbol -

Type d'erreur

+## Type d'erreur -

{{jsxref("TypeError")}}.

+{{jsxref("TypeError")}}. -

Quel est le problème ?

+## Quel est le problème ? -

Un type inattendu a été rencontré. Cela se produit la plupart du temps avec les valeurs {{jsxref("undefined")}} ou {{jsxref("null")}}.

+Un type inattendu a été rencontré. Cela se produit la plupart du temps avec les valeurs {{jsxref("undefined")}} ou {{jsxref("null")}}. -

Certaines méthodes comme {{jsxref("Object.create()")}} ou {{jsxref("Symbol.keyFor()")}} ont des contraintes sur le type de valeur qui peut être passé en argument.

+Certaines méthodes comme {{jsxref("Object.create()")}} ou {{jsxref("Symbol.keyFor()")}} ont des contraintes sur le type de valeur qui peut être passé en argument. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -
// undefined et null : des valeurs
+```js example-bad
+// undefined et null : des valeurs
 // sur lesquelles la méthode substring
 // ne fonctionnera pas
 var toto = undefined;
@@ -55,20 +55,20 @@ Symbol.keyFor(toto); // TypeError: toto is not a symbol
 
 var toto = "truc"
 Object.create(toto); // TypeError: "toto" is not an object or null
-
+``` -

Résoudre le problème

+### Résoudre le problème -

Pour résoudre ce problème et écarter les cas où la valeur vaut undefined, on peut par exemple utiliser l'opérateur typeof.

+Pour résoudre ce problème et écarter les cas où la valeur vaut `undefined`, on peut par exemple utiliser l'opérateur [`typeof`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof). -
if (typeof toto !== 'undefined') {
+```js
+if (typeof toto !== 'undefined') {
   // Désormais, on sait que toto est bien
   // défini et on peut poursuivre.
-}
+} +``` -

Voir aussi

+## Voir aussi -
    -
  • {{jsxref("undefined")}}
  • -
  • {{jsxref("null")}}
  • -
+- {{jsxref("undefined")}} +- {{jsxref("null")}} diff --git a/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md b/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md index 286bd78e7e..42417c4f4d 100644 --- a/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md +++ b/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md @@ -8,82 +8,92 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement original_slug: Web/JavaScript/Reference/Erreurs/Unnamed_function_statement --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
Syntax Error: Expected identifier (Edge)
-SyntaxError: function statement requires a name [Firefox]
-SyntaxError: Unexpected token ( [Chrome]
-
+ Syntax Error: Expected identifier (Edge) + SyntaxError: function statement requires a name [Firefox] + SyntaxError: Unexpected token ( [Chrome] -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une déclaration de fonction présente dans le code requiert un nom. Il faut alors vérifier la façon dont la fonction est définie et s'il est nécessaire de lui fournir un nom ou si la fonction en question est une expression de fonction, une fonction immédiatement invoquée ou si le code de la fonction est simplement bien placé dans son contexte.

+[Une déclaration de fonction](/fr/docs/Web/JavaScript/Reference/Instructions/function) présente dans le code requiert un nom. Il faut alors vérifier la façon dont la fonction est définie et s'il est nécessaire de lui fournir un nom ou si la fonction en question est une expression de fonction, une fonction immédiatement invoquée ou si le code de la fonction est simplement bien placé dans son contexte. -

Exemples

+## Exemples -

Déclaration / Expression

+### Déclaration / Expression -

Une déclaration de fonction requiert un nom. Le fragment de code suivant ne fonctionnera pas :

+Une déclaration de fonction requiert un nom. Le fragment de code suivant ne fonctionnera pas : -
function () {
+```js example-bad
+function () {
   return 'Coucou monde :)';
 }
 // SyntaxError: function statement requires a name
-
+``` -

On peut utiliser une expression de fonction à la place :

+On peut utiliser [une expression de fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_function) à la place : -
var salutations = function() {
+```js example-good
+var salutations = function() {
   return 'Coucou monde :)';
-};
+}; +``` -

Si la fonction devait être appelé immédiatement, il suffit d'ajouter des parenthèses autour :

+Si la fonction devait être appelé immédiatement, il suffit d'ajouter des parenthèses autour : -
(function () {
+```js example-good
+(function () {
 
-})();
+})(); +``` -

Fonctions étiquetées

+### Fonctions étiquetées -

Si vous utilisez des fonctions étiquetées, il faut toujours fournir un nom après le mot-clé function. Le code suivant ne fonctionnera pas :

+Si vous utilisez des [fonctions étiquetées](/fr/docs/Web/JavaScript/Reference/Instructions/label), il faut toujours fournir un nom après le mot-clé `function`. Le code suivant ne fonctionnera pas : -
function Greeter() {
+```js example-bad
+function Greeter() {
   german: function () {
     return "Moin";
   }
 }
 // SyntaxError: function statement requires a name
-
+``` -

En revanche, ceci fonctionnera :

+En revanche, ceci fonctionnera : -
function Greeter() {
+```js example-good
+function Greeter() {
   german: function g() {
     return "Moin";
   }
-}
+} +``` -

Méthodes d'un objet

+### Méthodes d'un objet -

Si vous souhaitez construire une méthode d'un objet, il faudra d'abord créer l'objet. Dans ce cas, la syntaxe sans le nom après le mot-clé function sera valide :

+Si vous souhaitez construire une méthode d'un objet, il faudra d'abord créer l'objet. Dans ce cas, la syntaxe sans le nom après le mot-clé `function` sera valide : -
var greeter = {
+```js example-good
+var greeter = {
   german: function () {
     return "Moin";
   }
-};
+}; +``` -

Syntaxe et fonctions de rappel (callbacks)

+### Syntaxe et fonctions de rappel (_callbacks_) -

Lorsqu'on utilise les callbacks, il est facile de s'emmêler les pinceaux entre les parenthèses et les virgules :

+Lorsqu'on utilise les _callbacks_, il est facile de s'emmêler les pinceaux entre les parenthèses et les virgules : -
promise.then(
+```js example-bad
+promise.then(
   function() {
     console.log("success");
   });
@@ -91,11 +101,12 @@ SyntaxError: Unexpected token ( [Chrome]
     console.log("error");
 }
 // SyntaxError: function statement requires a name
-
+``` -

La forme correcte serait :

+La forme correcte serait : -
promise.then(
+```json example-good
+promise.then(
   function() {
     console.log("success");
   },
@@ -103,14 +114,12 @@ SyntaxError: Unexpected token ( [Chrome]
     console.log("error");
   }
 );
-
+``` -

Voir aussi

+## Voir aussi - +- [Les fonctions dans le guide JavaScript](/fr/docs/Web/JavaScript/Guide/Fonctions) +- [Les déclarations de fonction](/fr/docs/Web/JavaScript/Reference/Instructions/function) +- [Les expressions de fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_function) +- [Les fonctions immédiatement invoquées (ou _IIFE_ en anglais)](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) +- [`label`](/fr/docs/Web/JavaScript/Reference/Instructions/label) diff --git a/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md b/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md index f6ad8afa09..5797276cdb 100644 --- a/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md +++ b/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md @@ -9,70 +9,69 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal original_slug: Web/JavaScript/Reference/Erreurs/Unterminated_string_literal --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
SyntaxError: Unterminated string constant (Edge)
-SyntaxError: unterminated string literal (Firefox)
-
+ SyntaxError: Unterminated string constant (Edge) + SyntaxError: unterminated string literal (Firefox) -

Type d'erreur

+## Type d'erreur -

{{jsxref("SyntaxError")}}

+{{jsxref("SyntaxError")}} -

Quel est le problème ?

+## Quel est le problème ? -

Une chaîne de caractères ({{jsxref("String")}}) n'est pas bien délimitée quelque part. Les littéraux de chaînes de caractères doivent être délimités par des simples quotes (') ou par des doubles quotes ("). Les séquences d'échappement permet de représenter dans ces chaînes de caractères. Pour réparer cette erreur :

+Une chaîne de caractères ({{jsxref("String")}}) n'est pas bien délimitée quelque part. Les littéraux de chaînes de caractères doivent être délimités par des simples quotes (') ou par des doubles quotes ("). [Les séquences d'échappement](/fr/docs/Web/JavaScript/Reference/Objets_globaux/String#Échappement_des_caractères) permet de représenter dans ces chaînes de caractères. Pour réparer cette erreur : -
    -
  • Vérifiez que la chaîne est bien délimitée au début et à la fin par des doubles quotes ou par des simples quotes,
  • -
  • Vérifiez que les caractères spéciaux de la chaîne ont bien été échappés,
  • -
  • Vérifiez que le littéral est bien découpé pour gérer plusieurs lignes (si c'est le cas).
  • -
+- Vérifiez que la chaîne est bien délimitée au début et à la fin par des doubles quotes ou par des simples quotes, +- Vérifiez que les caractères spéciaux de la chaîne ont bien été échappés, +- Vérifiez que le littéral est bien découpé pour gérer plusieurs lignes (si c'est le cas). -

Exemples

+## Exemples -

Gérer plusieurs lignes

+### Gérer plusieurs lignes -

En JavaScript, on ne peut pas écrire une chaîne simple sur plusieurs lignes comme ceci :

+En JavaScript, on ne peut pas écrire une chaîne simple sur plusieurs lignes comme ceci : -
var longString = "This is a very long string which needs
+```js example-bad
+var longString = "This is a very long string which needs
                   to wrap across multiple lines because
                   otherwise my code is unreadable.";
-// SyntaxError: unterminated string literal
+// SyntaxError: unterminated string literal +``` -

Pour écrire une chaîne sur plusieurs lignes, on pourra utiliser :

+Pour écrire une chaîne sur plusieurs lignes, on pourra utiliser : - +- [L'opérateur +](), +- Une barre oblique inversée ("\\") +- [Des littéraux de gabarits](/fr/docs/Web/JavaScript/Reference/Littéraux_gabarits) -

Voici la première variante avec l'opérateur de concaténation :

+Voici la première variante avec l'opérateur de concaténation : -
var longString = "This is a very long string which needs " +
+```js example-good
+var longString = "This is a very long string which needs " +
                  "to wrap across multiple lines because " +
                  "otherwise my code is unreadable.";
-
+``` -

Sinon, on peut utiliser une barre oblique inversée à la fin de chaque ligne pour indiquer qu'elle continue sur la ligne suivante. Attention, il faudra qu'il n'y ait aucun espace ou autre caractère après la barre oblique (il peut bien entendu y avoir un saut de ligne) :

+Sinon, on peut utiliser une barre oblique inversée à la fin de chaque ligne pour indiquer qu'elle continue sur la ligne suivante. Attention, il faudra qu'il n'y ait aucun espace ou autre caractère après la barre oblique (il peut bien entendu y avoir un saut de ligne) : -
var longString = "This is a very long string which needs \
+```js example-good
+var longString = "This is a very long string which needs \
 to wrap across multiple lines because \
 otherwise my code is unreadable.";
-
+``` -

On pourra également utiliser les littéraux de gabarits qui sont pris en charge par les environnement ECMAScript 2015 :

+On pourra également utiliser [les littéraux de gabarits](/fr/docs/Web/JavaScript/Reference/Littéraux_gabarits) qui sont pris en charge par les environnement ECMAScript 2015 : -
var longString = `This is a very long string which needs
+```js example-good
+var longString = `This is a very long string which needs
                   to wrap across multiple lines because
-                  otherwise my code is unreadable.`;
+ otherwise my code is unreadable.`; +``` -

Voir aussi

+## Voir aussi - +- {{jsxref("String")}} +- [Les littéraux de gabarits](/fr/docs/Web/JavaScript/Reference/Littéraux_gabarits) diff --git a/files/fr/web/javascript/reference/errors/var_hides_argument/index.md b/files/fr/web/javascript/reference/errors/var_hides_argument/index.md index dda8687316..8e98669ddf 100644 --- a/files/fr/web/javascript/reference/errors/var_hides_argument/index.md +++ b/files/fr/web/javascript/reference/errors/var_hides_argument/index.md @@ -8,49 +8,48 @@ tags: translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument original_slug: Web/JavaScript/Reference/Erreurs/Var_hides_argument --- -
{{jsSidebar("Errors")}}
+{{jsSidebar("Errors")}} -

Message

+## Message -
TypeError: variable "x" redeclares argument (Firefox)
-
+ TypeError: variable "x" redeclares argument (Firefox) -

Type d'erreur

+## Type d'erreur -

Une erreur {{jsxref("TypeError")}}, uniquement en mode strict.

+Une erreur {{jsxref("TypeError")}}, uniquement [en mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

Quel est le problème ?

+## Quel est le problème ? -

Le même nom de variable est utilisé comme nom pour un paramètre et comme nom de variable via une affectation var. Cela peut être lié à un conflit de nommage et le moteur envoie un avertissement.

+Le même nom de variable est utilisé comme nom pour un paramètre et comme nom de variable via une affectation [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). Cela peut être lié à un conflit de nommage et le moteur envoie un avertissement. -

Cette erreur ne se produit qu'en mode strict. Pour du code non-strict, la redéclaration est ignorée silencieusement..

+Cette erreur ne se produit qu'en mode strict. Pour du code non-strict, la redéclaration est ignorée silencieusement.. -

Exemples

+## Exemples -

Exemples invalides

+### Exemples invalides -

Ici, la variable arg redéclare l'argument de la fonction :

+Ici, la variable `arg` redéclare l'argument de la fonction : -
"use strict";
+```js example-bad
+"use strict";
 
 function f(arg) {
   var arg = "foo";
 }
-
+``` -

Exemples valides

+### Exemples valides -

Pour résoudre ce problème, on pourra généralement retirer l'instruction var car la variable existe déjà et peut être utilisée. Si on ne veut pas utiliser cette même variable, mieux vaudra renommer le paramètre ou la variable interne afin de lever l'ambiguïté.

+Pour résoudre ce problème, on pourra généralement retirer l'instruction [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) car la variable existe déjà et peut être utilisée. Si on ne veut pas utiliser cette même variable, mieux vaudra renommer le paramètre ou la variable interne afin de lever l'ambiguïté. -
"use strict";
+```js example-good
+"use strict";
 
 function f(arg) {
   arg = "foo";
 }
-
+``` -

Voir aussi

+## Voir aussi - +- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) diff --git a/files/fr/web/javascript/reference/functions/arguments/@@iterator/index.md b/files/fr/web/javascript/reference/functions/arguments/@@iterator/index.md index 406eb7bcdc..e6f4715714 100644 --- a/files/fr/web/javascript/reference/functions/arguments/@@iterator/index.md +++ b/files/fr/web/javascript/reference/functions/arguments/@@iterator/index.md @@ -11,19 +11,20 @@ tags: translation_of: Web/JavaScript/Reference/Functions/arguments/@@iterator original_slug: Web/JavaScript/Reference/Fonctions/arguments/@@iterator --- -
{{jsSidebar("Functions")}}
+{{jsSidebar("Functions")}} -

La valeur initiale de la propriété @@iterator est le même objet que la fonction utilisée pour la valeur initiale de la propriété {{jsxref("Array.prototype.values")}}.

+La valeur initiale de la propriété **`@@iterator`** est le même objet que la fonction utilisée pour la valeur initiale de la propriété {{jsxref("Array.prototype.values")}}. -

Syntaxe

+## Syntaxe -
arguments[Symbol.iterator]()
+ arguments[Symbol.iterator]() -

Exemples

+## Exemples -

Utiliser une boucle for...of

+### Utiliser une boucle `for...of` -
function f() {
+```js
+function f() {
   // votre environnement doit supporter les
   // boucles for..of et les variables
   // définies avec let dans les boucles
@@ -32,47 +33,21 @@ original_slug: Web/JavaScript/Reference/Fonctions/arguments/@@iterator
   }
 }
 f('w', 'y', 'k', 'o', 'p');
-
+``` -

Spécifications

+## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationStatutCommentaires
{{SpecName('ES6', '#sec-createunmappedargumentsobject', ' CreateUnmappedArgumentsObject')}}{{Spec2('ES6')}}Définition initiale.
{{SpecName('ES6', '#sec-createmappedargumentsobject', ' CreateMappedArgumentsObject')}}{{Spec2('ES6')}}Définition initiale.
{{SpecName('ESDraft', '#sec-createunmappedargumentsobject', 'CreateUnmappedArgumentsObject')}}{{Spec2('ESDraft')}} 
{{SpecName('ESDraft', '#sec-createmappedargumentsobject', 'CreateMappedArgumentsObject')}}{{Spec2('ESDraft')}} 
+| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-createunmappedargumentsobject', ' CreateUnmappedArgumentsObject')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ES6', '#sec-createmappedargumentsobject', ' CreateMappedArgumentsObject')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-createunmappedargumentsobject', 'CreateUnmappedArgumentsObject')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ESDraft', '#sec-createmappedargumentsobject', 'CreateMappedArgumentsObject')}} | {{Spec2('ESDraft')}} |   | -

Compatibilité des navigateurs

+## Compatibilité des navigateurs +{{Compat("javascript.functions.arguments.@@iterator")}} -

{{Compat("javascript.functions.arguments.@@iterator")}}

+## Voir aussi -

Voir aussi

- -
    -
  • {{jsxref("Array.prototype.values()")}}
  • -
+- {{jsxref("Array.prototype.values()")}} diff --git a/files/fr/web/javascript/reference/functions/arguments/callee/index.md b/files/fr/web/javascript/reference/functions/arguments/callee/index.md index 4f69ce4490..bb8c7d6fa3 100644 --- a/files/fr/web/javascript/reference/functions/arguments/callee/index.md +++ b/files/fr/web/javascript/reference/functions/arguments/callee/index.md @@ -11,45 +11,52 @@ tags: translation_of: Web/JavaScript/Reference/Functions/arguments/callee original_slug: Web/JavaScript/Reference/Fonctions/arguments/callee --- -
{{jsSidebar("Functions")}}{{deprecated_header}}
+{{jsSidebar("Functions")}}{{deprecated_header}} -

La propriété arguments.callee contient la fonction en cours d'exécution.

+La propriété **`arguments.callee`** contient la fonction en cours d'exécution. -

Description

+## Description -

callee est une propriété de l'objet arguments. Elle peut être utilisée afin de faire référence à la fonction en cours d'exécution à l'intérieur de cette fonction. Cette propriété peut etre utile lorsqu'on ne connait pas le nom de la fonction (fonction anonyme par exemple).

+`callee` est une propriété de l'objet `arguments`. Elle peut être utilisée afin de faire référence à la fonction en cours d'exécution à l'intérieur de cette fonction. Cette propriété peut etre utile lorsqu'on ne connait pas le nom de la fonction (fonction anonyme par exemple). -

Attention : En mode strict, ECMAScript 5 interdit la fonction arguments.callee(). Éviter de l'utiliser en utilisant un nom de fonction dans les expressions ou en utilisant une déclaration de fonction où la fonction s'appelle elle-même.

+> **Attention :** En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), ECMAScript 5 interdit la fonction `arguments.callee()`. Éviter de l'utiliser en utilisant un nom de fonction dans les expressions ou en utilisant une déclaration de fonction où la fonction s'appelle elle-même. -

Pourquoi arguments.callee a-t-il été retiré du mode strict ES5 ?

+### Pourquoi `arguments.callee` a-t-il été retiré du mode strict ES5 ? -

(adapté d'une réponse Stack Overflow par olliej)

+(adapté d'une réponse[ Stack Overflow par olliej](http://stackoverflow.com/a/235760/578288 "http://stackoverflow.com/a/235760/578288")) -

Aux débuts de JavaScript, il n'était pas possible d'utiliser des expressions de fonction avec des noms. Il était donc impossible de faire une expression de fonction récursive.

+Aux débuts de JavaScript, il n'était pas possible d'utiliser des expressions de fonction avec des noms. Il était donc impossible de faire une expression de fonction récursive. -

Cette syntaxe produisait le résultat escompté :

+Cette syntaxe produisait le résultat escompté : -
function factorielle (n) {
-    return !(n > 1) ? 1 : factorielle(n - 1) * n;
+```js
+function factorielle (n) {
+    return !(n > 1) ? 1 : factorielle(n - 1) * n;
 }
 
-[1,2,3,4,5].map(factorielle);
+[1,2,3,4,5].map(factorielle); +``` -

mais :

+mais : -
[1,2,3,4,5].map(function (n) {
-    return !(n > 1) ? 1 : /* que met-on ici ? */ (n - 1) * n;
-});
+```js +[1,2,3,4,5].map(function (n) { + return !(n > 1) ? 1 : /* que met-on ici ? */ (n - 1) * n; +}); +``` -

ne fonctionnait pas. Pour que cela puisse fonctionner, on ajouta arguments.callee :

+ne fonctionnait pas. Pour que cela puisse fonctionner, on ajouta `arguments.callee` : -
[1,2,3,4,5].map(function (n) {
-    return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
-});
+```js +[1,2,3,4,5].map(function (n) { + return !(n > 1) ? 1 : arguments.callee(n - 1) * n; +}); +``` -

Cependant, ce fut une mauvaise solution (avec caller également) car elle rendit impossible l'extension inline et la récursion terminale de façon générale (il est possible d'y arriver de certaines façons mais cela entraînerait nécessairement un code moins efficace). Le second problème que cela entraîne est que l'appel récursif aura une autre valeur this :

+Cependant, ce fut une mauvaise solution (avec `caller` également) car elle rendit impossible l'[extension inline](https://fr.wikipedia.org/wiki/Extension_inline) et la [récursion terminale](https://fr.wikipedia.org/wiki/R%C3%A9cursion_terminale) de façon générale (il est possible d'y arriver de certaines façons mais cela entraînerait nécessairement un code moins efficace). Le second problème que cela entraîne est que l'appel récursif aura une autre valeur `this` : -
var global = this;
+```js
+var global = this;
 
 var fonctionTruc = function (recursed) {
     if (!recursed) { return arguments.callee(true); }
@@ -60,51 +67,57 @@ var fonctionTruc = function (recursed) {
     }
 }
 
-fonctionTruc();
+fonctionTruc(); +``` -

ECMAScript 3 a introduit les expressions de fonctions nommées pour résoudre le problème. On peut désormais utiliser :

+ECMAScript 3 a introduit les expressions de fonctions nommées pour résoudre le problème. On peut désormais utiliser : -
[1,2,3,4,5].map(function factorielle (n) {
-    return !(n > 1) ? 1 : factorielle(n - 1)*n;
-});
+```js +[1,2,3,4,5].map(function factorielle (n) { + return !(n > 1) ? 1 : factorielle(n - 1)*n; +}); +``` -

Cette méthode possède plusieurs avantages :

+Cette méthode possède plusieurs avantages : -
    -
  • La fonction peut être appelée comme n'importe quelle autre fonction nommée dans le code
  • -
  • Cela ne crée pas une variable dans la portée extérieure (sauf pour IE 8 et les versions antérieures)
  • -
  • Cela entraîne de meilleures performances que d'accéder aux propriétés de l'objet arguments
  • -
+- La fonction peut être appelée comme n'importe quelle autre fonction nommée dans le code +- Cela ne crée pas une variable dans la portée extérieure ([sauf pour IE 8 et les versions antérieures](http://kangax.github.io/nfe/#example_1_function_expression_identifier_leaks_into_an_enclosing_scope)) +- Cela entraîne de meilleures performances que d'accéder aux propriétés de l'objet `arguments` -

Une autre fonctionnalité qui a été déprécié est : arguments.callee.caller, ou plus précisément Function.caller. Pourquoi cela ? Parce que ça permet d'avoir accès à tout moment à la fonction appelante la plus loin dans la pile d'appels. Or, comme évoqué ci-avant, cela a un effet de bord considérable : ça rend beaucoup plus complexes voire impossibles certaines optimisations. Ainsi, on ne peut pas garantir qu'une fonction f n'appellera pas une autre fonction inconnue, ce qui signifie qu'on ne peut pas utiliser l'extension inline. En résumé, cela signifie que n'importe quel site d'appel de fonction (call site) qui aurait pu être développé inline très simplement devra subir de nombreux tests :

+Une autre fonctionnalité qui a été déprécié est : `arguments.callee.caller`, ou plus précisément `Function.caller`. Pourquoi cela ? Parce que ça permet d'avoir accès à tout moment à la fonction appelante la plus loin dans la pile d'appels. Or, comme évoqué ci-avant, cela a un effet de bord considérable : ça rend beaucoup plus complexes voire impossibles certaines optimisations. Ainsi, on ne peut pas garantir qu'une fonction `f` n'appellera pas une autre fonction inconnue, ce qui signifie qu'on ne peut pas utiliser l'extension inline. En résumé, cela signifie que n'importe quel site d'appel de fonction (_call site_) qui aurait pu être développé inline très simplement devra subir de nombreux tests : -
function f (a, b, c, d, e) { return a ? b * c : d * e; }
+```js +function f (a, b, c, d, e) { return a ? b * c : d * e; } +``` -

Si l'interpréteur JavaScript ne peut pas garantir que l'ensemble des arguments fournis ici sont des nombres à l'instant de l'appel de la fonction, il devra insérer des vérifications pour chaque argument avant le code inline, sinon il ne pourra pas développer la fonction inline. On notera que, dans ce cas, un interpréteur intelligent devrait pouvoir réarranger les vérifications à faire afin qu'elles soient optimales et de se débarrasser des valeurs inutiles. Malgré tout, une telle optimisation ne sera pas possible dans d'autres cas, ce qui signifie que le développement inline n'est pas possible.

+Si l'interpréteur JavaScript ne peut pas garantir que l'ensemble des arguments fournis ici sont des nombres à l'instant de l'appel de la fonction, il devra insérer des vérifications pour chaque argument avant le code inline, sinon il ne pourra pas développer la fonction inline. On notera que, dans ce cas, un interpréteur intelligent devrait pouvoir réarranger les vérifications à faire afin qu'elles soient optimales et de se débarrasser des valeurs inutiles. Malgré tout, une telle optimisation ne sera pas possible dans d'autres cas, ce qui signifie que le développement inline n'est pas possible. -

Exemples

+## Exemples -

Utiliser arguments.callee pour une fonction anonyme récursive

+### Utiliser `arguments.callee` pour une fonction anonyme récursive -

Une fonction récursive, par définition, s'appelle elle-même. Elle fait donc généralement référence à elle-même grâce à son nom. Cependant, une fonction anonyme (créée grâce ) une expression de fonction ou au constructeur {{jsxref("Function")}}) n'a pas de nom et la seule façon d'y faire référence est donc d'utiliser arguments.callee.

+Une fonction récursive, par définition, s'appelle elle-même. Elle fait donc généralement référence à elle-même grâce à son nom. Cependant, une fonction anonyme (créée grâce ) une [expression de fonction](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_function) ou au constructeur {{jsxref("Function")}}) n'a pas de nom et la seule façon d'y faire référence est donc d'utiliser `arguments.callee`. -

L'exemple qui suit illustre une fonction qui définit et renvoie une fonction factorielle. Cet exemple n'a qu'un but démonstratif et ne correspond certainement pas à ce qui serait utilisé en pratique (les expressions de fonctions pouvant être nommées).

+L'exemple qui suit illustre une fonction qui définit et renvoie une fonction factorielle. Cet exemple n'a qu'un but démonstratif et ne correspond certainement pas à ce qui serait utilisé en pratique (les expressions de fonctions pouvant être [nommées](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_function)). -
function créer() {
+```js
+function créer() {
    return function(n) {
-      if (n <= 1)
+      if (n <= 1)
          return 1;
       return n * arguments.callee(n - 1);
    };
 }
 
-var résultat = create()(5); // renvoie 120 (5 * 4 * 3 * 2 * 1)
+var résultat = create()(5); // renvoie 120 (5 * 4 * 3 * 2 * 1) +``` -

Une utilisation d'arguments.callee qui ne possède pas de solution de remplacement

+### Une utilisation d'`arguments.callee` qui ne possède pas de solution de remplacement -

Malgré tout, dans un cas comme le suivant, il n'existe pas d'équivalent pour arguments.callee, c'est pourquoi sa déprécation pourrait être un bug (voir {{Bug("725398")}}):

+Malgré tout, dans un cas comme le suivant, il n'existe pas d'équivalent pour `arguments.callee`, c'est pourquoi sa déprécation pourrait être un bug (voir {{Bug("725398")}}): -
function créerPersonne (sIdentité) {
+```js
+function créerPersonne (sIdentité) {
     var oPersonne = new Function("alert(arguments.callee.identité);");
     oPersonne.identité = sIdentité;
     return oPersonne;
@@ -112,46 +125,22 @@ var résultat = create()(5); // renvoie 120 (5 * 4 * 3 * 2 * 1)
var jean = créerPersonne("Jean Biche"); -jean(); - -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.2
{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.functions.arguments.callee")}}

- -

Voir aussi

- -
    -
  • {{jsxref("Function")}}
  • -
+jean(); +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.2 | +| {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.arguments.callee")}} + +## Voir aussi + +- {{jsxref("Function")}} diff --git a/files/fr/web/javascript/reference/functions/arguments/index.md b/files/fr/web/javascript/reference/functions/arguments/index.md index c996b904d3..84b1939b72 100644 --- a/files/fr/web/javascript/reference/functions/arguments/index.md +++ b/files/fr/web/javascript/reference/functions/arguments/index.md @@ -10,238 +10,228 @@ tags: translation_of: Web/JavaScript/Reference/Functions/arguments original_slug: Web/JavaScript/Reference/Fonctions/arguments --- -
{{jsSidebar("Fonctions")}}
+{{jsSidebar("Fonctions")}} -

L'objet arguments est un objet, semblable à un tableau, correspondant aux arguments passés à une fonction.

+L'objet **`arguments`** est un objet, **semblable** à un tableau, correspondant aux arguments passés à une fonction. -
-

Note : Si vous pouvez utiliser les fonctionnalités ECMAScript 2015/ES6, il est préférable de manipuler les arguments avec les paramètres du reste.

-
+> **Note :** Si vous pouvez utiliser les fonctionnalités ECMAScript 2015/ES6, il est préférable de manipuler les arguments avec [les paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste). -
-

Note : Par « objet semblable à un tableau », on indique que l'objet arguments possède une propriété {{jsxref("Fonctions/arguments.length", "length")}} et que ses propriétés sont indexées à partir de 0 mais qu'il ne possède aucune des méthodes natives de {{jsxref("Array")}} telles que {{jsxref("Array.forEach", "forEach()")}} et {{jsxref("Array.map", "map()")}}.

-
+> **Note :** Par « objet semblable à un tableau », on indique que l'objet `arguments` possède une propriété {{jsxref("Fonctions/arguments.length", "length")}} et que ses propriétés sont indexées à partir de 0 mais qu'il ne possède aucune des méthodes natives de {{jsxref("Array")}} telles que {{jsxref("Array.forEach", "forEach()")}} et {{jsxref("Array.map", "map()")}}. -
{{EmbedInteractiveExample("pages/js/functions-arguments.html")}}
+{{EmbedInteractiveExample("pages/js/functions-arguments.html")}} +> **Note :** « Variable ayant la fonction pour portée » correspond à la traduction de « Variable of the function scope » qu'il serait incorrect de traduire par « Variable de la portée de la fonction » car la portée de la fonction est la portée dans laquelle on peut appeler la fonction. Une variable locale de la fonction pourrait quant à elle avoir une portée strictement incluse dans le corps de la fonction (variable définie dans un bloc de la fonction même si cette subtilité n'existe pas en Javascript). Toute suggestion pour éviter cette tournure un peu longue sans altérer le sens est la bienvenue. (variable intrinsèque) +## Syntaxe -
-

Note : « Variable ayant la fonction pour portée » correspond à la traduction de « Variable of the function scope » qu'il serait incorrect de traduire par « Variable de la portée de la fonction » car la portée de la fonction est la portée dans laquelle on peut appeler la fonction. Une variable locale de la fonction pourrait quant à elle avoir une portée strictement incluse dans le corps de la fonction (variable définie dans un bloc de la fonction même si cette subtilité n'existe pas en Javascript). Toute suggestion pour éviter cette tournure un peu longue sans altérer le sens est la bienvenue. (variable intrinsèque)

-
+ arguments -

Syntaxe

+## Description -
arguments
+L'objet `arguments` est une variable locale (intrinsèque et inhérente aux fonctions) disponible dans toutes les fonctions (qui ne sont pas [des fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es)). -

Description

+Vous pouvez accéder aux arguments d'une fonction à l'intérieur de celle-ci en utilisant l'objet `arguments`. Cet objet contient une entrée pour chaque argument passé à la fonction, l'indice de la première entrée commençant à 0. Par exemple, si une fonction est appelée avec trois arguments, on accède à ceux-ci comme suit : -

L'objet arguments est une variable locale (intrinsèque et inhérente aux fonctions) disponible dans toutes les fonctions (qui ne sont pas des fonctions fléchées).

- -

Vous pouvez accéder aux arguments d'une fonction à l'intérieur de celle-ci en utilisant l'objet arguments. Cet objet contient une entrée pour chaque argument passé à la fonction, l'indice de la première entrée commençant à 0. Par exemple, si une fonction est appelée avec trois arguments, on accède à ceux-ci comme suit :

- -
arguments[0]
+```js
+arguments[0]
 arguments[1]
-arguments[2]
+arguments[2] +``` -

Les arguments peuvent aussi être modifiés :

+Les arguments peuvent aussi être modifiés : -
arguments[1] = 'nouvelle valeur';
+```js +arguments[1] = 'nouvelle valeur'; +``` -

Type de l'objet arguments et liens avec Array

+### Type de l'objet `arguments` et liens avec `Array` -

L'objet arguments n'est pas un {{jsxref("Array")}}. Il est similaire à un Array, mais il n'a pas les propriétés d'un Array, exceptée la propriété {{jsxref("Array.length", "length")}}. Par exemple, il n'a pas la méthode {{jsxref("Array.pop", "pop()")}}. Néanmoins, il peut être converti en un vrai objet de type Array :

+L'objet `arguments` n'est pas un {{jsxref("Array")}}. Il est similaire à un `Array`, mais il n'a pas les propriétés d'un `Array,` exceptée la propriété {{jsxref("Array.length", "length")}}. Par exemple, il n'a pas la méthode {{jsxref("Array.pop", "pop()")}}. Néanmoins, il peut être converti en un vrai objet de type `Array` : -
console.log(typeof arguments); // 'object'
+```js
+console.log(typeof arguments); // 'object'
 var args = Array.prototype.slice.call(arguments);
 
 // Avec ECMAScript 2015 / ES6
 var args = Array.from(arguments);
-
- -

Utilisation de la décomposition avec les arguments

+``` -

On peut utiliser la méthode {{jsxref("Array.from()")}} ou encore l'opérateur de décomposition afin de convertir cet objet en un vrai Array :

+### Utilisation de la décomposition avec les arguments -
var args = Array.from(arguments);
-var args = [...arguments];
+On peut utiliser la méthode {{jsxref("Array.from()")}} ou encore [l'opérateur de décomposition](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateur_de_d%C3%A9composition) afin de convertir cet objet en un _vrai_ `Array` : -
-

Attention : Il est déconseillé d'utiliser slice sur les arguments car cela peut empêcher certaines optimisations des moteurs JavaScript. Pour ce scénario, on peut par exemple construire un nouveau tableau en parcourant l'objet arguments (à ce sujet, voir cette page sur les contraintes d'optimisations liées à V8). Pour cet exemple, on pourra utiliser Array.apply :

+```js +var args = Array.from(arguments); +var args = [...arguments]; +``` -
var args = (arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments));
-
+> **Attention :** Il est déconseillé d'utiliser `slice` sur les arguments car cela peut empêcher certaines optimisations des moteurs JavaScript. Pour ce scénario, on peut par exemple construire un nouveau tableau en parcourant l'objet arguments (à ce sujet, voir [cette page](https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments) sur les contraintes d'optimisations liées à V8). Pour cet exemple, on pourra utiliser `Array.apply` : +> +> ```js +> var args = (arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)); +> ``` -

L'objet arguments est disponible uniquement dans le corps d'une fonction. Tenter d'accéder à l'objet arguments en dehors de la déclaration d'une fonction renvoie une erreur.

+L'objet `arguments` est disponible uniquement dans le corps d'une fonction. Tenter d'accéder à l'objet `arguments` en dehors de la déclaration d'une fonction renvoie une erreur. -

Vous pouvez utiliser l'objet arguments si vous appelez une fonction avec plus de paramètres que ceux déclarés dans sa signature. Cette technique est utile pour les fonctions qui acceptent un nombre variable d'arguments. Vous pouvez utiliser  {{jsxref("Fonctions/arguments/length", "arguments.length")}} pour déterminer le nombre de paramètres passés à la fonction, puis utiliser chaque argument en utilisant l'objet arguments. (Pour déterminer le nombre d'arguments déclarés à la définition de la fonction, il faut utiliser la propriété {{jsxref("Function.length", "length")}}.)

+Vous pouvez utiliser l'objet `arguments` si vous appelez une fonction avec plus de paramètres que ceux déclarés dans sa signature. Cette technique est utile pour les fonctions qui acceptent un nombre variable d'arguments. Vous pouvez utiliser  {{jsxref("Fonctions/arguments/length", "arguments.length")}} pour déterminer le nombre de paramètres passés à la fonction, puis utiliser chaque argument en utilisant l'objet `arguments`. (Pour déterminer le nombre d'arguments déclarés à la définition de la fonction, il faut utiliser la propriété {{jsxref("Function.length", "length")}}.) -

Utiliser typeof sur arguments

+### Utiliser `typeof` sur `arguments` -

L'opérateur {{jsxref("Opérateurs/L_opérateur_typeof","typeof")}} renvoie "object" lorsqu'on l'utilise sur arguments

+L'opérateur {{jsxref("Opérateurs/L_opérateur_typeof","typeof")}} renvoie `"object"` lorsqu'on l'utilise sur `arguments` -
console.log(typeof arguments); // "object"
+```js +console.log(typeof arguments); // "object" +``` -

On peut tout à fait utiliser typeof sur chacun des arguments afin de connaître leur type respectif

+On peut tout à fait utiliser `typeof` sur chacun des arguments afin de connaître leur type respectif -
console.log(typeof arguments[0]); // renvoie le type du premier argument
+```js +console.log(typeof arguments[0]); // renvoie le type du premier argument +``` -

Propriétés

+## Propriétés -
-
{{jsxref("Fonctions/arguments/callee", "arguments.callee")}} {{Deprecated_inline}}
-
Référence à la fonction en cours d'exécution.
-
{{jsxref("Fonctions/arguments/caller", "arguments.caller")}} {{Obsolete_inline}}
-
Référence à la fonction appelante.
-
{{jsxref("Fonctions/arguments/length", "arguments.length")}}
-
Référence au nombre d'arguments passés à la fonction.
-
{{jsxref("Fonctions/arguments/@@iterator", "arguments[@@iterator]")}}
-
Renvoie un nouvel itérateur qui contient les valeurs pour chaque indice d'arguments.
-
+- {{jsxref("Fonctions/arguments/callee", "arguments.callee")}} {{Deprecated_inline}} + - : Référence à la fonction en cours d'exécution. +- {{jsxref("Fonctions/arguments/caller", "arguments.caller")}} {{Obsolete_inline}} + - : Référence à la fonction appelante. +- {{jsxref("Fonctions/arguments/length", "arguments.length")}} + - : Référence au nombre d'arguments passés à la fonction. +- {{jsxref("Fonctions/arguments/@@iterator", "arguments[@@iterator]")}} + - : Renvoie un nouvel [itérateur](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs#Itérateurs) qui contient les valeurs pour chaque indice d'`arguments`. -

Exemples

+## Exemples -

Définir une fonction de concaténation d'un nombre variable de chaînes

+### Définir une fonction de concaténation d'un nombre variable de chaînes -

Cet exemple définit une fonction qui concatène un nombre variable de chaînes. Le seul argument formel de la fonction est une chaîne spécifiant un séparateur inséré entre les chaînes concaténées. La fonction est définie comme suit :

+Cet exemple définit une fonction qui concatène un nombre variable de chaînes. Le seul argument formel de la fonction est une chaîne spécifiant un séparateur inséré entre les chaînes concaténées. La fonction est définie comme suit : -
function myConcat(separateur) {
+```js
+function myConcat(separateur) {
   var args = Array.prototype.slice.call(arguments, 1);
   return args.join(separateur);
-}
+} +``` -

Vous pouvez passer n'importe quel nombre d'arguments à cette fonction ; elle créera une liste en utilisant chaque argument comme un élément de la liste.

+Vous pouvez passer n'importe quel nombre d'arguments à cette fonction ; elle créera une liste en utilisant chaque argument comme un élément de la liste. -
// renvoie "rouge, orange, bleu"
+```js
+// renvoie "rouge, orange, bleu"
 myConcat(", ", "rouge", "orange", "bleu");
 
 // renvoie "éléphant ; giraffe ; lion ; guépard"
 myConcat(" ; ", "elephant", "giraffe", "lion", "guépard");
-
+``` -

Définir une fonction de création de listes HTML

+### Définir une fonction de création de listes HTML -

Cet exemple définit une fonction qui crée des chaînes définissant des listes HTML. Le seul argument formel de la fonction est une chaîne pouvant valoir "u" (unordered), si la liste doit être sans numérotation (avec des puces), ou "o" (ordered), si la liste doit être numérotée. La fonction est définie comme suit :

+Cet exemple définit une fonction qui crée des chaînes définissant des listes HTML. Le seul argument formel de la fonction est une chaîne pouvant valoir "`u`" (unordered), si la liste doit être sans numérotation (avec des puces), ou "`o`" (ordered), si la liste doit être numérotée. La fonction est définie comme suit : -
function liste(type) {
-  var resultat = "<" + type + "l><li>";
+```js
+function liste(type) {
+  var resultat = "<" + type + "l>
  • "; var args = Array.prototype.slice.call(arguments, 1); - resultat += args.join("</li><li>"); - resultat += "</li></" + type + "l>"; // end list + resultat += args.join("
  • "); + resultat += "
  • "; // end list return resultat; -}
    +} +``` -

    Vous pouvez passer n'importe quel nombre d'arguments à cette fonction ; elle créera une liste du type indiqué en ajoutant chaque argument comme élément dans la liste. Exemple :

    +Vous pouvez passer n'importe quel nombre d'arguments à cette fonction ; elle créera une liste du type indiqué en ajoutant chaque argument comme élément dans la liste. Exemple : -
    var listeHTML = liste("u", "Un", "Deux", "Trois");
    +```js
    +var listeHTML = liste("u", "Un", "Deux", "Trois");
     
     /* listeHTML vaut  :
     
    -"<ul><li>Un</li><li>Deux</li><li>Trois</li></ul>"
    +"
    • Un
    • Deux
    • Trois
    " -*/
    +*/ +``` -

    Paramètres du reste, paramètres par défaut et décomposition

    +### Paramètres du reste, paramètres par défaut et décomposition -

    L'objet arguments peut être utilisé en combinaison avec les paramètres du reste, les paramètres par défaut ou les paramètres décomposés.

    +L'objet `arguments` peut être utilisé en combinaison avec [les paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste), [les paramètres par défaut](/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments) ou [les paramètres décomposés](/fr/docs/Web/JavaScript/Reference/Opérateurs/Affecter_par_décomposition). -
    function toto(...args) {
    +```js
    +function toto(...args) {
       return args;
     }
     toto(1, 2, 3); // [1, 2, 3]
    -
    +``` -

    Toutefois, pour les fonctions utilisées en mode non-strict, un objet arguments n'est fourni à l'intérieur de la fonction uniquement si celle-ci n'utilise pas de paramètres du reste, pas de paramètres par défaut ou de paramètre décomposé. Par exemple, dans la fonction suivante, qui utilise un paramètre par défaut, ce sera 10 qui sera renvoyé (et non 100) :

    +Toutefois, pour les fonctions utilisées en mode non-strict, un **objet `arguments`** n'est fourni à l'intérieur de la fonction uniquement si celle-ci n'utilise pas de [paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste), pas de [paramètres par défaut](/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments) ou de [paramètre décomposé](/fr/docs/Web/JavaScript/Reference/Opérateurs/Affecter_par_décomposition). Par exemple, dans la fonction suivante, qui utilise un paramètre par défaut, ce sera 10 qui sera renvoyé (et non 100) : -
    function truc(a=1) {
    +```js
    +function truc(a=1) {
       arguments[0] = 100;
       return a;
     }
     truc(10); // 10
    -
    +``` -

    Si l'objet arguments est modifié dans la fonction, cela modifiera la valeur du paramètre passé. Dans cet exemple où il n'y a ni paramètres du reste, ni paramètres par défaut, ni décomposition, le résultat sera 100 :

    +Si l'objet `arguments` est modifié dans la fonction, cela modifiera la valeur du paramètre passé. Dans cet exemple où il n'y a ni [paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/param%C3%A8tres_du_reste), ni [paramètres par défaut](/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments), ni [décomposition](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateur_de_d%C3%A9composition), le résultat sera 100 : -
    fonction truc(a) {
    +```js
    +fonction truc(a) {
       arguments[0] = 100;
       return a;
     }
    -truc(10); // 100
    +truc(10); // 100 +``` -

    En fait, lorsqu'il n'y a aucun paramètre du reste, paramètre par défaut ou aucune décomposition, les arguments formels feront références aux valeurs de l'objet arguments. Lorsqu'on aura besoin d'accéder à ces valeurs, on accèdera aux valeurs contenues dans arguments et à l'inverse, lorsqu'on modifiera ces valeurs, cela modifiera le contenu d'arguments. Par exemple

    +En fait, lorsqu'il n'y a aucun paramètre du reste, paramètre par défaut ou aucune décomposition, les arguments formels feront références aux valeurs de l'objet `arguments`. Lorsqu'on aura besoin d'accéder à ces valeurs, on accèdera aux valeurs contenues dans `arguments` et à l'inverse, lorsqu'on modifiera ces valeurs, cela modifiera le contenu d'`arguments`. Par exemple -
    function func(a, b) {
    +```js
    +function func(a, b) {
       arguments[0] = 99;
       arguments[1] = 99;
       console.log(a + " " +b);
     }
     
     func(1, 2); // 99 99
    -
    +``` -

    ou encore :

    +ou encore : -
    function func(a, b) {
    +```js
    +function func(a, b) {
       a = 9;
       b = 99;
       console.log(arguments[0] + " " + arguments[1]);
     }
     
     func(3, 4); // 9 99
    -
    +``` -

    En revanche, dès qu'on utilise des paramètres du reste, des paramètres par défaut ou la décomposition, c'est le comportement normal qui sera appliqué :

    +En revanche, dès qu'on utilise des paramètres du reste, des paramètres par défaut ou la décomposition, c'est le comportement normal qui sera appliqué : -
    function func(a, b, c = 9) {
    +```js
    +function func(a, b, c = 9) {
       arguments[0] = 99;
       arguments[1] = 98;
       console.log(a + " " + b);
     }
     
     func(3, 4); // 3 4
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée par JavaScript 1.1
    {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES2015', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ES2015')}} 
    {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.arguments")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée par JavaScript 1.1 | +| {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES2015', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ES2015')}} |   | +| {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.arguments")}} + +## Voir aussi + +- {{jsxref("Function")}} +- [Les paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste) +- [Contraintes d'optimisations sous V8 en relation avec `arguments`](https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments) diff --git a/files/fr/web/javascript/reference/functions/arguments/length/index.md b/files/fr/web/javascript/reference/functions/arguments/length/index.md index 495b0e6f20..7deb32f457 100644 --- a/files/fr/web/javascript/reference/functions/arguments/length/index.md +++ b/files/fr/web/javascript/reference/functions/arguments/length/index.md @@ -10,82 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Functions/arguments/length original_slug: Web/JavaScript/Reference/Fonctions/arguments/length --- -
    {{jsSideBar("Functions")}}
    +{{jsSideBar("Functions")}} -

    La propriété arguments.length contient le nombre d'arguments passés à la fonction.

    +La propriété **`arguments.length`** contient le nombre d'arguments passés à la fonction. -

    Syntaxe

    +## Syntaxe -
    arguments.length
    + arguments.length -

    Description

    +## Description -

    La propriété arguments.length fournit le nombre d'arguments qui ont été passés à la fonction. Cette quantité peut être inférieure ou supérieure au nombre de paramètres explicitement déclarés dans la définition de la fonction (voir également {{jsxref("Function.length")}}).

    +La propriété `arguments.length` fournit le nombre d'arguments qui ont été passés à la fonction. Cette quantité peut être inférieure ou supérieure au nombre de paramètres explicitement déclarés dans la définition de la fonction (voir également {{jsxref("Function.length")}}). -

    Exemple

    +## Exemple -

    Utiliser arguments.length

    +### Utiliser `arguments.length` -

    Dans cet exemple, on définit une fonction qui permet d'additionner plusieurs nombres.

    +Dans cet exemple, on définit une fonction qui permet d'additionner plusieurs nombres. -
    function somme(x /*, y, z, ...*/) {
    +```js
    +function somme(x /*, y, z, ...*/) {
        x = Number(x);
    -   for (var i = 1; i < arguments.length; i++) {
    +   for (var i = 1; i < arguments.length; i++) {
           x += Number(arguments[i]);
        }
        return x;
     }
    -
    +``` -
    résultat = somme(3, 4, 5);        // renvoie 12
    +```js
    +résultat = somme(3, 4, 5);        // renvoie 12
     résultat = somme(3, 4);           // renvoie 7
     résultat = somme(103, 104, 105);  // renvoie 312
    -
    - -
    -

    Note : arguments.length ne doit pas être confondu avec {{jsxref("Function.length")}}.

    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée par JavaScript 1.1
    {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - - -

    {{Compat("javascript.functions.arguments.length")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Function")}}
    • -
    • {{jsxref("Function.length")}}
    • -
    +``` + +> **Note :** `arguments.length` ne doit pas être confondu avec {{jsxref("Function.length")}}. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée par JavaScript 1.1 | +| {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.arguments.length")}} + +## Voir aussi + +- {{jsxref("Function")}} +- {{jsxref("Function.length")}} diff --git a/files/fr/web/javascript/reference/functions/arrow_functions/index.md b/files/fr/web/javascript/reference/functions/arrow_functions/index.md index 8beaaa3098..c40336f008 100644 --- a/files/fr/web/javascript/reference/functions/arrow_functions/index.md +++ b/files/fr/web/javascript/reference/functions/arrow_functions/index.md @@ -9,66 +9,62 @@ tags: translation_of: Web/JavaScript/Reference/Functions/Arrow_functions original_slug: Web/JavaScript/Reference/Fonctions/Fonctions_fléchées --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    Une expression de fonction fléchée (arrow function en anglais) permet d’avoir une syntaxe plus courte que les expressions de fonction et ne possède pas ses propres valeurs pour this, arguments, super, ou new.target. Les fonctions fléchées sont souvent anonymes et ne sont pas destinées à être utilisées pour déclarer des méthodes.

    +Une **expression de fonction fléchée** (_arrow function_ en anglais) permet d’avoir une syntaxe plus courte que [les expressions de fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_function) et ne possède pas ses propres valeurs pour [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this), [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments), [`super`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/super), ou [`new.target`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/new.target). Les fonctions fléchées sont souvent [anonymes](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/name) et ne sont pas destinées à être utilisées pour déclarer des méthodes. -
    {{EmbedInteractiveExample("pages/js/functions-arrow.html")}}
    +{{EmbedInteractiveExample("pages/js/functions-arrow.html")}} -

    Syntaxe

    +## Syntaxe -
    ([param] [, param]) => {
    -   instructions
    -}
    +    ([param] [, param]) => {
    +       instructions
    +    }
     
    -(param1, param2, …, param2) => expression
    -// équivalent à
    -(param1, param2, …, param2) => {
    -  return expression;
    -}
    +    (param1, param2, …, param2) => expression
    +    // équivalent à
    +    (param1, param2, …, param2) => {
    +      return expression;
    +    }
     
    -// Parenthèses non nécessaires quand il n'y a qu'un seul argument
    -param => expression
    +    // Parenthèses non nécessaires quand il n'y a qu'un seul argument
    +    param => expression
     
    -// Une fonction sans paramètre peut s'écrire avec un couple
    -// de parenthèses
    -() => {
    -  instructions
    -}
    +    // Une fonction sans paramètre peut s'écrire avec un couple
    +    // de parenthèses
    +    () => {
    +      instructions
    +    }
     
    -// Gestion des paramètres du reste et paramètres par défaut
    -(param1, param2, ...reste) => {
    -  instructions
    -}
    -(param1 = valeurDefaut1, param2, …, paramN = valeurDefautN) => {
    -  instructions
    -}
    +    // Gestion des paramètres du reste et paramètres par défaut
    +    (param1, param2, ...reste) => {
    +      instructions
    +    }
    +    (param1 = valeurDefaut1, param2, …, paramN = valeurDefautN) => {
    +      instructions
    +    }
     
    -// Gestion de la décomposition pour la liste des paramètres
    -let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
    -f();
    -
    + // Gestion de la décomposition pour la liste des paramètres + let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c; + f(); -
    -
    param
    -
    Le nom d’un argument. S’il n'y a aucun argument, cela doit être indiqué par une paire de parenthèses (). S’il n'y a qu’un argument, les parenthèses ne sont pas nécessaires (ex. : toto => 1).
    -
    instructions ou expression
    -
    Plusieurs instructions doivent être encadrées par des accolades, {}. Une expression simple ne nécessite pas d’accolades. L’expression est également la valeur de retour implicite pour cette fonction.
    -
    +- `param` + - : Le nom d’un argument. S’il n'y a aucun argument, cela doit être indiqué par une paire de parenthèses `()`. S’il n'y a qu’un argument, les parenthèses ne sont pas nécessaires (ex. : `toto => 1`). +- `instructions` ou `expression` + - : Plusieurs instructions doivent être encadrées par des accolades, {}. Une expression simple ne nécessite pas d’accolades. L’expression est également la valeur de retour implicite pour cette fonction. -

    Description

    +## Description -

    Deux facteurs sont à l’origine de la conception des fonctions fléchées : une syntaxe plus courte et l’absence de this spécifique à la fonction. Sur ce dernier point, cela signifie qu’une fonction fléchée ne lie pas son propre {{jsxref("Opérateurs/L_opérateur_this","this")}} au sein de la fonction (il en va de même avec {{jsxref("Fonctions/arguments","arguments")}}, {{jsxref("Opérateurs/super","super")}} ou {{jsxref("Opérateurs/new.target","new.target")}}).

    +Deux facteurs sont à l’origine de la conception des fonctions fléchées : une syntaxe plus courte et l’absence de `this` spécifique à la fonction. Sur ce dernier point, cela signifie qu’une fonction fléchée ne lie pas son propre {{jsxref("Opérateurs/L_opérateur_this","this")}} au sein de la fonction (il en va de même avec {{jsxref("Fonctions/arguments","arguments")}}, {{jsxref("Opérateurs/super","super")}} ou {{jsxref("Opérateurs/new.target","new.target")}}). -
    -

    Note : Voir aussi l’article sur les fonctions fléchées présent sur https://tech.mozfr.org/post/2015/06/10/ES6-en-details-%3A-les-fonctions-flechees (l’article original en anglais est disponible ici).

    -
    +> **Note :** Voir aussi l’article sur les fonctions fléchées présent sur (l’article original en anglais est disponible [ici](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/)). -

    Syntaxe plus courte

    +### Syntaxe plus courte -

    Pour des aspects fonctionnels, la légèreté de la syntaxe est bienvenue. Par exemple :

    +Pour des aspects fonctionnels, la légèreté de la syntaxe est bienvenue. Par exemple : -
    var a = [
    +```js
    +var a = [
       "We're up all night 'til the sun",
       "We're up all night to get some",
       "We're up all night for good fun",
    @@ -80,22 +76,22 @@ var a2 = a.map(function (s) { return s.length });
     // [31, 30, 31, 31]
     
     // Avec, on a quelque chose de plus concis
    -var a3 = a.map( s => s.length);
    -// [31, 30, 31, 31]
    +var a3 = a.map( s => s.length); +// [31, 30, 31, 31] +``` -

    Pas de this lié à la fonction

    +### Pas de `this` lié à la fonction -

    Jusqu’a l’apparition des fonctions fléchées, chaque nouvelle fonction définissait son propre {{jsxref("Opérateurs/L_opérateur_this","this")}} :

    +Jusqu’a l’apparition des fonctions fléchées, chaque nouvelle fonction définissait son propre {{jsxref("Opérateurs/L_opérateur_this","this")}} : -
      -
    • un nouvel objet dans le cas d’un constructeur
    • -
    • undefined dans les appels de fonctions en mode strict
    • -
    • l’objet courant si la fonction est appelée comme une méthode, etc.
    • -
    +- un nouvel objet dans le cas d’un constructeur +- `undefined` dans les appels de fonctions en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) +- l’objet courant si la fonction est appelée comme une méthode, etc. -

    Cela a pu entraîner des confusions lorsqu’on utilisait un style de programmation orientée objet.

    +Cela a pu entraîner des confusions lorsqu’on utilisait un style de programmation orientée objet. -
    function Personne () {
    +```js
    +function Personne () {
       // Le constructeur Personne() définit `this` comme lui-même.
       this.age = 0;
     
    @@ -107,11 +103,13 @@ var a3 = a.map( s => s.length);
       }, 1000);
     }
     
    -var p = new Personne();
    +var p = new Personne(); +``` -

    Avec ECMAScript 3/5, ce problème a pu être résolu en affectant la valeur de this à une autre variable :

    +Avec ECMAScript 3/5, ce problème a pu être résolu en affectant la valeur de `this` à une autre variable : -
    function Personne () {
    +```js
    +function Personne () {
       var that = this;
       that.age = 0;
     
    @@ -120,46 +118,52 @@ var p = new Personne();
    // qui est le contexte souhaité that.age++; }, 1000); -} +} +``` -

    Autrement, on aurait pu utiliser une fonction de liaison afin que la bonne valeur this soit passée à la fonction grandir.

    +Autrement, on aurait pu utiliser une [fonction de liaison](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/bind) afin que la bonne valeur `this` soit passée à la fonction `grandir`. -

    Les fonctions fléchées ne créent pas de nouveau contexte, elles utilisent la valeur this de leur contexte. Aussi, si le mot-clé this est utilisé dans le corps de la fonction, le moteur recherchera la référence à cette valeur dans une portée parente. Le code qui suit fonctionne ainsi de la façon attendue car le this utilisé dans setInterval est le thisde la portée de Personne :

    +Les fonctions fléchées ne créent pas de nouveau contexte, elles utilisent la valeur `this` de leur contexte. Aussi, si le mot-clé `this` est utilisé dans le corps de la fonction, le moteur recherchera la référence à cette valeur dans une portée parente. Le code qui suit fonctionne ainsi de la façon attendue car le `this` utilisé dans `setInterval` est le `this`de la portée de `Personne` : -
    function Personne () {
    +```js
    +function Personne () {
       this.age = 0;
     
    -  setInterval(() => {
    +  setInterval(() => {
         this.age++;
         // |this| fait bien référence à l'objet personne
       }, 1000);
     }
     
    -var p = new Personne();
    +var p = new Personne(); +``` -

    Liens avec le mode strict

    +#### Liens avec le mode strict -

    Ici this provient du contexte englobant, les règles du mode strict sont donc ignorées pour ce qui concerne this.

    +Ici `this` provient du contexte englobant, les règles du [mode strict](/fr/docs/Web/JavaScript/Reference/Fonctions_et_portee_des_fonctions/Strict_mode) sont donc ignorées pour ce qui concerne `this`. -
    var f = () => {'use strict'; return this};
    -f() === window; // ou l'objet global
    +```js +var f = () => {'use strict'; return this}; +f() === window; // ou l'objet global +``` -

    Le reste des règles du mode strict sont appliquées normalement.

    +Le reste des règles du mode strict sont appliquées normalement. -

    Appel via {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}}

    +#### Appel via {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}} -

    Étant donné que this provient du contexte englobant, si on invoque une fonction via la méthode call ou apply, cela ne passera que des arguments mais n’aura aucun effet sur this :

    +Étant donné que `this` provient du contexte englobant, si on invoque une fonction via la méthode `call` ou `apply`, cela ne passera que des arguments mais n’aura aucun effet sur `this` : -
    var ajouter = {
    +```js
    +var ajouter = {
       base: 1,
     
       add : function (a) {
    -    var f = v => v + this.base;
    +    var f = v => v + this.base;
         return f(a);
       },
     
       addViaCall: function (a) {
    -    var f = v => v + this.base;
    +    var f = v => v + this.base;
         var b = {
           base: 2
         };
    @@ -172,42 +176,47 @@ console.log(ajouter.add(1));
     
     console.log(ajouter.addViaCall(1));
     // Cela affichera toujours 2
    -
    +``` -

    Pas de liaison pour arguments

    +#### Pas de liaison pour `arguments` -

    Les fonctions fléchées n’exposent pas d’objet arguments : arguments.length, arguments[0], arguments[1], et autres ne font donc pas référence aux arguments passés à la fonction fléchés. Dans ce cas arguments est simplement une référence à la variable de même nom si elle est présente dans la portée englobante :

    +Les fonctions fléchées n’exposent pas d’objet [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments) : `arguments.length`, `arguments[0]`, `arguments[1]`, et autres ne font donc pas référence aux arguments passés à la fonction fléchés. Dans ce cas `arguments` est simplement une référence à la variable de même nom si elle est présente dans la portée englobante : -
    var arguments = [1, 2, 3];
    -var arr = () => arguments[0];
    +```js
    +var arguments = [1, 2, 3];
    +var arr = () => arguments[0];
     
     arr(); // 1
     
     function toto () {
    -  var f = (i) => arguments[0] + i;
    +  var f = (i) => arguments[0] + i;
       // lien implicite avec arguments de toto
       return f(2);
     }
     
    -toto(3); // 5
    +toto(3); // 5 +``` -

    Les fonctions fléchées n’ont donc pas leur propre objet arguments, mais dans la plupart des cas, les paramètres du reste représentent une bonne alternative :

    +Les fonctions fléchées n’ont donc pas leur propre objet `arguments`, mais dans la plupart des cas, [les paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/paramètres_du_reste) représentent une bonne alternative : -
    function toto () {
    -  var f = (...args) => args[0];
    +```js
    +function toto () {
    +  var f = (...args) => args[0];
       return f(2);
     }
     
    -toto(1); // 2
    +toto(1); // 2 +``` -

    Les fonctions fléchées comme méthodes

    +#### Les fonctions fléchées comme méthodes -

    Comme indiqué précédemment, les fonctions fléchées sont mieux indiquées pour les fonctions qui ne sont pas des méthodes. Prenons un exemple pour illustrer ce point

    +Comme indiqué précédemment, les fonctions fléchées sont mieux indiquées pour les fonctions qui ne sont pas des méthodes. Prenons un exemple pour illustrer ce point -
    'use strict';
    +```js
    +'use strict';
     var objet = {
       i: 10,
    -  b: () => console.log(this.i, this),
    +  b: () => console.log(this.i, this),
       c: function() {
         console.log(this.i, this);
       }
    @@ -217,95 +226,106 @@ objet.b();
     // affiche undefined, Window (ou l'objet global de l'environnement)
     
     objet.c();
    -// affiche 10, Object {...}
    +// affiche 10, Object {...} +``` -

    Utiliser prototype

    +#### Utiliser `prototype` -

    Les fonctions fléchées ne possèdent pas de prototype :

    +Les fonctions fléchées ne possèdent pas de prototype : -
    var Toto = () => {};
    +```js
    +var Toto = () => {};
     console.log(Toto.prototype);
    -
    +``` -

    Utiliser le mot-clé yield

    +#### Utiliser le mot-clé `yield` -

    Le mot-clé yield ne peut pas être utilisé dans le corps d’une fonction fléchée (sauf si cela intervient dans une autre fonction, imbriquée dans la fonction fléchée). De fait, les fonctions fléchéees ne peuvent donc pas être utilisées comme générateurs.

    +Le mot-clé [`yield`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/yield) ne peut pas être utilisé dans le corps d’une fonction fléchée (sauf si cela intervient dans une autre fonction, imbriquée dans la fonction fléchée). De fait, les fonctions fléchéees ne peuvent donc pas être utilisées comme générateurs. -

    Utiliser le mot-clé new

    +#### Utiliser le mot-clé `new` -

    Les fonctions fléchées ne peuvent pas être utilisées comme constructeurs et lèveront une exception si elles sont utilisées avec le mot-clé new.

    +Les fonctions fléchées ne peuvent pas être utilisées comme constructeurs et lèveront une exception si elles sont utilisées avec le mot-clé `new`. -
    var Toto = () => {};
    +```js
    +var Toto = () => {};
     var toto = new Toto();
    -// TypeError: Toto is not a constructor
    +// TypeError: Toto is not a constructor +``` -

    Gestion du corps de la fonction

    +## Gestion du corps de la fonction -

    Les fonctions fléchées peuvent avoir une syntaxe concise ou utiliser un bloc d’instructions classique. Cette dernière syntaxe n’a pas de valeur de retour implicite et il faut donc employer l’instruction return.

    +Les fonctions fléchées peuvent avoir une syntaxe concise ou utiliser un bloc d’instructions classique. Cette dernière syntaxe n’a pas de valeur de retour implicite et il faut donc employer l’instruction `return`. -
    // méthode concise, retour implicite
    -var fonction = x => x * x;
    +```js
    +// méthode concise, retour implicite
    +var fonction = x => x * x;
     
     // bloc classique, retour explicite
    -var fonction = (x, y) => { return x + y; }
    -
    +var fonction = (x, y) => { return x + y; } +``` -

    Renvoyer des littéraux objets

    +## Renvoyer des littéraux objets -

    Attention à bien utiliser les parenthèses lorsqu’on souhaite renvoyer des objets avec des littéraux :

    +Attention à bien utiliser les parenthèses lorsqu’on souhaite renvoyer des objets avec des littéraux : -
    // fonction() renverra undefined !
    -var fonction = () => { toto: 1 };
    +```js
    +// fonction() renverra undefined !
    +var fonction = () => { toto: 1 };
     
     // SyntaxError
    -var fonction2 = () =>  { toto: function () {} };
    -
    +var fonction2 = () => { toto: function () {} }; +``` -

    En effet, ici, l’analyse de l’expression trouve des blocs d’instructions au lieu de littéraux objets. Pour éviter cet effet indésirable, on pourra encadrer le littéral objet :

    +En effet, ici, l’analyse de l’expression trouve des blocs d’instructions au lieu de littéraux objets. Pour éviter cet effet indésirable, on pourra encadrer le littéral objet : -
    var fonction = () => ({ toto: 1 });
    +```js +var fonction = () => ({ toto: 1 }); +``` -

    Sauts de ligne

    +## Sauts de ligne -

    Il ne peut pas y avoir de saut de ligne entre les paramètres et la flèche d’une fonction fléchée.

    +Il ne peut pas y avoir de saut de ligne entre les paramètres et la flèche d’une fonction fléchée. -
    var func = ()
    -            => 1; // SyntaxError: expected expression,
    -                  //              got '=>'
    -
    +```js +var func = () + => 1; // SyntaxError: expected expression, + // got '=>' +``` -

    Ordre syntaxique

    +## Ordre syntaxique -

    La flèche utilisée pour une fonction fléchée n’est pas un opérateur. Les fonctions fléchées ont des règles spécifiques quant à leur place dans la syntaxe et interagissent différemment de la précédence des opérateurs par rapport à une fonction classique :

    +La flèche utilisée pour une fonction fléchée n’est pas un opérateur. Les fonctions fléchées ont des règles spécifiques quant à leur place dans la syntaxe et interagissent différemment de la précédence des opérateurs par rapport à une fonction classique : -
    let fonctionRappel;
    +```js
    +let fonctionRappel;
     
     fonctionRappel = fonctionRappel || function () {};
     // OK
     
    -fonctionRappel = fonctionRappel || () => {};
    +fonctionRappel = fonctionRappel || () => {};
     // SyntaxError: invalid arrow-function arguments
     
    -fonctionRappel = fonctionRappel || (() => {});
    +fonctionRappel = fonctionRappel || (() => {});
     // OK
    -
    +``` -

    Exemples

    +## Exemples -
    // Une fonction fléchée vide renvoie undefined
    -let vide = () => {};
    +```js
    +// Une fonction fléchée vide renvoie undefined
    +let vide = () => {};
     
    -(() => "tototruc")()
    +(() => "tototruc")()
     // exemple d'une fonction immédiatement
     // invoquée (IIFE en anglais) qui renvoie
     // "tototruc"
     
    -var simple = a => a > 15 ? 15 : a;
    +var simple = a => a > 15 ? 15 : a;
     simple(16); // 15
     simple(10); // 10
     
    -var complexe = (a, b) => {
    -    if (a > b) {
    +var complexe = (a, b) => {
    +    if (a > b) {
             return a;
         } else {
             return b;
    @@ -314,61 +334,44 @@ var complexe = (a, b) => {
     
     var arr = [5, 6, 13, 0, 1, 18, 23];
     
    -var sum = arr.reduce((a, b) => a + b);
    +var sum = arr.reduce((a, b) => a + b);
     // 66
     
    -var even = arr.filter(v => v % 2 == 0);
    +var even = arr.filter(v => v % 2 == 0);
     // [6, 0, 18]
     
    -var double = arr.map(v => v * 2);
    +var double = arr.map(v => v * 2);
     // [10, 12, 26, 0, 2, 36, 46]
     
     // On peut aussi construire des chaînes
     // de promesses plus concises
    -promise.then(a => {
    +promise.then(a => {
         // ...
    -}).then(b => {
    +}).then(b => {
         // ...
     });
     
     // Cela permet de visualiser les
     // fonctions sans paramètres
    -setTimeout( () => {
    +setTimeout( () => {
         console.log("Et voilà");
    -    setTimeout( () => {
    +    setTimeout( () => {
             console.log("ensuite…");
         }, 1);
     }, 1);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.arrow_functions")}}

    - -

    Voir aussi

    - -
      -
    • L’article sur les fonctions fléchées présent sur https ://tech.mozfr.org (l’article original en anglais est disponible ici).
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.arrow_functions")}} + +## Voir aussi + +- L’article sur les fonctions fléchées présent sur [https ://tech.mozfr.org](https://tech.mozfr.org) (l’article original en anglais est disponible [ici](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/)). diff --git a/files/fr/web/javascript/reference/functions/default_parameters/index.md b/files/fr/web/javascript/reference/functions/default_parameters/index.md index abcdcae567..92a5187cf6 100644 --- a/files/fr/web/javascript/reference/functions/default_parameters/index.md +++ b/files/fr/web/javascript/reference/functions/default_parameters/index.md @@ -9,28 +9,26 @@ tags: translation_of: Web/JavaScript/Reference/Functions/Default_parameters original_slug: Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    Cette syntaxe permet d'initialiser des paramètres lors de l'appel de la fonction si aucune valeur n'est passée ou si c'est la valeur {{jsxref("undefined")}} qui est passée.

    +Cette syntaxe permet d'initialiser des paramètres lors de l'appel de la fonction si aucune valeur n'est passée ou si c'est la valeur {{jsxref("undefined")}} qui est passée. +{{EmbedInteractiveExample("pages/js/functions-default.html")}} +## Syntaxe -
    {{EmbedInteractiveExample("pages/js/functions-default.html")}}
    + function [nom]([param1[ = valeurParDéfaut1 ][, ..., paramN[ = valeurParDéfautN ]]]) { + instructions + } -

    Syntaxe

    +## Description -
    function [nom]([param1[ = valeurParDéfaut1 ][, ..., paramN[ = valeurParDéfautN ]]]) {
    -   instructions
    -}
    -
    - -

    Description

    - -

    En JavaScript, par défaut, la valeur des paramètres d'une fonction sera undefined. Malgré tout, il peut être assez utile de pouvoir définir d'autres valeurs par défaut.

    +En JavaScript, par défaut, la valeur des paramètres d'une fonction sera `undefined`. Malgré tout, il peut être assez utile de pouvoir définir d'autres valeurs par défaut. -

    Auparavant, pour définir une valeur par défaut pour un paramètre, il fallait tester s'il valait undefined et lui affecter une valeur choisie le cas échéant. Dans l'exemple qui suit, le paramètre b n'a pas de valeur fournie lors de l'appel, aussi si on avait utilisé undefined dans la multiplication, la valeur retournée aurait été NaN. Aussi, dans la deuxième ligne du code, on prévoit ce cas :

    +Auparavant, pour définir une valeur par défaut pour un paramètre, il fallait tester s'il valait `undefined` et lui affecter une valeur choisie le cas échéant. Dans l'exemple qui suit, le paramètre `b` n'a pas de valeur fournie lors de l'appel, aussi si on avait utilisé `undefined` dans la multiplication, la valeur retournée aurait été `NaN`. Aussi, dans la deuxième ligne du code, on prévoit ce cas : -
    function multiplier(a, b) {
    +```js
    +function multiplier(a, b) {
       var b = (typeof b !== 'undefined') ? b : 1;
     
       return a * b;
    @@ -39,26 +37,29 @@ original_slug: Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_argume
     multiplier(5, 2); // 10
     multiplier(5, 1); // 5
     multiplier(5);    // 5
    -
    +``` -

    Grâce aux paramètres par défaut qui existent depuis ECMAScript 2015 (ES6), on peut se passer de cette vérification et alléger le code de la fonction :

    +Grâce aux paramètres par défaut qui existent depuis ECMAScript 2015 (ES6), on peut se passer de cette vérification et alléger le code de la fonction : -
    function multiplier(a, b = 1) {
    +```js
    +function multiplier(a, b = 1) {
       return a * b;
     }
     
     multiplier(5, 2); // 10
     multiplier(5, 1); // 5
     multiplier(5, undefined); // 5
    -multiplier(5); // 5
    +multiplier(5); // 5 +``` -

    Exemples

    +## Exemples -

    Passer undefined en paramètre

    +### Passer `undefined` en paramètre -

    Dans l'exemple qui suit, le deuxième appel à la fonction fait explicitement appel à undefined. La valeur par défaut sera utilisée, y compris dans ce cas (en revanche, ce ne serait pas vrai pour null ou les autres valeurs équivalentes à false dans un contexte booléen).

    +Dans l'exemple qui suit, le deuxième appel à la fonction fait explicitement appel à `undefined`. La valeur par défaut sera utilisée, y compris dans ce cas (en revanche, ce ne serait pas vrai pour `null` ou les autres valeurs équivalentes à `false` dans un contexte booléen). -
    function test(num = 1) {
    +```js
    +function test(num = 1) {
       console.log(typeof num);
     }
     
    @@ -66,38 +67,40 @@ test();           // number (num vaut 1)
     test(undefined);  // number (num vaut 1 également)
     test("");         // string (num vaut "")
     test(null);       // object (num vaut null)
    -
    +``` -

    Évaluation à l'appel

    +### Évaluation à l'appel -

    L'argument par défaut est évalué à l'instant de l'appel. Ainsi, à la différence d'autres langages comme Python, un nouvel objet est créé à chaque appel de la fonction.

    +L'argument par défaut est évalué à l'instant de l'appel. Ainsi, à la différence d'autres langages comme Python, un nouvel objet est créé à chaque appel de la fonction. -
    function append(valeur, tableau = []) {
    +```js
    +function append(valeur, tableau = []) {
       tableau.push(valeur);
       return tableau;
     }
     
     append(1); //[1]
     append(2); //[2], et non [1, 2]
    +```
     
    -
    +Cela est également valable pour les fonctions et les variables -

    Cela est également valable pour les fonctions et les variables

    - -
    function appelQqc(truc = qqc()) { return truc }
    +```js
    +function appelQqc(truc = qqc()) { return truc }
     
     appelQqc(); //lève une ReferenceError
     
    -let qqc = () => "machin"
    +let qqc = () => "machin"
     
     appelQqc(); // "machin"
    -
    +``` -

    Les paramètres par défaut sont disponibles à la suite

    +### Les paramètres par défaut sont disponibles à la suite -

    Les paramètres déjà rencontrés dans la définition peuvent être utilisés comme paramètres par défaut dans la suite de la définition :

    +Les paramètres déjà rencontrés dans la définition peuvent être utilisés comme paramètres par défaut dans la suite de la définition : -
    function salutation(nom, salut, message = salut + ' ' + nom){
    +```js
    +function salutation(nom, salut, message = salut + ' ' + nom){
         return [nom, salut, message];
     }
     
    @@ -105,11 +108,13 @@ salutation('David', 'Coucou');
     // ["David", "Coucou", "Coucou David"]
     
     salutation('David', 'Coucou', 'Bon anniversaire !');
    -// ["David", "Coucou", "Bon anniversaire !"]
    +// ["David", "Coucou", "Bon anniversaire !"] +``` -

    On peut utiliser cette fonctionnalité afin de gérer beaucoup de cas aux limites :

    +On peut utiliser cette fonctionnalité afin de gérer beaucoup de cas aux limites : -
    function go() {
    +```js
    +function go() {
       return ":P"
     }
     
    @@ -144,68 +149,55 @@ avecDéfaut.call({value:"=^_^="});
     
     sansDéfaut.call({value:"=^_^="});
     // [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
    -
    +``` -

    Les fonctions définies dans le corps d'une fonction

    +### Les fonctions définies dans le corps d'une fonction -

    À partir de Gecko 33 {{geckoRelease(33)}}. Les fonctions déclarées dans le corps de la fonction ne peuvent pas servir comme valeurs par défaut, cela lèvera une exception {{jsxref("ReferenceError")}} (plus précisément une {{jsxref("TypeError")}} avec SpiderMonkey, voir le {{bug(1022967)}}). Les paramètres par défaut sont exécutés en premier, les déclarations de fonctions présentes dans le corps de la fonction sont évaluées ensuite.

    +À partir de Gecko 33 {{geckoRelease(33)}}. Les fonctions déclarées dans le corps de la fonction ne peuvent pas servir comme valeurs par défaut, cela lèvera une exception {{jsxref("ReferenceError")}} (plus précisément une {{jsxref("TypeError")}} avec SpiderMonkey, voir le {{bug(1022967)}}). Les paramètres par défaut sont exécutés en premier, les déclarations de fonctions présentes dans le corps de la fonction sont évaluées ensuite. -
    // Ne fonctionnera pas, entraîne une ReferenceError.
    +```js
    +// Ne fonctionnera pas, entraîne une ReferenceError.
     function f(a = go()) {
       function go(){return ":P"}
     }
    -
    +``` -

    Utilisation de paramètres sans valeur par défaut après les paramètres par défaut

    +### Utilisation de paramètres sans valeur par défaut après les paramètres par défaut -

    Avant Gecko 26 ({{geckoRelease(26)}}, le code suivant aurait entraîné une exception {{jsxref("SyntaxError")}}. Cela a été corrigé avec le bug {{bug(777060)}}. Les paramètres sont toujours ordonnés de gauche à droite et les valeurs par défaut sont surchargées s'ils viennent avant les autres paramètres :

    +Avant Gecko 26 ({{geckoRelease(26)}}, le code suivant aurait entraîné une exception {{jsxref("SyntaxError")}}. Cela a été corrigé avec le bug {{bug(777060)}}. Les paramètres sont toujours ordonnés de gauche à droite et les valeurs par défaut sont surchargées s'ils viennent avant les autres paramètres : -
    function f(x=1, y) {
    +```js
    +function f(x=1, y) {
       return [x, y];
     }
     
     f();  // [1, undefined]
     f(2); // [2, undefined]
    -
    +``` -

    Paramètre par défaut et décomposition des paramètres

    +### Paramètre par défaut et décomposition des paramètres -

    Il est possible d'utiliser les valeurs par défaut avec la syntaxe de décomposition :

    +Il est possible d'utiliser les valeurs par défaut avec [la syntaxe de décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Affecter_par_décomposition) : -
    function f([x, y] = [1, 2], {z: z} = {z: 3}) {
    +```js
    +function f([x, y] = [1, 2], {z: z} = {z: 3}) {
       return x + y + z;
     }
     
    -f(); // 6
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.default_parameters")}}

    - -

    Voir aussi

    - - +f(); // 6 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.default_parameters")}} + +## Voir aussi + +- [La proposition originale sur ecmascript.org](https://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values) diff --git a/files/fr/web/javascript/reference/functions/get/index.md b/files/fr/web/javascript/reference/functions/get/index.md index b999d2d36a..76fa285ff7 100644 --- a/files/fr/web/javascript/reference/functions/get/index.md +++ b/files/fr/web/javascript/reference/functions/get/index.md @@ -10,49 +10,46 @@ tags: translation_of: Web/JavaScript/Reference/Functions/get original_slug: Web/JavaScript/Reference/Fonctions/get --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    La syntaxe get permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on accédera à la propriété.

    +La syntaxe **`get`** permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on accédera à la propriété. -
    {{EmbedInteractiveExample("pages/js/functions-getter.html")}}
    +{{EmbedInteractiveExample("pages/js/functions-getter.html")}} -

    Syntaxe

    +## Syntaxe -
    {get prop() { ... } }
    -{get [expression]() { ... } }
    + {get prop() { ... } } + {get [expression]() { ... } } -

    Paramètres

    +### Paramètres -
    -
    prop
    -
    Le nom de la propriété à lier à la fonction.
    -
    expression
    -
    Avec ECMAScript 2015, il est également possible d'utiliser des expressions renvoyant un nom de propriété calculé pour le lier à une fonction.
    -
    +- `prop` + - : Le nom de la propriété à lier à la fonction. +- `expression` + - : Avec ECMAScript 2015, il est également possible d'utiliser des expressions renvoyant un nom de propriété calculé pour le lier à une fonction. -

    Description

    +## Description -

    Il est parfois utile de créer une propriété qui renvoie une valeur dynamique calculée, ou de ne pas avoir recours à l'appel explicite d'une méthode pour renvoyer le statut d'une variable interne. En JavaScript, il est possible de faire cela en utilisant un accesseur. Il n'est pas possible d'avoir simultanément un accesseur assimilé à une propriété et d'avoir cette propriété initialisée à une valeur, mais il est possible d'utiliser un accesseur et un {{jsxref("Fonctions/set","mutateur","",1)}} pour créer une sorte de pseudo-propriété.

    +Il est parfois utile de créer une propriété qui renvoie une valeur dynamique calculée, ou de ne pas avoir recours à l'appel explicite d'une méthode pour renvoyer le statut d'une variable interne. En JavaScript, il est possible de faire cela en utilisant un _accesseur_. Il n'est pas possible d'avoir simultanément un _accesseur_ assimilé à une propriété et d'avoir cette propriété initialisée à une valeur, mais il est possible d'utiliser un _accesseur_ et un {{jsxref("Fonctions/set","mutateur","",1)}} pour créer une sorte de pseudo-propriété. -

    On notera que l'opérateur get :

    +On notera que l'opérateur `get` : - +- peut être identifié par un nombre ou une chaîne de caractères +- ne doit pas posséder de paramètre (lire la page [Changement ES5 : les fonctions _d'accession_ et _de mutation_ littérales doivent avoir maintenant zéro ou un paramètre.](https://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/) _(en anglais)_ pour plus d'informations) +- ne doit pas apparaître dans un littéral objet avec un autre `get` ou une autre propriété avec le même identifiant (les codes suivants : `{ get x() { }, get x() { } }` et `{ x: ..., get x() { } }` sont interdits). -

    Un accesseur peut être supprimé grâce à l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}}.

    +Un _accesseur_ peut être supprimé grâce à l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}}. -

    Exemples

    +## Exemples -

    Définir un accesseur avec l'opérateur get

    +### Définir un accesseur avec l'opérateur `get` -

    Ce code va créer une pseudo-propriété dernier de l'objet o qui va retourner la dernière entrée du tableau o.journal :

    +Ce code va créer une pseudo-propriété `dernier` de l'objet `o` qui va retourner la dernière entrée du tableau `o.journal `: -
    var o = {
    +```js
    +var o = {
       get dernier() {
    -    if (this.journal.length > 0) {
    +    if (this.journal.length > 0) {
           return this.journal[this.journal.length - 1];
         }
         else {
    @@ -62,65 +59,71 @@ original_slug: Web/JavaScript/Reference/Fonctions/get
       journal: ["toto","actu"]
     }
     console.log(o.dernier); // "actu"
    -
    +``` -

    Notez qu'essayer d'assigner à dernier une valeur ne le modifiera pas.

    +Notez qu'essayer d'assigner à `dernier` une valeur ne le modifiera pas. -

    Supprimer un accesseur avec l'opérateur delete

    +### Supprimer un accesseur avec l'opérateur `delete` -
    delete o.dernier;
    -
    +```js +delete o.dernier; +``` -

    Définir un accesseur sur des objets existants grâce à defineProperty

    +### Définir un accesseur sur des objets existants grâce à `defineProperty` -

    Afin d'ajouter un accesseur à un objet qui existe déjà, on peut utiliser la méthode {{jsxref("Object.defineProperty()")}}.

    +Afin d'ajouter un accesseur à un objet qui existe déjà, on peut utiliser la méthode {{jsxref("Object.defineProperty()")}}. -
    var o = { a:0 }
    +```js
    +var o = { a:0 }
     
     Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
     
    -console.log(o.b) // Utilise l'accesseur qui génère a + 1 (qui correspond à 1)
    +console.log(o.b) // Utilise l'accesseur qui génère a + 1 (qui correspond à 1) +``` -

    Utiliser un nom de propriété calculé

    +### Utiliser un nom de propriété calculé -
    var expr = "toto";
    +```js
    +var expr = "toto";
     
     var obj = {
       get [expr]() { return "truc"; }
     };
     
    -console.log(obj.toto); // "truc"
    +console.log(obj.toto); // "truc" +``` -

    Accesseurs mémoïsés

    +### Accesseurs mémoïsés -

    Les accesseurs permettent de définir des propriétés sur un objet mais ils ne calculent pas la valeur de la propriété tant qu'il n'y a pas d'accès envers celle-ci. Un accesseur délègue le coût de calcul jusqu'au moment où la valeur est vraiment nécessaire (si cette dernière n'est jamais utilisée, cela ne coûte alors rien).

    +Les accesseurs permettent de définir des propriétés sur un objet mais ils ne calculent pas la valeur de la propriété tant qu'il n'y a pas d'accès envers celle-ci. Un accesseur délègue le coût de calcul jusqu'au moment où la valeur est vraiment nécessaire (si cette dernière n'est jamais utilisée, cela ne coûte alors rien). -

    Une technique supplémentaire pour optimiser ou retarder le calcul d'une valeur d'une propriété et de la mettre en cache pour les accès ultérieurs consiste à utiliser des accesseurs intelligents « mémoïsés ». La valeur est calculée lors du premier appel de l'accesseur puis est mise en cache afin que les appels ultérieurs renvoient la valeur en cache sans la recalculer. Cette méthode peut s'avérer utile dans plusieurs situations :

    +Une technique supplémentaire pour optimiser ou retarder le calcul d'une valeur d'une propriété et de la mettre en cache pour les accès ultérieurs consiste à utiliser **des accesseurs intelligents « [mémoïsés](https://fr.wikipedia.org/wiki/M%C3%A9mo%C3%AFsation) »**. La valeur est calculée lors du premier appel de l'accesseur puis est mise en cache afin que les appels ultérieurs renvoient la valeur en cache sans la recalculer. Cette méthode peut s'avérer utile dans plusieurs situations : -
      -
    • Si le calcul de la valeur est coûteux (il consomme beaucoup de RAM ou de temps CPU, il crée de nouveaux threads, il utilise des fichiers distants, etc.).
    • -
    • Si la valeur est utilisée plus tard ou, dans certains cas, n'est pas utilisée du tout.
    • -
    • Si elle est utilisée plusieurs fois, il n'est pas nécessaire de la recalculer car sa valeur ne changera pas.
    • -
    +- Si le calcul de la valeur est coûteux (il consomme beaucoup de RAM ou de temps CPU, il crée de nouveaux _threads_, il utilise des fichiers distants, etc.). +- Si la valeur est utilisée plus tard ou, dans certains cas, n'est pas utilisée du tout. +- Si elle est utilisée plusieurs fois, il n'est pas nécessaire de la recalculer car sa valeur ne changera pas. -

    Cela signifie qu'un tel accesseur ne doit pas être utilisé si la valeur peut être modifiée au cours du temps. En effet, avec la définition qu'on vient de lui donner, un tel accesseur ne recalculera pas la valeur.

    +Cela signifie qu'un tel accesseur ne doit pas être utilisé si la valeur peut être modifiée au cours du temps. En effet, avec la définition qu'on vient de lui donner, un tel accesseur ne recalculera pas la valeur. -

    Dans l'exemple suivant, l'objet possède un accesseur en propriété propre. Lors de l'accès à la propriété, la propriété est retirée de l'objet puis réajoutée mais sous forme d'une propriété de donnée (et non d'un accesseur). Enfin, la valeur est renvoyée :

    +Dans l'exemple suivant, l'objet possède un accesseur en propriété propre. Lors de l'accès à la propriété, la propriété est retirée de l'objet puis réajoutée mais sous forme d'une propriété de donnée (et non d'un accesseur). Enfin, la valeur est renvoyée : -
    get notifier() {
    +```js
    +get notifier() {
       delete this.notifier;
       return this.notifier = document.getElementById("bookmarked-notification-anchor");
    -},
    +}, +``` -

    Cet exemple est utilisé dans le code de Firefox, notamment dans le code du module XPCOMUtils.jsm qui définit la fonction defineLazyGetter().

    +Cet exemple est utilisé dans le code de Firefox, notamment dans le code du module XPCOMUtils.jsm qui définit la fonction [`defineLazyGetter()`](). -

    get ou defineProperty ?

    +### `get` ou `defineProperty` ? -

    Bien que le mot-clé get et la méthode {{jsxref("Object.defineProperty()")}} aient des résultats similaires, il subsiste une différence lorsqu'on utilise les classes.

    +Bien que le mot-clé `get` et la méthode {{jsxref("Object.defineProperty()")}} aient des résultats similaires, il subsiste une différence lorsqu'on utilise [les classes](/fr/docs/Web/JavaScript/Reference/Instructions/class). -

    Lorsqu'on utilise get, la propriété sera définie sur le prototype de l'objet. Avec {{jsxref("Object.defineProperty()")}}, la propriété sera définie sur l'instance à laquelle la méthode s'applique.

    +Lorsqu'on utilise `get`, la propriété sera définie sur le prototype de l'objet. Avec {{jsxref("Object.defineProperty()")}}, la propriété sera définie sur l'instance à laquelle la méthode s'applique. -
    class Exemple {
    +```js
    +class Exemple {
       get coucou() {
         return 'monde';
       }
    @@ -132,46 +135,26 @@ console.log(obj.coucou);
     console.log(Object.getOwnPropertyDescriptor(obj, 'coucou'));
     // undefined
     console.log(Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'coucou'));
    -// { configurable: true, enumerable: false, get: function get coucou() { return 'monde'; }, set: undefined }
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}}{{Spec2('ES5.1')}}Définition initiale
    {{SpecName('ES2015', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES2015')}}Ajout des noms de propriétés calculés.
    {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.get")}}

    - -

    Voir aussi

    - -
      -
    • set
    • -
    • {{jsxref("Opérateurs/L_opérateur_delete", "delete")}}
    • -
    • {{jsxref("Object.defineProperty()")}}
    • -
    • {{jsxref("Object.defineGetter", "__defineGetter__")}}
    • -
    • {{jsxref("Object.defineSetter", "__defineSetter__")}}
    • -
    • Définir des accesseurs et mutateurs, un chapitre du Guide JavaScript
    • -
    +// { configurable: true, enumerable: false, get: function get coucou() { return 'monde'; }, set: undefined } +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------------- | +| {{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}} | {{Spec2('ES5.1')}} | Définition initiale | +| {{SpecName('ES2015', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ES2015')}} | Ajout des noms de propriétés calculés. | +| {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.get")}} + +## Voir aussi + +- [`set`](/fr/docs/Web/JavaScript/Reference/Fonctions/set) +- {{jsxref("Opérateurs/L_opérateur_delete", "delete")}} +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.defineGetter", "__defineGetter__")}} +- {{jsxref("Object.defineSetter", "__defineSetter__")}} +- [Définir des accesseurs et mutateurs](/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets#D.C3.A9finir_des_getters_et_setters), un chapitre du Guide JavaScript diff --git a/files/fr/web/javascript/reference/functions/index.md b/files/fr/web/javascript/reference/functions/index.md index cfdd7e95b1..90e9f5aa72 100644 --- a/files/fr/web/javascript/reference/functions/index.md +++ b/files/fr/web/javascript/reference/functions/index.md @@ -8,23 +8,24 @@ tags: translation_of: Web/JavaScript/Reference/Functions original_slug: Web/JavaScript/Reference/Fonctions --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    De manière générale, une fonction est un « sous-programme » qui peut être appelé par du code extérieur à la fonction (ou du code interne dans le cas d'une récursion). Comme le programme, une fonction est composée d'une suite d'instructions qui forment le corps de la fonction. Il est parfois possible de passer des valeurs à une fonction et une fonction peut éventuellement retourner (ou renvoyer) une valeur.

    +De manière générale, une fonction est un « sous-programme » qui peut être appelé par du code extérieur à la fonction (ou du code interne dans le cas d'une récursion). Comme le programme, une fonction est composée d'une suite d'instructions qui forment le _corps de la fonction_. Il est parfois possible de _passer_ des valeurs à une fonction et une fonction peut éventuellement _retourner_ (ou _renvoyer_) une valeur. -

    En JavaScript, les fonctions sont des objets de première classe. Cela signifie qu'elles peuvent être manipulées et échangées, qu'elles peuvent avoir des propriétés et des méthodes, comme tous les autres objets JavaScript. Les fonctions sont des objets {{jsxref("Objets_globaux/Function","Function")}}.

    +En JavaScript, les fonctions sont des objets de première classe. Cela signifie qu'elles peuvent être manipulées et échangées, qu'elles peuvent avoir des propriétés et des méthodes, comme tous les autres objets JavaScript. Les fonctions sont des objets {{jsxref("Objets_globaux/Function","Function")}}. -

    Pour plus d'informations et d'exemples, on pourra également consulter le chapitre du Guide JavaScript sur les fonctions.

    +Pour plus d'informations et d'exemples, on pourra également consulter le [chapitre du Guide JavaScript sur les fonctions.](/fr/docs/Web/JavaScript/Guide/Fonctions) -

    Description

    +## Description -

    Toute fonction JavaScript est en fait un objet Function. Voir la page {{jsxref("Objets_globaux/Function","Function")}} pour des informations sur les propriétés et les méthodes de ces objets.

    +Toute fonction JavaScript est en fait un objet `Function`. Voir la page {{jsxref("Objets_globaux/Function","Function")}} pour des informations sur les propriétés et les méthodes de ces objets. -

    Afin de renvoyer une valeur, la fonction doit comporter une instruction {{jsxref("Instructions/return","return")}} qui définit la valeur à renvoyer (sauf dans le cas d'un constructeur qui a été appelé avec le mot-clé {{jsxref("Opérateurs/L_opérateur_new")}}). Une fonction qui ne renvoie pas de valeur retourne {{jsxref("undefined")}}.

    +Afin de renvoyer une valeur, la fonction doit comporter une instruction {{jsxref("Instructions/return","return")}} qui définit la valeur à renvoyer (sauf dans le cas d'un [constructeur](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/constructor) qui a été appelé avec le mot-clé {{jsxref("Opérateurs/L_opérateur_new")}}). Une fonction qui ne renvoie pas de valeur retourne {{jsxref("undefined")}}. -

    Les paramètres donnés lors de l'appel d'une fonction sont appelés les arguments de la fonction. Les arguments sont passés par valeur (by value en anglais). Si la fonction modifie la valeur d'un argument, ce changement ne se répercute pas en dehors de la fonction. Il existe cependant les références d'objets qui sont aussi des valeurs mais qui possèdent la particularité suivante : si la fonction modifie les propriété de l'objet de la référence, ce(s) changement(s) seront perceptibles en dehors de la fonction. Prenons l'exemple suivant :

    +Les paramètres donnés lors de l'appel d'une fonction sont appelés les _arguments_ de la fonction. Les arguments sont passés _par valeur_ (_by value_ en anglais). Si la fonction modifie la valeur d'un argument, ce changement ne se répercute pas en dehors de la fonction. Il existe cependant les _références_ d'objets qui sont aussi des valeurs mais qui possèdent la particularité suivante : si la fonction modifie les propriété de l'objet de la référence, ce(s) changement(s) seront perceptibles en dehors de la fonction. Prenons l'exemple suivant : -
     /* Déclaration de la fonction 'maFonction' */
    +```js
    + /* Déclaration de la fonction 'maFonction' */
      function maFonction(monObjet)
      {
        monObjet.marque = "Toyota";
    @@ -52,268 +53,249 @@ original_slug: Web/JavaScript/Reference/Fonctions
       * de l'objet. C'est ce que la fonction a changé.
       */
      console.log(mavoiture.marque);
    -
    +``` -

    Le mot-clé this ne fait pas référence à la fonction en cours d'exécution. Il faut donc faire référence aux objets Function par leurs noms, et ce même au sein du corps de la fonction.

    +Le mot-clé [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this) ne fait pas référence à la fonction en cours d'exécution. Il faut donc faire référence aux objets `Function` par leurs noms, et ce même au sein du corps de la fonction. -

    Définir des fonctions

    +## Définir des fonctions -

    Il y a plusieurs façons de définir des fonctions

    +Il y a plusieurs façons de définir des fonctions -

    Déclarer une fonction (l'instruction function)

    +### Déclarer une fonction (l'instruction `function`) -

    Il existe une syntaxe spécifique pour la déclaration des fonctions (vous pouvez consulter la page de l'instruction {{jsxref("Instructions/function","function")}} pour plus de détails) :

    +Il existe une syntaxe spécifique pour la déclaration des fonctions (vous pouvez consulter la page de l'instruction {{jsxref("Instructions/function","function")}} pour plus de détails) : -
    function nom([param[, param[, ... param]]]) {
    -   instructions
    -}
    -
    + function nom([param[, param[, ... param]]]) { + instructions + } -
    -
    nom
    -
    Le nom de la fonction.
    -
    param
    -
    Le nom d'un argument à passer à la fonction (une fonction pouvant avoir jusqu'à 255 arguments).
    -
    instructions
    -
    Les instructions qui forment le corps de la fonction.
    -
    +- `nom` + - : Le nom de la fonction. +- `param` + - : Le nom d'un argument à passer à la fonction (une fonction pouvant avoir jusqu'à 255 arguments). +- `instructions` + - : Les instructions qui forment le corps de la fonction. -

    Utiliser une expression de fonction (l'expression function)

    +### Utiliser une expression de fonction (l'expression `function`) -

    L'expression d'une fonction se fait d'une façon similaire à la déclaration (veuillez consulter la page de l'expression {{jsxref("Opérateurs/L_opérateur_function","function")}} pour plus d'informations) :

    +L'expression d'une fonction se fait d'une façon similaire à la déclaration (veuillez consulter la page de l'expression {{jsxref("Opérateurs/L_opérateur_function","function")}} pour plus d'informations) : -
    function [nom]([param] [, param] [..., param]) {
    -   instructions
    -}
    -
    + function [nom]([param] [, param] [..., param]) { + instructions + } -
    -
    nom
    -
    Le nom de la fonction. Il est facultatif, auquel cas la fonction devient une fonction anonyme.
    -
    param
    -
    Le nom d'un argument à passer à la fonction.
    -
    instructions
    -
    Les instructions qui forment le corps de la fonction.
    -
    +- `nom` + - : Le nom de la fonction. Il est facultatif, auquel cas la fonction devient une fonction anonyme. +- `param` + - : Le nom d'un argument à passer à la fonction. +- `instructions` + - : Les instructions qui forment le corps de la fonction. -

    Voici un exemple d'expression de fonction anonyme (il n'y a pas de nom utilisé) :

    +Voici un exemple d'expression de fonction **anonyme** (il n'y a pas de nom utilisé) : -
    var maFonction = function() {
    +```js
    +var maFonction = function() {
       /* instructions */
    -}
    +} +``` -

    Il est également possible de fournir un nom lors de la définition afin de créer une expression de fonction nommée :

    +Il est également possible de fournir un nom lors de la définition afin de créer une expression de fonction **nommée** : -
    var maFonction = function fonctionNommée(){
    +```js
    +var maFonction = function fonctionNommée(){
       /* instructions */
     }
    -
    +``` -

    L'un des bénéfices d'utiliser une expression de fonction nommée est que son nom sera utilisé dans la pile d'appel lors qu'on aura une erreur. Avec le nom de la fonction, il sera plus facile de repérer l'origine de l'erreur.

    +L'un des bénéfices d'utiliser une expression de fonction nommée est que son nom sera utilisé dans la pile d'appel lors qu'on aura une erreur. Avec le nom de la fonction, il sera plus facile de repérer l'origine de l'erreur. -

    Comme on peut le voir, ces deux derniers exemples ne commencent pas avec le mot-clé function. Les instructions qui déclarent des fonctions mais qui ne commencent pas avec function sont des expressions de fonction.

    +Comme on peut le voir, ces deux derniers exemples ne commencent pas avec le mot-clé `function`. Les instructions qui déclarent des fonctions mais qui ne commencent pas avec `function` sont des expressions de fonction. -

    Lorsque les fonctions sont utilisées une unique fois, on peut utiliser une « expression de fonction immédiatement invoquée » (ou plus généralement appelée IIFE pour Immediately Invokable Function Expression en anglais).

    +Lorsque les fonctions sont utilisées une unique fois, on peut utiliser une [« expression de fonction immédiatement invoquée » (ou plus généralement appelée _IIFE_ pour _Immediately Invokable Function Expression_ en anglais)](/fr/docs/Glossaire/IIFE). -
    (function() {
    +```js
    +(function() {
         /* instruction */
    -})();
    +})(); +``` -

    Les IIFE sont des expressions de fonction appelées dès que la fonction est déclarée.

    +Les _IIFE_ sont des expressions de fonction appelées dès que la fonction est déclarée. -

    Utiliser une déclaration de fonction génératrice (l'instruction function*)

    +### Utiliser une déclaration de fonction génératrice (l'instruction `function*`) -

    Il existe une syntaxe spéciale pour déclarer des générateurs (voir la page sur l'instruction {{jsxref('Instructions/function*', 'function*')}} pour plus de détails) :

    +Il existe une syntaxe spéciale pour déclarer des générateurs (voir la page sur l'instruction {{jsxref('Instructions/function*', 'function*')}} pour plus de détails) : -
    function* nom([param[, param[, ... param]]]) {
    -   instructions
    -}
    + function* nom([param[, param[, ... param]]]) { +    instructions + } -
    -
    nom
    -
    Le nom de la fonction.
    -
    param
    -
    Le nom d'un argument à passer à la fonction.
    -
    instructions
    -
    Les instructions qui forment le corps de la fonction.
    -
    +- `nom` + - : Le nom de la fonction. +- `param` + - : Le nom d'un argument à passer à la fonction. +- `instructions` + - : Les instructions qui forment le corps de la fonction. -

    Utiliser une expression de générateur (l'expression function*)

    +### Utiliser une expression de générateur (l'expression `function*`) -

    Une expression de générateur est similaire à une déclaration de fonction génératrice et possède presque la même syntaxe (pour plus de détails, consulter la page sur l'expression {{jsxref('Opérateurs/function*', 'function*')}}) :

    +Une expression de générateur est similaire à une déclaration de fonction génératrice et possède presque la même syntaxe (pour plus de détails, consulter la page sur l'expression {{jsxref('Opérateurs/function*', 'function*')}}) : -
    function* [nom]([param[, param[, ... param]]]) {
    -   instructions
    -}
    + function* [nom]([param[, param[, ... param]]]) { +    instructions + } -
    -
    nom
    -
    Le nom de la fonction. Ce paramètre peut être omis, auquel cas la fonction sera une fonction anonyme.
    -
    param
    -
    Le nom d'un argument à passer à la fonction.
    -
    instructions
    -
    Les instructions qui composent le corps de la fonction.
    -
    +- `nom` + - : Le nom de la fonction. Ce paramètre peut être omis, auquel cas la fonction sera une fonction anonyme. +- `param` + - : Le nom d'un argument à passer à la fonction. +- `instructions` + - : Les instructions qui composent le corps de la fonction. -

    Utiliser une expression de fonction fléchée (=>)

    +### Utiliser une expression de fonction fléchée (=>) -

    Une expression de fonction fléchée possède une syntaxe plus courte et est liée, de façon lexicale, à sa valeur (voir la page sur les fonctions fléchées pour plus de détails) :

    +Une expression de fonction fléchée possède une syntaxe plus courte et est liée, de façon lexicale, à sa valeur (voir la page sur les [fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es) pour plus de détails) : -
    ([param[, param]]) => {
    -   instructions
    -}
    +    ([param[, param]]) => {
    +       instructions
    +    }
     
    -param => expression
    -
    + param => expression -
    -
    param
    -
    Le nom d'un argument. S'il n'y a pas d'arguments, cela doit être indiqué par ().  S'il y a un seul argument, les parenthèses ne sont pas obligatoires (par exemple :  toto => 1).
    -
    instructions ou expression
    -
    S'il y a plusieurs instructions, elles doivent être encadrées par des accolades. Une expression unique ne doit pas obligatoirement être entourée d'accolades. L'expression est également la valeur de retour implicite de la fonction.
    -
    +- `param` + - : Le nom d'un argument. S'il n'y a pas d'arguments, cela doit être indiqué par `()`.  S'il y a un seul argument, les parenthèses ne sont pas obligatoires (par exemple :  `toto => 1`). +- `instructions `ou` expression` + - : S'il y a plusieurs instructions, elles doivent être encadrées par des accolades. Une expression unique ne doit pas obligatoirement être entourée d'accolades. L'expression est également la valeur de retour implicite de la fonction. -

    Le constructeur Function

    +### Le constructeur `Function` -
    -

    Note : L'utilisation du constructeur Function afin de créer des fonction n'est pas recommandée. En effet, il utilise une chaîne pour former le corps de la fonction et cela peut empêcher certaines optimisations du moteur JavaScript ainsi que provoquer d'autres problèmes.

    -
    +> **Note :** L'utilisation du constructeur `Function` afin de créer des fonction n'est pas recommandée. En effet, il utilise une chaîne pour former le corps de la fonction et cela peut empêcher certaines optimisations du moteur JavaScript ainsi que provoquer d'autres problèmes. -

    Comme tous les autres objets, les objets {{jsxref("Function")}} peuvent être créés grâce à l'opérateur new :

    +Comme tous les autres objets, les objets {{jsxref("Function")}} peuvent être créés grâce à l'opérateur `new` : -
    new Function (arg1, arg2, ... argN, corpsDeLaFonction)
    -
    + new Function (arg1, arg2, ... argN, corpsDeLaFonction) -
    -
    arg1, arg2, ... argN
    -
    Plusieurs (zéro ou plus) noms qui seront utilisés par la fonction comme noms d'arguments formels. Chaque nom doit être une chaîne de caractères valide au sens d'un identifiant JavaScript ou alors être une liste de telles chaînes séparées par des virgules. On aura les exemples suivants : "x", "laValeur", ou "a,b".
    -
    corpsDeLaFonction
    -
    Une chaîne de caractères contenant les instructions JavaScript définissant la fonction.
    -
    +- `arg1, arg2, ... argN` + - : Plusieurs (zéro ou plus) noms qui seront utilisés par la fonction comme noms d'arguments formels. Chaque nom doit être une chaîne de caractères valide au sens d'un identifiant JavaScript ou alors être une liste de telles chaînes séparées par des virgules. On aura les exemples suivants : "`x`", "`laValeur`", ou "`a,b`". +- `corpsDeLaFonction` + - : Une chaîne de caractères contenant les instructions JavaScript définissant la fonction. -

    L'invocation du constructeur Function en tant que fonction (sans utiliser l'opérateur new) a le même effet que son invocation en tant que constructeur.

    +L'invocation du constructeur `Function` en tant que fonction (sans utiliser l'opérateur `new`) a le même effet que son invocation en tant que constructeur. -

    Le constructeur GeneratorFunction

    +### Le constructeur `GeneratorFunction` -
    -

    Note : GeneratorFunction n'est pas un objet global mais pourrait être obtenu à partir de l'instance de la fonction génératrice (voir la page {{jsxref("GeneratorFunction")}} pour plus de détails).

    -
    +> **Note :** `GeneratorFunction` n'est pas un objet global mais pourrait être obtenu à partir de l'instance de la fonction génératrice (voir la page {{jsxref("GeneratorFunction")}} pour plus de détails). -
    -

    Note : Le constructeur GeneratorFunction ne doit pas être utilisé pour créer des fonctions. En effet, il utilise une chaîne pour former le corps de la fonction et cela peut empêcher certaines optimisations du moteur JavaScript ainsi que provoquer d'autres problèmes.

    -
    +> **Note :** Le constructeur `GeneratorFunction` ne doit pas être utilisé pour créer des fonctions. En effet, il utilise une chaîne pour former le corps de la fonction et cela peut empêcher certaines optimisations du moteur JavaScript ainsi que provoquer d'autres problèmes. -

    Comme pour tous les autres objets, les objets {{jsxref("GeneratorFunction")}} peuvent être créés grâce à l'opérateur new :

    +Comme pour tous les autres objets, les objets {{jsxref("GeneratorFunction")}} peuvent être créés grâce à l'opérateur `new` : -
    new GeneratorFunction (arg1, arg2, ... argN, corpsFonction)
    + new GeneratorFunction (arg1, arg2, ... argN, corpsFonction) -
    -
    arg1, arg2, ... argN
    -
    Plusieurs (zéro ou plus) noms qui seront utilisés par la fonction comme noms d'arguments formels. Chaque nom doit être une chaîne de caractères valide au sens d'un identifiant JavaScript ou alors être une liste de telles chaînes séparées par des virgules. On aura les exemples suivants : "x", "theValue", ou "a,b".
    -
    corpsFonction
    -
    Une chaîne de caractères contenant les instructions JavaScript définissant la fonction.
    -
    +- `arg1, arg2, ... argN` + - : Plusieurs (zéro ou plus) noms qui seront utilisés par la fonction comme noms d'arguments formels. Chaque nom doit être une chaîne de caractères valide au sens d'un identifiant JavaScript ou alors être une liste de telles chaînes séparées par des virgules. On aura les exemples suivants : "`x`", "`theValue`", ou "`a,b`". +- `corpsFonction` + - : Une chaîne de caractères contenant les instructions JavaScript définissant la fonction. -

    Les paramètres d'une fonction

    +## Les paramètres d'une fonction -

    Les paramètres par défaut

    +### Les paramètres par défaut -

    Les paramètres par défaut permettent aux paramètres déclarés d'une fonction de pouvoir être initialisés avec des valeurs par défaut s'ils ne sont pas fournis à la fonction ou s'ils valent undefined. Pour plus de détails, voir la page de la référence sur les paramètres par défaut.

    +Les paramètres par défaut permettent aux paramètres déclarés d'une fonction de pouvoir être initialisés avec des valeurs par défaut s'ils ne sont pas fournis à la fonction ou s'ils valent `undefined`. Pour plus de détails, voir la page de la référence sur [les paramètres par défaut](/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments). -

    Les paramètres du reste

    +### Les paramètres du reste -

    Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau. Pour plus de détails, voir la page sur les paramètres du reste.

    +Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau. Pour plus de détails, voir la page sur [les paramètres du reste](/fr/docs/Web/JavaScript/Reference/Fonctions/param%C3%A8tres_du_reste). -

    L'objet arguments

    +## L'objet `arguments` -

    Il est possible de faire référence aux arguments d'une fonction au sein de cette fonction en utilisant l'objet arguments. Consulter la page arguments pour plus d'informations.

    +Il est possible de faire référence aux arguments d'une fonction au sein de cette fonction en utilisant l'objet `arguments`. Consulter la page [arguments](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments) pour plus d'informations. -
      -
    • arguments : Un objet semblable à un tableau qui contient les arguments passés à la fonction qui est exécutée.
    • -
    • arguments.callee {{Deprecated_inline}} : La fonction en cours d'exécution.
    • -
    • arguments.caller {{Obsolete_inline}} : La fonction qui a appelé la fonction courante.
    • -
    • arguments.length : Le nombre d'arguments passés à la fonction.
    • -
    +- [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments) : Un objet semblable à un tableau qui contient les arguments passés à la fonction qui est exécutée. +- [`arguments.callee`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/callee) {{Deprecated_inline}} : La fonction en cours d'exécution. +- [`arguments.caller`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/caller) {{Obsolete_inline}} : La fonction qui a appelé la fonction courante. +- [`arguments.length`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/length) : Le nombre d'arguments passés à la fonction. -

    Récursion

    +## Récursion -

    Une fonction peut faire référence à elle-même et s'appeler elle-même. Il y a trois façons pour qu'une fonction fasse appel à elle-même :

    +Une fonction peut faire référence à elle-même et s'appeler elle-même. Il y a trois façons pour qu'une fonction fasse appel à elle-même : -
      -
    1. le nom de la fonction
    2. -
    3. arguments.callee
    4. -
    5. une variable interne faisant référence à la fonction
    6. -
    +1. le nom de la fonction +2. [`arguments.callee`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments/callee) +3. une variable interne faisant référence à la fonction -

    Avec l'exemple suivant :

    +Avec l'exemple suivant : -
    var truc = function toto() {
    +```js
    +var truc = function toto() {
        // instructions
     };
    -
    +``` -

    Ce qui suit sera équivalent au sein de la fonction :

    +Ce qui suit sera équivalent au sein de la fonction : -
      -
    1. toto()
    2. -
    3. arguments.callee()
    4. -
    5. truc()
    6. -
    +1. `toto()` +2. `arguments.callee()` +3. `truc()` -

    Une fonction qui s'appelle elle-même est appelée une fonction récursive. D'une certaine manière, une récursion est semblable à une boucle. Une récursion et une boucle exécutent le même code plusieurs fois et s'appuient sur une condition (afin d'éviter une boucle infinie, ou plutôt une récursion infinie ici). Ainsi la boucle suivante :

    +Une fonction qui s'appelle elle-même est appelée une fonction récursive. D'une certaine manière, une récursion est semblable à une boucle. Une récursion et une boucle exécutent le même code plusieurs fois et s'appuient sur une condition (afin d'éviter une boucle infinie, ou plutôt une récursion infinie ici). Ainsi la boucle suivante : -
    var x = 0;
    -// "x < 10" est la condition de la boucle
    -while (x < 10) {
    +```js
    +var x = 0;
    +// "x < 10" est la condition de la boucle
    +while (x < 10) {
        // faire des choses
        x++;
     }
    -
    +``` -

    peut être convertie en une fonction récursive et un appel à cette fonction :

    +peut être convertie en une fonction récursive et un appel à cette fonction : -
    function boucle(x) {
    -   // "x >= 10" est la condition de sortie
    -   // (et équivaut à "!(x < 10)")
    -   if (x >= 10)
    +```js
    +function boucle(x) {
    +   // "x >= 10" est la condition de sortie
    +   // (et équivaut à "!(x < 10)")
    +   if (x >= 10)
           return;
        // faire des choses
        boucle(x + 1); // l'appel récursif
     }
     boucle(0);
    -
    +``` -

    Cependant, certains algorithmes ne peuvent pas être traduits sous forme de boucles itératives. Ainsi, obtenir tous les nœuds d'un arbre (par exemple le DOM), est beaucoup plus facile à faire de manière récursive.

    +Cependant, certains algorithmes ne peuvent pas être traduits sous forme de boucles itératives. Ainsi, obtenir tous les nœuds d'un arbre (par exemple le DOM), est beaucoup plus facile à faire de manière récursive. -
    function parcoursArbre(noeud) {
    +```js
    +function parcoursArbre(noeud) {
        if (noeud == null) //
           return;
        // faire quelque chose avec le noeud
    -   for (var i = 0; i < noeud.childNodes.length; i++) {
    +   for (var i = 0; i < noeud.childNodes.length; i++) {
           parcoursArbre(noeud.childNodes[i]);
        }
     }
    -
    +``` -

    Par rapport à la fonction boucle, chaque appel récursif enchaîne ici plusieurs appels récursifs successifs.

    +Par rapport à la fonction `boucle`, chaque appel récursif enchaîne ici plusieurs appels récursifs successifs. -

    Il est théoriquement possible de convertir tout algorithme récursif en un algorithme non-récursif. Cependant, la logique du problème est souvent beaucoup plus complexe et l'on doit faire recours à une pile pour le résoudre. Mais la récursion n'est en fait rien d'autre que l'utilisation d'une pile : la pile de la fonction.

    +Il est théoriquement possible de convertir tout algorithme récursif en un algorithme non-récursif. Cependant, la logique du problème est souvent beaucoup plus complexe et l'on doit faire recours à une pile pour le résoudre. Mais la récursion n'est en fait rien d'autre que l'utilisation d'une pile : la pile de la fonction. -

    La comportement de la récursion en tant que pile peut être observée avec cet exemple :

    +La comportement de la récursion en tant que pile peut être observée avec cet exemple : -
    function truc(i) {
    -   if (i < 0)
    +```js
    +function truc(i) {
    +   if (i < 0)
           return;
        console.log('début :' + i);
        toto(i - 1);
        console.log('fin :' + i);
     }
     truc(3);
    -
    +``` -

    Elle produira le résultat suivant :

    +Elle produira le résultat suivant : -
    début :3
    +```js
    +début :3
     début :2
     début :1
     début :0
    @@ -321,29 +303,28 @@ fin :0
     fin :1
     fin :2
     fin :3
    -
    +``` -

    Fonctions imbriquées et fermetures

    +## Fonctions imbriquées et fermetures -

    Il est possible d'imbriquer une fonction au sein d'une fonction. La fonction imbriquée (interne) est privée par rapport à la fonction (externe) qui la contient. Cela forme ce qu'on appelle une fermeture (closure en anglais).

    +Il est possible d'imbriquer une fonction au sein d'une fonction. La fonction imbriquée (interne) est privée par rapport à la fonction (externe) qui la contient. Cela forme ce qu'on appelle une fermeture (_closure_ en anglais). -

    Une fermeture est une expression (généralement une fonction) possédant des variables libres ainsi qu'un environnement qui lie ces variable (autrement dit qui « ferme » l'expression).

    +Une fermeture est une expression (généralement une fonction) possédant des variables libres ainsi qu'un environnement qui lie ces variable (autrement dit qui « ferme » l'expression). -

    Étant donné qu'une fonction imbriquée est une fermeture, cela signifie que la fonction imbriquée peut « hériter » des arguments et des variables de la fonction qui la contient. En d'autres termes, la fonction interne contient la portée de la fonction externe.

    +Étant donné qu'une fonction imbriquée est une fermeture, cela signifie que la fonction imbriquée peut « hériter » des arguments et des variables de la fonction qui la contient. En d'autres termes, la fonction interne contient la portée de la fonction externe. -

    Pour résumer :

    +Pour résumer : -
      -
    • on ne peut accéder à la fonction interne seulement avec des instructions contenues dans la fonction externe,
    • -
    +- on ne peut accéder à la fonction interne seulement avec des instructions contenues dans la fonction externe, -
      -
    • la fonction interne est une fermeture : la fonction interne peut utiliser des arguments et des variables de la fonction externe alors que la fonction externe ne peut pas utiliser de variables et d'arguments de la fonction interne.
    • -
    + -

    L'exemple suivant, montre le cas de fonctions imbriquées :

    +- la fonction interne est une fermeture : la fonction interne peut utiliser des arguments et des variables de la fonction externe alors que la fonction externe ne peut pas utiliser de variables et d'arguments de la fonction interne. -
    function ajouteCarres(a,b) {
    +L'exemple suivant, montre le cas de fonctions imbriquées :
    +
    +```js
    +function ajouteCarres(a,b) {
        function carre(x) {
           return x * x;
        }
    @@ -352,11 +333,12 @@ fin :3
     var a = ajouteCarres(2,3); // renvoie 13
     var b = ajouteCarres(3,4); // renvoie 25
     var c = ajouteCarres(4,5); // renvoie 41
    -
    +``` -

    Étant donné que la fonction interne est une fermeture, il est possible d'appeler la fonction externe et de définir des arguments pour la fonction externe mais aussi pour la fonction interne :

    +Étant donné que la fonction interne est une fermeture, il est possible d'appeler la fonction externe et de définir des arguments pour la fonction externe mais aussi pour la fonction interne : -
    function externe(x) {
    +```js
    +function externe(x) {
        function interne(y) {
           return x + y;
        }
    @@ -366,21 +348,22 @@ var fn_interne = externe(3);
     var resultat = fn_interne(5); // renvoie 8
     
     var resultat1 = externe(3)(5); // renvoie 8
    -
    +``` -

    Conservation des variables

    +### Conservation des variables -

    On voit alors que x est conservé lorsqu'interne est renvoyé. Une fermeture doit conserver les arguments et les variables au sein de toutes les portées auxquelles elle fait référence. Étant donné qu'éventuellement, chaque appel fournira des arguments différents, une nouvelle fermeture est créée pour chaque appel externe. La mémoire peut donc être libérée seulement lorsque inside n'est plus accessible.

    +On voit alors que `x` est conservé lorsqu'`interne` est renvoyé. Une fermeture doit conserver les arguments et les variables au sein de toutes les portées auxquelles elle fait référence. Étant donné qu'éventuellement, chaque appel fournira des arguments différents, une nouvelle fermeture est créée pour chaque appel externe. La mémoire peut donc être libérée seulement lorsque `inside` n'est plus accessible. -

    Cela n'est pas différent du stockage de références avec d'autres objets, mais ça reste plus délicat à observer puisqu'on ne peut inspecter ou définir soi-même les références en question.

    +Cela n'est pas différent du stockage de références avec d'autres objets, mais ça reste plus délicat à observer puisqu'on ne peut inspecter ou définir soi-même les références en question. -

    Imbrication multiple de fonctions

    +### Imbrication multiple de fonctions -

    On peut imbriquer plusieurs fonctions : une fonction (A) contien une fonction (B) qui contient une fonction (C). Ici les fonctions B et C forment des fermetures et aisni B peut accéder à A et C peut accéder à B. On peut donc en déduire, puisque C accède à B qui accède à A que C peut accéder à A. On voit donc que les fermetures peuvent contenir différentes portées. Elles peuvent, récursivement, contenir la portée des fonctions qui la contiennent. Ce mécanisme est appelé « chaînage de portée »  (scope chaining en anglais). (Cette dénomination sera expliquée par la suite.)

    +On peut imbriquer plusieurs fonctions : une fonction (A) contien une fonction (B) qui contient une fonction (C). Ici les fonctions B et C forment des fermetures et aisni B peut accéder à A et C peut accéder à B. On peut donc en déduire, puisque C accède à B qui accède à A que C peut accéder à A. On voit donc que les fermetures peuvent contenir différentes portées. Elles peuvent, récursivement, contenir la portée des fonctions qui la contiennent. Ce mécanisme est appelé « chaînage de portée »  (_scope chaining_ en anglais). (Cette dénomination sera expliquée par la suite.) -

    On peut l'observer avec l'exemple suivant :

    +On peut l'observer avec l'exemple suivant : -
    function A(x) {
    +```js
    +function A(x) {
        function B(y) {
           function C(z) {
              console.log(x + y + z);
    @@ -390,23 +373,22 @@ var resultat1 = externe(3)(5); // renvoie 8
        B(2);
     }
     A(1); // crée un message d'alerte avec 6 (= 1 + 2 + 3)
    -
    +``` -

    Dans cet exemple, C accède à la variable y de B et à la variable x de A. Cela est possible parce que :

    +Dans cet exemple, C accède à la variable y de B et à la variable x de A. Cela est possible parce que : -
      -
    1. B est une fermeture qui contient A, autrement dit B peut accéder aux arguments et aux variables de A
    2. -
    3. C est une fermeture qui contient B
    4. -
    5. Étant donné que la fermeture de B contient A et que celle de C contient B, C peut accéder à la fois aux arguments et variables de B et A. Autrement dit, C enchaîne les portées de  B et A dans cet ordre.
    6. -
    +1. `B` est une fermeture qui contient `A`, autrement dit `B` peut accéder aux arguments et aux variables de `A` +2. `C` est une fermeture qui contient `B` +3. Étant donné que la fermeture de `B` contient `A` et que celle de `C` contient `B`, `C` peut accéder à la fois aux arguments et variables de `B` _et_ `A`. Autrement dit, `C` *enchaîne les portées de*  `B` et `A` dans cet ordre. -

    La réciproque n'est pas vraie. A ne peut avoir accès à C, parce que A ne peut accéder ni aux variables ni aux arguments de B, or C est une variable de B. C est donc privé et seulement pour B.

    +La réciproque n'est pas vraie. `A` ne peut avoir accès à `C`, parce que `A` ne peut accéder ni aux variables ni aux arguments de `B`, or `C` est une variable de `B. C` est donc privé et seulement pour `B`. -

    Conflits de noms

    +### Conflits de noms -

    Lorsque deux arguments ou variables appartenant aux portées d'une fermeture ont le même nom, il y a un conflit de noms. La portée la plus interne l'emportera par rapport à la portée la plus externe. C'est ce qu'on appelle la chaîne de portée (scope chain en anglais). Le premier maillon de cette chaîne est la portée la plus interne tandis que le dernier maillon est représenté par la portée la plus externe. Regardons l'exemple suivant :

    +Lorsque deux arguments ou variables appartenant aux portées d'une fermeture ont le même nom, il y a un _conflit de noms_. La portée la plus interne l'emportera par rapport à la portée la plus externe. C'est ce qu'on appelle la chaîne de portée (_scope chain_ en anglais). Le premier maillon de cette chaîne est la portée la plus interne tandis que le dernier maillon est représenté par la portée la plus externe. Regardons l'exemple suivant : -
    function externe() {
    +```js
    +function externe() {
        var x = 10;
        function interne(x) {
           return x;
    @@ -414,275 +396,292 @@ A(1); // crée un message d'alerte avec 6 (= 1 + 2 + 3)
        return interne;
     }
     resultat = externe()(20); // renvoie 20 et non pas 10
    -
    +``` -

    Le conflit de nom apparaît avec l'instruction return x et vient de la dénomination commune de l'argument x de la fonction interne et la variable x de la fonction externe. La chaîne de portée est, pour cet exemple : {interne, externe, objet globalt}. On voit alors que le  x de la fonction interne l'emporte sur le x de la fonction externe. 20 (x de la fonction interne) est donc renvoyé plutôt que 10 (x de la fonction externe).

    +Le conflit de nom apparaît avec l'instruction `return x` et vient de la dénomination commune de l'argument `x `de la fonction` interne` et la variable `x `de la fonction `externe`. La chaîne de portée est, pour cet exemple : {`interne`, `externe`, objet globalt}. On voit alors que le  `x` de la fonction interne l'emporte sur le `x `de la fonction externe. 20 (`x` de la fonction `interne`) est donc renvoyé plutôt que 10 (`x` de la fonction `externe`). -

    Définition des méthodes

    +## Définition des méthodes -

    Les accesseurs et mutateurs (getter et setter)

    +### Les accesseurs et mutateurs (_getter_ et _setter_) -

    Il est possible de définir des méthodes qui sont accesseurs ou des mutateurs sur n'importe quel objet qui peut avoir de nouvelles propriétés. La syntaxe utilisée pour définir les getters et setters est celle utilisée avec les littéraux objets.

    +Il est possible de définir des méthodes qui sont accesseurs ou des mutateurs sur n'importe quel objet qui peut avoir de nouvelles propriétés. La syntaxe utilisée pour définir les _getters_ et _setters_ est celle utilisée avec les littéraux objets. -
    -
    get
    -
    -

    Permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on accèdera à la propriété.

    -
    -
    set
    -
    Permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on tentera de modifier cette propriété.
    -
    +- [get](/fr/docs/Web/JavaScript/Reference/Fonctions/get) + - : Permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on accèdera à la propriété. +- [set](/fr/docs/Web/JavaScript/Reference/Fonctions/set) + - : Permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on tentera de modifier cette propriété. -

    Syntaxe des définitions de méthode ECMAScript 2015

    +### Syntaxe des définitions de méthode ECMAScript **2015** -

    Avec ECMAScript 2015, il est possible de définir des méthodes de façon plus concise (à la façon de ce qui est déjà possible pour les getters et setters). Voir la page sur les définitions de méthodes pour plus d'informations.

    +Avec ECMAScript 2015, il est possible de définir des méthodes de façon plus concise (à la façon de ce qui est déjà possible pour les getters et setters). Voir la page sur [les définitions de méthodes](/fr/docs/Web/JavaScript/Reference/Fonctions/Définition_de_méthode) pour plus d'informations. -
    var obj = {
    +```js
    +var obj = {
       toto() {},
       truc() {}
    -};
    +}; +``` -

    Constructeur, déclaration, expression ?

    +## Constructeur, déclaration, expression ? -

    Comparons les exemples suivants :

    +Comparons les exemples suivants : -
      -
    1. une fonction définie grâce au constructeur Function assignée à la variable multiplier +1. une fonction définie grâce au constructeur `Function` assignée à la variable `multiplier` -
      var multiplier = new Function("x", "y", "return x * y;");
      -
      -
    2. -
    3. une déclaration de fonction d'une fonction appelée multiplier -
      function multiplier(x, y) {
      -   return x * y;
      -}
      -
      -
    4. -
    5. une expression de fonction d'une fonction anonyme assignée à la variable multiplier -
      var multiplier = function(x, y) {
      -   return x * y;
      -};
      -
      -
    6. -
    7. une expression de fonction d'une fonction nommée fonction_nom assignée à la variable multiplier -
      var multiplier = function function_nom(x, y) {
      -   return x * y;
      -};
      -
      -
    8. -
    - -

    Tous ces exemples effectuent à peu près la même chose, mais différent sur quelques points :

    - -
      -
    • Il y a une distinction entre le nom de la fonction et la variable à laquelle elle est affectée : -
        -
      • le nom de la fonction ne peut être changé alors que la variable à laquelle la fonction a été assignée peut être réassignée.
      • -
      • le nom de la fonction ne peut-être utilisé qu'à l'intérieur du corps de la fonction. Toute tentative d'utilisation en dehors du corps de la fonction entraînera une erreur (ou undefined si le nom de la fonction a été déclaré auparavant avec une instruction var). Ainsi : -
        var y = function x() {};
        -console.log(x); // renvoie une erreur
        -
        - -

        Le nom de la fonction apparaît également lorsque la fonction est sérialisée avec la méthode toString de l'objet Function.

        - -

        La variable à laquelle est assignée la fonction est seulement limitée par rapport à la portée. La portée au sein de laquelle la fonction est déclarée est donc garantie d'être dans la portée de la variable.

        -
      • -
      • Comme le montre le quatrième exemple, le nom de la fonction peut être différent du nom de la variable à laquelle a été assignée la fonction. Les deux noms n'ont aucune relation entre eux.
      • -
      -
    • -
    • Une déclaration de fonction peut aussi créer une variable avec le même nom que la fonction. Ainsi, contrairement une expression de fonction, une déclaration de fonction permet d'accéder à la fonction grâce à son nom au sein de la portée dans laquelle elle a été définie : -
      function x() {}
      -console.log(x); // affichera la fonction x sérialisée en une chaîne de caractères
      -
      - -

      L'exemple qui suit montre que les noms de fonctions ne sont par liées aux variables auxquelles sont assignées les fonctions. Si une variable de fonction est assignée à une autre valeur, elle aura toujours le même nom de fonction :

      - -
      function toto() {}
      -console.log(toto); // message affichant la chaine de caractères "toto"
      -var truc = toto;
      -console.log(truc); // message affichant la chaine de caractères "toto"
      -
      -
    • -
    • Une fonction définie grâce à « new Function » n'aura pas de nom de fonction. Cependant, le moteur JavaScript SpiderMonkey, la forme sérialisée de la fonction apparaît comme si la fonction avait le nom « anonymous ». Le code console.log(new Function()) produira : -
      function anonymous() {
      -}
      -
      - -

      La fonction n'ayant pas de nom effectif, anonymous n'est pas une variable à laquelle on pourra accéder au sein de la fonction. Par exemple, le code qui suit produira une erreur :

      - -
      var toto = new Function("console.log(anonymous);");
      -toto();
      -
      -
    • -
    • À la différence des fonctions définies par les expressions de fonction ou par le constructeur Function, une fonction définie par une déclaration de fonction pourra être utilisée avant la déclaration. Ainsi : -
      toto(); // affichera TOTO !
      -function toto() {
      -   console.log('TOTO !');
      -}
      -
      -
    • -
    • Une fonction définie par une expression de fonction hérite de la portée courante. La fonction forme donc une fermeture. En revanche, les fonctions définies par le constructeur Function n'héritent que de la portée globale (portée héritée par toutes les fonctions).
    • -
    • Les fonctions définies par les expressions et les déclarations de fonctions ne sont analysées (parsées) qu'une seule fois. Celles définies grâce au constructeur Function ne le sont pas. Cela signifie que la chaîne de caractère représentant le corps de la fonction doit être analysée à chaque fois qu'elle est évaluée. Bien qu'une expression de fonction crée obligatoirement une fermeture, le corps de la fonction n'est pas parsé à nouveau. Les expressions de fonctions sont donc plus rapides que « new Function(...) ». Il faut donc éviter le constructeur Function autant que possible.
      - Il faut cependant noter que les expressions et les déclarations imbriquées au sein d'une chaîne de caractère pour un constructeur Function ne sont analysées qu'une seule fois. On aura l'exemple suivant : -
      var toto = (new Function("var truc = \'TOTO !\';\nreturn(function() {\n\tconsole.log(truc);\n});"))();
      -toto(); //La partie « function() {\n\tconsole.log(truc);\n} » de la chaîne de caractères n'est pas analysée à nouveau.
      -
    • -
    - -

    Une déclaration de fonction peut très facilement (et souvent involontairement) être transformée en une expression de fonction. Une déclaration de fonction cesse d'en être une lorsque :

    - -
      -
    • elle fait partie d'une expression
    • -
    • ou elle n'est plus un « élément source » de la fonction ou du script. Un « élément source » est une instruction non-imbriquée du script ou d'un corps de fonction. -
      var x = 0;                 // élément source
      -if (x === 0) {              // élément source
      -   x = 10;                 // pas un élément source
      -   function titi() {}      // pas un élément source
      -}
      -function toto() {          // élément source
      -   var y = 20;             // élément source
      -   function truc() {}      // élément source
      -   while (y === 10) {       // élément source
      -      function machin() {} // pas un élément source
      -      y++;                 // pas un élément source
      -   }
      -}
      -
      -
    • -
    - -

    Exemples :

    - -
      -
    • -
      // déclaration de fonction
      -function toto() {}
      -
      -// expression de fonction
      -(function truc() {})
      -
      -// expression de fonction
      -var x = function bonjour() {}
      -
    • -
    • -
      if (x) {
      -   // expression de fonction
      -   function monde() {}
      -}
      -
      -
    • -
    • -
      // déclaration de fonction
      -function a() {
      -   // déclaration de fonction
      -   function b() {}
      -   if (0) {
      -      // expression de fonction
      -      function c() {}
      -   }
      -}
      -
      -
    • -
    + ```js + var multiplier = new Function("x", "y", "return x * y;"); + ``` + +2. une déclaration de fonction d'une fonction appelée `multiplier` + + ```js + function multiplier(x, y) { + return x * y; + } + ``` + +3. une expression de fonction d'une fonction anonyme assignée à la variable `multiplier` + + ```js + var multiplier = function(x, y) { + return x * y; + }; + ``` + +4. une expression de fonction d'une fonction nommée `fonction_nom` assignée à la variable `multiplier` + + ```js + var multiplier = function function_nom(x, y) { + return x * y; + }; + ``` + +Tous ces exemples effectuent à peu près la même chose, mais différent sur quelques points : + +- Il y a une distinction entre le nom de la fonction et la variable à laquelle elle est affectée : + + - le nom de la fonction ne peut être changé alors que la variable à laquelle la fonction a été assignée peut être réassignée. + - le nom de la fonction ne peut-être utilisé qu'à l'intérieur du corps de la fonction. Toute tentative d'utilisation en dehors du corps de la fonction entraînera une erreur (ou `undefined` si le nom de la fonction a été déclaré auparavant avec une instruction `var`). Ainsi : + + ```js + var y = function x() {}; + console.log(x); // renvoie une erreur + ``` -

    Définir une fonction de façon conditionnelle

    + Le nom de la fonction apparaît également lorsque la fonction est sérialisée avec la [méthode toString de l'objet `Function`](/fr/docs/JavaScript/Reference/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/Function/toString). -

    Il est possible de définir des fonctions de manière conditionnelle en utilisant soit : //function statements// (une extension autorisée par le standard ECMA-262 Edition 3) soit le constructeur Function. Il faut noter que de telles instructions ne sont plus autorisées dans le standard ES5 strict. Il faut également savoir que cela ne fonctionne pas de manière homogène sur les différents navigateurs. Il est donc déconseillé d'utiliser cette fonctionnalité.

    + La variable à laquelle est assignée la fonction est seulement limitée par rapport à la portée. La portée au sein de laquelle la fonction est déclarée est donc garantie d'être dans la portée de la variable. -

    Dans le script qui suit, la fonction zero n'est jamais définie et ne peut donc être appelée car le test « if (0) » est toujours faux :

    + - Comme le montre le quatrième exemple, le nom de la fonction peut être différent du nom de la variable à laquelle a été assignée la fonction. Les deux noms n'ont aucune relation entre eux. -
    if (0) {
    +- Une déclaration de fonction peut aussi créer une variable avec le même nom que la fonction. Ainsi, contrairement une expression de fonction, une déclaration de fonction permet d'accéder à la fonction grâce à son nom au sein de la portée dans laquelle elle a été définie :
    +
    +  ```js
    +    function x() {}
    +    console.log(x); // affichera la fonction x sérialisée en une chaîne de caractères
    +    ```
    +
    +  L'exemple qui suit montre que les noms de fonctions ne sont par liées aux variables auxquelles sont assignées les fonctions. Si une variable de fonction est assignée à une autre valeur, elle aura toujours le même nom de fonction :
    +
    +  ```js
    +    function toto() {}
    +    console.log(toto); // message affichant la chaine de caractères "toto"
    +    var truc = toto;
    +    console.log(truc); // message affichant la chaine de caractères "toto"
    +    ```
    +
    +- Une fonction définie grâce à « `new Function »` n'aura pas de nom de fonction. Cependant, le moteur JavaScript [SpiderMonkey](/fr/docs/SpiderMonkey), la forme sérialisée de la fonction apparaît comme si la fonction avait le nom « anonymous ». Le code `console.log(new Function())` produira :
    +
    +  ```js
    +    function anonymous() {
    +    }
    +    ```
    +
    +  La fonction n'ayant pas de nom effectif, `anonymous` n'est pas une variable à laquelle on pourra accéder au sein de la fonction. Par exemple, le code qui suit produira une erreur :
    +
    +  ```js
    +    var toto = new Function("console.log(anonymous);");
    +    toto();
    +    ```
    +
    +- À la différence des fonctions définies par les expressions de fonction ou par le constructeur `Function`, une fonction définie par une déclaration de fonction pourra être utilisée avant la déclaration. Ainsi :
    +
    +  ```js
    +    toto(); // affichera TOTO !
    +    function toto() {
    +       console.log('TOTO !');
    +    }
    +    ```
    +
    +- Une fonction définie par une expression de fonction hérite de la portée courante. La fonction forme donc une fermeture. En revanche, les fonctions définies par le constructeur `Function` n'héritent que de la portée globale (portée héritée par toutes les fonctions).
    +- Les fonctions définies par les expressions et les déclarations de fonctions ne sont analysées (parsées) qu'une seule fois. Celles définies grâce au constructeur `Function` ne le sont pas. Cela signifie que la chaîne de caractère représentant le corps de la fonction doit être analysée à chaque fois qu'elle est évaluée. Bien qu'une expression de fonction crée obligatoirement une fermeture, le corps de la fonction n'est pas parsé à nouveau. Les expressions de fonctions sont donc plus rapides que « `new Function(...)` ». Il faut donc éviter le constructeur `Function` autant que possible.
    +  Il faut cependant noter que les expressions et les déclarations imbriquées au sein d'une chaîne de caractère pour un constructeur `Function` ne sont analysées qu'une seule fois. On aura l'exemple suivant :
    +
    +  ```js
    +    var toto = (new Function("var truc = \'TOTO !\';\nreturn(function() {\n\tconsole.log(truc);\n});"))();
    +    toto(); //La partie « function() {\n\tconsole.log(truc);\n} » de la chaîne de caractères n'est pas analysée à nouveau.
    +    ```
    +
    +Une déclaration de fonction peut très facilement (et souvent involontairement) être transformée en une expression de fonction. Une déclaration de fonction cesse d'en être une lorsque :
    +
    +- elle fait partie d'une expression
    +- ou elle n'est plus un « élément source » de la fonction ou du script. Un « élément source » est une instruction non-imbriquée du script ou d'un corps de fonction.
    +
    +  ```js
    +    var x = 0;                 // élément source
    +    if (x === 0) {              // élément source
    +       x = 10;                 // pas un élément source
    +       function titi() {}      // pas un élément source
    +    }
    +    function toto() {          // élément source
    +       var y = 20;             // élément source
    +       function truc() {}      // élément source
    +       while (y === 10) {       // élément source
    +          function machin() {} // pas un élément source
    +          y++;                 // pas un élément source
    +       }
    +    }
    +    ```
    +
    +### Exemples :
    +
    +- ```js
    +    // déclaration de fonction
    +    function toto() {}
    +
    +    // expression de fonction
    +    (function truc() {})
    +
    +    // expression de fonction
    +    var x = function bonjour() {}
    +    ```
    +
    +- ```js
    +    if (x) {
    +       // expression de fonction
    +       function monde() {}
    +    }
    +    ```
    +
    +- ```js
    +    // déclaration de fonction
    +    function a() {
    +       // déclaration de fonction
    +       function b() {}
    +       if (0) {
    +          // expression de fonction
    +          function c() {}
    +       }
    +    }
    +    ```
    +
    +## Définir une fonction de façon conditionnelle
    +
    +Il est possible de définir des fonctions de manière conditionnelle en utilisant soit : //function statements// (une extension autorisée par le standard [ECMA-262 Edition 3](https://www.ecma-international.org/publications/standards/Ecma-262.htm)) soit le constructeur `Function`. Il faut noter que de telles instructions ne sont plus autorisées dans le standard [ES5 strict](https://bugzilla.mozilla.org/show_bug.cgi?id=609832). Il faut également savoir que cela ne fonctionne pas de manière homogène sur les différents navigateurs. Il est donc déconseillé d'utiliser cette fonctionnalité.
    +
    +Dans le script qui suit, la fonction `zero` n'est jamais définie et ne peut donc être appelée car le test « `if (0)` » est toujours faux :
    +
    +```js
    +if (0) {
        function zero() {
           console.log("C'est zero.");
        }
     }
    -
    +``` -

    Si le script est changé et que la condition devient « if (1) », la fonction zero sera alors définie.

    +Si le script est changé et que la condition devient « `if (1)` », la fonction `zero` sera alors définie. -

    Bien que cette fonction ressemble à une déclaration de fonction, il s'agit en fait d'une expression (ou instruction) de fonction, car celle-ci est imbriquée au sein d'une autre instruction. (Consulter le paragraphe précédent pour une explication à ce sujet).

    +Bien que cette fonction ressemble à une déclaration de fonction, il s'agit en fait d'une expression (ou instruction) de fonction, car celle-ci est imbriquée au sein d'une autre instruction. (Consulter le paragraphe précédent pour une explication à ce sujet). -
    -

    Note : À la différence de SpiderMonkey, certains moteurs JavaScript traîtent incorrectement les expressions de fonction avec un nom comme des définitions de fonction. Cela conduirait à la définition de la fonction zero et ce même avec la condition if valant faux. Une façon plus sûre de définir des fonctions de manière conditionnelle est de définir la fonction et de l'assigner à une variable :

    +> **Note :** À la différence de [SpiderMonkey](/fr/docs/SpiderMonkey), certains moteurs JavaScript traîtent incorrectement les expressions de fonction avec un nom comme des définitions de fonction. Cela conduirait à la définition de la fonction `zero` et ce même avec la condition `if` valant faux. Une façon plus sûre de définir des fonctions de manière conditionnelle est de définir la fonction et de l'assigner à une variable : +> +> ```js +> if (0) { +> var zero = function() { +> console.log("C'est zero"); +> } +> } +> ``` -
    if (0) {
    -   var zero = function() {
    -      console.log("C'est zero");
    -   }
    -}
    -
    -
    - -

    Les fonctions en tant que gestionnaires d'événements

    +## Les fonctions en tant que gestionnaires d'événements -

    En JavaScript, les gestionnaires d'événements DOM (event handlers en anglais) sont des fonctions (différentes des objets contenant une méthode handleEvent dans d'autres langages de liaison avec le DOM -binding languages en anglais). Les fontions ont l'objet event comme seul et unique paramètre. Comme tous les autres paramètres, si l'objet événement, n'a pas besoin d'être utilisé, il peut être absent de la liste des paramètres formels.

    +En JavaScript, les gestionnaires d'événements [DOM](/fr/docs/DOM) (_event handlers_ en anglais) sont des fonctions (différentes des objets contenant une méthode `handleEvent` dans d'autres langages de liaison avec le DOM -_binding languages_ en anglais). Les fontions ont l'objet [event](/fr/docs/DOM/event) comme seul et unique paramètre. Comme tous les autres paramètres, si l'objet événement, n'a pas besoin d'être utilisé, il peut être absent de la liste des paramètres formels. -

    Les objets d'un document HTML susceptibles de recevoir des événements peuvent être par exemple : window (objets Window, y compris les objets frames), document (les objets HTMLDocument), et les éléments (les objets Element). Au sein du DOM HTML, les objets recevant des événements possède des propriétés gestionnaires d'événements. Ces propriétés sont les noms des événements en minuscules préfixés par « on » (par exemple onfocus). Une autre façon, plus fiable, d'ajouter des auditeurs d'événements, est offert par les événements DOM de niveau 2.

    +Les objets d'un document HTML susceptibles de recevoir des événements peuvent être par exemple : `window` (objets` Window`, y compris les objets frames), `document` (les objets `HTMLDocument`), et les éléments (les objets `Element`). Au sein du [DOM HTML](https://www.w3.org/TR/DOM-Level-2-HTML/), les objets recevant des événements possède des propriétés gestionnaires d'événements. Ces propriétés sont les noms des événements en minuscules préfixés par « on » (par exemple `onfocus`). Une autre façon, plus fiable, d'ajouter des auditeurs d'événements, est offert par les [événements DOM de niveau 2](https://www.w3.org/TR/DOM-Level-2-Events/). -

    Note : Les événements font partie de la logique DOM et non de celle de JavaScript. (JavaScript n'est qu'un langage permettant de manipuler le DOM.)

    +Note : Les événements font partie de la logique DOM et non de celle de JavaScript. (JavaScript n'est qu'un langage permettant de manipuler le DOM.) -

    L'exemple suivant assigne une fonction au gestionnaire de l'événement « focus ».

    +L'exemple suivant assigne une fonction au gestionnaire de l'événement « focus ». -
    window.onfocus = function() {
    +```js
    +window.onfocus = function() {
        document.body.style.backgroundColor = 'white';
     };
    -
    +``` -

    Si une fonction est assignée à une variable, il est possible d'assigner la variable à un gestionnaire d'événement. Le fragment de code qui suit assigne une fonction à la variable setBGColor.

    +Si une fonction est assignée à une variable, il est possible d'assigner la variable à un gestionnaire d'événement. Le fragment de code qui suit assigne une fonction à la variable `setBGColor`. -
    var setBGColor = new Function("document.body.style.backgroundColor = 'white';");
    -
    +```js +var setBGColor = new Function("document.body.style.backgroundColor = 'white';"); +``` -

    Il est alors possible d'utiliser cette variable pour assigner une fonction à un gestionnaire d'événement. Cela peut se faire de plusieurs manières, en voici deux décrites ici :

    +Il est alors possible d'utiliser cette variable pour assigner une fonction à un gestionnaire d'événement. Cela peut se faire de plusieurs manières, en voici deux décrites ici : -
      -
    1. écrire dans les propriétés de l'évément DOM HTML -
      document.form1.colorButton.onclick = setBGColor;
      -
      -
    2. -
    3. l'attribut de l'événement HTML -
      <input type="button"
      -   value="Changer la couleur de fond"
      -   onclick="setBGColor();"/>
      -
      +1. écrire dans les propriétés de l'évément DOM HTML -

      Un gestionnaire d'événement défini de cette manière sera une fonction, nommée selon l'attribut, encadré du code spécifique nécessaire. C'est pourquoi les parenthèses sont ici nécessaires (setBGColor() et non pas setBGColor). Cela est équivalent à :

      + ```js + document.form1.colorButton.onclick = setBGColor; + ``` -
      document.form1.colorButton.onclick = function onclick(event) {
      -   setBGColor();
      -};
      -
      +2. l'attribut de l'événement HTML + + ```html + + ``` + + Un gestionnaire d'événement défini de cette manière sera une fonction, nommée selon l'attribut, encadré du code spécifique nécessaire. C'est pourquoi les parenthèses sont ici nécessaires (`setBGColor()` et non pas `setBGColor`). Cela est équivalent à : + + ```js + document.form1.colorButton.onclick = function onclick(event) { + setBGColor(); + }; + ``` -

      Il faut noter la façon dont l'objet événement est passé à la fonction en tant que paramètre event. Cela permet au code d'utiliser l'objet Event :

      + Il faut noter la façon dont l'objet événement est passé à la fonction en tant que paramètre `event`. Cela permet au code d'utiliser l'objet `Event` : -
      <input ...
      -    onclick="console.log(event.target.tagName);"/>
      -
      -
    4. -
    + ```html + + ``` -

    Tout comme les autres propriétés faisant référence à une fonction, le gestionnaire d'événement peut agir come une méthode et this ferait alors référence à l'élément contenant le gestionnaire d'événement. Dans l'exemple suivant, la fonction à laquelle onfocus fait référence est appelée avec this qui a la valeur window.

    +Tout comme les autres propriétés faisant référence à une fonction, le gestionnaire d'événement peut agir come une méthode et `this` ferait alors référence à l'élément contenant le gestionnaire d'événement. Dans l'exemple suivant, la fonction à laquelle `onfocus` fait référence est appelée avec `this` qui a la valeur `window`. -
    window.onfocus();
    -
    +```js +window.onfocus(); +``` -

    Une erreur faite souvent lorsque l'on commence à utiliser JavaScript est d'ajouter des parenthèses et/ou des paramètres à la fin de la variable. Cela revient à appeler le gestionnaire d'événement lorsqu'on l'assigne. Le fait d'ajouter ces parenthèses assignera la valeur de retour du gestionnaire d'événement. Cette valeur sera souvent undefined dans ces cas alors que l'on aurait souhaité obtenir le gestionnaire d'événement.

    +Une erreur faite souvent lorsque l'on commence à utiliser JavaScript est d'ajouter des parenthèses et/ou des paramètres à la fin de la variable. Cela revient à appeler le gestionnaire d'événement lorsqu'on l'assigne. Le fait d'ajouter ces parenthèses assignera la valeur de retour du gestionnaire d'événement. Cette valeur sera souvent` undefined `dans ces cas alors que l'on aurait souhaité obtenir le gestionnaire d'événement. -
    document.form1.button1.onclick = setBGColor();
    -
    +```js +document.form1.button1.onclick = setBGColor(); +``` -

    Afin de passer des paramètres à un gestionnaire d'événements, le gestionnaire doit être enveloppé dans une autre fonction, comme dans l'exemple suivant :

    +Afin de passer des paramètres à un gestionnaire d'événements, le gestionnaire doit être enveloppé dans une autre fonction, comme dans l'exemple suivant : -
    document.form1.button1.onclick = function() {
    +```js
    +document.form1.button1.onclick = function() {
        setBGColor('une valeur');
     };
    -
    +``` -

    Les fonctions de bloc

    +## Les fonctions de bloc -

    En mode strict, à partir d'ES2015 (ES6), la portée des fonctions définies dans un bloc est limitée à ce bloc. Avant ES2015, il était interdit d'utiliser les fonctions de bloc en mode strict..

    +En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), à partir d'ES2015 (ES6), la portée des fonctions définies dans un bloc est limitée à ce bloc. Avant ES2015, il était interdit d'utiliser les fonctions de bloc en mode strict.. -
    'use strict';
    +```js
    +'use strict';
     
     function f() {
       return 1;
    @@ -697,129 +696,105 @@ function f() {
     f() === 1; // true
     
     // f() === 2 en mode non-strict
    -
    +``` -

    Les fonctions de bloc dans du code non-strict

    +### Les fonctions de bloc dans du code non-strict -

    Non.

    +Non. -

    Dans du code non-strict, les déclarations de fonctions placées dans des blocs peuvent se comporter de façon étrange :

    +Dans du code non-strict, les déclarations de fonctions placées dans des blocs peuvent se comporter de façon étrange : -
    if (onDevraitDéfinirZéro) {
    +```js
    +if (onDevraitDéfinirZéro) {
        function zéro() { // DANGER: risque de compatibilité
           console.log("Voici zéro.");
        }
     }
    -
    +``` -

    ES2015 indique que si onDevraitDéfinirZéro vaut false, zéro ne devrait jamais être défini car le bloc n'est jamais exécuté. En revanche, c'est une nouveauté liée à cette version du standard, non spécifiée auparavant. Certains navigateurs définissent zéro que le bloc soit exécuté ou non.

    +ES2015 indique que si `onDevraitDéfinirZéro` vaut `false`, `zéro` ne devrait jamais être défini car le bloc n'est jamais exécuté. En revanche, c'est une nouveauté liée à cette version du standard, non spécifiée auparavant. Certains navigateurs définissent `zéro` que le bloc soit exécuté ou non. -

    En mode strict, tous les navigateurs qui prennent en charge ES2015 gère cela de la même façon : zéro est uniquement défini si onDevraitDéfinirZéro vaut true et uniquement dans la portée du bloc induit par if.

    +En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), tous les navigateurs qui prennent en charge ES2015 gère cela de la même façon : `zéro` est uniquement défini si `onDevraitDéfinirZéro` vaut `true` et uniquement dans la portée du bloc induit par `if`. -

    Une méthode plus sûre est d'utiliser des expressions de fonction :

    +Une méthode plus sûre est d'utiliser des expressions de fonction : -
    var zéro;
    +```js
    +var zéro;
     if (0) {
        zéro = function() {
           console.log("Voici zéro.");
        };
     }
    -
    +``` -

    Exemples

    +## Exemples -

    Renvoyer un nombre formaté

    +### Renvoyer un nombre formaté -

    La fonction qui suit renvoie une chaîne de caractères contenant la représentation formatée d'un nombre avec un certain nombre de zéros préfixant le nombre.

    +La fonction qui suit renvoie une chaîne de caractères contenant la représentation formatée d'un nombre avec un certain nombre de zéros préfixant le nombre. -
    // Cette fonction renvoie une chaîne de caractères complétée par un préfixe composé de zéros
    +```js
    +// Cette fonction renvoie une chaîne de caractères complétée par un préfixe composé de zéros
     function padZeros(num, totalLen) {
        var numStr = num.toString();             // On initialise la valeur à renvoyer en chaîne de caractères
        var numZeros = totalLen - numStr.length; // On calcule le nombre de zéros
    -   for (var i = 1; i <= numZeros; i++) {
    +   for (var i = 1; i <= numZeros; i++) {
           numStr = "0" + numStr;
        }
        return numStr;
     }
    -
    +``` -

    Les instructions qui suivent utilisent cette fonction

    +Les instructions qui suivent utilisent cette fonction -
    var resultat;
    +```js
    +var resultat;
     resultat = padZeros(42,4); // renvoie "0042"
     resultat = padZeros(42,2); // renvoie "42"
     resultat = padZeros(5,4);  // renvoie "0005"
    -
    +``` -

    Déterminer si une fonction existe

    +### Déterminer si une fonction existe -

    Il est possible de déterminer si oui ou non une fonction existe en utilisant l'opérateur typeof. Dans l'exemple qui suit, on teste pour savoir si l'objet window possède une propriété appelé noFunc qui serait une fonction. Si c'est le cas, elle sera utilisée, sinon on fera autre chose.

    +Il est possible de déterminer si oui ou non une fonction existe en utilisant l'opérateur `typeof`. Dans l'exemple qui suit, on teste pour savoir si l'objet` window` possède une propriété appelé `noFunc` qui serait une fonction. Si c'est le cas, elle sera utilisée, sinon on fera autre chose. -
     if ('function' === typeof window.noFunc) {
    +```js
    + if ('function' === typeof window.noFunc) {
        // utilisation de noFunc()
      } else {
        // faire autre chose
      }
    -
    - -

    Il est à noter que, dans le test if, on utilise une référence à noFunc - il n'y a pas de parenthèses après le nom de la fonction, la fonction n'est donc pas appelée.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0
    {{SpecName('ES5.1', '#sec-13', 'Function Definition')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-function-definitions', 'Function definitions')}}{{Spec2('ES6')}}Nouveautés : fonctions fléchées, générateurs, paramètres par défaut, paramètres du reste
    {{SpecName('ES6', '#', 'function*')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ES6', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}}{{Spec2('ES6')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions")}}

    - -

    Voir aussi

    - -
      -
    • L'instruction {{jsxref("Instructions/function", "function")}}
    • -
    • L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}}
    • -
    • L'instruction {{jsxref("Instructions/function*", "function*")}}
    • -
    • L'expression {{jsxref("Opérateurs/function*", "function*")}}
    • -
    • {{jsxref("Function")}}
    • -
    • {{jsxref("GeneratorFunction")}}
    • -
    • {{jsxref("Fonctions/Fonctions_fléchées", "Les fonctions fléchées")}}
    • -
    • {{jsxref("Fonctions/Valeurs_par_défaut_des_arguments", "Les paramètres par défaut","",1)}}
    • -
    • {{jsxref("Fonctions/paramètres_du_reste", "Les paramètres du reste","",1)}}
    • -
    • L'objet {{jsxref("Fonctions/arguments", "arguments")}}
    • -
    • {{jsxref("Fonctions/get", "getter")}}
    • -
    • {{jsxref("Fonctions/set", "setter")}}
    • -
    • {{jsxref("Fonctions/Définition_de_méthode", "Les définitions de méthodes","",1)}}
    • -
    • Fonctions et portée des fonctions
    • -
    +``` + +Il est à noter que, dans le test `if`, on utilise une référence à `noFunc` - il n'y a pas de parenthèses après le nom de la fonction, la fonction n'est donc pas appelée. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0 | +| {{SpecName('ES5.1', '#sec-13', 'Function Definition')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-function-definitions', 'Function definitions')}} | {{Spec2('ES6')}} | Nouveautés : fonctions fléchées, générateurs, paramètres par défaut, paramètres du reste | +| {{SpecName('ES6', '#', 'function*')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ES6', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}} | {{Spec2('ES6')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions")}} + +## Voir aussi + +- L'instruction {{jsxref("Instructions/function", "function")}} +- L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}} +- L'instruction {{jsxref("Instructions/function*", "function*")}} +- L'expression {{jsxref("Opérateurs/function*", "function*")}} +- {{jsxref("Function")}} +- {{jsxref("GeneratorFunction")}} +- {{jsxref("Fonctions/Fonctions_fléchées", "Les fonctions fléchées")}} +- {{jsxref("Fonctions/Valeurs_par_défaut_des_arguments", "Les paramètres par défaut","",1)}} +- {{jsxref("Fonctions/paramètres_du_reste", "Les paramètres du reste","",1)}} +- L'objet {{jsxref("Fonctions/arguments", "arguments")}} +- {{jsxref("Fonctions/get", "getter")}} +- {{jsxref("Fonctions/set", "setter")}} +- {{jsxref("Fonctions/Définition_de_méthode", "Les définitions de méthodes","",1)}} +- [Fonctions et portée des fonctions](/fr/docs/Web/JavaScript/Reference/Fonctions) diff --git a/files/fr/web/javascript/reference/functions/method_definitions/index.md b/files/fr/web/javascript/reference/functions/method_definitions/index.md index 13c6fdf0fa..a0e36dc8e0 100644 --- a/files/fr/web/javascript/reference/functions/method_definitions/index.md +++ b/files/fr/web/javascript/reference/functions/method_definitions/index.md @@ -11,68 +11,70 @@ tags: translation_of: Web/JavaScript/Reference/Functions/Method_definitions original_slug: Web/JavaScript/Reference/Fonctions/Définition_de_méthode --- -
    {{JsSidebar("Functions")}}
    +{{JsSidebar("Functions")}} -

    Avec ECMAScript 2015 (ES6), il est possible d'utiliser une notation plus courte pour définir des méthodes au sein des littéraux objets. On peut ainsi définir plus rapidement une fonction qui sera utilisée comme méthode.

    +Avec ECMAScript 2015 (ES6), il est possible d'utiliser une notation plus courte pour définir des méthodes au sein des littéraux objets. On peut ainsi définir plus rapidement une fonction qui sera utilisée comme méthode. -
    {{EmbedInteractiveExample("pages/js/functions-definitions.html")}}
    +{{EmbedInteractiveExample("pages/js/functions-definitions.html")}} -

    Syntaxe

    +## Syntaxe -
    var obj = {
    -  property( parameters… ) {},
    -  *generator( parameters… ) {},
    -  async property( parameters… ) {},
    -  async* generator( parameters… ) {},
    +    var obj = {
    +      property( parameters… ) {},
    +      *generator( parameters… ) {},
    +      async property( parameters… ) {},
    +      async* generator( parameters… ) {},
     
    -  // avec les noms calculés :
    -  [property]( parameters… ) {},
    -  *[generator]( parameters… ) {},
    -  async [property]( parameters… ) {},
    +      // avec les noms calculés :
    +      [property]( parameters… ) {},
    +      *[generator]( parameters… ) {},
    +      async [property]( parameters… ) {},
     
    -  // avec la syntaxe pour les accesseurs
    -  // mutateurs :
    -  get property() {},
    -  set property(value) {}
    -};
    -
    + // avec la syntaxe pour les accesseurs + // mutateurs : + get property() {}, + set property(value) {} + }; -

    Description

    +## Description -

    La notation raccourcie est semblable à la syntaxe introduite par ECMAScript 5 pour les accesseurs et mutateurs.

    +La notation raccourcie est semblable à la syntaxe introduite par ECMAScript 5 pour les [accesseurs](/fr/docs/Web/JavaScript/Reference/Fonctions/get) et [mutateurs](/fr/docs/Web/JavaScript/Reference/Fonctions/set). -

    Le code suivant :

    +Le code suivant : -
    var obj = {
    +```js
    +var obj = {
       toto: function() {
         /* du code */
       },
       truc: function() {
         /* du code */
       }
    -};
    +}; +``` -

    Peut désormais être raccourci en :

    +Peut désormais être raccourci en : -
    var obj = {
    +```js
    +var obj = {
       toto() {
         /* du code */
       },
       truc() {
         /* du code */
       }
    -};
    +}; +``` -

    Notation raccourcie pour les générateurs

    +### Notation raccourcie pour les générateurs -

    Les générateurs sont des méthodes et peuvent donc être définis en utilisant la notation raccourci. Lorsqu'on les utilise :

    +[Les générateurs](/fr/docs/Web/JavaScript/Reference/Instructions/function*) sont des méthodes et peuvent donc être définis en utilisant la notation raccourci. Lorsqu'on les utilise : -
      -
    • L'astérisque de la notation raccourcie doit être située avant le nom de la propriété pour le générateur. Autrement dit, * g(){} fonctionnera mais g*(){} ne fonctionnera pas.
    • -
    • Les définitions des méthodes qui ne sont pas des générateurs ne peuvent pas contenir le mot-clé yield. Cela signifie que l'ancienne syntaxe pour les générateurs ne fonctionnera pas et déclenchera une exception {{jsxref("SyntaxError")}}. Il faut toujours utiliser yield avec l'astérisque (*).
    • -
    +- L'astérisque de la notation raccourcie doit être située avant le nom de la propriété pour le générateur. Autrement dit, `* g(){}` fonctionnera mais `g*(){}` ne fonctionnera pas. +- Les définitions des méthodes qui ne sont pas des générateurs ne peuvent pas contenir le mot-clé `yield`. Cela signifie que [l'ancienne syntaxe pour les générateurs](/fr/docs/Web/JavaScript/Reference/Instructions/Fonction_génératrice_historique) ne fonctionnera pas et déclenchera une exception {{jsxref("SyntaxError")}}. Il faut toujours utiliser `yield` avec l'astérisque (`*`). -
    // Notation utilisant une propriété nommée (avant-ES2015)
    +```js
    +// Notation utilisant une propriété nommée (avant-ES2015)
     var obj2 = {
       g: function*() {
         var index = 0;
    @@ -92,13 +94,15 @@ var obj2 = {
     
     var it = obj2.g();
     console.log(it.next().value); // 0
    -console.log(it.next().value); // 1
    +console.log(it.next().value); // 1 +``` -

    Méthodes asynchrones avec notation raccourcie

    +### Méthodes asynchrones avec notation raccourcie -

    Les méthodes asynchrones peuvent également être définies grâce à une syntaxe raccourcie.

    +[Les méthodes asynchrones](/fr/docs/Web/JavaScript/Reference/Instructions/async_function) peuvent également être définies grâce à une syntaxe raccourcie. -
    // On utilise une propriété nommée
    +```js
    +// On utilise une propriété nommée
     var obj3 = {
       f: async function () {
         await une_promesse;
    @@ -112,13 +116,14 @@ var obj3 = {
         await une_promesse;
       }
     };
    -
    +``` -

    Méthodes génératrices asynchrones

    +### Méthodes génératrices asynchrones -

    Les méthodes génératrices peuvent également être asynchrones (cf. async) :

    +Les méthodes génératrices peuvent également être asynchrones (cf. [`async`](/fr/docs/Web/JavaScript/Reference/Instructions/async_function)) : -
    var obj4 = {
    +```js
    +var obj4 = {
       f: async function* () {
         yield 1;
         yield 2;
    @@ -134,13 +139,15 @@ var obj4 = {
         yield 2;
         yield 3;
       }
    -};
    +}; +``` -

    Les définitions de méthodes ne sont pas constructibles

    +### Les définitions de méthodes ne sont pas constructibles -

    Les définitions de méthodes ne sont pas des constructeurs et si on tente de les instancier, cela provoquera une exception {{jsxref("TypeError")}}.

    +Les définitions de méthodes ne sont pas des constructeurs et si on tente de les instancier, cela provoquera une exception {{jsxref("TypeError")}}. -
    var obj = {
    +```js
    +var obj = {
       méthode() {},
     };
     new obj.méthode; // TypeError: obj.méthode is not a constructor
    @@ -149,24 +156,26 @@ var obj = {
       * g() {}
     };
     new obj.g; // TypeError: obj.g is not a constructuer (changé avec ES2016)
    -
    +``` -

    Exemples

    +## Exemples -

    Cas de test

    +### Cas de test -
    var obj = {
    +```js
    +var obj = {
       a : "toto",
       b(){ return this.a; }
     };
     console.log(obj.b()); // "toto"
    -
    +``` -

    Noms de propriétés calculés

    +### Noms de propriétés calculés -

    Cette notation raccourcie peut également être utilisée avec des noms de propriétés calculés.

    +Cette notation raccourcie peut également être utilisée avec des noms de propriétés calculés. -
    var bar = {
    +```js
    +var bar = {
       toto0 : function (){return 0;},
       toto1(){return 1;},
       ["toto" + 2](){return 2;},
    @@ -174,43 +183,23 @@ console.log(obj.b()); // "toto"
     
     console.log(bar.toto0()); // 0
     console.log(bar.toto1()); // 1
    -console.log(bar.toto2()); // 2
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ES2016', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES2016')}}Les méthodes génératrices ne doivent pas implémenter la trappe [[Construct]] et déclencher une exception lorsqu'elles sont utilisées avec new.
    {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.method_definitions")}}

    - -

    Voir aussi

    - - +console.log(bar.toto2()); // 2 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| {{SpecName('ES2015', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ES2016', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ES2016')}} | Les méthodes génératrices ne doivent pas implémenter la trappe [[Construct]] et déclencher une exception lorsqu'elles sont utilisées avec `new`. | +| {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.method_definitions")}} + +## Voir aussi + +- [`get`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_get) +- [`set`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_set) +- [Grammaire lexicale de JavaScript](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale) diff --git a/files/fr/web/javascript/reference/functions/rest_parameters/index.md b/files/fr/web/javascript/reference/functions/rest_parameters/index.md index 90984a9267..6597da94f3 100644 --- a/files/fr/web/javascript/reference/functions/rest_parameters/index.md +++ b/files/fr/web/javascript/reference/functions/rest_parameters/index.md @@ -9,24 +9,26 @@ tags: translation_of: Web/JavaScript/Reference/Functions/rest_parameters original_slug: Web/JavaScript/Reference/Fonctions/paramètres_du_reste --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau.

    +Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau. -
    {{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}
    +{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}} -

    Syntaxe

    +## Syntaxe -
    function f(a, b, ...lesArguments) {
    +```js
    +function f(a, b, ...lesArguments) {
       // ...
     }
    -
    +``` -

    Description

    +## Description -

    Si le dernier paramètre nommé fourni à la fonction est préfixé de ... (trois points), il devient un tableau dont les éléments entre 0 (inclus) et lesArguments.length (exclus) sont fournis comme autres arguments à la fonction.

    +Si le dernier paramètre nommé fourni à la fonction est préfixé de `...` (trois points), il devient un tableau dont les éléments entre `0` (inclus) et `lesArguments.length` (exclus) sont fournis comme autres arguments à la fonction. -
    function maFonction(a, b, ...plusDArguments) {
    +```js
    +function maFonction(a, b, ...plusDArguments) {
       console.log("a", a);
       console.log("b", b);
       console.log("plusDArguments", plusDArguments);
    @@ -36,23 +38,23 @@ maFonction("un", "deux", "trois", "quatre", "cinq");
     // affichera ceci dans la console :
     // a, "un"
     // b, "deux"
    -// plusDArguments, ["trois", "quatre", "cinq"]
    +// plusDArguments, ["trois", "quatre", "cinq"] +``` -

    Les différences entre les paramètres du reste et l'objet arguments

    +### Les différences entre les paramètres du reste et l'objet `arguments` -

    Il y a trois principales différences entre les paramètres du reste et l'objet {{jsxref("Fonctions/arguments","arguments")}} :

    +Il y a trois principales différences entre les paramètres du reste et l'objet {{jsxref("Fonctions/arguments","arguments")}} : -
      -
    • les paramètres du reste sont uniquement ceux qui ne possèdent pas de noms à part entière (autrement dit ceux qui ne sont pas formellement définis dans l'expression de fonction), l'objet arguments contient chaque argument passé à la fonction
    • -
    • l'objet arguments n'est pas, à strictement parler, un tableau. Le paramètre représentant les arguments restant est une instance d'{{jsxref("Array","Array")}} à laquelle on peut appliquer directement des méthodes comme {{jsxref("Array/sort","sort")}}, {{jsxref("Array/map","map")}}, {{jsxref("Array/forEach","forEach")}} ou {{jsxref("Array/pop","pop")}}
    • -
    • l'objet arguments possède des fonctionnalités spécifiques (comme, par exemple, la propriété callee)
    • -
    +- les paramètres du reste sont uniquement ceux qui ne possèdent pas de noms à part entière (autrement dit ceux qui ne sont pas formellement définis dans l'expression de fonction), l'objet `arguments` contient chaque argument passé à la fonction +- l'objet `arguments` n'est pas, à strictement parler, un tableau. Le paramètre représentant les arguments restant est une instance d'{{jsxref("Array","Array")}} à laquelle on peut appliquer directement des méthodes comme {{jsxref("Array/sort","sort")}}, {{jsxref("Array/map","map")}}, {{jsxref("Array/forEach","forEach")}} ou {{jsxref("Array/pop","pop")}} +- l'objet `arguments` possède des fonctionnalités spécifiques (comme, par exemple, la propriété `callee`) -

    Convertir arguments en un tableau

    +### Convertir `arguments` en un tableau -

    Ces paramètres ont été introduits afin de réduire le code passe-partout souvent induit par les arguments.

    +Ces paramètres ont été introduits afin de réduire le code passe-partout souvent induit par les arguments. -
    // Avant les paramètres du reste, on observait souvent ce style de code :
    +```js
    +// Avant les paramètres du reste, on observait souvent ce style de code :
     function f(a, b){
       var args = Array.prototype.slice.call(arguments, f.length);
       // ou encore
    @@ -71,36 +73,40 @@ function f(...args) {
       var tabNormal = args;
       var premier = tabNormal.shift();
     }
    -
    +``` -

    La décomposition sur les paramètres du reste

    +### La décomposition sur les paramètres du reste -

    On peut également décomposer les paramètres du reste en variables distinctes :

    +On peut également décomposer les paramètres du reste en variables distinctes : -
    function f(...[a, b, c]) {
    +```js
    +function f(...[a, b, c]) {
       return a + b + c;
     }
     
     f(1);          // NaN (b et c valent undefined)
     f(1, 2, 3);    // 6
     f(1, 2, 3, 4); // 6, le dernier paramètre n'est pas décomposé
    -
    +``` -

    Vous pouvez également accéder aux éléments des paramètres du reste :

    +Vous pouvez également accéder aux éléments des paramètres du reste : -
    function fun1(...lesArguments) {
    +```js
    +function fun1(...lesArguments) {
         console.log("valeur", lesArguments[0][0]);
     }
     
     fun1([5, 2], [5, 4]); // 5
     fun1([8, 2]); // 8
    -fun1([9, 6, 7]); // 9
    +fun1([9, 6, 7]); // 9 +``` -

    Exemples

    +## Exemples -

    S'il n'y a qu'un seul argument qui est décomposé par la syntaxe, la valeur sera toujours un tableau :

    +S'il n'y a qu'un seul argument qui est décomposé par la syntaxe, la valeur sera toujours un tableau : -
    function maFonction(a, b, ...autres);
    +```js
    +function maFonction(a, b, ...autres);
       console.log(a);
       console.log(b);
       console.log(autres);
    @@ -111,11 +117,12 @@ maFonction("un", "deux", "trois");
     // "un"
     // "deux"
     // ["trois"]
    -
    +``` -

    De même, s'il n'y a pas suffisamment d'arguments, ce sera un tableau vide :

    +De même, s'il n'y a pas suffisamment d'arguments, ce sera un tableau vide : -
    function maFonction(a, b, ...autres);
    +```js
    +function maFonction(a, b, ...autres);
       console.log(a);
       console.log(b);
       console.log(autres);
    @@ -125,22 +132,25 @@ maFonction("un", "deux");
     // affichera ceci dans la console
     // "un"
     // "deux"
    -// []
    +// [] +``` -

    lesArguments est un tableau et dispose donc d'une propriété length permettant de compter ses éléments :

    +`lesArguments` est un tableau et dispose donc d'une propriété `length` permettant de compter ses éléments : -
    function fun1(...lesArguments) {
    +```js
    +function fun1(...lesArguments) {
       console.log(lesArguments.length);
     }
     
     fun1();  // 0
     fun1(5); // 1
     fun1(5, 6, 7); // 3
    -
    +``` -

    Dans l'exemple qui suit, on utilise le paramètre Rest pour collecter les arguments après le premier pour les multiplier par le premier :

    +Dans l'exemple qui suit, on utilise le paramètre Rest pour collecter les arguments après le premier pour les multiplier par le premier : -
    function multiplier(facteur, ...lesArguments) {
    +```js
    +function multiplier(facteur, ...lesArguments) {
       return lesArguments.map(function (element) {
         return facteur * element;
       });
    @@ -148,11 +158,12 @@ fun1(5, 6, 7); // 3
     
     var arr = multiplier(2, 1, 2, 3);
     console.log(arr); // [2, 4, 6]
    -
    +``` -

    L'exemple qui suit illustre comment on peut utiliser des méthodes de Array sur le paramètre Rest mais pas sur l'objet arguments :

    +L'exemple qui suit illustre comment on peut utiliser des méthodes de `Array` sur le paramètre Rest mais pas sur l'objet `arguments` : -
    function trierParamRest(...lesArguments) {
    +```js
    +function trierParamRest(...lesArguments) {
       var argumentsTriés = lesArguments.sort();
       return argumentsTriés;
     }
    @@ -166,51 +177,35 @@ function trierArguments() {
     
     // renvoie une exception TypeError: arguments.sort n'est pas une function
     console.log(trierArguments(5,3,7,1));
    -
    +``` -

    Pour utiliser les méthodes propres aux instances d'Array sur l'objet arguments, il est nécessaire de le convertir.

    +Pour utiliser les méthodes propres aux instances d'`Array` sur l'objet `arguments`, il est nécessaire de le convertir. -
    function trierAguments() {
    +```js
    +function trierAguments() {
       var args = Array.from(arguments);
       var argumentsTriés = args.sort();
       return argumentsTriés;
     }
     console.log(trierArguments(5, 3, 7, 1)); // [1, 3, 5, 7]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.rest_parameters")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.rest_parameters")}} + +## Voir aussi + +- L'objet {{jsxref("Fonctions/arguments","arguments")}} +- {{jsxref("Array","Array")}} +- {{jsxref("Fonctions","Les fonctions et leurs portées","",1)}} +- {{jsxref("Opérateurs/Syntaxe_décomposition","L'opérateur de décomposition","",1)}} +- [Proposition originale sur ecmascript.org](https://wiki.ecmascript.org/doku.php?id=harmony:rest_parameters) (en anglais) +- [JavaScript arguments object and beyond](https://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/) (article en anglais) diff --git a/files/fr/web/javascript/reference/functions/set/index.md b/files/fr/web/javascript/reference/functions/set/index.md index 2e7778875e..4ef288d7bc 100644 --- a/files/fr/web/javascript/reference/functions/set/index.md +++ b/files/fr/web/javascript/reference/functions/set/index.md @@ -9,82 +9,81 @@ tags: translation_of: Web/JavaScript/Reference/Functions/set original_slug: Web/JavaScript/Reference/Fonctions/set --- -
    {{jsSidebar("Functions")}}
    +{{jsSidebar("Functions")}} -

    La syntaxe set permet de lier une propriété d'un objet à une fonction qui sera appelée à chaque tentative de modification de cette propriété.

    +La syntaxe **`set`** permet de lier une propriété d'un objet à une fonction qui sera appelée à chaque tentative de modification de cette propriété. -
    {{EmbedInteractiveExample("pages/js/functions-setter.html")}}
    +{{EmbedInteractiveExample("pages/js/functions-setter.html")}} -

    Syntaxe

    +## Syntaxe -
    {set prop(val) { . . .}}
    -{set [expression](val) { . . .}}
    + {set prop(val) { . . .}} + {set [expression](val) { . . .}} -

    Paramètres

    +### Paramètres -
    -
    prop
    -
    Le nom de la propriété à lier à la fonction.
    -
    val
    -
    Un alias pour la variable qui contient la valeur qu'on souhaiterait affecter à prop.
    -
    expression
    -
    Avec ECMAScript 2015, il est également possible d'utiliser des expressions pour utiliser un nom de propriété calculé à lier à la fonction.
    -
    +- `prop` + - : Le nom de la propriété à lier à la fonction. +- `val` + - : Un alias pour la variable qui contient la valeur qu'on souhaiterait affecter à `prop.` +- `expression` + - : Avec ECMAScript 2015, il est également possible d'utiliser des expressions pour utiliser un nom de propriété calculé à lier à la fonction. -

    Description

    +## Description -

    En JavaScript, un mutateur (ou setter en anglais) peut être utiisé afin d'exécuter une fonction à chaque fois qu'on souhaite modifier la valeur d'une propriété donnée. La plupart du temps, les mutateurs sont utilisés avec les accesseurs (getters) afin de créer une pseudo-propriété. Il n'est pas possible d'avoir à la fois un mutateur et une valeur donnée pour une même propriété.

    +En JavaScript, un mutateur (ou _setter_ en anglais) peut être utiisé afin d'exécuter une fonction à chaque fois qu'on souhaite modifier la valeur d'une propriété donnée. La plupart du temps, les mutateurs sont utilisés avec les accesseurs (_getters_) afin de créer une pseudo-propriété. Il n'est pas possible d'avoir à la fois un mutateur et une valeur donnée pour une même propriété. -

    On notera que set :

    +On notera que `set` : -
    - -
    +- peut avoir un identifiant qui est soit un nombre soit une chaîne de caractères +- doit avoir exactement un paramètre (voir l'article « [Incompatible ES5 change: literal getter and setter functions must now have exactly zero or one arguments](https://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/) » (en anglais) pour plus d'informations) +- ne doit pas apparaître dans un littéral objet qui possède un autre `set` ou une autre propriété avec la même clé : + ( `{ set x(v) { }, set x(v) { } }` et `{ x: ..., set x(v) { } }` seront interdits) -

    On peut retirer un mutateur d'un objet grâce à l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}}.

    +On peut retirer un mutateur d'un objet grâce à l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}}. -

    Exemples

    +## Exemples -

    Définir un mutateur sur de nouveaux objets avec un littéral objet

    +### Définir un mutateur sur de nouveaux objets avec un littéral objet -

    Dans l'exemple qui suit, on définit une pseudo-propriété courant pour un objet o qui, lorsqu'elle recevra une valeur, mettra à jour la propriété log avec la valeur reçue :

    +Dans l'exemple qui suit, on définit une pseudo-propriété `courant` pour un objet `o` qui, lorsqu'elle recevra une valeur, mettra à jour la propriété `log` avec la valeur reçue : -
    var o = {
    +```js
    +var o = {
       set courant (str) {
         this.log[this.log.length] = str;
       },
       log: []
     }
    -
    +``` -

    On notera que courant n'est pas défini. Toute tentative pour y accéder renverra undefined.

    +On notera que `courant` n'est pas défini. Toute tentative pour y accéder renverra `undefined`. -

    Supprimer un mutateur grâce à l'opérateur delete

    +### Supprimer un mutateur grâce à l'opérateur `delete` -

    Si on souhaite retirer un mutateur, on peut simplement utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}} :

    +Si on souhaite retirer un mutateur, on peut simplement utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_delete","delete")}} : -
    delete o.courant;
    -
    +```js +delete o.courant; +``` -

    Définir un mutateur sur un objet existant avec defineProperty

    +### Définir un mutateur sur un objet existant avec `defineProperty` -

    On peut également ajouter un mutateur sur un objet d'ores et déjà créé. Pour cela, on utilisera la méthode {{jsxref("Object.defineProperty()")}}.

    +On peut également ajouter un mutateur sur un objet d'ores et déjà créé. Pour cela, on utilisera la méthode {{jsxref("Object.defineProperty()")}}. -
    var o = { a:0 };
    +```js
    +var o = { a:0 };
     
     Object.defineProperty(o, "b", { set: function (x) { this.a = x / 2; } });
     
     o.b = 10; // On utilise le setter, qui affecte 10 / 2 (5) à 'a'
    -console.log(o.a) // 5
    +console.log(o.a) // 5 +``` -

    Utiliser un nom de propriété calculé

    +### Utiliser un nom de propriété calculé -
    var expr = "toto";
    +```js
    +var expr = "toto";
     
     var obj = {
       bidule: "truc",
    @@ -94,46 +93,25 @@ var obj = {
     console.log(obj.bidule); // "truc"
     obj.toto = "bidule";      // le mutateur est utilisé
     console.log(obj.bidule); // "bidule"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}}{{Spec2('ES5.1')}}Définition initiale
    {{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES6')}}Ajout des noms de propriétés calculés
    {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.functions.set")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Fonctions/get","get")}}
    • -
    • {{jsxref("Opérateurs/L_opérateur_delete","delete")}}
    • -
    • {{jsxref("Object.defineProperty()")}}
    • -
    • {{jsxref("Object.defineGetter", "__defineGetter__")}}
    • -
    • {{jsxref("Object.defineSetter", "__defineSetter__")}}
    • -
    • Définir des accesseurs et des mutateurs, dans le Guide JavaScript
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------- | +| {{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}} | {{Spec2('ES5.1')}} | Définition initiale | +| {{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ES6')}} | Ajout des noms de propriétés calculés | +| {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.set")}} + +## Voir aussi + +- {{jsxref("Fonctions/get","get")}} +- {{jsxref("Opérateurs/L_opérateur_delete","delete")}} +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.defineGetter", "__defineGetter__")}} +- {{jsxref("Object.defineSetter", "__defineSetter__")}} +- [Définir des accesseurs et des mutateurs](/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets#D.C3.A9finir_des_getters_et_setters), dans le Guide JavaScript diff --git a/files/fr/web/javascript/reference/global_objects/aggregateerror/index.md b/files/fr/web/javascript/reference/global_objects/aggregateerror/index.md index 408d49a007..c649d30c9a 100644 --- a/files/fr/web/javascript/reference/global_objects/aggregateerror/index.md +++ b/files/fr/web/javascript/reference/global_objects/aggregateerror/index.md @@ -10,43 +10,41 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/AggregateError original_slug: Web/JavaScript/Reference/Objets_globaux/AggregateError --- -
    {{JSRef}}
    +{{JSRef}} -

    Un objet AggregateError représente une erreur lorsque plusieurs erreurs doivent être agrégées en une seule. Ce type d'exception est levée lorsque plusieurs erreurs sont rapportées par une opération, par exemple avec {{JSxRef("Promise.any()")}} lorsque l'ensemble des promesses qui lui sont passées échouent.

    +Un objet **`AggregateError`** représente une erreur lorsque plusieurs erreurs doivent être agrégées en une seule. Ce type d'exception est levée lorsque plusieurs erreurs sont rapportées par une opération, par exemple avec {{JSxRef("Promise.any()")}} lorsque l'ensemble des promesses qui lui sont passées échouent. -

    Constructeur

    +## Constructeur -
    -
    AggregateError()
    -
    Crée un nouvel objet AggregateError.
    -
    +- [`AggregateError()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/AggregateError/AggregateError) + - : Crée un nouvel objet `AggregateError`. -

    Propriétés des instances

    +## Propriétés des instances -
    -
    {{JSxRef("Error.prototype.message", "AggregateError.prototype.message")}}
    -
    Le message d'erreur. La valeur par défaut est "".
    -
    {{JSxRef("Error.prototype.name", "AggregateError.prototype.name")}}
    -
    Le nom de l'erreur. La valeur par défaut est "AggregateError".
    -
    +- {{JSxRef("Error.prototype.message", "AggregateError.prototype.message")}} + - : Le message d'erreur. La valeur par défaut est `""`. +- {{JSxRef("Error.prototype.name", "AggregateError.prototype.name")}} + - : Le nom de l'erreur. La valeur par défaut est `"AggregateError"`. -

    Exemples

    +## Exemples -

    Intercepter une erreur AggregateError

    +### Intercepter une erreur `AggregateError` -
    Promise.any([
    +```js
    +Promise.any([
       Promise.reject(new Error("une erreur")),
    -]).catch(e => {
    +]).catch(e => {
       console.log(e instanceof AggregateError); // true
       console.log(e.message);                   // "All Promises rejected"
       console.log(e.name);                      // "AggregateError"
       console.log(e.errors);                    // [ Error: "une erreur" ]
     });
    -
    +``` -

    Créer un objet AggregateError

    +### Créer un objet `AggregateError` -
    try {
    +```js
    +try {
       throw new AggregateError([
         new Error("une erreur"),
       ], 'Coucou');
    @@ -56,29 +54,18 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/AggregateError
       console.log(e.name);                      // "AggregateError"
       console.log(e.errors);                    // [ Error: "une erreur" ]
     }
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    Spécification
    {{SpecName('Promise.any', '#sec-aggregate-error-object-structure', 'AggregateError')}}
    +| Spécification | +| -------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('Promise.any', '#sec-aggregate-error-object-structure', 'AggregateError')}} | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.AggregateError")}}

    +{{Compat("javascript.builtins.AggregateError")}} -

    Voir

    +## Voir -
      -
    • {{JSxRef("Error")}}
    • -
    +- {{JSxRef("Error")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/@@iterator/index.md b/files/fr/web/javascript/reference/global_objects/array/@@iterator/index.md index 44665dcba8..c2ae826291 100644 --- a/files/fr/web/javascript/reference/global_objects/array/@@iterator/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/@@iterator/index.md @@ -12,23 +12,24 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator original_slug: Web/JavaScript/Reference/Objets_globaux/Array/@@iterator --- -
    {{JSRef}}
    +{{JSRef}} -

    La valeur initiale de la propriété @@iterator correspond à la valeur initiale fournie par l'itérateur {{jsxref("Array.prototype.values()", "values")}}.

    +La valeur initiale de la propriété **`@@iterator`** correspond à la valeur initiale fournie par l'itérateur {{jsxref("Array.prototype.values()", "values")}}. -

    Syntaxe

    +## Syntaxe -
    arr[Symbol.iterator]()
    + arr[Symbol.iterator]() -

    Valeur de retour

    +### Valeur de retour -

    La première valeur fournie par {{jsxref("Array.prototype.values()","values()")}}. Si on utilise arr[Symbol.iterator] (sans les parenthèses) le navigateur renverra par défaut la fonction {{jsxref("Array.prototype.values()", "values()")}}.

    +La première valeur fournie par {{jsxref("Array.prototype.values()","values()")}}. Si on utilise `arr[Symbol.iterator]` (sans les parenthèses) le navigateur renverra par défaut la fonction {{jsxref("Array.prototype.values()", "values()")}}. -

    Exemples

    +## Exemples -

    Parcourir un tableau avec une boucle for...of

    +### Parcourir un tableau avec une boucle `for...of` -
    var arr = ['w', 'y', 'k', 'o', 'p'];
    +```js
    +var arr = ['w', 'y', 'k', 'o', 'p'];
     var eArr  = arr[Symbol.iterator]();
     // il est nécessaire que l'environnement supporte
     // les boucles for..of et les variables
    @@ -36,54 +37,36 @@ var eArr  = arr[Symbol.iterator]();
     for (let letter of eArr) {
       console.log(letter);
     }
    -
    +``` -

    Parcourir un tableau avec next

    +### Parcourir un tableau avec `next` -
    var arr = ['w', 'y', 'k', 'o', 'p'];
    +```js
    +var arr = ['w', 'y', 'k', 'o', 'p'];
     var eArr = arr[Symbol.iterator]();
     console.log(eArr.next().value); // w
     console.log(eArr.next().value); // y
     console.log(eArr.next().value); // k
     console.log(eArr.next().value); // o
     console.log(eArr.next().value); // p
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.@@iterator")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.keys()")}}
    • -
    • {{jsxref("Array.prototype.entries()")}}
    • -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • {{jsxref("Array.prototype.values()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.@@iterator")}} + +## Voir aussi + +- {{jsxref("Array.prototype.keys()")}} +- {{jsxref("Array.prototype.entries()")}} +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} +- {{jsxref("Array.prototype.values()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/@@species/index.md b/files/fr/web/javascript/reference/global_objects/array/@@species/index.md index 8275c5757d..1a4970e0f7 100644 --- a/files/fr/web/javascript/reference/global_objects/array/@@species/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/@@species/index.md @@ -10,66 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species original_slug: Web/JavaScript/Reference/Objets_globaux/Array/@@species --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété d'accesseur Array[@@species] renvoie le constructeur Array.

    +La propriété d'accesseur **`Array[@@species]`** renvoie le constructeur `Array`. -

    Syntaxe

    +## Syntaxe -
    Array[Symbol.species]
    -
    + Array[Symbol.species] -

    Valeur de retour

    +### Valeur de retour -

    Le constructeur {{jsxref("Array")}}.

    +Le constructeur {{jsxref("Array")}}. -

    Description

    +## Description -

    L'accesseur species renvoie le constructeur par défaut pour les objets Array. Les constructeurs des sous-classes peuvent le surcharger afin de modifier l'affectation du constructeur.

    +L'accesseur `species` renvoie le constructeur par défaut pour les objets `Array`. Les constructeurs des sous-classes peuvent le surcharger afin de modifier l'affectation du constructeur. -

    Exemples

    +## Exemples -

    La propriété renvoie le constructeur par défaut, dans le cas des objets Array, c'est le constructeur Array :

    +La propriété renvoie le constructeur par défaut, dans le cas des objets `Array`, c'est le constructeur `Array` : -
    Array[Symbol.species]; // function Array()
    +```js +Array[Symbol.species]; // function Array() +``` -

    Pour un objet dérivé, la valeur de species pour une classe MonArray sera le constructeur de cette classe. Vous pouvez surcharger ce comportement afin de renvoyer le constructeur Array :

    +Pour un objet dérivé, la valeur de `species` pour une classe `MonArray` sera le constructeur de cette classe. Vous pouvez surcharger ce comportement afin de renvoyer le constructeur `Array` : -
    class MonArray extends Array {
    +```js
    +class MonArray extends Array {
       // On surcharge le symbole species
       // pour renvoyer le constructeur Array parent
       static get [Symbol.species]() { return Array; }
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.@@species")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array")}}
    • -
    • {{jsxref("Symbol.species")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.@@species")}} + +## Voir aussi + +- {{jsxref("Array")}} +- {{jsxref("Symbol.species")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/@@unscopables/index.md b/files/fr/web/javascript/reference/global_objects/array/@@unscopables/index.md index c0f9883779..0b5f7a4aee 100644 --- a/files/fr/web/javascript/reference/global_objects/array/@@unscopables/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/@@unscopables/index.md @@ -10,27 +10,28 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables original_slug: Web/JavaScript/Reference/Objets_globaux/Array/@@unscopables --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété symbol @@unscopable contient les noms des propriétés qui ne faisait pas partie du standard ECMAScript avant ES2015 (ES6). Ces propriétés sont exclues lors de liaisons effectuée via l'instruction with.

    +La propriété symbol **`@@unscopable`** contient les noms des propriétés qui ne faisait pas partie du standard ECMAScript avant ES2015 (ES6). Ces propriétés sont exclues lors de liaisons effectuée via l'instruction [`with`](/fr/docs/Web/JavaScript/Reference/Instructions/with). -

    Syntaxe

    +## Syntaxe -
    arr[Symbol.unscopables]
    + arr[Symbol.unscopables] -

    Description

    +## Description -

    Les propriétés natives d'un objet Array qui sont exclues lorsqu'on utilise with sont copyWithin, entries, fill, find, findIndex, includes, keys et values.

    +Les propriétés natives d'un objet `Array` qui sont exclues lorsqu'on utilise `with` sont `copyWithin`, `entries`, `fill`, `find`, `findIndex`, `includes`, `keys` et `values`. -

    Voir la page sur le symbole {{jsxref("Symbol.unscopables")}} pour manipuler unscopables sur des objets personnalisés.

    +Voir la page sur le symbole {{jsxref("Symbol.unscopables")}} pour manipuler `unscopables` sur des objets personnalisés. -

    {{js_property_attributes(0,0,1)}}

    +{{js_property_attributes(0,0,1)}} -

    Exemples

    +## Exemples -

    Le code qui suit fonctionne bien pour ES5 et les versions antérieures. En revanche, pour ECMAScript 2015 (ES6) et les versions ultérieures où la méthode  {{jsxref("Array.prototype.keys()")}} existe, lorsqu'on utilise un environnement créé avec with, "keys" serait désormais la méthode et non la variable. C'est là que le symbole natif @@unscopables Array.prototype[@@unscopables] intervient et empêche d'explorer ces méthodes avec with.

    +Le code qui suit fonctionne bien pour ES5 et les versions antérieures. En revanche, pour ECMAScript 2015 (ES6) et les versions ultérieures où la méthode  {{jsxref("Array.prototype.keys()")}} existe, lorsqu'on utilise un environnement créé avec `with`, `"keys"` serait désormais la méthode et non la variable. C'est là que le symbole natif `@@unscopables` `Array.prototype[@@unscopables]` intervient et empêche d'explorer ces méthodes avec `with`. -
    var keys = [];
    +```js
    +var keys = [];
     
     with(Array.prototype) {
       keys.push("something");
    @@ -38,36 +39,20 @@ with(Array.prototype) {
     
     Object.keys(Array.prototype[Symbol.unscopables]);
     // ["copyWithin", "entries", "fill", "find", "findIndex",
    -//  "includes", "keys", "values"]
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.@@unscopables")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Symbol.unscopables")}}
    • -
    +// "includes", "keys", "values"] +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.@@unscopables")}} + +## Voir aussi + +- {{jsxref("Symbol.unscopables")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/array/index.md b/files/fr/web/javascript/reference/global_objects/array/array/index.md index c00ef0c0b3..c1958d3879 100644 --- a/files/fr/web/javascript/reference/global_objects/array/array/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/array/index.md @@ -9,77 +9,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/Array original_slug: Web/JavaScript/Reference/Objets_globaux/Array/Array --- -
    {{JSRef}}
    +{{JSRef}} -

    Le constructeur Array() permet de créer des objets {{jsxref("Array")}}.

    +Le constructeur **`Array()`** permet de créer des objets {{jsxref("Array")}}. -

    Syntaxe

    +## Syntaxe -
    [element0, element1, ..., elementN]
    +    [element0, element1, ..., elementN]
     
    -new Array(element0, element1[, ...[, elementN]])
    -new Array(longueurTableau)
    + new Array(element0, element1[, ...[, elementN]]) + new Array(longueurTableau) -

    Paramètres

    +### Paramètres -
    -
    elementN
    -
    Un tableau JavaScript est initialisé avec les éléments indiqués à moins qu'un seul argument ne soit passé (cf. longueurTableau ci-après). On notera que ce cas au limite ne s'applique qu'avec le constructeur Array. Si on utilise la forme littérale (avec les crochets), on peut initialiser un tableau avec un seul élément.
    -
    longueurTableau
    -
    Si le seul argument passé au constructeur Array est un entier entre 0 et 2^32-1 (inclus), le constructeur renverra un tableau dont la propriété length vaut ce nombre. Note : le tableau contiendra des éléments vides (à ne pas confondre avec des éléments qui vaudraient undefined). Si l'argument est un autre nombre, une exception {{jsxref("RangeError")}} sera levée.
    -
    +- `elementN` + - : Un tableau JavaScript est initialisé avec les éléments indiqués à moins qu'un seul argument ne soit passé (cf. `longueurTableau` ci-après). On notera que ce cas au limite ne s'applique qu'avec le constructeur `Array`. Si on utilise la forme littérale (avec les crochets), on peut initialiser un tableau avec un seul élément. +- `longueurTableau` + - : Si le seul argument passé au constructeur `Array` est un entier entre 0 et 2^32-1 (inclus), le constructeur renverra un tableau dont la propriété `length` vaut ce nombre. **Note :** le tableau contiendra des éléments vides (à ne pas confondre avec des éléments qui vaudraient `undefined`). Si l'argument est un autre nombre, une exception {{jsxref("RangeError")}} sera levée. -

    Exemples

    +## Exemples -

    Utilisation de la notation littérale

    +### Utilisation de la notation littérale -

    Les tableaux peuvent être créés avec une notation littérale :

    +Les tableaux peuvent être créés avec une notation [littérale](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Litt%C3%A9raux_de_tableaux) : -
    let fruits = ['Pomme', 'Banane'];
    +```js
    +let fruits = ['Pomme', 'Banane'];
     
     console.log(fruits.length); // 2
     console.log(fruits[0]);     // "Pomme"
    -
    +``` -

    Utilisation du constructeur avec un seul paramètre

    +### Utilisation du constructeur avec un seul paramètre -

    On peut créer des tableaux grâce au constructeur avec un seul paramètre numérique. On crée alors un tableau dont la propriété length vaut le nombre passé en argument et dont les éléments sont vides.

    +On peut créer des tableaux grâce au constructeur avec un seul paramètre numérique. On crée alors un tableau dont la propriété `length` vaut le nombre passé en argument et dont les éléments sont vides. -
    let fruits = new Array(2);
    +```js
    +let fruits = new Array(2);
     
     console.log(fruits.length); // 2
     console.log(fruits[0]);     // undefined
    -
    +``` -

    Utilisation du constructeur avec plusieurs paramètres

    +### Utilisation du constructeur avec plusieurs paramètres -

    Si on utilise plus d'un argument, un nouveau tableau ({{jsxref("Array")}}) sera construit avec les éléments passés en arguments.

    +Si on utilise plus d'un argument, un nouveau tableau ({{jsxref("Array")}}) sera construit avec les éléments passés en arguments. -
    let fruits = new Array('Pomme', 'Banane');
    +```js
    +let fruits = new Array('Pomme', 'Banane');
     
     console.log(fruits.length); // 2
     console.log(fruits[0]);     // "Pomme"
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - -
    Spécification
    {{SpecName('ESDraft', '#sec-array-constructor', 'Array constructor')}}
    +| Spécification | +| -------------------------------------------------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-array-constructor', 'Array constructor')}} | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array.Array")}}

    +{{Compat("javascript.builtins.Array.Array")}} -

    Voir aussi

    +## Voir aussi -
      -
    • La classe {{jsxref("Array")}}
    • -
    +- La classe {{jsxref("Array")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/concat/index.md b/files/fr/web/javascript/reference/global_objects/array/concat/index.md index e39788b6a0..3a68c4f55e 100644 --- a/files/fr/web/javascript/reference/global_objects/array/concat/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/concat/index.md @@ -10,63 +10,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat original_slug: Web/JavaScript/Reference/Objets_globaux/Array/concat --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode concat() est utilisée afin de fusionner un ou plusieurs tableaux en les concaténant. Cette méthode ne modifie pas les tableaux existants, elle renvoie un nouveau tableau qui est le résultat de l'opération.

    +La méthode **`concat()`** est utilisée afin de fusionner un ou plusieurs tableaux en les concaténant. Cette méthode ne modifie pas les tableaux existants, elle renvoie un nouveau tableau qui est le résultat de l'opération. -
    {{EmbedInteractiveExample("pages/js/array-concat.html")}}
    +{{EmbedInteractiveExample("pages/js/array-concat.html")}} -

    Syntaxe

    +## Syntaxe -
    let nouveau_tableau = ancien_tableau.concat(valeur1[, valeur2[, ...[, valeurN]]])
    + let nouveau_tableau = ancien_tableau.concat(valeur1[, valeur2[, ...[, valeurN]]]) -

    Paramètres

    +### Paramètres -
    -
    valeurN{{optional_inline}}
    -
    Des tableaux et/ou des valeurs à concaténer dans le nouveau tableau. Si tous les arguments valeurN valent undefined, concat renverra une copie superficielle du tableau sur lequel elle est appelée. Voir ci-après pour plus de détails.
    -
    +- `valeurN`{{optional_inline}} + - : Des tableaux et/ou des valeurs à concaténer dans le nouveau tableau. Si tous les arguments `valeurN` valent `undefined`, `concat` renverra une copie superficielle du tableau sur lequel elle est appelée. Voir ci-après pour plus de détails. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle instance de {{jsxref("Array")}}.

    +Une nouvelle instance de {{jsxref("Array")}}. -

    Description

    +## Description -

    La méthode concat permet de créer un nouveau tableau constitué des éléments de l'objet this sur lequel elle a été appelée, suivis dans l'ordre par, pour chaque paramètre, les éléments de ce paramètre (s'il s'agit d'un tableau) ou le paramètre lui-même (s'il ne s'agit pas d'un tableau). La concaténation ne « déplie » pas les tableaux imbriqués.

    +La méthode `concat` permet de créer un nouveau tableau constitué des éléments de l'objet `this` sur lequel elle a été appelée, suivis dans l'ordre par, pour chaque paramètre, les éléments de ce paramètre (s'il s'agit d'un tableau) ou le paramètre lui-même (s'il ne s'agit pas d'un tableau). La concaténation ne « déplie » pas les tableaux imbriqués. -

    La méthode concat ne modifie pas this ni aucun des tableaux passés en paramètres, mais renvoie une copie qui contient des copies des mêmes éléments combinées que ceux des tableaux originaux. Les éléments des tableaux originaux sont copiés dans le nouveau tableau comme suit :

    +La méthode `concat` ne modifie pas `this` ni aucun des tableaux passés en paramètres, mais renvoie une copie qui contient des copies des mêmes éléments combinées que ceux des tableaux originaux. Les éléments des tableaux originaux sont copiés dans le nouveau tableau comme suit : -
      -
    • Pour les références à des objets (et non les objets eux-mêmes) : concat copie ces références dans le nouveaux tableau. Le tableau original et le nouveau tableau feront référence au même objet. C'est-à-dire que si un objet référencé est modifié, ces changements seront visibles tant dans le nouveau que dans les tableaux originaux.
    • -
    +- Pour les références à des objets (et non les objets eux-mêmes) : `concat` copie ces références dans le nouveaux tableau. Le tableau original et le nouveau tableau feront référence au même objet. C'est-à-dire que si un objet référencé est modifié, ces changements seront visibles tant dans le nouveau que dans les tableaux originaux. -
      -
    • Pour les chaînes, les booléens et les nombres « primitifs » (c'est-à-dire pas les objets {{jsxref("String", "String")}}, {{jsxref("Boolean")}} et {{jsxref("Number", "Number")}}) : concat copie les valeurs des chaînes et des nombres dans le nouveau tableau. (voir Les types de données en JavaScript).
    • -
    + -
    -

    Note : La concaténation n'impactera pas les tableaux originaux. Par la suite, toute opération sur le nouveau tableau n'aura aucun effet sur les tableaux d'origine, et vice versa.

    -
    +- Pour les chaînes, les booléens et les nombres « primitifs » (c'est-à-dire pas les objets {{jsxref("String", "String")}}, {{jsxref("Boolean")}} et {{jsxref("Number", "Number")}}) : `concat` copie les valeurs des chaînes et des nombres dans le nouveau tableau. (voir [Les types de données en JavaScript](/fr/docs/Web/JavaScript/Structures_de_donn%C3%A9es#Les_types_de_donn%C3%A9es)). -

    Exemples

    +> **Note :** La concaténation n'impactera pas les tableaux originaux. Par la suite, toute opération sur le nouveau tableau n'aura aucun effet sur les tableaux d'origine, et vice versa. -

    Concaténer deux tableaux

    +## Exemples -

    Le code qui suit concatène deux tableaux :

    +### Concaténer deux tableaux -
    let alpha = ["a", "b", "c"];
    +Le code qui suit concatène deux tableaux :
    +
    +```js
    +let alpha = ["a", "b", "c"];
     let numerique = [1, 2, 3];
     
     alpha.concat(numerique);
     // donne : ["a", "b", "c", 1, 2, 3]
    -
    +``` -

    Concaténer trois tableaux

    +### Concaténer trois tableaux -

    Le code qui suit concatène trois tableaux :

    +Le code qui suit concatène trois tableaux : -
    let num1 = [1, 2, 3];
    +```js
    +let num1 = [1, 2, 3];
     let num2 = [4, 5, 6];
     let num3 = [7, 8, 9];
     
    @@ -74,25 +70,27 @@ let nums = num1.concat(num2, num3);
     
     console.log(nums);
     // [1, 2, 3, 4, 5, 6, 7, 8, 9]
    -
    +``` -

    Concaténer des valeurs avec un tableau

    +### Concaténer des valeurs avec un tableau -

    Le code qui suit ajoute trois valeurs à un tableau :

    +Le code qui suit ajoute trois valeurs à un tableau : -
    let alpha = ['a', 'b', 'c'];
    +```js
    +let alpha = ['a', 'b', 'c'];
     
     let alphanumerique = alpha.concat(1, [2, 3]);
     
     console.log(alphanumerique);
     // ['a', 'b', 'c', 1, 2, 3]
    -
    +``` -

    Concaténer des tableaux imbriqués

    +### Concaténer des tableaux imbriqués -

    Dans le code qui suit, on concatène deux tableaux qui ont plusieurs dimensions et on illustre la conservation des références :

    +Dans le code qui suit, on concatène deux tableaux qui ont plusieurs dimensions et on illustre la conservation des références : -
    let num1 = [[1]];
    +```js
    +let num1 = [[1]];
     let num2 = [2, [3]];
     
     let nums = num1.concat(num2);
    @@ -104,52 +102,26 @@ console.log(nums);
     num1[0].push(4);
     
     console.log(nums);
    -// affichera [[1, 4], 2, [3]]
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.concat")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.push", "push")}} / {{jsxref("Array.pop", "pop")}} qui permettent d'ajouter/retirer des éléments à partir de la fin du tableau
    • -
    • {{jsxref("Array.unshift", "unshift")}} / {{jsxref("Array.shift", "shift")}} qui permettent d'ajouter/retirer des éléments à partir du début du tableau
    • -
    • {{jsxref("Array.splice", "splice")}} qui permet d'ajouter/retirer des éléments à un endroit donné du tableau
    • -
    • {{jsxref("String.prototype.concat()")}}
    • -
    • {{jsxref("Symbol.isConcatSpreadable")}} (permet de contrôler la façon dont un tableau est ramené à une valeur)
    • -
    +// affichera [[1, 4], 2, [3]] +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.concat")}} + +## Voir aussi + +- {{jsxref("Array.push", "push")}} / {{jsxref("Array.pop", "pop")}} qui permettent d'ajouter/retirer des éléments à partir de la fin du tableau +- {{jsxref("Array.unshift", "unshift")}} / {{jsxref("Array.shift", "shift")}} qui permettent d'ajouter/retirer des éléments à partir du début du tableau +- {{jsxref("Array.splice", "splice")}} qui permet d'ajouter/retirer des éléments à un endroit donné du tableau +- {{jsxref("String.prototype.concat()")}} +- {{jsxref("Symbol.isConcatSpreadable")}} (permet de contrôler la façon dont un tableau est ramené à une valeur) diff --git a/files/fr/web/javascript/reference/global_objects/array/copywithin/index.md b/files/fr/web/javascript/reference/global_objects/array/copywithin/index.md index befc06152e..e28200ab55 100644 --- a/files/fr/web/javascript/reference/global_objects/array/copywithin/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/copywithin/index.md @@ -12,49 +12,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin original_slug: Web/JavaScript/Reference/Objets_globaux/Array/copyWithin --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode copyWithin() effectue une copie superficielle (shallow copy) d'une partie d'un tableau sur ce même tableau et le renvoie, sans modifier sa taille.

    +La méthode **`copyWithin()`** effectue une copie superficielle (_shallow copy_) d'une partie d'un tableau sur ce même tableau et le renvoie, sans modifier sa taille. -
    {{EmbedInteractiveExample("pages/js/array-copywithin.html")}}
    +{{EmbedInteractiveExample("pages/js/array-copywithin.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.copyWithin(cible)
    -arr.copyWithin(cible, début)
    -arr.copyWithin(cible, début, fin)
    -
    + arr.copyWithin(cible) + arr.copyWithin(cible, début) + arr.copyWithin(cible, début, fin) -

    Paramètres

    +### Paramètres -
    -
    cible
    -
    -

    Indice à partir duquel la séquence sera copiée. Si la valeur est négative, cible sera compté à partir de la fin du tableau.

    +- `cible` -

    Si cible est supérieur ou égal à arr.length, rien ne sera copié. Si cible est positionné apès début, la séquence copiée sera réduite pour correspondre à arr.length.

    -
    -
    début {{optional_inline}}
    -
    Indice de début de la séquence a copier. Si la valeur est négative, début sera compté à partir de la fin du tableau. Si début est omis, copyWithin copiera à partir du début du tableau (par défaut 0).
    -
    fin {{optional_inline}}
    -
    Indice de fin de la séquence a copier. copyWithin copie jusqu'à fin (non-inclusif). Si la valeur est négative, end sera compté à partir de la fin du tableau. Si end est omis, copyWithin copiera jusqu'à la fin du tableau (par défaut arr.length).
    -
    + - : Indice à partir duquel la séquence sera copiée. Si la valeur est négative, `cible `sera compté à partir de la fin du tableau. -

    Valeur de retour

    + Si `cible `est supérieur ou égal à `arr.length`, rien ne sera copié. Si `cible` est positionné apès `début`, la séquence copiée sera réduite pour correspondre à `arr.length`. -

    Le tableau modifié par la méthode.

    +- `début` {{optional_inline}} + - : Indice de début de la séquence a copier. Si la valeur est négative, `début` sera compté à partir de la fin du tableau. Si `début` est omis, `copyWithin` copiera à partir du début du tableau (par défaut 0). +- `fin` {{optional_inline}} + - : Indice de fin de la séquence a copier. `copyWithin` copie jusqu'à `fin` (non-inclusif). Si la valeur est négative, `end` sera compté à partir de la fin du tableau. Si `end` est omis, `copyWithin` copiera jusqu'à la fin du tableau (par défaut `arr.length`). -

    Description

    +### Valeur de retour -

    La fonction copyWithin() fonctionne de la même façon que memmove en C/C++. C'est une méthode très performante pour décaler les données d'un {{jsxref("Array")}} ou d'un {{jsxref("TypedArray")}} (dans ce cas, on pourra utiliser {{jsxref("TypedArray/copyWithin", "TypedArray.copyWithin()")}}). La séquence est copiée et collée en une opération. La séquence collée aura les valeurs copiées même si les zones de copiage et de collage se chevauchent.

    +Le tableau modifié par la méthode. -

    La fonction copyWithin() est intentionnellement générique, il n'est pas nécessaire que this soit un objet {{jsxref("Array", "Array")}}.

    +## Description -

    De plus, copyWithin() est une méthode qui modifie l'objet courant. Elle ne modifie pas la longueur de this, mais change son contenu et créé de nouvelles propriétés si nécessaire.

    +La fonction `copyWithin()` fonctionne de la même façon que `memmove` en C/C++. C'est une méthode très performante pour décaler les données d'un {{jsxref("Array")}} ou d'un {{jsxref("TypedArray")}} (dans ce cas, on pourra utiliser {{jsxref("TypedArray/copyWithin", "TypedArray.copyWithin()")}}). La séquence est copiée et collée en une opération. La séquence collée aura les valeurs copiées même si les zones de copiage et de collage se chevauchent. -

    Exemples

    +La fonction `copyWithin()` est intentionnellement générique, il n'est pas nécessaire que `this` soit un objet {{jsxref("Array", "Array")}}. -
    [1, 2, 3, 4, 5].copyWithin(-2);
    +De plus, `copyWithin()` est une méthode qui modifie l'objet courant. Elle ne modifie pas la longueur de `this`, mais change son contenu et créé de nouvelles propriétés si nécessaire.
    +
    +## Exemples
    +
    +```js
    +[1, 2, 3, 4, 5].copyWithin(-2);
     // [1, 2, 3, 1, 2]
     
     [1, 2, 3, 4, 5].copyWithin(0, 3);
    @@ -78,13 +76,14 @@ i32a.copyWithin(0, 2);
     // Sur les plates-formes qui ne supportent pas encore ES2015 :
     [].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
     // Int32Array [4, 2, 3, 4, 5]
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette méthode a été ajoutée à la spécification ECMAScript 6 et peut ne pas être utilisable dans tous les environnements. Voici un fragment de code qui permet d'émuler cette méthode :

    +Cette méthode a été ajoutée à la spécification ECMAScript 6 et peut ne pas être utilisable dans tous les environnements. Voici un fragment de code qui permet d'émuler cette méthode : -
    if (!Array.prototype.copyWithin) {
    +```js
    +if (!Array.prototype.copyWithin) {
       Object.defineProperty(Array.prototype, 'copyWithin', {
         value: function(target, start/*, end*/) {
         // Steps 1-2.
    @@ -95,27 +94,27 @@ i32a.copyWithin(0, 2);
         var O = Object(this);
     
         // Steps 3-5.
    -    var len = O.length >>> 0;
    +    var len = O.length >>> 0;
     
         // Steps 6-8.
    -    var relativeTarget = target >> 0;
    +    var relativeTarget = target >> 0;
     
    -    var to = relativeTarget < 0 ?
    +    var to = relativeTarget < 0 ?
           Math.max(len + relativeTarget, 0) :
           Math.min(relativeTarget, len);
     
         // Steps 9-11.
    -    var relativeStart = start >> 0;
    +    var relativeStart = start >> 0;
     
    -    var from = relativeStart < 0 ?
    +    var from = relativeStart < 0 ?
           Math.max(len + relativeStart, 0) :
           Math.min(relativeStart, len);
     
         // Steps 12-14.
         var end = arguments[2];
    -    var relativeEnd = end === undefined ? len : end >> 0;
    +    var relativeEnd = end === undefined ? len : end >> 0;
     
    -    var final = relativeEnd < 0 ?
    +    var final = relativeEnd < 0 ?
           Math.max(len + relativeEnd, 0) :
           Math.min(relativeEnd, len);
     
    @@ -125,14 +124,14 @@ i32a.copyWithin(0, 2);
         // Steps 16-17.
         var direction = 1;
     
    -    if (from < to && to < (from + count)) {
    +    if (from < to && to < (from + count)) {
           direction = -1;
           from += count - 1;
           to += count - 1;
         }
     
         // Step 18.
    -    while (count > 0) {
    +    while (count > 0) {
           if (from in O) {
             O[to] = O[from];
           } else {
    @@ -150,43 +149,21 @@ i32a.copyWithin(0, 2);
       configurable: true,
       writable: true
       });
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ES2016', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ES2016')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.copyWithin")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array", "Array")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ES2016', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}} | {{Spec2('ES2016')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.copyWithin")}} + +## Voir aussi + +- {{jsxref("Array", "Array")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/entries/index.md b/files/fr/web/javascript/reference/global_objects/array/entries/index.md index 5ab8acec51..9bfa9f7ca7 100644 --- a/files/fr/web/javascript/reference/global_objects/array/entries/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/entries/index.md @@ -11,38 +11,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries original_slug: Web/JavaScript/Reference/Objets_globaux/Array/entries --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode entries() renvoie un nouvel objet de type  Array Iterator qui contient le couple clef/valeur pour chaque éléments du tableau.

    +La méthode **`entries()`** renvoie un nouvel objet de type  **`Array Iterator`** qui contient le couple clef/valeur pour chaque éléments du tableau. -
    {{EmbedInteractiveExample("pages/js/array-entries.html")}}
    +{{EmbedInteractiveExample("pages/js/array-entries.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.entries()
    + arr.entries() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet qui est un itérateur pour {{jsxref("Array")}}.

    +Un nouvel objet qui est un itérateur pour {{jsxref("Array")}}. -

    Exemples

    +## Exemples -

    Parcourir un tableau avec ses index et éléments

    +### Parcourir un tableau avec ses index et éléments -
    const arr = ["a", "b", "c"];
    +```js
    +const arr = ["a", "b", "c"];
     for (const [index, element] of arr.entries()) {
       console.log(index, element);
     }
     // 0 "a"
     // 1 "b"
     // 2 "c"
    -
    +``` -

    Boucle for...of

    +### Boucle `for...of` -

    On peut avoir le même résultat en utilisant une boucle for...of :

    +On peut avoir le même résultat en utilisant une boucle [for...of](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) : -
    var arr = ['a', 'b', 'c'];
    +```js
    +var arr = ['a', 'b', 'c'];
     var eArr = arr.entries();
     
     for (let e of eArr) {
    @@ -51,42 +53,25 @@ for (let e of eArr) {
     // [0, 'a']
     // [1, 'b']
     // [2, 'c']
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.entries")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.keys()")}}
    • -
    • {{jsxref("Array.prototype.values()")}}
    • -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • for...of
    • -
    • Les protocoles d'itération
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.entries', 'Array.prototype.entries')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.entries")}} + +## Voir aussi + +- {{jsxref("Array.prototype.keys()")}} +- {{jsxref("Array.prototype.values()")}} +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} +- [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) +- [Les protocoles d'itération](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration) diff --git a/files/fr/web/javascript/reference/global_objects/array/every/index.md b/files/fr/web/javascript/reference/global_objects/array/every/index.md index 65dfaf3c44..030fb9e115 100644 --- a/files/fr/web/javascript/reference/global_objects/array/every/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/every/index.md @@ -12,84 +12,83 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/every original_slug: Web/JavaScript/Reference/Objets_globaux/Array/every --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode every() permet de tester si tous les éléments d'un tableau vérifient une condition donnée par une fonction en argument. Cette méthode renvoie un booléen pour le résultat du test.

    +La méthode **`every()`** permet de tester si tous les éléments d'un tableau vérifient une condition donnée par une fonction en argument. Cette méthode renvoie un booléen pour le résultat du test. -
    -

    Note : Cette méthode renvoie true pour n'importe quelle condition utilisée sur un tableau vide.

    -
    +> **Note :** Cette méthode renvoie `true` pour n'importe quelle condition utilisée sur un tableau vide. -
    {{EmbedInteractiveExample("pages/js/array-every.html")}}
    +{{EmbedInteractiveExample("pages/js/array-every.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.every(callback[, thisArg])
    + arr.every(callback[, thisArg]) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction sur laquelle on souhaite tester chaque élément du tableau. Elle prend en compte trois arguments : -
    -
    currentValue
    -
    La valeur de l'élément à traiter.
    -
    index{{Optional_inline}}
    -
    L'indice de l'élément du tableau à tester.
    -
    array{{Optional_inline}}
    -
    Le tableau sur lequel on a appelé la méthode every.
    -
    -
    -
    thisArg{{Optional_inline}}
    -
    Paramètre optionnel. La valeur à utiliser pour this lors de l'exécution de la fonction.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction sur laquelle on souhaite tester chaque élément du tableau. Elle prend en compte trois arguments : -

    true si la fonction de rappel obtient une valeur équivalente à vrai (truthy) pour chaque élément du tableau et false sinon.

    + - `currentValue` + - : La valeur de l'élément à traiter. + - `index`{{Optional_inline}} + - : L'indice de l'élément du tableau à tester. + - `array`{{Optional_inline}} + - : Le tableau sur lequel on a appelé la méthode `every`. -

    Description

    +- `thisArg`{{Optional_inline}} + - : Paramètre optionnel. La valeur à utiliser pour `this` lors de l'exécution de la fonction. -

    La méthode every exécute la fonction callback fournie sur chacun des éléments contenus dans le tableau jusqu'à ce qu'un élément pour lequel la fonction callback renvoie une valeur fausse (falsy value) soit trouvé. Si un tel élément est trouvé, la méthode every renvoie directement false. Sinon, si la fonction callback a renvoyé une valeur vraie pour tous les éléments, la méthode every renverra true. La fonction callback n'est appelée que pour les indices du tableau pour lesquels il existe des valeurs affectées. Elle n'est pas appelée pour les indices supprimés ou ceux qui n'ont jamais reçu de valeur.

    +### Valeur de retour -

    callback est appelée avec trois arguments : la valeur de l'élément en cours de traitement, l'indice de l'élément dans le tableau et le tableau qui est parcouru.

    +`true` si la fonction de rappel obtient une valeur équivalente à vrai (_truthy_) pour chaque élément du tableau et `false` sinon. -

    Si un paramètre thisArg est fourni à la méthode every, ce sera la valeur this de la fonction callback. Si ce paramètre n'est pas fourni, la valeur undefined sera utilisée comme valeur pour this. La valeur this « définitivement » utilisée par la fonction callback est déterminée selon les règles usuelles de détermination de this.

    +## Description -

    every ne modifie pas le tableau sur lequel elle a été appelée.

    +La méthode `every` exécute la fonction `callback` fournie sur chacun des éléments contenus dans le tableau jusqu'à ce qu'un élément pour lequel la fonction `callback` renvoie une valeur fausse (_falsy value_) soit trouvé. Si un tel élément est trouvé, la méthode `every` renvoie directement `false`. Sinon, si la fonction `callback` a renvoyé une valeur vraie pour tous les éléments, la méthode `every` renverra `true`. La fonction `callback` n'est appelée que pour les indices du tableau pour lesquels il existe des valeurs affectées. Elle n'est pas appelée pour les indices supprimés ou ceux qui n'ont jamais reçu de valeur. -

    Les éléments traités par la méthode every sont définis lors du premier appel à callback. Les éléments ajoutés au tableau après que l'appel à every ait commencé ne seront pas traités par la fonction callback. Si des éléments du tableau sont modifiés, la valeur passée à la fonction callback sera celle qu'ils ont au moment où every les traitera. Les éléments qui sont supprimés ne sont pas traités par la fonction every.

    +`callback` est appelée avec trois arguments : la valeur de l'élément en cours de traitement, l'indice de l'élément dans le tableau et le tableau qui est parcouru. -

    every agit de la même façon que le quantificateur mathématiques « pour tous », notamment pour le cas au limite d'un tableau vide pour lequel elle renvoie true (on dit qu'il est trivialement vrai que tous les éléments d'un ensemble vide respectent n'importe quelle condition).

    +Si un paramètre `thisArg` est fourni à la méthode `every`, ce sera la valeur `this` de la fonction `callback`. Si ce paramètre n'est pas fourni, la valeur `undefined` sera utilisée comme valeur pour `this`. La valeur `this` « définitivement » utilisée par la fonction `callback` est déterminée selon [les règles usuelles de détermination de `this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this). -

    Exemples

    +`every` ne modifie pas le tableau sur lequel elle a été appelée. -

    Tester la valeur des éléments d'un tableau

    +Les éléments traités par la méthode `every` sont définis lors du premier appel à `callback`. Les éléments ajoutés au tableau après que l'appel à `every` ait commencé ne seront pas traités par la fonction `callback`. Si des éléments du tableau sont modifiés, la valeur passée à la fonction `callback` sera celle qu'ils ont au moment où `every` les traitera. Les éléments qui sont supprimés ne sont pas traités par la fonction `every`. -

    Dans l'exemple suivant, on teste si tous les éléments du tableau sont supérieurs à 10.

    +`every` agit de la même façon que le quantificateur mathématiques « pour tous », notamment pour le cas au limite d'un tableau vide pour lequel elle renvoie `true` (on dit qu'il est trivialement vrai que tous les éléments d'un [ensemble vide](https://fr.wikipedia.org/wiki/Ensemble_vide#Difficult.C3.A9s_de_la_notion_d.27ensemble_vide) respectent n'importe quelle condition). -
    function estAssezGrand(element, index, array) {
    -  return element >= 10;
    +## Exemples
    +
    +### Tester la valeur des éléments d'un tableau
    +
    +Dans l'exemple suivant, on teste si tous les éléments du tableau sont supérieurs à 10.
    +
    +```js
    +function estAssezGrand(element, index, array) {
    +  return element >= 10;
     }
     [12, 5, 8, 130, 44].every(estAssezGrand);   // false
     [12, 54, 18, 130, 44].every(estAssezGrand); // true
    -
    +``` -

    Utiliser les fonctions fléchées avec every

    +### Utiliser les fonctions fléchées avec `every` -

    {{jsxref("Fonctions/Fonctions_fl%C3%A9ch%C3%A9es","Les fonctions fléchées","","1")}} permettent d'utiliser une syntaxe plus concise pour effectuer le même test.

    +{{jsxref("Fonctions/Fonctions_fl%C3%A9ch%C3%A9es","Les fonctions fléchées","","1")}} permettent d'utiliser une syntaxe plus concise pour effectuer le même test. -
    [12, 5, 8, 130, 44].every(elem => elem >= 10); // false
    -[12, 54, 18, 130, 44].every(elem => elem >= 10); // true
    -[{a:1, b:2}, {a:1, b:3}].every(elem => elem.a === 1); // true
    -[{a:2, b:2}, {a:1, b:3}].every(elem => elem.a === 1); // false
    -
    +```js +[12, 5, 8, 130, 44].every(elem => elem >= 10); // false +[12, 54, 18, 130, 44].every(elem => elem >= 10); // true +[{a:1, b:2}, {a:1, b:3}].every(elem => elem.a === 1); // true +[{a:2, b:2}, {a:1, b:3}].every(elem => elem.a === 1); // false +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    every fut ajouté avec la cinquième édition du standard ECMA-262. Pour cette raison, il n'est pas nécessairement présent dans les différentes implémentations de ce standard. Afin de faire fonctionner du code dans un environnement qui ne possède pas cette fonctionnalité, on pourra utiliser le fragment de code suivant au début des scripts. Cet algorithme correspond exactement à celui défini dans la cinquième édition du standard ECMA-262. On prend l'hypothèse que Object et TypeError ont leurs valeurs originales (n'ont pas été modifiés) et que callbackfn.call correspond bien à la valeur originale de {{jsxref("Function.prototype.call")}}

    +`every` fut ajouté avec la cinquième édition du standard ECMA-262. Pour cette raison, il n'est pas nécessairement présent dans les différentes implémentations de ce standard. Afin de faire fonctionner du code dans un environnement qui ne possède pas cette fonctionnalité, on pourra utiliser le fragment de code suivant au début des scripts. Cet algorithme correspond exactement à celui défini dans la cinquième édition du standard ECMA-262. On prend l'hypothèse que `Object` et `TypeError` ont leurs valeurs originales (n'ont pas été modifiés) et que `callbackfn.call` correspond bien à la valeur originale de {{jsxref("Function.prototype.call")}} -
    if (!Array.prototype.every) {
    +```js
    +if (!Array.prototype.every) {
       Array.prototype.every = function(callbackfn, thisArg) {
         'use strict';
         var T, k;
    @@ -105,7 +104,7 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/Array/every
         // 2. Soit lenValue le résultat de l'appel de la méthode interne
         //   Get sur O avec l'argument "length".
         // 3. Soit len le résultat de ToUint32(lenValue).
    -    var len = O.length >>> 0;
    +    var len = O.length >>> 0;
     
         // 4. Si IsCallable(callbackfn) est faux, on lève une exception
         // TypeError.
    @@ -114,15 +113,15 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/Array/every
         }
     
         // 5. Si thisArg a été fourni : soit T cette valeur thisArg, undefined sinon.
    -    if (arguments.length > 1) {
    +    if (arguments.length > 1) {
           T = thisArg;
         }
     
         // 6. Soit k égal à 0.
         k = 0;
     
    -    // 7. On répète tant que k < len
    -    while (k < len) {
    +    // 7. On répète tant que k < len
    +    while (k < len) {
     
           var kValue;
     
    @@ -153,44 +152,23 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/Array/every
         return true;
       };
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.every")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("TypedArray.prototype.every()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.every")}} + +## Voir aussi + +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.some()")}} +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("TypedArray.prototype.every()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/fill/index.md b/files/fr/web/javascript/reference/global_objects/array/fill/index.md index dc4d155415..7b9928f46d 100644 --- a/files/fr/web/javascript/reference/global_objects/array/fill/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/fill/index.md @@ -12,49 +12,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill original_slug: Web/JavaScript/Reference/Objets_globaux/Array/fill --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode fill() remplit tous les éléments d'un tableau entre deux index avec une valeur statique. La valeur de l'index de fin n'est pas incluse. Cette méthode renvoie le tableau modifié.

    +La méthode **`fill()`** remplit tous les éléments d'un tableau entre deux index avec une valeur statique. La valeur de l'index de fin n'est pas incluse. Cette méthode renvoie le tableau modifié. -
    {{EmbedInteractiveExample("pages/js/array-fill.html")}}
    +{{EmbedInteractiveExample("pages/js/array-fill.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.fill(valeur)
    -arr.fill(valeur, début)
    -arr.fill(valeur, début, fin)
    -
    + arr.fill(valeur) + arr.fill(valeur, début) + arr.fill(valeur, début, fin) -

    Paramètres

    +### Paramètres -
    -
    valeur
    -
    Valeur avec laquelle remplir le tableau.
    -
    début {{optional_inline}}
    -
    Index de début, la valeur par défaut est 0.
    -
    fin {{optional_inline}}
    -
    Index de fin, la valeur par défaut est this.length.
    -
    +- `valeur` + - : Valeur avec laquelle remplir le tableau. +- `début` {{optional_inline}} + - : Index de début, la valeur par défaut est 0. +- `fin` {{optional_inline}} + - : Index de fin, la valeur par défaut est `this.length`. -

    Valeur de retour

    +### Valeur de retour -

    Le tableau modifié par la méthode.

    +Le tableau modifié par la méthode. -

    Description

    +## Description -

    Les éléments pour lesquels on utilisera la valeur sont ceux contenus dans l'intervalle de positions [début, fin].

    +Les éléments pour lesquels on utilisera la valeur sont ceux contenus dans l'intervalle de positions \[`début`, `fin`]. -

    La méthode fill() prend jusqu'à trois arguments : valeur, début et fin. Les arguments début et fin sont optionnels. Leurs valeurs par défaut sont respectivement 0 et la taille length de l'objet this.

    +La méthode `fill()` prend jusqu'à trois arguments : `valeur`, `début` et `fin`. Les arguments `début` et `fin` sont optionnels. Leurs valeurs par défaut sont respectivement `0` et la taille `length` de l'objet `this`. -

    Si début est négatif, il sera traité comme length+débutlength est la taille du tableau. Si fin est négatif, il est traité comme length+fin.

    +Si `début` est négatif, il sera traité comme `length+début` où `length` est la taille du tableau. Si `fin` est négatif, il est traité comme `length+fin`. -

    La fonction fill() est intentionnellement générique, il n'est pas nécessaire que sa valeur this soit un objet Array.

    +La fonction `fill()` est intentionnellement générique, il n'est pas nécessaire que sa valeur `this` soit un objet `Array`. -

    La méthode fill() est une méthode de modification, elle changera l'objet this lui-même, et renverra l'objet modifié. Elle ne crée pas de copie. Lorsque cette méthode reçoit un objet comme valeur, elle copiera l'objet passé et remplira le tableau avec une référence vers cette copie.

    +La méthode `fill()` est une méthode de modification, elle changera l'objet `this` lui-même, et renverra l'objet modifié. Elle ne crée pas de copie. Lorsque cette méthode reçoit un objet comme valeur, elle copiera l'objet passé et remplira le tableau avec une référence vers cette copie. -

    Exemples

    +## Exemples -
    [1, 2, 3].fill(4);            // [4, 4, 4]
    +```js
    +[1, 2, 3].fill(4);            // [4, 4, 4]
     [1, 2, 3].fill(4, 1);         // [1, 4, 4]
     [1, 2, 3].fill(4, 1, 2);      // [1, 4, 3]
     [1, 2, 3].fill(4, 1, 1);      // [1, 2, 3]
    @@ -67,11 +65,12 @@ Array(3).fill(4);             // [4, 4, 4]
     // Les objets sont copiés via une référence
     var arr = Array(3).fill({}); // [{}, {}, {}];
     arr[0].yop = "yop"; // [{yop: "yop"}, {yop: "yop"}, {yop: "yop"}]
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    if (!Array.prototype.fill) {
    +```js
    +if (!Array.prototype.fill) {
       Object.defineProperty(Array.prototype, 'fill', {
         value: function(value) {
     
    @@ -83,29 +82,29 @@ arr[0].yop = "yop"; // [{yop: "yop"}, {yop: "yop"}, {yop: "yop"}]
           var O = Object(this);
     
           // Steps 3-5.
    -      var len = O.length >>> 0;
    +      var len = O.length >>> 0;
     
           // Steps 6-7.
           var start = arguments[1];
    -      var relativeStart = start >> 0;
    +      var relativeStart = start >> 0;
     
           // Step 8.
    -      var k = relativeStart < 0 ?
    +      var k = relativeStart < 0 ?
             Math.max(len + relativeStart, 0) :
             Math.min(relativeStart, len);
     
           // Steps 9-10.
           var end = arguments[2];
           var relativeEnd = end === undefined ?
    -        len : end >> 0;
    +        len : end >> 0;
     
           // Step 11.
    -      var final = relativeEnd < 0 ?
    +      var final = relativeEnd < 0 ?
             Math.max(len + relativeEnd, 0) :
             Math.min(relativeEnd, len);
     
           // Step 12.
    -      while (k < final) {
    +      while (k < final) {
             O[k] = value;
             k++;
           }
    @@ -114,37 +113,21 @@ arr[0].yop = "yop"; // [{yop: "yop"}, {yop: "yop"}, {yop: "yop"}]
           return O;
         }
       });
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.fill")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array")}}
    • -
    • {{jsxref("TypedArray.prototype.fill()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.fill', 'Array.prototype.fill')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.fill")}} + +## Voir aussi + +- {{jsxref("Array")}} +- {{jsxref("TypedArray.prototype.fill()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/filter/index.md b/files/fr/web/javascript/reference/global_objects/array/filter/index.md index 1894ac6f4c..d6f1b51909 100644 --- a/files/fr/web/javascript/reference/global_objects/array/filter/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/filter/index.md @@ -12,76 +12,75 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter original_slug: Web/JavaScript/Reference/Objets_globaux/Array/filter --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode filter() crée et retourne un nouveau tableau contenant tous les éléments du tableau d'origine qui remplissent une condition déterminée par la fonction callback.

    +La méthode **`filter()`** crée et retourne un nouveau tableau contenant tous les éléments du tableau d'origine qui remplissent une condition déterminée par la fonction `callback`. -
    {{EmbedInteractiveExample("pages/js/array-filter.html")}}
    +{{EmbedInteractiveExample("pages/js/array-filter.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.filter(callback); // callback(elementCourant[, index[, tableauEntier]])
    -var nouveauTableau = arr.filter(callback, thisArg);
    -
    + arr.filter(callback); // callback(elementCourant[, index[, tableauEntier]]) + var nouveauTableau = arr.filter(callback, thisArg); -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction de test (ou prédicat) à appliquer à chaque élément du tableau. Cette fonction est appelée avec les arguments suivants : -
    -
    elementCourant
    -
    L'élément à traiter
    -
    index
    -
    Son indice.
    -
    array
    -
    Le tableau complet
    -
    - Cette fonction renvoie true — ou une valeur équivalente — si l'élément doit être conservé pour le tableau résultat et false dans le cas contraire.
    -
    thisArg {{optional_inline}}
    -
    Objet à utiliser en tant que this quand la fonction callback est exécutée.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction de test (ou _prédicat_) à appliquer à chaque élément du tableau. Cette fonction est appelée avec les arguments suivants : -

    Un nouveau tableau contenant les éléments qui respectent la condition du filtre. Si aucun élément ne respecte la condition, c'est un tableau vide qui est renvoyé.

    + - `elementCourant` + - : L'élément à traiter + - `index` + - : Son indice. + - `array` + - : Le tableau complet -

    Description

    + Cette fonction renvoie `true` — ou une valeur équivalente — si l'élément doit être conservé pour le tableau résultat et `false` dans le cas contraire. -

    filter() appelle la fonction callback fournie pour chacun des éléments d'un tableau, et construit un nouveau tableau contenant tous les éléments pour lesquels l'appel de callback retourne true ou une valeur équivalente à true dans un contexte booléen. La fonction callback n'est utilisée que pour les éléments du tableau ayant une valeur assignée — les index supprimés ou pour lesquels il n'y a jamais eu de valeur ne sont pas pris en compte. Les éléments du tableau qui ne passent pas le test effectué par la fonction callback sont ignorés, ils ne sont pas inclus dans le nouveau tableau.

    +- `thisArg` {{optional_inline}} + - : Objet à utiliser en tant que `this` quand la fonction `callback` est exécutée. -

    La fonction callback est appelée avec trois arguments :

    +### Valeur de retour -
      -
    1. la valeur de l'élément courant,
    2. -
    3. l'index de l'élément courant,
    4. -
    5. l'objet Array parcouru.
    6. -
    +Un nouveau tableau contenant les éléments qui respectent la condition du filtre. Si aucun élément ne respecte la condition, c'est un tableau vide qui est renvoyé. -

    Si le paramètre thisArg est fourni, il sera utilisé comme valeur this lors de l'appel de la fonction callback. S'il n'est pas fourni, la valeur undefined sera utilisée à la place. La valeur de this qui est finalement utilisée par la fonction callback est déterminée selon les règles usuelles pour déterminer la valeur this au sein d'une fonction.

    +## Description -

    Noter que filter() ne modifie pas le tableau d'origine.

    +`filter()` appelle la fonction `callback` fournie pour chacun des éléments d'un tableau, et construit un nouveau tableau contenant tous les éléments pour lesquels l'appel de `callback` retourne `true` ou une valeur équivalente à `true` dans un contexte booléen. La fonction `callback` n'est utilisée que pour les éléments du tableau ayant une valeur assignée — les index supprimés ou pour lesquels il n'y a jamais eu de valeur ne sont pas pris en compte. Les éléments du tableau qui ne passent pas le test effectué par la fonction `callback` sont ignorés, ils ne sont pas inclus dans le nouveau tableau. -

    La liste des éléments parcourus par filter() est définie avant la première invocation de la fonction callback. Les éléments qui sont ajoutés à la liste après le début de l'appel de filter() (grâce à la fonction callback par exemple) ne seront pas concernés par le filtre. Si des éléments de la liste sont modifiés ou supprimés au cours du traitement, la valeur fournie à la fonction callback sera la valeur de ces éléments au moment où filter() les traite — les éléments supprimés ne seront pas traités par la fonction.

    +La fonction `callback` est appelée avec trois arguments : -

    Exemples

    +1. la valeur de l'élément courant, +2. l'index de l'élément courant, +3. l'objet `Array` parcouru. -

    Filtrer les petites valeurs

    +Si le paramètre `thisArg` est fourni, il sera utilisé comme valeur `this` lors de l'appel de la fonction `callback`. S'il n'est pas fourni, la valeur `undefined` sera utilisée à la place. La valeur de `this` qui est finalement utilisée par la fonction `callback` est déterminée selon [les règles usuelles pour déterminer la valeur `this` au sein d'une fonction](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this). -

    L'exemple suivant utilise filter pour créer une nouvelle liste où tous les éléments dont la valeur est inférieure à 10 ont été retirés.

    +Noter que `filter()` ne modifie pas le tableau d'origine. -
    function suffisammentGrand(element) {
    -  return element >= 10;
    +La liste des éléments parcourus par `filter()` est définie avant la première invocation de la fonction `callback`. Les éléments qui sont ajoutés à la liste après le début de l'appel de `filter()` (grâce à la fonction `callback` par exemple) ne seront pas concernés par le filtre. Si des éléments de la liste sont modifiés ou supprimés au cours du traitement, la valeur fournie à la fonction `callback` sera la valeur de ces éléments au moment où `filter()` les traite — les éléments supprimés ne seront pas traités par la fonction.
    +
    +## Exemples
    +
    +### Filtrer les petites valeurs
    +
    +L'exemple suivant utilise `filter` pour créer une nouvelle liste où tous les éléments dont la valeur est inférieure à 10 ont été retirés.
    +
    +```js
    +function suffisammentGrand(element) {
    +  return element >= 10;
     }
     var filtre = [12, 5, 8, 130, 44].filter(suffisammentGrand);
     // filtre vaut [12, 130, 44]
    -
    +``` -

    Filtrer des éléments JSON invalides et les trier en fonction d'un identifiant avec filter()

    +### Filtrer des éléments JSON invalides et les trier en fonction d'un identifiant avec `filter()` -

    Dans l'exemple qui suit, on utilise filter() pour créer un objet JSON qui contient des éléments dont l'id est un entier.

    +Dans l'exemple qui suit, on utilise `filter()` pour créer un objet JSON qui contient des éléments dont l'`id` est un entier. -
    var arr = [
    +```js
    +var arr = [
       { id: 15 },
       { id: -1 },
       { id: 0 },
    @@ -97,7 +96,7 @@ var elementsInvalides = 0;
     
     function filtrerParID(obj) {
       // Si c'est un nombre
    -  if (obj.id !== undefined && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
    +  if (obj.id !== undefined && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
         return true;
       } else {
         elementsInvalides++;
    @@ -112,13 +111,15 @@ console.log('Tableau filtré\n', arrByID);
     // [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]
     
     console.log('Nombre d\'éléments invalides = ', elementsInvalides);
    -// Nombre d'éléments invalides 4
    +// Nombre d'éléments invalides 4 +``` -

    Recherche dans un tableau

    +### Recherche dans un tableau -

    Dans l'exemple qui suit, on utilise filter() pour filtrer le contenu d'un tableau selon un critère donné.

    +Dans l'exemple qui suit, on utilise `filter()` pour filtrer le contenu d'un tableau selon un critère donné. -
    var fruits = ['pomme', 'banane', 'raisin', 'mangue'];
    +```js
    +var fruits = ['pomme', 'banane', 'raisin', 'mangue'];
     
     function filtreTexte(arr, requete) {
       return arr.filter(function (el) {
    @@ -128,32 +129,35 @@ function filtreTexte(arr, requete) {
     
     console.log(filtreTexte(fruits, 'an')); // ['banane', 'mangue'];
     console.log(filtreTexte(fruits, 'm')); // ['pomme', 'mangue'];
    -
    +``` -

    Implémentation avec la syntaxe ECMAScript 2015 (ES6)

    +### Implémentation avec la syntaxe ECMAScript 2015 (ES6) -

    L'exemple suivant utilise les fonctions fléchées, et le mot clé const disponible en ES6.

    +L'exemple suivant utilise [les fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées), et le mot clé [`const` ](/fr/docs/Web/JavaScript/Reference/Instructions/const)disponible en ES6. -
    const fruits = ['pomme', 'banane', 'raisin', 'mangue'];
    +```js
    +const fruits = ['pomme', 'banane', 'raisin', 'mangue'];
     
    -const filtreTexte = (arr, requete) => {
    -  return arr.filter(el =>  el.toLowerCase().indexOf(requete.toLowerCase()) !== -1);
    +const filtreTexte = (arr, requete) => {
    +  return arr.filter(el =>  el.toLowerCase().indexOf(requete.toLowerCase()) !== -1);
     }
     
     console.log(filtreTexte(fruits, 'an')); // ['banane', 'mangue'];
    -console.log(filtreTexte(fruits, 'm')); // ['pomme', 'mangue'];
    +console.log(filtreTexte(fruits, 'm')); // ['pomme', 'mangue']; +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Array.prototype.filter() a été ajoutée avec la cinquième édition du standard ECMA-262 — ainsi elle pourrait ne pas être présente dans toutes les implémentations du standard. Ce problème peut être contourné en ajoutant le code suivant au début des scripts et permettra d'utiliser filter au sein d'implémentations qui n'en bénéficient pas nativement. Cet algorithme est strictement celui spécifié par la cinquième édition d'ECMA-262, en considérant que callbackfn.call est évaluée avec la valeur d'origine de {{jsxref("Function.prototype.call")}} et que {{jsxref("Array.prototype.push")}} a sa valeur d'origine.

    +`Array.prototype.filter()` a été ajoutée avec la cinquième édition du standard ECMA-262 — ainsi elle pourrait ne pas être présente dans toutes les implémentations du standard. Ce problème peut être contourné en ajoutant le code suivant au début des scripts et permettra d'utiliser `filter` au sein d'implémentations qui n'en bénéficient pas nativement. Cet algorithme est strictement celui spécifié par la cinquième édition d'ECMA-262, en considérant que `callbackfn.call` est évaluée avec la valeur d'origine de {{jsxref("Function.prototype.call")}} et que {{jsxref("Array.prototype.push")}} a sa valeur d'origine. -
    if (!Array.prototype.filter){
    +```js
    +if (!Array.prototype.filter){
       Array.prototype.filter = function(func, thisArg) {
         'use strict';
    -    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
    +    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
             throw new TypeError();
     
    -    var len = this.length >>> 0,
    +    var len = this.length >>> 0,
             res = new Array(len), // preallocate array
             t = this, c = 0, i = -1;
         if (thisArg === undefined){
    @@ -180,44 +184,24 @@ console.log(filtreTexte(fruits, 'm')); // ['pomme', 'mangue'];
    res.length = c; // shrink down array to proper size return res; }; -} - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES2015', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES2015')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.filter")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • {{jsxref("Array.prototype.reduce()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES2015', '#sec-array.prototype.filter', 'Array.prototype.filter')}} | {{Spec2('ES2015')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.filter")}} + +## Voir aussi + +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} +- {{jsxref("Array.prototype.reduce()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/find/index.md b/files/fr/web/javascript/reference/global_objects/array/find/index.md index 19ef805ebd..c66c0ac9db 100644 --- a/files/fr/web/javascript/reference/global_objects/array/find/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/find/index.md @@ -12,59 +12,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/find original_slug: Web/JavaScript/Reference/Objets_globaux/Array/find --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode find() renvoie la valeur du premier élément trouvé dans le tableau qui respecte la condition donnée par la fonction de test passée en argument. Sinon, la valeur {{jsxref("undefined")}} est renvoyée.

    +La méthode **`find()`** renvoie la **valeur** du **premier élément trouvé** dans le tableau qui respecte la condition donnée par la fonction de test passée en argument. Sinon, la valeur {{jsxref("undefined")}} est renvoyée. -
    {{EmbedInteractiveExample("pages/js/array-find.html")}}
    +{{EmbedInteractiveExample("pages/js/array-find.html")}} +Voir aussi la méthode {{jsxref("Array.findIndex", "findIndex()")}} qui renvoie l'**index** de l'élément trouvé et non sa valeur. Si on souhaite repérer la position d'un élément donné dans le tableau, on pourra utiliser {{jsxref("Array.prototype.indexOf()")}}. Si on souhaite déterminer si un tableau contient un élément donné, on pourra utiliser la méthode {{jsxref("Array.prototype.includes()")}}. +## Syntaxe -

    Voir aussi la méthode {{jsxref("Array.findIndex", "findIndex()")}} qui renvoie l'index de l'élément trouvé et non sa valeur. Si on souhaite repérer la position d'un élément donné dans le tableau, on pourra utiliser {{jsxref("Array.prototype.indexOf()")}}. Si on souhaite déterminer si un tableau contient un élément donné, on pourra utiliser la méthode {{jsxref("Array.prototype.includes()")}}.

    + arr.find(callback(element[, index[, tableau]])[, thisArg]) -

    Syntaxe

    +### Paramètres -
    arr.find(callback(element[, index[, tableau]])[, thisArg])
    +- `callback` -

    Paramètres

    + - : Fonction à exécuter sur chaque valeur du tableau, elle prend 3 arguments : -
    -
    callback
    -
    Fonction à exécuter sur chaque valeur du tableau, elle prend 3 arguments : -
    -
    element
    -
    L'élément actuellement traité dans le tableau.
    -
    index{{optional_inline}}
    -
    L'index de l'élément actuellement traité dans le tableau
    -
    array{{optional_inline}}
    -
    Le tableau pour lequel la méthode find a été appelée.
    -
    -
    -
    thisArg {{optional_inline}}
    -
    Ce paramètre est optionnel. Objet à utiliser en tant que this lorsque la fonction callback est exécutée.
    -
    + - `element` + - : L'élément actuellement traité dans le tableau. + - `index`{{optional_inline}} + - : L'index de l'élément actuellement traité dans le tableau + - `array`{{optional_inline}} + - : Le tableau pour lequel la méthode `find` a été appelée. -

    Valeur de retour

    +- `thisArg` {{optional_inline}} + - : Ce paramètre est optionnel. Objet à utiliser en tant que `this` lorsque la fonction `callback` est exécutée. -

    La valeur du premier élément du tableau qui réussit le test, sinon {{jsxref("undefined")}}.

    +### Valeur de retour -

    Description

    +La valeur du premier élément du tableau qui réussit le test, sinon {{jsxref("undefined")}}. -

    La méthode find exécute la fonction callback une fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle retourne une valeur vraie (qui peut être convertie en true). Si un élément est trouvé, find retourne immédiatement la valeur de l'élément. Autrement, find retourne undefined. La méthode callback est seulement appelée pour les index du tableau pour lesquels on dispose d'une valeur. Elle n'est pas appelée pour les index supprimés ou pour ceux qui n'ont pas de valeur.

    +## Description -

    La méthode callback est appelée avec trois arguments : la valeur de l'élément, l'index de l'élément, et l'objet correspondant au tableau traversé.

    +La méthode `find` exécute la fonction `callback` une fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle retourne une valeur vraie (qui peut être convertie en `true`). Si un élément est trouvé, `find` retourne immédiatement la valeur de l'élément. Autrement, `find` retourne `undefined`. La méthode `callback` est seulement appelée pour les index du tableau pour lesquels on dispose d'une valeur. Elle n'est pas appelée pour les index supprimés ou pour ceux qui n'ont pas de valeur. -

    Si le paramètre thisArg est fourni à find, il sera utilisé comme le this pour chaque exécution de la fonction callback. S'il n'est pas fourni, alors {{jsxref("undefined")}} sera utilisé.

    +La méthode `callback` est appelée avec trois arguments : la valeur de l'élément, l'index de l'élément, et l'objet correspondant au tableau traversé. -

    find ne modifie pas le tableau à partir duquel elle est appelée.

    +Si le paramètre `thisArg` est fourni à `find`, il sera utilisé comme le `this` pour chaque exécution de la fonction `callback`. S'il n'est pas fourni, alors {{jsxref("undefined")}} sera utilisé. -

    L'intervalle des éléments inspectés par find est défini avant la première exécution de callback. Les éléments ajoutés au tableau après l'appel à find ne seront pas inspectés par la fonction callback. Si un élément existant est modifié avant le passage du callback, alors la valeur traitée par le callback sera celle présente lors du passage de find sur son index. Les éléments supprimés ne seront pas traités.

    +`find` ne modifie pas le tableau à partir duquel elle est appelée. -

    Exemples

    +L'intervalle des éléments inspectés par `find` est défini avant la première exécution de `callback`. Les éléments ajoutés au tableau après l'appel à `find` ne seront pas inspectés par la fonction `callback`. Si un élément existant est modifié avant le passage du `callback`, alors la valeur traitée par le `callback` sera celle présente lors du passage de `find` sur son index. Les éléments supprimés ne seront pas traités. -

    Trouver un objet dans un tableau grâce à une de ses propriétés

    +## Exemples -
    const inventaire = [
    +### Trouver un objet dans un tableau grâce à une de ses propriétés
    +
    +```js
    +const inventaire = [
       {nom: 'pommes', quantité: 2},
       {nom: 'bananes', quantité: 0},
       {nom: 'cerises', quantité: 5}
    @@ -75,68 +72,55 @@ function estCerises(fruit) {
     }
     
     console.log(inventaire.find(estCerises));
    -// { nom: 'cerises', quantité: 5}
    +// { nom: 'cerises', quantité: 5} +``` -

    Utiliser les fonctions fléchées ES6/ES2015

    +#### Utiliser les fonctions fléchées ES6/ES2015 -
    const inventaire = [
    +```js
    +const inventaire = [
                          {nom: 'pommes', quantité: 2},
                          {nom: 'bananes', quantité: 0},
                          {nom: 'cerises', quantité: 5}
                        ];
     
    -const resultat = inventaire.find( fruit => fruit.nom === 'cerises');
    +const resultat = inventaire.find( fruit => fruit.nom === 'cerises');
     console.log(resultat);
    -// { nom: 'cerises', quantité: 5}
    +// { nom: 'cerises', quantité: 5} +``` -

    Trouver un nombre premier dans un tableau

    +### Trouver un nombre premier dans un tableau -

    Dans l'exemple suivant, on cherche un nombre premier parmi les éléments d'un tableau (ou retourne undefined s'il n'y en a pas ).

    +Dans l'exemple suivant, on cherche un nombre premier parmi les éléments d'un tableau (ou retourne `undefined` s'il n'y en a pas ). -
    function estPremier(element, index, array) {
    +```js
    +function estPremier(element, index, array) {
         let début = 2;
    -    while (début <= Math.sqrt(element)) {
    -        if (element % début ++ < 1) return false;
    +    while (début <= Math.sqrt(element)) {
    +        if (element % début ++ < 1) return false;
         }
    -    return (element > 1);
    +    return (element > 1);
     }
     
     console.log( [4, 6, 8, 12].find(estPremier) ); // undefined, rien trouvé
     console.log( [4, 5, 8, 12].find(estPremier) ); // 5
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ES2015')}}Définition initiale
    {{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.find")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.findIndex()")}} – trouver et renvoyer un index
    • -
    • {{jsxref("Array.prototype.includes()")}} – tester si une valeur existe dans le tableau
    • -
    • {{jsxref("Array.prototype.filter()")}} – trouver tous les éléments correspondants
    • -
    • {{jsxref("Array.prototype.every()")}} – tester l'ensemble des éléments d'un tableau
    • -
    • {{jsxref("Array.prototype.some()")}} – tester si au moins un élément du tableau respecte un critère
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.find', 'Array.prototype.find')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.find")}} + +## Voir aussi + +- {{jsxref("Array.prototype.findIndex()")}} – trouver et renvoyer un index +- {{jsxref("Array.prototype.includes()")}} – tester si une valeur existe dans le tableau +- {{jsxref("Array.prototype.filter()")}} – trouver tous les éléments correspondants +- {{jsxref("Array.prototype.every()")}} – tester l'ensemble des éléments d'un tableau +- {{jsxref("Array.prototype.some()")}} – tester si au moins un élément du tableau respecte un critère diff --git a/files/fr/web/javascript/reference/global_objects/array/findindex/index.md b/files/fr/web/javascript/reference/global_objects/array/findindex/index.md index 9564b24021..5a4a20328c 100644 --- a/files/fr/web/javascript/reference/global_objects/array/findindex/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/findindex/index.md @@ -12,88 +12,89 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex original_slug: Web/JavaScript/Reference/Objets_globaux/Array/findIndex --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode findIndex() renvoie l'indice du premier élément du tableau qui satisfait une condition donnée par une fonction. Si la fonction renvoie faux pour tous les éléments du tableau, le résultat vaut -1.

    +La méthode **`findIndex()`** renvoie l'**indice** du **premier élément** du tableau qui satisfait une condition donnée par une fonction. Si la fonction renvoie faux pour tous les éléments du tableau, le résultat vaut -1. -
    {{EmbedInteractiveExample("pages/js/array-findindex.html")}}
    +{{EmbedInteractiveExample("pages/js/array-findindex.html")}} +Voir également la méthode {{jsxref("Array.find", "find()")}} qui renvoie la **valeur** (et non l'indice) d'un des éléments trouvés. +## Syntaxe -

    Voir également la méthode {{jsxref("Array.find", "find()")}} qui renvoie la valeur (et non l'indice) d'un des éléments trouvés.

    + arr.findIndex(callback(element[, index[, tableau]])[, thisArg]) -

    Syntaxe

    +### Paramètres -
    arr.findIndex(callback(element[, index[, tableau]])[, thisArg])
    +- `callback` -

    Paramètres

    + - : Une fonction à exécuter sur chaque valeur du tableau jusqu'à ce que celle-ci renvoie `true`. Cette fonction prend trois arguments : -
    -
    callback
    -
    Une fonction à exécuter sur chaque valeur du tableau jusqu'à ce que celle-ci renvoie true. Cette fonction prend trois arguments : -
    -
    élément
    -
    L'élément du tableau qui doit être traité.
    -
    indice{{optional_inline}}
    -
    L'indice de l'élément du tableau en cours de traitement.
    -
    tableau{{optional_inline}}
    -
    Le tableau sur lequel a été appelé findIndex.
    -
    -
    -
    argumentThis{{optional_inline}}
    -
    L'objet à utiliser comme contexte this lorsque le callback est exécuté.
    -
    + - `élément` + - : L'élément du tableau qui doit être traité. + - `indice`{{optional_inline}} + - : L'indice de l'élément du tableau en cours de traitement. + - `tableau`{{optional_inline}} + - : Le tableau sur lequel a été appelé `findIndex`. -

    Valeur de retour

    +- `argumentThis`{{optional_inline}} + - : L'objet à utiliser comme contexte `this` lorsque le `callback` est exécuté. -

    Un indice d'un élément du tableau qui réussit le test décrit, -1 sinon.

    +### Valeur de retour -

    Description

    +Un indice d'un élément du tableau qui réussit le test décrit, -1 sinon. -

    La méthode findIndex exécute la fonction callback une fois pour chaque élément présent dans le tableau (le tableau est parcouru entre les indices 0 et length-1 compris) jusqu'à ce que callback renvoie une valeur vraie.

    +## Description -

    S'il existe un tel élément, findIndex renverra immédiatement l'indice de l'élément concerné. Sinon, findIndex renverra -1. À la différence des autres méthodes liées aux tableaux comme some(), callback est également appelée pour les indices du tableau pour lesquels aucun élément n'est défini.

    +La méthode `findIndex` exécute la fonction `callback` une fois pour chaque élément présent dans le tableau (le tableau est parcouru entre les indices `0` et `length-1` compris) jusqu'à ce que `callback` renvoie une valeur vraie. -

    callback possède trois arguments : la valeur de l'élément, l'indice de l'élément et l'objet Array qui est parcouru

    +S'il existe un tel élément, `findIndex` renverra immédiatement l'indice de l'élément concerné. Sinon, `findIndex` renverra -1. À la différence des autres méthodes liées aux tableaux comme `some()`, `callback` est également appelée pour les indices du tableau pour lesquels aucun élément n'est défini. -

    Si l'argument argumentThis est fourni à la méthode findIndex, il sera utilisé comme « contexte » this pour chaque appel de callback. S'il n'est pas fourni, {{jsxref("undefined")}} sera utilisé.

    +`callback` possède trois arguments : la valeur de l'élément, l'indice de l'élément et l'objet Array qui est parcouru -

    findIndex ne modifie pas le tableau sur laquelle elle est appelée. Les éléments qui seront traités par findIndex sont « récoltés » avant le premier appel de callback. Tout élément qui sera ajouté au tableau après l'appel de findIndex ne sera pas utilisé avec callback. Si un élément existant, pas encore visité, est modifié par callback, la valeur qui sera passé au callback pour cet élément modifié sera celle que findIndex utilise lorsqu'elle utilise l'indice de l'élément en question. Les éléments supprimés sont bien parcourus.

    +Si l'argument `argumentThis` est fourni à la méthode `findIndex`, il sera utilisé comme « contexte » [`this`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this) pour chaque appel de `callback`. S'il n'est pas fourni, {{jsxref("undefined")}} sera utilisé. -

    Exemples

    +`findIndex` ne modifie pas le tableau sur laquelle elle est appelée. Les éléments qui seront traités par `findIndex` sont « récoltés » avant le premier appel de `callback`. Tout élément qui sera ajouté au tableau après l'appel de `findIndex` ne sera pas utilisé avec `callback`. Si un élément existant, pas encore visité, est modifié par `callback`, la valeur qui sera passé au `callback` pour cet élément modifié sera celle que `findIndex` utilise lorsqu'elle utilise l'indice de l'élément en question. Les éléments supprimés sont bien parcourus. -

    Trouver l'indice d'un nombre premier dans un tableau

    +## Exemples -

    L'exemple qui suit illustre comment trouver l'indice d'un élément qui est un nombre premier dans un tableau (ou qui renvoie -1 s'il n'y a pas de nombre premier).

    +### Trouver l'indice d'un nombre premier dans un tableau -
    function estPremier(élément, index, array) {
    +L'exemple qui suit illustre comment trouver l'indice d'un élément qui est un nombre premier dans un tableau (ou qui renvoie -1 s'il n'y a pas de nombre premier).
    +
    +```js
    +function estPremier(élément, index, array) {
       var début = 2;
    -  while (début <= Math.sqrt(élément)) {
    -    if (élément % début < 1) {
    +  while (début <= Math.sqrt(élément)) {
    +    if (élément % début < 1) {
           return false;
         } else {
           début++;
         }
       }
    -  return élément > 1;
    +  return élément > 1;
     }
     
     console.log([4, 6, 8, 12].findIndex(estPremier)); // -1, aucun trouvé
    -console.log([4, 6, 7, 12].findIndex(estPremier)); // 2
    +console.log([4, 6, 7, 12].findIndex(estPremier)); // 2 +``` -

    Trouver un indice avec une fonction fléchée

    +### Trouver un indice avec une fonction fléchée -

    Dans cet exemple, on utilise une fonction fléchée pour trouver l'indice d'un élément :

    +Dans cet exemple, on utilise [une fonction fléchée](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées) pour trouver l'indice d'un élément : -
    const fruits = ["pomme", "banane", "melon", "fraise", "raisin"];
    +```js
    +const fruits = ["pomme", "banane", "melon", "fraise", "raisin"];
     
    -const indice = fruits.findIndex(fruit => fruit === "fraise");
    +const indice = fruits.findIndex(fruit => fruit === "fraise");
     console.log(indice); // 3
    -console.log(fruits[indice]); // fraise 
    +console.log(fruits[indice]); // fraise +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    // https://tc39.github.io/ecma262/#sec-array.prototype.findindex
    +```js
    +// https://tc39.github.io/ecma262/#sec-array.prototype.findindex
     if (!Array.prototype.findIndex) {
       Object.defineProperty(Array.prototype, 'findIndex', {
         value: function(predicate) {
    @@ -105,7 +106,7 @@ if (!Array.prototype.findIndex) {
           var o = Object(this);
     
           // 2. Let len be ? ToLength(? Get(O, "length")).
    -      var len = o.length >>> 0;
    +      var len = o.length >>> 0;
     
           // 3. If IsCallable(predicate) is false, throw a TypeError exception.
           if (typeof predicate !== 'function') {
    @@ -118,8 +119,8 @@ if (!Array.prototype.findIndex) {
           // 5. Let k be 0.
           var k = 0;
     
    -      // 6. Repeat, while k < len
    -      while (k < len) {
    +      // 6. Repeat, while k < len
    +      while (k < len) {
             // a. Let Pk be ! ToString(k).
             // b. Let kValue be ? Get(O, Pk).
             // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
    @@ -138,39 +139,23 @@ if (!Array.prototype.findIndex) {
         configurable: true,
         writable: true
       });
    -}
    - -

    S'il est vraiment nécessaire de prendre en charge les moteurs JavaScript qui ne prennent pas en charge {{jsxref("Object.defineProperty()")}}, mieux vaut ne pas ajouter de prothèse aux méthodes d'Array.prototype car on ne peut pas les rendre non-énumérables.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.findIndex")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("Array.prototype.indexOf()")}}
    • -
    +} +``` + +S'il est vraiment nécessaire de prendre en charge les moteurs JavaScript qui ne prennent pas en charge {{jsxref("Object.defineProperty()")}}, mieux vaut ne pas ajouter de prothèse aux méthodes d'`Array.prototype` car on ne peut pas les rendre non-énumérables. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.findIndex")}} + +## Voir aussi + +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("Array.prototype.indexOf()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/flat/index.md b/files/fr/web/javascript/reference/global_objects/array/flat/index.md index 160e1c350b..e9ee2df63b 100644 --- a/files/fr/web/javascript/reference/global_objects/array/flat/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/flat/index.md @@ -10,30 +10,29 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat original_slug: Web/JavaScript/Reference/Objets_globaux/Array/flat --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode flat() permet de créer un nouveau tableau contenant les éléments des sous-tableaux du tableau passé en argument, qui sont concaténés récursivement pour atteindre une profondeur donnée.

    +La méthode **`flat()`** permet de créer un nouveau tableau contenant les éléments des sous-tableaux du tableau passé en argument, qui sont concaténés récursivement pour atteindre une profondeur donnée. -

    Syntaxe

    +## Syntaxe -
    var nouveauTableau = monTableau.flat([profondeur]);
    + var nouveauTableau = monTableau.flat([profondeur]); -

    Paramètres

    +### Paramètres -
    -
    profondeur {{optional_inline}}
    -
    Le niveau de profondeur en termes d'imbrication de tableau. Autrement dit, jusqu'à quel niveau d'imbrication un tableau imbriqué doit il être aplati. La valeur par défaut est 1.
    -
    +- `profondeur` {{optional_inline}} + - : Le niveau de profondeur en termes d'imbrication de tableau. Autrement dit, jusqu'à quel niveau d'imbrication un tableau imbriqué doit il être aplati. La valeur par défaut est 1. -

    Valeur de retour

    +### Valeur de retour -

    Un nouveau tableau qui contient la concaténation des éléments des sous-tableaux du tableau passé en argument.

    +Un nouveau tableau qui contient la concaténation des éléments des sous-tableaux du tableau passé en argument. -

    Exemples

    +## Exemples -

    Aplatir des tableaux imbriqués

    +### Aplatir des tableaux imbriqués -
    var arr1 = [1, 2, [3, 4]];
    +```js
    +var arr1 = [1, 2, [3, 4]];
     arr1.flat();
     // [1, 2, 3, 4]
     
    @@ -44,49 +43,54 @@ arr2.flat();
     var arr3 = [1, 2, [3, 4, [5, 6]]];
     arr3.flat(2);
     // [1, 2, 3, 4, 5, 6]
    -
    +``` -

    Aplatir et combler les trous

    +### Aplatir et combler les trous -

    La méthode flat() permet également de retirer les « trous » d'un tableau :

    +La méthode `flat()` permet également de retirer les « trous » d'un tableau : -
    var arr4 = [1, 2, , 4, 5];
    +```js
    +var arr4 = [1, 2, , 4, 5];
     arr4.flat();
    -// [1, 2, 4, 5]
    +// [1, 2, 4, 5] +``` -

    Équivalent

    +## Équivalent -

    reduce et concat

    +### `reduce` et `concat` -
    var arr = [1, 2, [3, 4]];
    +```js
    +var arr = [1, 2, [3, 4]];
     
     // pour un tableau avec un seul niveau de profondeur
     arr.flat();
     // est équivalent à
    -arr.reduce((acc, val) => acc.concat(val), []);
    +arr.reduce((acc, val) => acc.concat(val), []);
     // [1, 2, 3, 4]
     
     // avec la décomposition et les compositions flechées, on peut écrire :
    -const flat = arr => [].concat(...arr);
    -
    +const flat = arr => [].concat(...arr); +``` -

    reduceconcat + isArray + récursivité

    +### `reduce` + `concat` + `isArray` + récursivité -
    var arr = [1, 2, [3, 4, [5, 6]]];
    +```js
    +var arr = [1, 2, [3, 4, [5, 6]]];
     
     // Pour gérer plusieurs niveaux, on pourra utiliser
     // une méthode récursive avec reduce et concat
     function flatDeep(arr) {
    -   return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val) : val), []);
    +   return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val) : val), []);
     };
     
     flatDeep(arr);
     // [1, 2, 3, 4, 5, 6]
    -
    +``` -

    Utiliser une pile

    +### Utiliser une pile -
    var arr = [1, 2, [3, 4]];
    +```js
    +var arr = [1, 2, [3, 4]];
     
     // Version non récursive utilisant une pile
     function flatStack(input) {
    @@ -110,34 +114,21 @@ function flatStack(input) {
     
     flatStack(arr);
     // [1, 2, 3, 4]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    ECMAScript 2019FinaliséProposition initiale
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.flat")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.flatMap()")}}
    • -
    • {{jsxref("Array.prototype.map()")}}
    • -
    • {{jsxref("Array.prototype.reduce()")}}
    • -
    • {{jsxref("Array.prototype.concat()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------- | -------- | -------------------- | +| [ECMAScript 2019](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-array.prototype.flat) | Finalisé | Proposition initiale | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.flat")}} + +## Voir aussi + +- {{jsxref("Array.prototype.flatMap()")}} +- {{jsxref("Array.prototype.map()")}} +- {{jsxref("Array.prototype.reduce()")}} +- {{jsxref("Array.prototype.concat()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/flatmap/index.md b/files/fr/web/javascript/reference/global_objects/array/flatmap/index.md index 4117829f18..1c95114d1d 100644 --- a/files/fr/web/javascript/reference/global_objects/array/flatmap/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/flatmap/index.md @@ -10,111 +10,100 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap original_slug: Web/JavaScript/Reference/Objets_globaux/Array/flatMap --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode flatMap() permet d'appliquer une fonction à chaque élément du tableau puis d'aplatir le résultat en un tableau. Cela correspond à l'enchaînement de {{jsxref("Array.prototype.map()")}} suivi de {{jsxref("Array.prototype.flat()")}} de profondeur 1. flatMap est plus efficace que la combinaison de ces deux opérations, souvent réalisées conjointement.

    +La méthode **`flatMap()`** permet d'appliquer une fonction à chaque élément du tableau puis d'aplatir le résultat en un tableau. Cela correspond à l'enchaînement de {{jsxref("Array.prototype.map()")}} suivi de {{jsxref("Array.prototype.flat()")}} de profondeur 1. `flatMap` est plus efficace que la combinaison de ces deux opérations, souvent réalisées conjointement. -

    Syntaxe

    +## Syntaxe -
    var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    -    // return element for new_array
    -}[, thisArg])
    + var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { + // return element for new_array + }[, thisArg]) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction qui produit un élément du nouveau tableau et qui prend trois arguments : -
    -
    currentValue
    -
    La valeur du tableau qui est traitée.
    -
    index{{optional_inline}}
    -
    L'indice de l'élément du tableau qui est traitée.
    -
    array{{optional_inline}}
    -
    Le tableau sur lequel flatMap a été appelée.
    -
    -
    -
    thisArg{{optional_inline}}
    -
    La valeur à utiliser comme contexte this lors de l'exécution de callback.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction qui produit un élément du nouveau tableau et qui prend trois arguments : -

    Un nouveau tableau composé d'éléments résultants de la fonction de rappel (callback) et aplati d'un niveau de profondeur.

    + - `currentValue` + - : La valeur du tableau qui est traitée. + - `index`{{optional_inline}} + - : L'indice de l'élément du tableau qui est traitée. + - `array`{{optional_inline}} + - : Le tableau sur lequel `flatMap` a été appelée. -

    Description

    +- `thisArg`{{optional_inline}} + - : La valeur à utiliser comme contexte `this` lors de l'exécution de `callback`. -

    Pour la fonction de rappel, voir {{jsxref("Array.prototype.map()")}}. La méthode flatMap() est identique à un appel de {{jsxref("Array.prototype.map()")}} suivi d'un appel de {{jsxref("Array.prototype.flat()")}} avec la profondeur 1.

    +### Valeur de retour -

    Exemples

    +Un nouveau tableau composé d'éléments résultants de la fonction de rappel (_callback_) et aplati d'un niveau de profondeur. -

    map() et flatMap()

    +## Description -
    var arr1 = [1, 2, 3, 4];
    +Pour la fonction de rappel, voir {{jsxref("Array.prototype.map()")}}. La méthode `flatMap()` est identique à un appel de {{jsxref("Array.prototype.map()")}} suivi d'un appel de {{jsxref("Array.prototype.flat()")}} avec la profondeur 1.
     
    -arr1.map(x => [x * 2]);
    +## Exemples
    +
    +### `map()` et `flatMap()`
    +
    +```js
    +var arr1 = [1, 2, 3, 4];
    +
    +arr1.map(x => [x * 2]);
     // [[2], [4], [6], [8]]
     
    -arr1.flatMap(x => [x * 2]);
    +arr1.flatMap(x => [x * 2]);
     // [2, 4, 6, 8]
     
     // seul un niveau est aplati
    -arr1.flatMap(x => [[x * 2]]);
    +arr1.flatMap(x => [[x * 2]]);
     // [[2], [4], [6], [8]]
    -
    +``` -

    On peut utiliser un autre exemple où on génère une liste de mots à partir d'une liste de phrases :

    +On peut utiliser un autre exemple où on génère une liste de mots à partir d'une liste de phrases : -
    let tableau1 = ["Coucou comment", "", "ça va ?"];
    +```js
    +let tableau1 = ["Coucou comment", "", "ça va ?"];
     
    -tableau1.map(x => x.split(" "));
    +tableau1.map(x => x.split(" "));
     // [["Coucou", "comment"], [""], ["ça", "va", "?"]]
     
    -tableau1.flatMap(x => x.split(" "));
    +tableau1.flatMap(x => x.split(" "));
     // ["Coucou", "comment", "", "ça", "va", "?"]
    -
    +``` -

    On notera que la longueur de la liste obtenue avec flatMap est différente de la longueur de la liste originale.

    +On notera que la longueur de la liste obtenue avec `flatMap` est différente de la longueur de la liste originale. -
    //=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
    + //=> [1, 2, 3, 4, 5, 6, 7, 8, 9] -

    Équivalent

    +## Équivalent -

    reduce() et concat()

    +### `reduce()` et `concat()` -
    var arr = [1, 2, 3, 4];
    +```js
    +var arr = [1, 2, 3, 4];
     
    -arr.flatMap(x => [x, x * 2]);
    +arr.flatMap(x => [x, x * 2]);
     // est équivalent à
    -arr.reduce((acc, x) => acc.concat([x, x * 2]), []);
    -// [1, 2, 2, 4, 3, 6, 4, 8]
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    ECMAScript 2019FinaliséProposition initiale
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.flatMap")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.flat()")}}
    • -
    • {{jsxref("Array.prototype.map()")}}
    • -
    • {{jsxref("Array.prototype.reduce()")}}
    • -
    • {{jsxref("Array.prototype.concat()")}}
    • -
    +arr.reduce((acc, x) => acc.concat([x, x * 2]), []); +// [1, 2, 2, 4, 3, 6, 4, 8] +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------- | -------- | -------------------- | +| [ECMAScript 2019](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-array.prototype.flatmap) | Finalisé | Proposition initiale | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.flatMap")}} + +## Voir aussi + +- {{jsxref("Array.prototype.flat()")}} +- {{jsxref("Array.prototype.map()")}} +- {{jsxref("Array.prototype.reduce()")}} +- {{jsxref("Array.prototype.concat()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/foreach/index.md b/files/fr/web/javascript/reference/global_objects/array/foreach/index.md index 1b10baec33..13b7cf4a13 100644 --- a/files/fr/web/javascript/reference/global_objects/array/foreach/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/foreach/index.md @@ -12,107 +12,102 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach original_slug: Web/JavaScript/Reference/Objets_globaux/Array/forEach --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode forEach() permet d'exécuter une fonction donnée sur chaque élément du tableau.

    +La méthode **`forEach()`** permet d'exécuter une fonction donnée sur chaque élément du tableau. -
    {{EmbedInteractiveExample("pages/js/array-foreach.html")}}
    +{{EmbedInteractiveExample("pages/js/array-foreach.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.forEach(callback);
    -arr.forEach(callback, thisArg);
    + arr.forEach(callback); + arr.forEach(callback, thisArg); -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction à utiliser pour chaque élément du tableau. Elle prend en compte trois arguments : -
    -
    valeurCourante
    -
    La valeur de l'élément du tableau en cours de traitement.
    -
    index {{optional_inline}}
    -
    L'indice de l'élément du tableau en cours de traitement.
    -
    array {{optional_inline}}
    -
    Le tableau sur lequel la méthode forEach est appliquée.
    -
    -
    -
    thisArg {{optional_inline}}
    -
    Paramètre optionnel. La valeur à utiliser pour this lors de l'exécution de callback.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction à utiliser pour chaque élément du tableau. Elle prend en compte trois arguments : -

    {{jsxref("undefined")}}.

    + - `valeurCourante` + - : La valeur de l'élément du tableau en cours de traitement. + - `index` {{optional_inline}} + - : L'indice de l'élément du tableau en cours de traitement. + - `array` {{optional_inline}} + - : Le tableau sur lequel la méthode `forEach` est appliquée. -

    Description

    +- `thisArg` {{optional_inline}} + - : Paramètre optionnel. La valeur à utiliser pour `this` lors de l'exécution de `callback`. -

    forEach() exécute la fonction callback une fois pour chaque élément du tableau, dans l'ordre croissant des indices. Cette fonction n'est pas appelée pour les indices pour lesquels les éléments ont été supprimés ou qui n'ont pas été définis. Attention, en revanche elle est appelée pour les éléments qui sont présents et qui valent {{jsxref("undefined")}}.

    +### Valeur de retour -

    callback est appelé avec trois arguments :

    +{{jsxref("undefined")}}. -
      -
    • la valeur de l'élément
    • -
    • l'index de l'élément
    • -
    • le tableau utilisé
    • -
    +## Description -

    Si un paramètre thisArg est fourni à la méthode forEach, il sera utilisé en tant que valeur this pour chaque appel de callback. Sinon, ce sera la valeur undefined qui sera utilisée comme valeur this. La valeur this finalement prise en compte par la fonction callback est déterminée selon les règles usuelles pour déterminer la valeur de this utilisée dans une fonction.

    +`forEach()` exécute la fonction `callback` une fois pour chaque élément du tableau, dans l'ordre croissant des indices. Cette fonction n'est pas appelée pour les indices pour lesquels les éléments ont été supprimés ou qui n'ont pas été définis. Attention, en revanche elle est appelée pour les éléments qui sont présents et qui valent {{jsxref("undefined")}}. -

    L'ensemble des éléments traités par forEach est défini avant le premier appel à callback. Les éléments ajoutés au tableau après que l'appel à forEach ait commencé ne seront pas visités par callback. Si des éléments déjà présents dans le tableau sont modifiés, leur valeur telle qu'elle est passée au callback sera la valeur au moment du passage du forEach ; les éléments supprimés ne sont pas parcourus. Voir l'exemple ci-après.

    +`callback` est appelé avec trois arguments : -

    forEach() exécute la fonction callback une fois pour chaque élément. À la différence de {{jsxref("Array.prototype.map()", "map()")}} ou de {{jsxref("Array.prototype.reduce()", "reduce()")}} il renvoie toujours la valeur {{jsxref("undefined")}} et ne peut donc pas être « enchaîné ». Généralement, l'effet voulu est de déclencher des effets de bord en fin de chaîne.

    +- la valeur de l'élément +- l'index de l'élément +- le tableau utilisé -

    forEach() ne modifie pas le tableau sur lequel elle est appelée, en revanche, la fonction de retour (callback) utilisée peut modifier le tableau.

    +Si un paramètre `thisArg` est fourni à la méthode `forEach`, il sera utilisé en tant que valeur `this` pour chaque appel de `callback`. Sinon, ce sera la valeur `undefined` qui sera utilisée comme valeur `this`. La valeur `this` finalement prise en compte par la fonction `callback` est déterminée selon [les règles usuelles pour déterminer la valeur de `this` utilisée dans une fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this). -

    Note : Il n'existe aucun moyen d'arrêter une boucle forEach en dehors de lever une exception. Si vous avez besoin d'arrêter la boucle, étudiez plutôt :

    +L'ensemble des éléments traités par `forEach` est défini avant le premier appel à `callback`. Les éléments ajoutés au tableau après que l'appel à `forEach` ait commencé ne seront pas visités par `callback`. Si des éléments déjà présents dans le tableau sont modifiés, leur valeur telle qu'elle est passée au `callback` sera la valeur au moment du passage du `forEach` ; les éléments supprimés ne sont pas parcourus. Voir [l'exemple ci-après](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/forEach#Attention_aux_modifications_en_cours). -
      -
    • Une boucle for classique
    • -
    • Une boucle for...in ou for...of
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("Array.prototype.findIndex()")}}
    • -
    +`forEach()` exécute la fonction `callback` une fois pour chaque élément. À la différence de {{jsxref("Array.prototype.map()", "map()")}} ou de {{jsxref("Array.prototype.reduce()", "reduce()")}} il renvoie toujours la valeur {{jsxref("undefined")}} et ne peut donc pas être « enchaîné ». Généralement, l'effet voulu est de déclencher des effets de bord en fin de chaîne. -

    Les autres méthodes associées aux tableaux ({{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.find()")}}, {{jsxref("Array.prototype.findIndex()")}}) utilisent une fonction de texte qui permet de renvoyer une valeur équivalente à true si besoin de poursuivre la boucle.

    -
    +`forEach()` ne modifie pas le tableau sur lequel elle est appelée, en revanche, la fonction de retour (_callback_) utilisée peut modifier le tableau. -

    forEach exécute la fonction callback une fois pour chaque élément ; contrairement à every et some, cette méthode renvoie toujours undefined et ne peut pas être enchaînée.

    +> **Note :** Il n'existe aucun moyen d'arrêter une boucle `forEach` en dehors de lever une exception. Si vous avez besoin d'arrêter la boucle, étudiez plutôt : +> +> - Une boucle [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) classique +> - Une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) ou [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) +> - {{jsxref("Array.prototype.every()")}} +> - {{jsxref("Array.prototype.some()")}} +> - {{jsxref("Array.prototype.find()")}} +> - {{jsxref("Array.prototype.findIndex()")}} +> +> Les autres méthodes associées aux tableaux ({{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.find()")}}, {{jsxref("Array.prototype.findIndex()")}}) utilisent une fonction de texte qui permet de renvoyer une valeur équivalente à `true` si besoin de poursuivre la boucle. -

    Exemples

    +`forEach` exécute la fonction `callback` une fois pour chaque élément ; contrairement à `every` et `some`, cette méthode renvoie toujours `undefined` et ne peut pas être enchaînée. -

    Équivalence entre une boucle for et une boucle forEach

    +## Exemples -

    Voici un fragment de code simple qui utilise une boucle for

    +### Équivalence entre une boucle `for` et une boucle `forEach` -
    var items = ["item1", "item2", "item3"];
    +Voici un fragment de code simple qui utilise une boucle `for`
    +
    +```js
    +var items = ["item1", "item2", "item3"];
     var copie = [];
     
    -for (var i = 0; i < items.length; i++) {
    +for (var i = 0; i < items.length; i++) {
       copie.push(items[i]);
     }
    -
    +``` -

    Et voici un fragment de code équivalent qui utilise forEach :

    +Et voici un fragment de code équivalent qui utilise `forEach` : -
    var items = ["item1", "item2", "item3"]
    +```js
    +var items = ["item1", "item2", "item3"]
     var copie = [];
     
     items.forEach(function(item){
       copie.push(item);
    -});
    +}); +``` -

    Afficher le contenu d'un tableau

    +### Afficher le contenu d'un tableau -
    -

    Note : Pour afficher le contenu d'un tableau, on pourra utiliser console.table() qui met en forme les éléments du tableau. L'exemple suivant est laissé à titre d'illustration pour forEach().

    -
    +> **Note :** Pour afficher le contenu d'un tableau, on pourra utiliser [`console.table()`](/fr/docs/Web/API/Console/table) qui met en forme les éléments du tableau. L'exemple suivant est laissé à titre d'illustration pour `forEach()`. -

    Le code suivant affiche une ligne pour chaque élément du tableau :

    +Le code suivant affiche une ligne pour chaque élément du tableau : -
    function logArrayElements(element, index, array) {
    +```js
    +function logArrayElements(element, index, array) {
         console.log("a[" + index + "] = " + element);
     }
     [2, 5, , 9].forEach(logArrayElements);
    @@ -120,14 +115,14 @@ items.forEach(function(item){
     // a[0] = 2
     // a[1] = 5
     // a[3] = 9
    +```
     
    -
    - -

    Utiliser l'argument pour this

    +### Utiliser l'argument pour `this` -

    Dans l'exemple qui suit, on met à jour les propriétés d'un objet à partir des éléments d'un tableau :

    +Dans l'exemple qui suit, on met à jour les propriétés d'un objet à partir des éléments d'un tableau : -
    function Compteur() {
    +```js
    +function Compteur() {
       this.somme = 0;
       this.compte = 0;
     }
    @@ -144,27 +139,24 @@ var obj = new Compteur();
     obj.ajouter([2, 5, 9]);
     console.log(obj.compte); // 3
     console.log(obj.somme);  // 16
    -
    +``` -
    -

    Note : Le paramètre pour this est passé à la méthode forEach(), à chaque appel du callback, celui-ci sera utilisé comme valeur pour this.

    -
    +> **Note :** Le paramètre pour `this` est passé à la méthode `forEach()`, à chaque appel du callback, celui-ci sera utilisé comme valeur pour `this`. -
    -

    Note : Si la fonction passée en argument est une fonction fléchée, il n'est pas nécessaire d'ajouter le paramètre this car les fonctions fléchées utilisent le this fourni par le contexte lexical.

    -
    +> **Note :** Si la fonction passée en argument est [une fonction fléchée](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées), il n'est pas nécessaire d'ajouter le paramètre `this` car les fonctions fléchées utilisent le [`this`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this) fourni par le contexte lexical. -

    Stopper une boucle

    +### Stopper une boucle -

    Le code qui suit utilise la méthode {{jsxref("Array.prototype.every")}} pour afficher le contenu d'un tableau et s'arrêter lorsqu'il atteint une valeur supérieure à SEUIL_MAX.

    +Le code qui suit utilise la méthode {{jsxref("Array.prototype.every")}} pour afficher le contenu d'un tableau et s'arrêter lorsqu'il atteint une valeur supérieure à `SEUIL_MAX`. -
    var SEUIL_MAX = 12;
    +```js
    +var SEUIL_MAX = 12;
     var v = [5, 2, 16, 4, 3, 18, 20];
     var res;
     
     res = v.every(function(element, index, array) {
       console.log('élément :', element);
    -  if (element >= SEUIL_MAX) {
    +  if (element >= SEUIL_MAX) {
         return false;
       }
     
    @@ -179,7 +171,7 @@ console.log('res:', res);
     
     res = v.some(function(element, index, array) {
       console.log('élément:', element);
    -  if (element >= SEUIL_MAX) {
    +  if (element >= SEUIL_MAX) {
         return true;
       }
     
    @@ -190,13 +182,15 @@ console.log('res:', res);
     // élément : 5
     // élément : 2
     // élément : 16
    -// res: true
    +// res: true +``` -

    Une fonction de copie d'objet

    +### Une fonction de copie d'objet -

    Le code qui suit permet de créer une copie d'un objet donné. Il existe différentes façons pour créer une copie d'un objet. L'exemple suivant illustre une de ces façons afin d'expliquer le fonctionnement d'Array.prototype.forEach et d'utiliser les fonctions ECMAScript 5 Object.*.

    +Le code qui suit permet de créer une copie d'un objet donné. Il existe différentes façons pour créer une copie d'un objet. L'exemple suivant illustre une de ces façons afin d'expliquer le fonctionnement d'`Array.prototype.forEach` et d'utiliser les fonctions ECMAScript 5 `Object.*`. -
    function copie(obj) {
    +```js
    +function copie(obj) {
       var copie = Object.create(Object.getPrototypeOf(obj));
       var propNames = Object.getOwnPropertyNames(obj);
     
    @@ -209,13 +203,15 @@ console.log('res:', res);
     }
     
     var obj1 = { a: 1, b: 2 };
    -var obj2 = copie(obj1); // obj2 ressemble désormais à obj1
    +var obj2 = copie(obj1); // obj2 ressemble désormais à obj1 +``` -

    Attention aux modifications en cours

    +### Attention aux modifications en cours -

    Dans l'exemple qui suit, on utilise un tableau qui contient quatre élément : "un", "deux", "trois", "quatre". Lorsque le parcours du tableau arrive à l'élément "deux", on décale le tableau d'un cran vers les premiers éléments. Aussi, l'élément "quatre" est décalé à la place de "trois" et "trois" est déplacé à la place de "deux". Pour cette raison, lorsque forEach poursuit son parcours, elle saute la valeur "trois". Autrement dit, forEach n'utilise pas une copie du tableau au moment où elle est appelée, elle manipule le tableau directement. On voit aussi dans cet exemple que les éléments non initialisés ne sont pas traités par la fonction de rappel.

    +Dans l'exemple qui suit, on utilise un tableau qui contient quatre élément : `"un"`, `"deux"`, `"trois"`, `"quatre"`. Lorsque le parcours du tableau arrive à l'élément `"deux"`, on décale le tableau d'un cran vers les premiers éléments. Aussi, l'élément `"quatre"` est décalé à la place de `"trois"` et `"trois"` est déplacé à la place de `"deux"`. Pour cette raison, lorsque `forEach` poursuit son parcours, elle saute la valeur "trois". Autrement dit, `forEach` n'utilise pas une copie du tableau au moment où elle est appelée, elle manipule le tableau directement. On voit aussi dans cet exemple que les éléments non initialisés ne sont pas traités par la fonction de rappel. -
    var mots = ["un", "deux", "trois",, "quatre"];
    +```js
    +var mots = ["un", "deux", "trois",, "quatre"];
     mots.forEach(function(mot) {
       console.log(mot);
       if (mot === "deux") {
    @@ -224,48 +220,28 @@ mots.forEach(function(mot) {
     });
     // un
     // deux
    -// quatre
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.forEach")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.filter()")}}
    • -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("Array.prototype.findIndex()")}}
    • -
    • {{jsxref("Array.prototype.map()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    • {{jsxref("Map.prototype.forEach()")}}
    • -
    • {{jsxref("Set.prototype.forEach()")}}
    • -
    +// quatre +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.forEach")}} + +## Voir aussi + +- {{jsxref("Array.prototype.filter()")}} +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("Array.prototype.findIndex()")}} +- {{jsxref("Array.prototype.map()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} +- {{jsxref("Map.prototype.forEach()")}} +- {{jsxref("Set.prototype.forEach()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/from/index.md b/files/fr/web/javascript/reference/global_objects/array/from/index.md index de22e8feea..cf80abb37e 100644 --- a/files/fr/web/javascript/reference/global_objects/array/from/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/from/index.md @@ -11,49 +11,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/from original_slug: Web/JavaScript/Reference/Objets_globaux/Array/from --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Array.from() permet de créer une nouvelle instance d'Array (une copie superficielle) à partir d'un objet itérable ou semblable à un tableau.

    +La méthode **`Array.from()`** permet de créer une nouvelle instance d'`Array` (une copie superficielle) à partir d'un objet itérable ou semblable à un tableau. -
    {{EmbedInteractiveExample("pages/js/array-from.html")}}
    +{{EmbedInteractiveExample("pages/js/array-from.html")}} -

    Syntaxe

    +## Syntaxe -
    Array.from(arrayLike [, fonctionMap[, thisArg]])
    + Array.from(arrayLike [, fonctionMap[, thisArg]]) -

    Paramètres

    +### Paramètres -
    -
    arrayLike
    -
    Un objet semblable à un tableau ou bien un objet itérable dont on souhaite créer un tableau, instance d'Array.
    -
    fonctionMap {{optional_inline}}
    -
    Argument optionnel, une fonction à appliquer à chacun des éléments du tableau.
    -
    thisArg {{optional_inline}}
    -
    Argument optionnel. La valeur à utiliser pour this lors de l'exécution de la fonction fonctionMap.
    -
    +- `arrayLike` + - : Un objet semblable à un tableau ou bien un objet itérable dont on souhaite créer un tableau, instance d'`Array`. +- `fonctionMap` {{optional_inline}} + - : Argument optionnel, une fonction à appliquer à chacun des éléments du tableau. +- `thisArg` {{optional_inline}} + - : Argument optionnel. La valeur à utiliser pour `this` lors de l'exécution de la fonction `fonctionMap`. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle instance de {{jsxref("Array")}}.

    +Une nouvelle instance de {{jsxref("Array")}}. -

    Description

    +## Description -

    Array.from() permet de créer des instances d'Array à partir :

    +`Array.from()` permet de créer des instances d'`Array` à partir : -
      -
    • d'objets semblables à des tableaux (qui disposent d'une propriété length et d'éléments indexés) ou
    • -
    • d'objets itérables (des objets dont on peut avoir les éléments comme {{jsxref("Map")}} et {{jsxref("Set")}}).
    • -
    +- d'objets semblables à des tableaux (qui disposent d'une propriété `length` et d'éléments indexés) ou +- [d'objets itérables](/fr/docs/Web/JavaScript/Guide/iterable) (des objets dont on peut avoir les éléments comme {{jsxref("Map")}} et {{jsxref("Set")}}). -

    Array.from() possède un paramètre optionnel fonctionMap, qui permet d'exécuter une fonction {{jsxref("Array.prototype.map", "map")}} sur chacun des éléments du tableau (ou de l'instance de la classe fille) qui est créé. Autrement dit Array.from(obj, mapFn, thisArg) correspond exactement à Array.from(obj).map(mapFn, thisArg), sauf qu'il n'y a pas de tableau intermédiaire de créé. Cet aspect est notamment important pour certaines classes filles, comme les tableaux typés (en effet, un tableau intermédiaire aurait eu ses valeurs tronquées pour qu'elles soient du type approprié).

    +`Array.from()` possède un paramètre optionnel `fonctionMap`, qui permet d'exécuter une fonction {{jsxref("Array.prototype.map", "map")}} sur chacun des éléments du tableau (ou de l'instance de la classe fille) qui est créé. Autrement dit` Array.from(obj, mapFn, thisArg)` correspond exactement à `Array.from(obj).map(mapFn, thisArg)`, sauf qu'il n'y a pas de tableau intermédiaire de créé. Cet aspect est notamment important pour certaines classes filles, comme les [tableaux typés](/fr/docs/JavaScript/Tableaux_typ%C3%A9s) (en effet, un tableau intermédiaire aurait eu ses valeurs tronquées pour qu'elles soient du type approprié). -

    La propriété length de la méthode from() est 1.

    +La propriété `length` de la méthode `from()` est 1. -

    Avec ES6, la syntaxe de classe permet d'avoir des sous-classes pour les objets natifs comme pour les objets définis par l'utilisateur. Ainsi, les méthodes statiques de classe comme Array.from() sont héritées par les sous-classes d'Array et créent de nouvelles instances de la sous-classe d'Array.

    +Avec ES6, la syntaxe de classe permet d'avoir des sous-classes pour les objets natifs comme pour les objets définis par l'utilisateur. Ainsi, les méthodes statiques de classe comme `Array.from()` sont héritées par les sous-classes d'`Array` et créent de nouvelles instances de la sous-classe d'`Array`. -

    Exemples

    +## Exemples -
    // créer une instance d'Array à partir de l'objet arguments qui est semblable à un tableau
    +```js
    +// créer une instance d'Array à partir de l'objet arguments qui est semblable à un tableau
     function f() {
       return Array.from(arguments);
     }
    @@ -88,48 +85,28 @@ Array.from("toto");
     
     // En utilisant une fonction fléchée pour remplacer map
     // et manipuler des éléments
    -Array.from([1, 2, 3], x => x + x);
    +Array.from([1, 2, 3], x => x + x);
     // [2, 4, 6]
     
     
     // Pour générer une séquence de nombres
    -Array.from({length: 5}, (v, k) => k);
    +Array.from({length: 5}, (v, k) => k);
     // [0, 1, 2, 3, 4]
    +```
     
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.from', 'Array.from')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.from")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array")}}
    • -
    • {{jsxref("Array.prototype.map()")}}
    • -
    • {{jsxref("TypedArray.from()")}}
    • -
    +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.from', 'Array.from')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.from', 'Array.from')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.from")}} + +## Voir aussi + +- {{jsxref("Array")}} +- {{jsxref("Array.prototype.map()")}} +- {{jsxref("TypedArray.from()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/includes/index.md b/files/fr/web/javascript/reference/global_objects/array/includes/index.md index e63134919f..16ebf55be4 100644 --- a/files/fr/web/javascript/reference/global_objects/array/includes/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/includes/index.md @@ -11,44 +11,36 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes original_slug: Web/JavaScript/Reference/Objets_globaux/Array/includes --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode includes() permet de déterminer si un tableau contient une valeur et renvoie true si c'est le cas, false sinon.

    +La méthode **`includes()`** permet de déterminer si un tableau contient une valeur et renvoie `true` si c'est le cas, `false` sinon. -
    {{EmbedInteractiveExample("pages/js/array-includes.html")}}
    +{{EmbedInteractiveExample("pages/js/array-includes.html")}} +> **Note :** Cette méthode utilise l'algorithme de comparaison _[SameValueZero](/fr/docs/Web/JavaScript/Les_différents_tests_d_égalité#Un_modèle_pour_mieux_comprendre)_ qui fonctionne comme l'égalité stricte, à la différence que `NaN` est ici égal à lui même. +## Syntaxe -
    -

    Note : Cette méthode utilise l'algorithme de comparaison SameValueZero qui fonctionne comme l'égalité stricte, à la différence que NaN est ici égal à lui même.

    -
    + array.includes(élémentRecherché) + array.includes(élémentRecherché, indiceDépart) -

    Syntaxe

    +### Paramètres -
    array.includes(élémentRecherché)
    -array.includes(élémentRecherché, indiceDépart)
    -
    +- `élémentRecherché` + - : La valeur qu'on souhaite trouver dans le tableau (lorsqu'on manipule des caractères et des chaînes, la comparaison est sensible à la casse). +- `indiceDépart` {{optional_inline}} + - : La position du tableau à partir de laquelle commencer à chercher `élémentRecherché`. Si on utilise une valeur négative, la recherche commencera à partir de la fin du tableau (autrement dit à l'indice `array.length - indiceDépart`). La valeur par défaut est 0. -

    Paramètres

    +### Valeur de retour -
    -
    élémentRecherché
    -
    La valeur qu'on souhaite trouver dans le tableau (lorsqu'on manipule des caractères et des chaînes, la comparaison est sensible à la casse).
    -
    indiceDépart {{optional_inline}}
    -
    La position du tableau à partir de laquelle commencer à chercher élémentRecherché. Si on utilise une valeur négative, la recherche commencera à partir de la fin du tableau (autrement dit à l'indice array.length - indiceDépart). La valeur par défaut est 0.
    -
    +Un {{jsxref("Boolean","booléen","",1)}} qui vaut `true` si `élémentRecherché` est trouvé dans le tableau (à partir de l'`indiceDépart` si celui-ci est indiqué). Les valeurs -0, +0 et 0 sont considérées comme équivalentes mais `false` n'est pas considéré comme équivalent à 0. -

    Valeur de retour

    +> **Note :** Pour être tout à fait précis, `includes()` utilise l'algorithme _[SameValueZero](/fr/docs/Web/JavaScript/Les_différents_tests_d_égalité#Un_modèle_pour_mieux_comprendre)_ afin de déterminer si un élément donné est trouvé. -

    Un {{jsxref("Boolean","booléen","",1)}} qui vaut true si élémentRecherché est trouvé dans le tableau (à partir de l'indiceDépart si celui-ci est indiqué). Les valeurs -0, +0 et 0 sont considérées comme équivalentes mais false n'est pas considéré comme équivalent à 0.

    +## Exemples -
    -

    Note : Pour être tout à fait précis, includes() utilise l'algorithme SameValueZero afin de déterminer si un élément donné est trouvé.

    -
    - -

    Exemples

    - -
    [1, 2, 3].includes(2);     // true
    +```js
    +[1, 2, 3].includes(2);     // true
     [1, 2, 3].includes(4);     // false
     [1, 2, 3].includes(3, 3);  // false
     [1, 2, 3].includes(3, -1); // true
    @@ -56,23 +48,25 @@ array.includes(élémentRecherché, indiceDépart)
     
     ['a', 'b', 'c'].includes('c', 5);    // false
     ['a', 'b', 'c'].includes('c', -100); // true
    -
    +``` -

    indiceDépart supérieur ou égal à la longueur du tableau

    +### `indiceDépart` supérieur ou égal à la longueur du tableau -

    SI indiceDépart est supérieur ou égal à la longueur du tableau, la méthode retourne false. Le tableau n'est pas parcouru.

    +SI `indiceDépart` est supérieur ou égal à la longueur du tableau, la méthode retourne `false`. Le tableau n'est pas parcouru. -
    var arr = ['a', 'b', 'c'];
    +```js
    +var arr = ['a', 'b', 'c'];
     
     arr.includes('c', 3);   // false
     arr.includes('c', 100); // false
    -
    +``` -

    indiceDépart strictement négatif

    +### `indiceDépart` strictement négatif -

    Si indiceDépart est strictement négatif, l'indice de départ effectif est la somme entre la taille du tableau et indiceDépart. Si cette somme est toujours négative, le tableau est intégralement parcouru.

    +Si `indiceDépart` est strictement négatif, l'indice de départ effectif est la somme entre la taille du tableau et `indiceDépart`. Si cette somme est toujours négative, le tableau est intégralement parcouru. -
    // Le tableau a une taille de 3
    +```js
    +// Le tableau a une taille de 3
     // indiceDépart vaut -2
     // L'indice de départ effectif vaut is 3 + (-2) = 1
     
    @@ -81,54 +75,36 @@ var arr = ['a', 'b', 'c'];
     arr.includes('a', -2); // false
     arr.includes('b', -2); // true
     arr.includes('c', -100); // true
    -
    +``` -

    Utilisation d'includes() comme méthode générique

    +### Utilisation d'`includes()` comme méthode générique -

    includes() est une méhtode générique : l'objet sur lequel elle est appelée ne doit pas nécessairement être un tableau. On peut l'utiliser sur des objets semblables à des tableaux (ex. arguments ou des chaînes de caractères) :

    +`includes()` est une méhtode générique : l'objet sur lequel elle est appelée ne doit pas nécessairement être un tableau. On peut l'utiliser sur des objets semblables à des tableaux (ex. [`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments) ou des chaînes de caractères) : -
    function argumentsContientA(){
    +```js
    +function argumentsContientA(){
       return [].includes.call(arguments, 'a');
     }
     
     console.log(argumentsContientA('a','b','c')); // true
     console.log(argumentsContientA('d','e','f')); // false
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ES7')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.includes")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("TypedArray.prototype.includes()")}}
    • -
    • {{jsxref("String.prototype.includes()")}}
    • -
    • {{jsxref("Array.prototype.indexOf()")}}
    • -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("Array.prototype.findIndex()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}} | {{Spec2('ES7')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.includes")}} + +## Voir aussi + +- {{jsxref("TypedArray.prototype.includes()")}} +- {{jsxref("String.prototype.includes()")}} +- {{jsxref("Array.prototype.indexOf()")}} +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("Array.prototype.findIndex()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/index.md b/files/fr/web/javascript/reference/global_objects/array/index.md index 3604ce3910..ad6c63e298 100644 --- a/files/fr/web/javascript/reference/global_objects/array/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/index.md @@ -8,79 +8,89 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array original_slug: Web/JavaScript/Reference/Objets_globaux/Array --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet global Array est utilisé pour créer des tableaux. Les tableaux sont des objets de haut-niveau (en termes de complexité homme-machine) semblables à des listes.

    +L'objet global **`Array`** est utilisé pour créer des tableaux. Les tableaux sont des objets de haut-niveau (en termes de complexité homme-machine) semblables à des listes. -

    Créer un tableau

    +**Créer un tableau** -
    var fruits = ['Apple', 'Banana'];
    +```js
    +var fruits = ['Apple', 'Banana'];
     
     console.log(fruits.length);
     // 2
    -
    +``` -

    Accéder (via son index) à un élément du tableau

    +**Accéder (via son index) à un élément du tableau** -
    var first = fruits[0];
    +```js
    +var first = fruits[0];
     // Apple
     
     var last = fruits[fruits.length - 1];
     // Banana
    -
    +``` -

    Boucler sur un tableau

    +**Boucler sur un tableau** -
    fruits.forEach(function(item, index, array) {
    +```js
    +fruits.forEach(function(item, index, array) {
       console.log(item, index);
     });
     // Apple 0
     // Banana 1
    -
    +``` -

    Ajouter à la fin du tableau

    +**Ajouter à la fin du tableau** -
    var newLength = fruits.push('Orange');
    +```js
    +var newLength = fruits.push('Orange');
     // ["Apple", "Banana", "Orange"]
    -
    +``` -

    Supprimer le dernier élément du tableau

    +**Supprimer le dernier élément du tableau** -
    var last = fruits.pop(); // supprime Orange (à la fin)
    +```js
    +var last = fruits.pop(); // supprime Orange (à la fin)
     // ["Apple", "Banana"];
    -
    +``` -

    Supprimer le premier élément du tableau

    +**Supprimer le premier élément du tableau** -
    var first = fruits.shift(); // supprime Apple (au début)
    +```js
    +var first = fruits.shift(); // supprime Apple (au début)
     // ["Banana"];
    -
    +``` -

    Ajouter au début du tableau

    +**Ajouter au début du tableau** -
    var newLength = fruits.unshift('Strawberry') // ajoute au début
    +```js
    +var newLength = fruits.unshift('Strawberry') // ajoute au début
     // ["Strawberry", "Banana"];
    -
    +``` -

    Trouver l'index d'un élément dans le tableau

    +**Trouver l'index d'un élément dans le tableau** -
    fruits.push('Mango');
    +```js
    +fruits.push('Mango');
     // ["Strawberry", "Banana", "Mango"]
     
     var pos = fruits.indexOf('Banana');
     // 1
    -
    +``` -

    Supprimer un élément par son index

    +**Supprimer un élément par son index** -
    var removedItem = fruits.splice(pos, 1); // supprime 1 élément à la position pos
    +```js
    +var removedItem = fruits.splice(pos, 1); // supprime 1 élément à la position pos
     
     // ["Strawberry", "Mango"]
    -
    +``` -

    Supprimer des éléments à partir d'un index

    +**Supprimer des éléments à partir d'un index** -
    var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
    +```js
    +var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
     console.log(vegetables);
     // ["Cabbage", "Turnip", "Radish", "Carrot"]
     
    @@ -95,111 +105,130 @@ console.log(vegetables);
     
     console.log(removedItems);
     // ["Turnip", "Radish"] (splice retourne la liste des éléments supprimés)
    -
    +``` -

    Copier un tableau

    +**Copier un tableau** -
    var shallowCopy = fruits.slice(); // crée un nouveau tableau qui contient les éléments de fruits
    +```js
    +var shallowCopy = fruits.slice(); // crée un nouveau tableau qui contient les éléments de fruits
     // ["Strawberry", "Mango"]
    -
    +``` -

    Syntaxe

    +## Syntaxe -
    [element0, element1, ..., elementN]
    -new Array(element0, element1[, ...[, elementN]])
    -new Array(arrayLength)
    + [element0, element1, ..., elementN] + new Array(element0, element1[, ...[, elementN]]) + new Array(arrayLength) -

    Paramètres

    -
    -
    element0, element1, ..., elementN
    -
    Un tableau est initialisé avec les éléments donnés, sauf dans le cas où un seul argument est passé au constructeur Array et que cet argument est un nombre. (Voir ci-après.) Notez que ce cas spécial s'applique aux tableaux créés avec le constructeur Array, et non aux tableaux créés avec la syntaxe crochets.
    -
    arrayLength
    -
    Si le seul argument passé au constructeur Array est un entier entre 0 et 2^32-1 (inclus), un nouveau tableau sera créé avec ce nombre d'éléments (note : le tableau sera créé avec arrayLength emplacements vides, et non avec de véritables valeurs undefined). Si l'argument est un nombre en dehors de la plage autorisée, une exception {{jsxref("RangeError")}} est levée.
    -
    +### Paramètres -

    Description

    +- `element0, element1, ..., elementN` + - : Un tableau est initialisé avec les éléments donnés, sauf dans le cas où un seul argument est passé au constructeur `Array` et que cet argument est un nombre. (Voir ci-après.) Notez que ce cas spécial s'applique aux tableaux créés avec le constructeur `Array`, et non aux tableaux créés avec la syntaxe crochets. +- `arrayLength` + - : Si le seul argument passé au constructeur `Array` est un entier entre 0 et 2^32-1 (inclus), un nouveau tableau sera créé avec ce nombre d'éléments (note : le tableau sera créé avec `arrayLength` emplacements vides, et non avec de véritables valeurs `undefined`). Si l'argument est un nombre en dehors de la plage autorisée, une exception {{jsxref("RangeError")}} est levée. -

    Les tableaux sont des objets qui servent de liste et possèdent plusieurs méthodes incorporées pour exécuter des opérations de parcours et de modification.

    +## Description -

    Ni la taille d'un tableau ni le types de ses éléments n'est fixé. Puisque la dimension d'un tableau peut augmenter ou diminuer à tout moment, et que les éléments du tableau peuvent être stockés à des emplacements non contigus, les tableaux ne sont pas garantis d'être compacts. En général, ce sont des caractéristiques pratiques, mais si ces fonctionnalités ne sont pas souhaitables pour votre cas d'utilisation, vous pouvez envisager d'utiliser des tableaux typés.

    +Les tableaux sont des objets qui servent de liste et possèdent plusieurs méthodes incorporées pour exécuter des opérations de parcours et de modification. -

    Les tableaux ne peuvent pas utiliser de chaîne de caractères comme indice (comme dans un tableau associatif) mais des entiers. Utiliser ou accéder à des index non entiers, en utilisant la notation avec crochets (ou avec point) ne va pas définir ou récupérer un élément sur le tableau lui-même, mais une variable associée à la  collection de propriétés d'objet de ce tableau.  Les propriétés du tableau et la liste de ses éléments sont séparées, et les opérations de parcours et de modification ne s'appliquent pas à ces propriétés.

    +Ni la taille d'un tableau ni le types de ses éléments n'est fixé. Puisque la dimension d'un tableau peut augmenter ou diminuer à tout moment, et que les éléments du tableau peuvent être stockés à des emplacements non contigus, les tableaux ne sont pas garantis d'être compacts. En général, ce sont des caractéristiques pratiques, mais si ces fonctionnalités ne sont pas souhaitables pour votre cas d'utilisation, vous pouvez envisager d'utiliser des tableaux typés. -

    Accéder aux éléments d'un tableau

    +Les tableaux ne peuvent pas utiliser de chaîne de caractères comme indice (comme dans un [tableau associatif](https://fr.wikipedia.org/wiki/Tableau_associatif)) mais des entiers. Utiliser ou accéder à des index non entiers, en utilisant la [notation avec crochets](https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets#Les_objets_et_les_propri%C3%A9t%C3%A9s) (ou [avec point](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_de_membres)) ne va pas définir ou récupérer un élément sur le tableau lui-même, mais une variable associée à la  [collection de propriétés d'objet](https://developer.mozilla.org/fr/docs/Web/JavaScript/Structures_de_donn%C3%A9es#Propri%C3%A9t%C3%A9s) de ce tableau.  Les propriétés du tableau et la liste de ses éléments sont séparées, et les [opérations de parcours et de modification](https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Collections_index%C3%A9es#M%C3%A9thodes_des_tableaux) ne s'appliquent pas à ces propriétés. -

    Les tableaux sont indexés à partir de zéro: le premier élément d'un tableau a pour indice 0, et la position du dernier élément est donnée par {{jsxref("Array.length", "length")}} moins 1. Si on utilise un indice en dehors de cet intervalle, le résultat sera {{jsxref("undefined")}} (sous réserve qu'aucune propriété n'ait été ajoutée au préalable avec cet indice).

    +### Accéder aux éléments d'un tableau -
    var arr = ["le premier élément", "le deuxième élément", "le dernier élément"];
    +Les tableaux sont indexés à partir de zéro: le premier élément d'un tableau a pour indice `0`, et la position du dernier élément est donnée par {{jsxref("Array.length", "length")}} moins 1. Si on utilise un indice en dehors de cet intervalle, le résultat sera {{jsxref("undefined")}} (sous réserve qu'aucune propriété n'ait été ajoutée au préalable avec cet indice).
    +
    +```js
    +var arr = ["le premier élément", "le deuxième élément", "le dernier élément"];
     console.log(arr[0]);             // affiche "le premier élément"
     console.log(arr[1]);             // affiche "le deuxième élément"
    -console.log(arr[arr.length - 1]);// affiche "le dernier élément"
    +console.log(arr[arr.length - 1]);// affiche "le dernier élément" +``` -

    Les éléments d'un tableau sont des propriétés d'objets de la même manière que toString est une propriété. Cependant, essayer d'accéder à un élément du tableau comme suit renverra une erreur car le nom de la propriété utilisé est invalide :

    +Les éléments d'un tableau sont des propriétés d'objets de la même manière que `toString` est une propriété. Cependant, essayer d'accéder à un élément du tableau comme suit renverra une erreur car le nom de la propriété utilisé est invalide : -
    console.log(arr.0); // erreur de syntaxe
    +```js +console.log(arr.0); // erreur de syntaxe +``` -

    Ce comportement est tout à fait normal. En effet, il n'est pas possible d'accéder aux propriétés dont le nom commence par un chiffre avec cette notation (le point). Il est nécessaire d'utiliser la syntaxe avec les crochets pour accéder à ces propriétés. Ainsi, si pour un objet quelconque, on avait une propriété nommée '3d', on ne pourra y faire référence qu'en utilisant les crochets. Exemple :

    +Ce comportement est tout à fait normal. En effet, il n'est pas possible d'accéder aux propriétés dont le nom commence par un chiffre avec cette notation (le point). Il est nécessaire d'utiliser la syntaxe avec les crochets pour accéder à ces propriétés. Ainsi, si pour un objet quelconque, on avait une propriété nommée '`3d`', on ne pourra y faire référence qu'en utilisant les crochets. Exemple : -
    var années = [1950, 1960, 1970, 1980, 1990, 2000, 2010];
    +```js
    +var années = [1950, 1960, 1970, 1980, 1990, 2000, 2010];
     
     console.log(années.0);  // erreur de syntaxe
    -console.log(années[0]); // fonctionne correctement
    +console.log(années[0]); // fonctionne correctement +``` -
    renderer.3d.setTexture(model, "personnage.png");   // erreur de syntaxe
    -renderer["3d"].setTexture(model, "personnage.png");// fonctionne correctement 
    +```js +renderer.3d.setTexture(model, "personnage.png"); // erreur de syntaxe +renderer["3d"].setTexture(model, "personnage.png");// fonctionne correctement +``` -

    Dans cet exemple, on utilise des doubles quotes autour de 3d. On peut aussi utiliser les doubles quotes pour accéder aux éléments d'un tableau (ex. : années["2"] au lieu de années[2]), mais ce n'est pas obligatoire. Dans l'instruction années[2], le nombre sera converti en une chaîne de caractères par le moteur JavaScript. Pour cette raison, si on utilise les noms de propriété "2" et "02", on fera référence à deux propriétés différentes, et le fragment de code suivant renvoie donc true:

    +Dans cet exemple, on utilise des doubles quotes autour de `3d`. On peut aussi utiliser les doubles quotes pour accéder aux éléments d'un tableau (ex. : `années["2"]` au lieu de `années[2]`), mais ce n'est pas obligatoire. Dans l'instruction `années[2]`, le nombre sera converti en une chaîne de caractères par le moteur JavaScript. Pour cette raison, si on utilise les noms de propriété "2" et "02", on fera référence à deux propriétés différentes, et le fragment de code suivant renvoie donc `true`: -
    console.log(années["2"] != années["02"]); 
    +```js +console.log(années["2"] != années["02"]); +``` -

    De manière similaire, les propriétés nommées avec des mots-clés réservés ne peuvent être consultées qu'en utilisant la syntaxe avec crochets :

    +De manière similaire, les propriétés nommées avec des mots-clés réservés ne peuvent être consultées qu'en utilisant la syntaxe avec crochets : -
    var promise = {
    +```js
    +var promise = {
       'var' : 'text',
       'array': [1, 2, 3, 4]
     };
     
    -console.log(promise['var']);
    +console.log(promise['var']); +``` -
    -

    Note : Depuis Firefox 40.0a2, il est possible d'utiliser la notation avec le point pour accéder aux propriétés dont les noms ne sont pas des identifiants valides.

    -
    +> **Note :** Depuis Firefox 40.0a2, il est possible d'utiliser la notation avec le point pour accéder aux propriétés dont les noms ne sont pas des identifiants valides. -

    Relation entre length et les propriétés numériques

    +### Relation entre `length` et les propriétés numériques -

    La propriété {{jsxref("Array.length", "length")}} d'un tableau est liée aux propriétés numériques du tableau. Plusieurs méthodes natives utilisent cette propriété : {{jsxref("Array.join", "join()")}}, {{jsxref("Array.slice", "slice()")}}, {{jsxref("Array.indexOf", "indexOf()")}}, etc. D'autres méthodes comme {{jsxref("Array.push", "push()")}} et {{jsxref("Array.splice", "splice()")}} modifient le tableau et la propriété {{jsxref("Array.length", "length")}}.

    +La propriété {{jsxref("Array.length", "length")}} d'un tableau est liée aux propriétés numériques du tableau. Plusieurs méthodes natives utilisent cette propriété : {{jsxref("Array.join", "join()")}}, {{jsxref("Array.slice", "slice()")}}, {{jsxref("Array.indexOf", "indexOf()")}}, etc. D'autres méthodes comme {{jsxref("Array.push", "push()")}} et {{jsxref("Array.splice", "splice()")}} modifient le tableau et la propriété {{jsxref("Array.length", "length")}}. -
    var fruits = [];
    +```js
    +var fruits = [];
     fruits.push("banane", "pomme", "pêche");
     
    -console.log(fruits.length); // 3
    +console.log(fruits.length); // 3 +``` -

    Lorsqu'on définit une nouvelle propriété numérique pour un tableau, que l'index utilisé est valide et que celui-ci est dehors des limites actuelles du tableau, le moteur JavaScript mettra à jour la propriété {{jsxref("Array.length", "length")}} :

    +Lorsqu'on définit une nouvelle propriété numérique pour un tableau, que l'index utilisé est valide et que celui-ci est dehors des limites actuelles du tableau, le moteur JavaScript mettra à jour la propriété {{jsxref("Array.length", "length")}} : -
    fruits[5] = "mangue";
    +```js
    +fruits[5] = "mangue";
     console.log(fruits[5]);  // "mangue"
     console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    -console.log(fruits.length); // 6 
    +console.log(fruits.length); // 6 +``` -

    On peut également modifier la propriété directement (cela n'ajoutera pas de nouveaux éléments) :

    +On peut également modifier la propriété directement (cela n'ajoutera pas de nouveaux éléments) : -
    fruits.length = 10;
    +```js
    +fruits.length = 10;
     console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    -console.log(fruits.length);  // 10
    +console.log(fruits.length); // 10 +``` -

    En revanche, si on diminue la valeur de {{jsxref("Array.length", "length")}}, cela supprimera des éléments :

    +En revanche, si on diminue la valeur de {{jsxref("Array.length", "length")}}, cela supprimera des éléments : -
    fruits.length = 2;
    +```js
    +fruits.length = 2;
     console.log(Object.keys(fruits)); // ['0', '1']
    -console.log(fruits.length); // 2
    +console.log(fruits.length); // 2 +``` -

    Pour plus d'informations sur le comportement de cette propriété, voir la page {{jsxref("Array.length")}}.

    +Pour plus d'informations sur le comportement de cette propriété, voir la page {{jsxref("Array.length")}}. -

    Création d'un tableau utilisant le résultat d'une correspondance

    +### Création d'un tableau utilisant le résultat d'une correspondance -

    Le résultat d'une correspondance entre une expression rationnelle et une chaîne peut créer un tableau. Ce tableau possède des propriétés et des éléments qui fournissent des informations sur cette correspondance. Il est possible d'obtenir un tableau grâce aux méthodes {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}}, and {{jsxref("String.replace")}}. Pour mieux comprendre le fonctionnement de ces propriétés et de ces éléments, on pourra utiliser l'exemple et le tableau qui suivent :

    +Le résultat d'une correspondance entre une expression rationnelle et une chaîne peut créer un tableau. Ce tableau possède des propriétés et des éléments qui fournissent des informations sur cette correspondance. Il est possible d'obtenir un tableau grâce aux méthodes {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}}, and {{jsxref("String.replace")}}. Pour mieux comprendre le fonctionnement de ces propriétés et de ces éléments, on pourra utiliser l'exemple et le tableau qui suivent : -
    // Matche un "d" suivit par un ou plusieurs "b" et suivit d'un "d"
    +```js
    +// Matche un "d" suivit par un ou plusieurs "b" et suivit d'un "d"
     // Capture les "b" et le "d" qui suit
     // Ignore la casse
     
    @@ -207,137 +236,150 @@ var maRegexp = /d(b+)(d)/i;
     var monTableau = maRegexp.exec("cdbBdbsbz");
     
     console.log(monTableau);
    -// [ 0:"dbBd", 1:"bB", 2:"d", index:1, input:"cdbBdbsbz", length:3 ]
    +// [ 0:"dbBd", 1:"bB", 2:"d", index:1, input:"cdbBdbsbz", length:3 ] +``` -

    Les propriétés et les éléments retournés depuis cette correspondance sont les suivants :

    +Les propriétés et les éléments retournés depuis cette correspondance sont les suivants : - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Propriété/ÉlémentDescriptionExemple
    inputUne propriété en lecture seule qui reflète la chaîne originale sur laquelle l'expression rationnelle a été appliquée.cdbBdbsbz
    indexUne propriété en lecture seule qui est l'indice de la correspondance dans la chaîne (les indices commencent à 0)1
    [0]Une propriété en lecture seule qui spécifie les derniers caractères correspondants.dbBd
    [1], ...[n]Des éléments en lecture seule qui contiennent les groupes capturés, s'il y en a dans l'expression régulière. Le nombre de groupes capturés possibles est illimité.[1]: bB
    - [2]: d
    Propriété/ÉlémentDescriptionExemple
    input + Une propriété en lecture seule qui reflète la chaîne originale sur + laquelle l'expression rationnelle a été appliquée. + cdbBdbsbz
    index + Une propriété en lecture seule qui est l'indice de la correspondance + dans la chaîne (les indices commencent à 0) + 1
    [0] + Une propriété en lecture seule qui spécifie les derniers caractères + correspondants. + dbBd
    [1], ...[n] + Des éléments en lecture seule qui contiennent les groupes capturés, s'il + y en a dans l'expression régulière. Le nombre de groupes capturés + possibles est illimité. + [1]: bB
    [2]: d
    -

    Propriétés

    +## Propriétés -
    -
    {{jsxref("Array.prototype.length")}}
    -
    La propriété de longueur pour le constructeur Array, elle vaut 1.
    -
    {{jsxref("Array.@@species", "get Array[@@species]")}}
    -
    La fonction de construction utilisée pour créer les objets dérivés.
    -
    {{jsxref("Array.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés à tous les tableaux.
    -
    +- {{jsxref("Array.prototype.length")}} + - : La propriété de longueur pour le constructeur `Array`, elle vaut 1. +- {{jsxref("Array.@@species", "get Array[@@species]")}} + - : La fonction de construction utilisée pour créer les objets dérivés. +- {{jsxref("Array.prototype")}} + - : Cette propriété permet d'ajouter des propriétés à tous les tableaux. -

    Méthodes

    +## Méthodes -
    -
    {{jsxref("Array.from()")}}
    -
    Cette méthode permet de créer une nouvelle instance d'Array à partir d'un objet semblable à un tableau ou d'un itérable.
    -
    {{jsxref("Array.isArray()")}}
    -
    Cette méthode renvoie true si la variable est un tableau, false sinon.
    -
    {{jsxref("Array.of()")}}
    -
    Cette méthode permet de créer une nouvelle instance d'Array à partir d'un nombre variable d'arguments (peu importe la quantité ou le type des arguments utilisés).
    -
    +- {{jsxref("Array.from()")}} + - : Cette méthode permet de créer une nouvelle instance d'`Array` à partir d'un objet semblable à un tableau ou d'un itérable. +- {{jsxref("Array.isArray()")}} + - : Cette méthode renvoie `true` si la variable est un tableau, `false` sinon. +- {{jsxref("Array.of()")}} + - : Cette méthode permet de créer une nouvelle instance d'`Array` à partir d'un nombre variable d'arguments (peu importe la quantité ou le type des arguments utilisés). -

    Instances d'Array

    +## Instances d'`Array` -

    Toutes les instances d'Array héritent de {{jsxref("Array.prototype")}}. Le prototype du constructeur Array peut être modifié afin d'affecter l'ensemble des instances grâce à l'héritage.

    +Toutes les instances d'`Array` héritent de {{jsxref("Array.prototype")}}. Le prototype du constructeur `Array` peut être modifié afin d'affecter l'ensemble des instances grâce à l'héritage. -

    Les propriétés

    +### Les propriétés -
    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Propriétés')}}
    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Propriétés')}} -

    Les méthodes

    +### Les méthodes -

    Les mutateurs

    +#### Les mutateurs -
    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Mutateurs')}}
    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Mutateurs')}} -

    Les accesseurs

    +#### Les accesseurs -
    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Accesseurs')}}
    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Accesseurs')}} -

    Les méthodes d'itération

    +#### Les méthodes d'itération -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Méthodes_itératives')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/prototype', 'Méthodes_itératives')}} -

    Les méthodes génériques de manipulation de tableaux

    +## Les méthodes génériques de manipulation de tableaux -
    -

    Attention : Ces méthodes génériques ne sont pas standard. Elles sont dépréciées et seront retirées dans un avenir proche. Celles-ci ne peuvent être utilisées sur tous les navigateurs. Toutefois, il existe un shim disponible sur GitHub.

    -
    +> **Attention :** Ces méthodes génériques ne sont pas standard. Elles sont dépréciées et seront retirées dans un avenir proche. Celles-ci ne peuvent être utilisées sur tous les navigateurs. Toutefois, il existe [un _shim_ disponible sur GitHub](https://github.com/plusdude/array-generics). -

    Parfois, on peut vouloir appliquer des méthodes pour les tableaux sur des chaînes ou d'autres objets semblables aux tableaux (ex. : l'objet {{jsxref("Fonctions/arguments", "arguments", "", 1)}}). Une chaîne sera donc traitée comme un tableau de caractères. Ainsi, si on souhaite vérifier que chaque caractère d'une chaîne str est bien une lettre comprise entre 'a' et 'z', on pourra utiliser :

    +Parfois, on peut vouloir appliquer des méthodes pour les tableaux sur des chaînes ou d'autres objets semblables aux tableaux (ex. : l'objet {{jsxref("Fonctions/arguments", "arguments", "", 1)}}). Une chaîne sera donc traitée comme un tableau de caractères. Ainsi, si on souhaite vérifier que chaque caractère d'une chaîne `str` est bien une lettre comprise entre 'a' et 'z', on pourra utiliser : -
    function estUneLettre(caractère) {
    -  return caractère >= 'a' && caractère <= 'z';
    +```js
    +function estUneLettre(caractère) {
    +  return caractère >= 'a' && caractère <= 'z';
     }
     
     if (Array.prototype.every.call(str, estUneLettre)) {
       console.log("La chaîne '" + str + "' ne contient que des lettres entre a et z!");
     }
    -
    +``` -

    Cette notation étant plutôt verbeuse, une notation raccourcie a été introduite avec JavaScript 1.6 :

    +Cette notation étant plutôt verbeuse, une notation raccourcie a été introduite avec JavaScript 1.6 : -
    if (Array.every(str,estUneLettre)) {
    +```js
    +if (Array.every(str,estUneLettre)) {
       console.log("La chaîne '" + str + "' ne contient que des lettres entre a et z !");
     }
    -
    +``` -

    Des {{jsxref("Objets_globaux/String", "méthodes génériques", "#Méthodes_génériques_de_String", 1)}} sont également disponibles pour les {{jsxref("Objets_globaux/String", "String")}}.

    +Des {{jsxref("Objets_globaux/String", "méthodes génériques", "#Méthodes_génériques_de_String", 1)}} sont également disponibles pour les {{jsxref("Objets_globaux/String", "String")}}. -

    Cette fonctionnalité ne fait pas partie du standard ECMAScript et n'est pas prise en charge par les navigateurs qui ne sont pas basés sur Gecko. Comme alternative standard, vous pouvez convertir votre objet en véritable tableau grâce à la méthode {{jsxref("Array.from()")}} (attention, cette méthode n'est pas supportée dans les anciens navigateurs) :

    +Cette fonctionnalité ne fait pas partie du standard ECMAScript et n'est pas prise en charge par les navigateurs qui ne sont pas basés sur Gecko. Comme alternative standard, vous pouvez convertir votre objet en véritable tableau grâce à la méthode {{jsxref("Array.from()")}} (attention, cette méthode n'est pas supportée dans les anciens navigateurs) : -
    if (Array.from(str).every(estUneLettre)) {
    +```js
    +if (Array.from(str).every(estUneLettre)) {
       console.log("La chaîne '" + str + "' contient uniquement des lettres !");
    -}
    +} +``` -

    Exemples

    +## Exemples -

    Créer un tableau

    +### Créer un tableau -

    Dans l'exemple suivant, on crée un tableau tableauMsg, d'une longueur nulle. Ensuite, on lui affecte des valeurs pour tableauMsg[0] et tableauMsg[99], ce qui aura pour effet de modifier la propriété length (qui vaudra alors 100).

    +Dans l'exemple suivant, on crée un tableau `tableauMsg`, d'une longueur nulle. Ensuite, on lui affecte des valeurs pour `tableauMsg[0]` et `tableauMsg[99]`, ce qui aura pour effet de modifier la propriété `length` (qui vaudra alors 100). -
    var tableauMsg = [];
    +```js
    +var tableauMsg = [];
     tableauMsg[0] = 'Coucou';
     tableauMsg[99] = 'monde';
     
     if (tableauMsg.length === 100) {
       console.log('La longueur du tableau vaut 100.');
     }
    -
    +``` -

    Créer un tableau à deux dimensions

    +### Créer un tableau à deux dimensions -

    Dans l'exemple qui suit, on crée un plateau d'échec grâce à un tableau en deux dimensions qui contient des caractères. Le premier mouvement est effectué en copiant 'p' de (6,4) vers (4,4). La position anciennement occupée par le pion (6,4) devient vide.

    +Dans l'exemple qui suit, on crée un plateau d'échec grâce à un tableau en deux dimensions qui contient des caractères. Le premier mouvement est effectué en copiant 'p' de (6,4) vers (4,4). La position anciennement occupée par le pion (6,4) devient vide. -
    var plateau = [
    +```js
    +var plateau = [
       ['T','C','F','R','K','F','C','T'],
       ['P','P','P','P','P','P','P','P'],
       [' ',' ',' ',' ',' ',' ',' ',' '],
    @@ -353,44 +395,45 @@ console.log(plateau.join('\n') + '\n\n');
     plateau[4][4] = plateau[6][4];
     plateau[6][4] = ' ';
     console.log(plateau.join('\n'));
    -
    - -

    Voici le résultat affiché :

    - -
    T,C,F,R,K,F,C,T
    -P,P,P,P,P,P,P,P
    - , , , , , , ,
    - , , , , , , ,
    - , , , , , , ,
    - , , , , , , ,
    -p,p,p,p,p,p,p,p
    -t,c,f,k,r,f,c,t
    -
    -T,C,F,R,K,F,C,T
    -P,P,P,P,P,P,P,P
    - , , , , , , ,
    - , , , , , , ,
    - , , , ,p, , ,
    - , , , , , , ,
    -p,p,p,p, ,p,p,p
    -t,c,f,k,r,f,c,t
    -
    - -

    Utiliser un tableau pour tabuler un ensemble de valeurs

    - -
    values = [];
    -for (var x = 0; x < 10; x++){
    +```
    +
    +Voici le résultat affiché :
    +
    +    T,C,F,R,K,F,C,T
    +    P,P,P,P,P,P,P,P
    +     , , , , , , ,
    +     , , , , , , ,
    +     , , , , , , ,
    +     , , , , , , ,
    +    p,p,p,p,p,p,p,p
    +    t,c,f,k,r,f,c,t
    +
    +    T,C,F,R,K,F,C,T
    +    P,P,P,P,P,P,P,P
    +     , , , , , , ,
    +     , , , , , , ,
    +     , , , ,p, , ,
    +     , , , , , , ,
    +    p,p,p,p, ,p,p,p
    +    t,c,f,k,r,f,c,t
    +
    +### Utiliser un tableau pour tabuler un ensemble de valeurs
    +
    +```js
    +values = [];
    +for (var x = 0; x < 10; x++){
      values.push([
       2 ** x,
       2 * x ** 2
      ])
     };
     console.table(values)
    -
    +``` -

    Résulte en

    +Résulte en -
    0	1	0
    +```plain
    +0	1	0
     1	2	2
     2	4	8
     3	8	18
    @@ -400,57 +443,28 @@ console.table(values)
     7	128	98
     8	256	128
     9	512	162
    -
    - -

    (Le première colonne est l'index)

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale
    {{SpecName('ES5.1', '#sec-15.4', 'Array')}}{{Spec2('ES5.1')}}Ajout de nouvelles méthodes : {{jsxref("Array.isArray")}}, {{jsxref("Array.prototype.indexOf", "indexOf")}}, {{jsxref("Array.prototype.lastIndexOf", "lastIndexOf")}}, {{jsxref("Array.prototype.every", "every")}}, {{jsxref("Array.prototype.some", "some")}}, {{jsxref("Array.prototype.forEach", "forEach")}}, {{jsxref("Array.prototype.map", "map")}}, {{jsxref("Array.prototype.filter", "filter")}}, {{jsxref("Array.prototype.reduce", "reduce")}}, {{jsxref("Array.prototype.reduceRight", "reduceRight")}}
    {{SpecName('ES6', '#sec-array-objects', 'Array')}}{{Spec2('ES6')}}Ajout de nouvelles méthodes : {{jsxref("Array.from")}}, {{jsxref("Array.of")}}, {{jsxref("Array.prototype.find", "find")}}, {{jsxref("Array.prototype.findIndex", "findIndex")}}, {{jsxref("Array.prototype.fill", "fill")}}, {{jsxref("Array.prototype.copyWithin", "copyWithin")}}
    {{SpecName('ES7', '#sec-array-objects', 'Array')}}{{Spec2('ES7')}}Ajout de la méthode {{jsxref("Array.prototype.includes()")}}.
    {{SpecName('ESDraft', '#sec-array-objects', 'Array')}}{{Spec2('ESDraft')}}
    +``` + +(Le première colonne est l'index) + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale | +| {{SpecName('ES5.1', '#sec-15.4', 'Array')}} | {{Spec2('ES5.1')}} | Ajout de nouvelles méthodes : {{jsxref("Array.isArray")}}, {{jsxref("Array.prototype.indexOf", "indexOf")}}, {{jsxref("Array.prototype.lastIndexOf", "lastIndexOf")}}, {{jsxref("Array.prototype.every", "every")}}, {{jsxref("Array.prototype.some", "some")}}, {{jsxref("Array.prototype.forEach", "forEach")}}, {{jsxref("Array.prototype.map", "map")}}, {{jsxref("Array.prototype.filter", "filter")}}, {{jsxref("Array.prototype.reduce", "reduce")}}, {{jsxref("Array.prototype.reduceRight", "reduceRight")}} | +| {{SpecName('ES6', '#sec-array-objects', 'Array')}} | {{Spec2('ES6')}} | Ajout de nouvelles méthodes : {{jsxref("Array.from")}}, {{jsxref("Array.of")}}, {{jsxref("Array.prototype.find", "find")}}, {{jsxref("Array.prototype.findIndex", "findIndex")}}, {{jsxref("Array.prototype.fill", "fill")}}, {{jsxref("Array.prototype.copyWithin", "copyWithin")}} | +| {{SpecName('ES7', '#sec-array-objects', 'Array')}} | {{Spec2('ES7')}} | Ajout de la méthode {{jsxref("Array.prototype.includes()")}}. | +| {{SpecName('ESDraft', '#sec-array-objects', 'Array')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array")}}

    +{{Compat("javascript.builtins.Array")}} -

    Voir aussi

    +## Voir aussi - +- [Guide JavaScript : indexer les propriétés d'un objet](/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets#Indexer_les_propri.C3.A9t.C3.A9s_d'un_objet) +- [Guide JavaScript : Les objets natifs : l'objet `Array`](/fr/docs/Web/JavaScript/Guide/Objets_élémentaires_JavaScript#Les_tableaux_.3A_objet_Array) +- [Les compréhensions de tableau](/fr/docs/Web/JavaScript/Reference/Opérateurs/Compréhensions_de_tableau) +- [Émulation pour les méthodes génériques et autres fonctionnalités ECMAScript 5 pour les tableaux](https://github.com/plusdude/array-generics) (en anglais) +- [Les tableaux typés](/fr/docs/Web/JavaScript/Tableaux_typés) diff --git a/files/fr/web/javascript/reference/global_objects/array/indexof/index.md b/files/fr/web/javascript/reference/global_objects/array/indexof/index.md index cdd545abc9..14d8d2e1f4 100644 --- a/files/fr/web/javascript/reference/global_objects/array/indexof/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/indexof/index.md @@ -11,57 +11,55 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf original_slug: Web/JavaScript/Reference/Objets_globaux/Array/indexOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode indexOf() renvoie le premier indice pour lequel on trouve un élément donné dans un tableau. Si l'élément cherché n'est pas présent dans le tableau, la méthode renverra -1.

    +La méthode **`indexOf()`** renvoie le premier indice pour lequel on trouve un élément donné dans un tableau. Si l'élément cherché n'est pas présent dans le tableau, la méthode renverra -1. -
    -

    Note : pour la méthode associée aux chaînes de caractères, voir la page {{jsxref("String.prototype.indexOf()")}}.

    -
    +> **Note :** pour la méthode associée aux chaînes de caractères, voir la page {{jsxref("String.prototype.indexOf()")}}. -
    {{EmbedInteractiveExample("pages/js/array-indexof.html")}}
    +{{EmbedInteractiveExample("pages/js/array-indexof.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.indexOf(élémentRecherché)
    -arr.indexOf(élémentRecherché, indiceDébut)
    -
    + arr.indexOf(élémentRecherché) + arr.indexOf(élémentRecherché, indiceDébut) -

    Paramètres

    +### Paramètres -
    -
    élémentRecherché
    -
    L'élément qu'on cherche dans le tableau
    -
    indiceDébut {{optional_inline}}
    -
    L'index à partir duquel commencer la recherche. La valeur par défaut est 0 (le tableau sera parcouru dans sa totalité). Si l'index est plus grand ou égal à la longueur du tableau, la méthode renverra -1. Si l'index est négatif, la recherche commencera d'autant d'éléments, à partir de la fin du tableau. À noter que même si l'index est négatif, la recherche s'effectue toujours du début jusqu'à la fin du tableau. Si l'index fourni est inférieur à 0, le tableau sera entièrement parcouru.
    -
    +- `élémentRecherché` + - : L'élément qu'on cherche dans le tableau +- `indiceDébut` {{optional_inline}} + - : L'index à partir duquel commencer la recherche. La valeur par défaut est 0 (le tableau sera parcouru dans sa totalité). Si l'index est plus grand ou égal à la longueur du tableau, la méthode renverra -1. Si l'index est négatif, la recherche commencera d'autant d'éléments, à partir de la fin du tableau. À noter que même si l'index est négatif, la recherche s'effectue toujours du début jusqu'à la fin du tableau. Si l'index fourni est inférieur à 0, le tableau sera entièrement parcouru. -

    Valeur de retour

    +### Valeur de retour -

    Le premier index de l'élément dans le tableau ou -1 si la valeur n'est pas trouvée.

    +Le premier index de l'élément dans le tableau ou -1 si la valeur n'est pas trouvée. -

    Description

    +## Description -

    indexOf compare élémentRecherché aux éléments contenus dans le tableau en utilisant une égalité stricte (la même méthode utilisée par l'opérateur ===).

    +`indexOf` compare `élémentRecherché` aux éléments contenus dans le tableau en utilisant une [égalité stricte]() (la même méthode utilisée par l'opérateur `===`). -

    Exemples

    +## Exemples -

    Utiliser indexOf()

    +### Utiliser `indexOf()` -

    Dans l'exemple qui suit, on peut utiliser indexOf afin de trouver l'emplacement d'un élément dans un tableau.

    +Dans l'exemple qui suit, on peut utiliser `indexOf` afin de trouver l'emplacement d'un élément dans un tableau. -
    var tableau = [2, 9, 9];
    +```js
    +var tableau = [2, 9, 9];
     tableau.indexOf(2);     // 0
     tableau.indexOf(7);     // -1
     tableau.indexOf(9, 2);  // 2
     tableau.indexOf(2, -1); // -1
    -tableau.indexOf(2, -3); // 0
    +tableau.indexOf(2, -3); // 0 +``` -

    Trouver toutes les occurences d'un élément

    +### Trouver toutes les occurences d'un élément -

    Dans l'exemple qui suit, on utilise indexOf() afin de trouver tous les indices d'un élément dans un tableau. On peut utiliser la méthode {{jsxref("Array.prototype.push", "push")}} afin d'ajouter ces indices dans un autre tableau.

    +Dans l'exemple qui suit, on utilise `indexOf()` afin de trouver tous les indices d'un élément dans un tableau. On peut utiliser la méthode {{jsxref("Array.prototype.push", "push")}} afin d'ajouter ces indices dans un autre tableau. -
    var indices = [];
    +```js
    +var indices = [];
     var tableau = ['a', 'b', 'a', 'c', 'a', 'd'];
     var élément = 'a';
     var idx = tableau.indexOf(élément);
    @@ -70,15 +68,17 @@ while (idx != -1) {
       idx = tableau.indexOf(élément, idx + 1);
     }
     console.log(indices);
    -// [0, 2, 4]
    +// [0, 2, 4] +``` -

    Trouver si un élément existe et l'ajouter dans le tableau si ce n'est pas le cas

    +### Trouver si un élément existe et l'ajouter dans le tableau si ce n'est pas le cas -
    function mettreAJourLegumes(tabLégumes, légume) {
    +```js
    +function mettreAJourLegumes(tabLégumes, légume) {
         if (tabLégumes.indexOf(légume) === -1) {
             tabLégumes.push(légume);
             console.log('Le nouveau tableau est : ' + tabLégumes);
    -    } else if (tabLégumes.indexOf(légume) > -1) {
    +    } else if (tabLégumes.indexOf(légume) > -1) {
             console.log(légume + ' existe déjà dans le tableau.');
         }
     }
    @@ -88,13 +88,15 @@ var tabLégumes = ['pomme de terre', 'tomate', 'poivron'];
     mettreAJourLegumes(tabLégumes, 'épinard');
     // Le nouveau tableau est : pomme de terre,tomate,poivron,épinard
     mettreAJourLegumes(tabLégumes, 'épinard');
    -// épinard existe déjà dans le tableau.
    +// épinard existe déjà dans le tableau. +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    indexOf fut ajouté avec la cinquième édition du standard ECMA-262 ; il peut donc ne pas être présent dans tous les navigateurs web. Vous pouvez contourner ce problème en insérant le code suivant au début de vos scripts. Il permet d'utiliser indexOf dans les environnements qui ne le supportent pas nativement. L'algorithme est le même que celui spécifié dans ECMAScript 5 si on a bien {{jsxref("TypeError", "TypeError")}} et {{jsxref("Math.abs")}} qui ont leurs valeurs originales :

    +`indexOf` fut ajouté avec la cinquième édition du standard ECMA-262 ; il peut donc ne pas être présent dans tous les navigateurs web. Vous pouvez contourner ce problème en insérant le code suivant au début de vos scripts. Il permet d'utiliser `indexOf` dans les environnements qui ne le supportent pas nativement. L'algorithme est le même que celui spécifié dans ECMAScript 5 si on a bien {{jsxref("TypeError", "TypeError")}} et {{jsxref("Math.abs")}} qui ont leurs valeurs originales : -
    // Production steps of ECMA-262, Edition 5, 15.4.4.14
    +```js
    +// Production steps of ECMA-262, Edition 5, 15.4.4.14
     // Référence : http://es5.github.io/#x15.4.4.14
     if (!Array.prototype.indexOf) {
       Array.prototype.indexOf = function(searchElement, fromIndex) {
    @@ -113,7 +115,7 @@ if (!Array.prototype.indexOf) {
         //    méthode interne Get de O avec l'argument
         //    "length".
         // 3. Soit len le résultat de ToUint32(lenValue).
    -    var len = O.length >>> 0;
    +    var len = O.length >>> 0;
     
         // 4. Si len vaut 0, on renvoie -1.
         if (len === 0) {
    @@ -129,18 +131,18 @@ if (!Array.prototype.indexOf) {
           n = 0;
         }
     
    -    // 6. Si n >= len, on renvoie -1.
    -    if (n >= len) {
    +    // 6. Si n >= len, on renvoie -1.
    +    if (n >= len) {
           return -1;
         }
     
    -    // 7. Si n >= 0, soit k égal à n.
    -    // 8. Sinon, si n<0, soit k égal à len - abs(n).
    +    // 7. Si n >= 0, soit k égal à n.
    +    // 8. Sinon, si n<0, soit k égal à len - abs(n).
         //    Si k est inférieur à 0, on ramène k égal à 0.
    -    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
    +    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
     
    -    // 9. On répète tant que k < len
    -    while (k < len) {
    +    // 9. On répète tant que k < len
    +    while (k < len) {
           // a. Soit Pk égal à ToString(k).
           //    Ceci est implicite pour l'opérande gauche de in
           // b. Soit kPresent le résultat de l'appel de la
    @@ -155,55 +157,33 @@ if (!Array.prototype.indexOf) {
           //        l'algorithme d'égalité stricte entre
           //        searchElement et elementK.
           //  iii.  Si same vaut true, on renvoie k.
    -      if (k in O && O[k] === searchElement) {
    +      if (k in O && O[k] === searchElement) {
             return k;
           }
           k++;
         }
         return -1;
       };
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.indexOf")}}

    - -

    Notes de compatibilité

    - -
      -
    • À partir de Firefox 47 ({{geckoRelease(47)}}), cette méthode ne renverra plus -0. Ainsi, [0].indexOf(0, -0) renverra toujours +0 (cf. {{bug(1242043)}}).
    • -
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.lastIndexOf()")}}
    • -
    • {{jsxref("TypedArray.prototype.indexOf()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.indexOf")}} + +## Notes de compatibilité + +- À partir de Firefox 47 ({{geckoRelease(47)}}), cette méthode ne renverra plus `-0`. Ainsi, `[0].indexOf(0, -0)` renverra toujours `+0` (cf. {{bug(1242043)}}). + +## Voir aussi + +- {{jsxref("Array.prototype.lastIndexOf()")}} +- {{jsxref("TypedArray.prototype.indexOf()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/isarray/index.md b/files/fr/web/javascript/reference/global_objects/array/isarray/index.md index f57266afff..c4b10b3082 100644 --- a/files/fr/web/javascript/reference/global_objects/array/isarray/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/isarray/index.md @@ -11,40 +11,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray original_slug: Web/JavaScript/Reference/Objets_globaux/Array/isArray --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Array.isArray() permet de déterminer si l'objet passé en argument est un objet {{jsxref("Array")}}, elle renvoie true si le paramètre passé à la fonction est de type Array et false dans le cas contraire.

    +La méthode **`Array.isArray()`** permet de déterminer si l'objet passé en argument est un objet {{jsxref("Array")}}, elle renvoie `true` si le paramètre passé à la fonction est de type `Array` et `false` dans le cas contraire. -
    Array.isArray([1, 2, 3]);   // true
    +```js
    +Array.isArray([1, 2, 3]);   // true
     Array.isArray({toto: 123}); // false
     Array.isArray("tototruc");  // false
     Array.isArray(undefined);   // false
    -
    +``` -

    Syntaxe

    +## Syntaxe -
    Array.isArray(value)
    + Array.isArray(value) -

    Paramètres

    +### Paramètres -
    -
    value
    -
    La valeur dont on veut vérifier le type
    -
    +- `value` + - : La valeur dont on veut vérifier le type -

    Valeur de retour

    +### Valeur de retour -

    true si la valeur est un tableau (une instance de {{jsxref("Array")}}), false sinon.

    +`true` si la valeur est un tableau (une instance de {{jsxref("Array")}}), `false` sinon. -

    Description

    +## Description -

    Si l'objet indiqué en paramètre est un {{jsxref("Array")}}, la méthode renvoie true, sinon, elle renvoie false.

    +Si l'objet indiqué en paramètre est un {{jsxref("Array")}}, la méthode renvoie `true`, sinon, elle renvoie `false`. -

    Voir aussi : « Determining with absolute accuracy whether or not a JavaScript object is an array » (en anglais) pour avoir plus de détails. Si on passe un objet {{jsxref("TypedArray")}} en argument, ce sera toujours la valeur false qui sera renvoyée.

    +Voir aussi : « [Determining with absolute accuracy whether or not a JavaScript object is an array](http://web.mit.edu/jwalden/www/isArray.html) » (en anglais) pour avoir plus de détails. Si on passe un objet {{jsxref("TypedArray")}} en argument, ce sera toujours la valeur `false` qui sera renvoyée. -

    Exemples

    +## Exemples -
    // Tous les appels suivant renvoient true
    +```js
    +// Tous les appels suivant renvoient true
     Array.isArray([]);
     Array.isArray([1]);
     Array.isArray(new Array());
    @@ -64,51 +64,32 @@ Array.isArray(true);
     Array.isArray(false);
     Array.isArray(new Uint8Array(32));
     Array.isArray({ __proto__ : Array.prototype });
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Exécuter ce code avant tout les autres aboutira à la création de la méthode Array.isArray()si elle n'est pas nativement prise en charge par le navigateur.

    +Exécuter ce code avant tout les autres aboutira à la création de la méthode `Array.isArray()`si elle n'est pas nativement prise en charge par le navigateur. -
    if(!Array.isArray) {
    +```js
    +if(!Array.isArray) {
       Array.isArray = function(arg) {
         return Object.prototype.toString.call(arg) === '[object Array]';
       };
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.8.5.
    {{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.isArray")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.8.5. | +| {{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.isArray")}} + +## Voir aussi + +- {{jsxref("Array")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/join/index.md b/files/fr/web/javascript/reference/global_objects/array/join/index.md index cdb8f6b0f6..860e358953 100644 --- a/files/fr/web/javascript/reference/global_objects/array/join/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/join/index.md @@ -10,98 +10,71 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/join original_slug: Web/JavaScript/Reference/Objets_globaux/Array/join --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode join() crée et renvoie une nouvelle chaîne de caractères en concaténant tous les éléments d'un tableau (ou d'un objet semblable à un tableau). La concaténation utilise la virgule ou une autre chaîne, fournie en argument, comme séparateur.

    +La méthode **`join()`** crée et renvoie une nouvelle chaîne de caractères en concaténant tous les éléments d'un tableau (ou d'[un objet semblable à un tableau](/fr/docs/Web/JavaScript/Guide/Collections_indexées#Manipuler_des_objets_semblables_à_des_tableaux)). La concaténation utilise la virgule ou une autre chaîne, fournie en argument, comme séparateur. -
    {{EmbedInteractiveExample("pages/js/array-join.html")}}
    +{{EmbedInteractiveExample("pages/js/array-join.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.join()
    -arr.join(séparateur)
    -
    + arr.join() + arr.join(séparateur) -

    Paramètres

    +### Paramètres -
    -
    séparateur {{optional_inline}}
    -
    Ce paramètre optionnel indique une chaine de caractères pour séparer chaque élément du tableau. Le séparateur est converti en une chaine de caractères si nécessaire. Si ce paramètre n'est pas utilisé, les éléments du tableau seront séparés par une virgule (,). Si ce paramètre est la chaîne vide, les éléments seront accolés les uns aux autres sans espace entre. La valeur par défaut de ce paramètre est ",".
    -
    +- `séparateur` {{optional_inline}} + - : Ce paramètre optionnel indique une chaine de caractères pour séparer chaque élément du tableau. Le séparateur est converti en une chaine de caractères si nécessaire. Si ce paramètre n'est pas utilisé, les éléments du tableau seront séparés par une virgule (,). Si ce paramètre est la chaîne vide, les éléments seront accolés les uns aux autres sans espace entre. La valeur par défaut de ce paramètre est `","`. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères composée de tous les éléments du tableau joints les uns aux autres. Si la longueur du tableau (arr.length) vaut 0, c'est la chaîne vide qui est renvoyée. Si le tableau ne contient qu'un élément, sa version texte sera renvoyée sans être suivie du séparateur.

    +Une chaîne de caractères composée de tous les éléments du tableau joints les uns aux autres. Si la longueur du tableau (`arr.length`) vaut `0`, c'est la chaîne vide qui est renvoyée. Si le tableau ne contient qu'un élément, sa version texte sera renvoyée sans être suivie du séparateur. -

    Description

    +## Description -

    Les différents éléments du tableau sont convertis en une chaîne de caractères puis fusionnés en une seule chaîne. Si un élément vaut undefined ou null, il sera converti en la chaîne vide. Cette fonction est générique et peut donc être utilisée avec les objets semblables aux tableaux.

    +Les différents éléments du tableau sont convertis en une chaîne de caractères puis fusionnés en une seule chaîne. Si un élément vaut `undefined` ou `null`, il sera converti en la chaîne vide. Cette fonction est générique et peut donc être utilisée avec [les objets semblables aux tableaux](/fr/docs/Web/JavaScript/Guide/Collections_indexées#Manipuler_des_objets_semblables_à_des_tableaux). -

    Exemples

    +## Exemples -

    Fusionner un tableau de quatre façons différentes

    +### Fusionner un tableau de quatre façons différentes -

    L'exemple suivant crée un tableau, a, avec trois éléments, puis joint le tableau à trois reprises : en utilisant le séparateur par défaut, une virgule et un espace, puis un plus, puis avec la chaîne vide.

    +L'exemple suivant crée un tableau, `a`, avec trois éléments, puis joint le tableau à trois reprises : en utilisant le séparateur par défaut, une virgule et un espace, puis un plus, puis avec la chaîne vide. -
    var a = new Array("Vent","Pluie","Feu");
    +```js
    +var a = new Array("Vent","Pluie","Feu");
     a.join();      // "Vent,Pluie,Feu"
     a.join(", ");  // "Vent, Pluie, Feu"
     a.join(" + "); // "Vent + Pluie + Feu"
    -a.join("");    // "VentPluieFeu"
    +a.join(""); // "VentPluieFeu" +``` -

    Fusionner un objet semblable à un tableau

    +### Fusionner un objet semblable à un tableau -

    Dans l'exemple suivant, on effectue la fusion sur un objet semblable à un tableau (arguments) en appelant {{jsxref("Function.prototype.call")}} sur Array.prototype.join.

    +Dans l'exemple suivant, on effectue la fusion sur un objet semblable à un tableau ([`arguments`](/fr/docs/Web/JavaScript/Reference/Fonctions/arguments)) en appelant {{jsxref("Function.prototype.call")}} sur `Array.prototype.join`. -
    function f(a, b, c) {
    +```js
    +function f(a, b, c) {
       var s = Array.prototype.join.call(arguments);
       console.log(s);
     }
     f(1, 'a', true); // '1,a,true'
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.join")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("String.prototype.split()")}}
    • -
    • {{jsxref("Array.prototype.toString()")}}
    • -
    • {{jsxref("TypedArray.prototype.join()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.join")}} + +## Voir aussi + +- {{jsxref("String.prototype.split()")}} +- {{jsxref("Array.prototype.toString()")}} +- {{jsxref("TypedArray.prototype.join()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/keys/index.md b/files/fr/web/javascript/reference/global_objects/array/keys/index.md index 88e747da9c..51483bec61 100644 --- a/files/fr/web/javascript/reference/global_objects/array/keys/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/keys/index.md @@ -12,71 +12,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys original_slug: Web/JavaScript/Reference/Objets_globaux/Array/keys --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode keys() renvoie un nouvel objet Array Iterator qui contient les clefs pour chaque indice du tableau.

    +La méthode **`keys()`** renvoie un nouvel objet **`Array Iterator`** qui contient les clefs pour chaque indice du tableau. -
    {{EmbedInteractiveExample("pages/js/array-keys.html")}}
    +{{EmbedInteractiveExample("pages/js/array-keys.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.keys()
    + arr.keys() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet itérateur pour {{jsxref("Array")}}.

    +Un nouvel objet itérateur pour {{jsxref("Array")}}. -

    Exemples

    +## Exemples -

    Utilisation simple

    +### Utilisation simple -
    var arr = ["a","b","c"];
    +```js
    +var arr = ["a","b","c"];
     var itérateur = arr.keys();
     
     console.log(itérateur.next()); // { value: 0, done: false }
     console.log(itérateur.next()); // { value: 1, done: false }
     console.log(itérateur.next()); // { value: 2, done: false }
     console.log(itérateur.next()); // { value: undefined, done: true }
    -
    +``` -

    Un itérateur de clés prend en compte les trous

    +### Un itérateur de clés prend en compte les trous -
    var arr = ["a", , "c"];
    +```js
    +var arr = ["a", , "c"];
     var clésCreuses = Object.keys(arr);
     var clésDenses = [...arr.keys()];
     console.log(clésCreuses); // ["0", "2"]
    -console.log(clésDenses);  // [0, 1, 2]
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.keys")}}

    - -

    Voir aussi

    - - +console.log(clésDenses); // [0, 1, 2] +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.keys', 'Array.prototype.keys')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.keys")}} + +## Voir aussi + +- {{jsxref("Array.prototype.entries()")}} +- {{jsxref("Array.prototype.values()")}} +- [Les protocoles d'itération](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration) diff --git a/files/fr/web/javascript/reference/global_objects/array/lastindexof/index.md b/files/fr/web/javascript/reference/global_objects/array/lastindexof/index.md index eb2c70d644..abd24ae929 100644 --- a/files/fr/web/javascript/reference/global_objects/array/lastindexof/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/lastindexof/index.md @@ -12,73 +12,74 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf original_slug: Web/JavaScript/Reference/Objets_globaux/Array/lastIndexOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode lastIndexOf() permet de renvoyer le dernier indice pour lequel une valeur donnée est présente dans un tableau. Si la valeur recherchée n'est pas présente, le résultat sera -1. Lors de la recherche, le tableau est parcouru dans le sens des index décroissants, à partir de l'index indexDébut.

    +La méthode **`lastIndexOf()`** permet de renvoyer le dernier indice pour lequel une valeur donnée est présente dans un tableau. Si la valeur recherchée n'est pas présente, le résultat sera -1. Lors de la recherche, le tableau est parcouru dans le sens des index décroissants, à partir de l'index `indexDébut`. -
    {{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}
    +{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.lastIndexOf(élémentRecherché)
    -arr.lastIndexOf(élémentRecherché, indexDébut)
    -
    + arr.lastIndexOf(élémentRecherché) + arr.lastIndexOf(élémentRecherché, indexDébut) -

    Paramètres

    +### Paramètres -
    -
    élémentRecherché
    -
    L'élément à qu'on cherche dans le tableau.
    -
    indexDébut {{optional_inline}}
    -
    L'index à partir duquel commencer la recherche dans le tableau (la recherche s'effectuant à l'envers). Si le paramètre est absent, sa valeur par défaut sera la longueur du tableau moins 1 (c'est-à-dire arr.length - 1), le tableau sera alors parcouru dans sa totalité. Si l'index est plus grand ou égal à la longueur du tableau, le tableau sera parcouru en entier. Si l'index est négatif, la recherche commencera d'autant d'éléments à partir de la fin du tableau. À noter que, même si l'index est négatif, la recherche s'effectuera toujours de la fin jusqu'au début du tableau. Si l'index calculé est inférieur à 0, la méthode renverra -1 et le tableau ne sera pas parcouru.
    -
    +- `élémentRecherché` + - : L'élément à qu'on cherche dans le tableau. +- `indexDébut` {{optional_inline}} + - : L'index à partir duquel commencer la recherche dans le tableau (la recherche s'effectuant à l'envers). Si le paramètre est absent, sa valeur par défaut sera la longueur du tableau moins 1 (c'est-à-dire `arr.length - 1`), le tableau sera alors parcouru dans sa totalité. Si l'index est plus grand ou égal à la longueur du tableau, le tableau sera parcouru en entier. Si l'index est négatif, la recherche commencera d'autant d'éléments à partir de la fin du tableau. À noter que, même si l'index est négatif, la recherche s'effectuera toujours de la fin jusqu'au début du tableau. Si l'index calculé est inférieur à 0, la méthode renverra -1 et le tableau ne sera pas parcouru. -

    Valeur de retour

    +### Valeur de retour -

    Le dernier index auquel on trouve la valeur dans le tableau, -1 si elle n'est pas trouvée.

    +Le dernier index auquel on trouve la valeur dans le tableau, -1 si elle n'est pas trouvée. -

    Description

    +## Description -

    lastIndexOf compare élémentRecherché aux éléments contenus dans le tableau en utilisant une égalité stricte (l'égalité utilisée par l'opérateur ===).

    +`lastIndexOf` compare `élémentRecherché` aux éléments contenus dans le tableau en utilisant une [égalité stricte]() (l'égalité utilisée par l'opérateur ===). -

    Exemples

    +## Exemples -

    Utiliser lastIndexOf

    +### Utiliser `lastIndexOf` -

    Dans l'exemple suivant, on utilise lastIndexOf afin de situer une valeur dans un tableau.

    +Dans l'exemple suivant, on utilise `lastIndexOf` afin de situer une valeur dans un tableau. -
    var tableau = [2, 5, 9, 2];
    +```js
    +var tableau = [2, 5, 9, 2];
     tableau.lastIndexOf(2);     // 3
     tableau.lastIndexOf(7);     // -1
     tableau.lastIndexOf(2, 3);  // 3
     tableau.lastIndexOf(2, 2);  // 0
     tableau.lastIndexOf(2, -2); // 0
    -tableau.lastIndexOf(2, -1); // 3
    +tableau.lastIndexOf(2, -1); // 3 +``` -

    Trouver toutes les occurrences d'un élément

    +### Trouver toutes les occurrences d'un élément -

    L’exemple suivant utilise lastIndexOf pour trouver tous les index (indices) d’un élément dans un tableau donné, en utilisant {{jsxref("Array.prototype.push", "push")}} pour les ajouter dans un autre tableau quand ils sont trouvés.

    +L’exemple suivant utilise `lastIndexOf` pour trouver tous les index (`indices`) d’un élément dans un tableau donné, en utilisant {{jsxref("Array.prototype.push", "push")}} pour les ajouter dans un autre tableau quand ils sont trouvés. -
    var indices = [];
    +```js
    +var indices = [];
     var tableau = ['a', 'b', 'a', 'c', 'a', 'd'];
     var élément = 'a';
     var idx = tableau.lastIndexOf(élément);
     while (idx !== -1) {
       indices.push(idx);
    -  idx = (idx > 0 ? tableau.lastIndexOf(élément, idx - 1) : -1);
    +  idx = (idx > 0 ? tableau.lastIndexOf(élément, idx - 1) : -1);
     }
     
     console.log(indices);
    -// [4, 2, 0]
    +// [4, 2, 0] +``` -

    Remarquez que nous avons dû traiter le cas de idx === 0 séparément (idx > 0) parce que l’élément sera toujours trouvé, indépendamment du paramètre de fromIndex, si c’est le premier élément du tableau. C’est une différence avec la méthode {{jsxref("Array.prototype.indexOf", "indexOf")}}.

    +Remarquez que nous avons dû traiter le cas de `idx === 0` séparément (`idx > 0`) parce que l’élément sera toujours trouvé, indépendamment du paramètre de `fromIndex`, si c’est le premier élément du tableau. C’est une différence avec la méthode {{jsxref("Array.prototype.indexOf", "indexOf")}}. +## Prothèse d'émulation (_polyfill_) -

    Prothèse d'émulation (polyfill)

    +`lastIndexOf` a été ajouté avec la cinquième édition du standard ECMA-262 ; il peut donc ne pas être présent dans tous les navigateurs web. Vous pouvez contourner ce problème en insérant le code suivant au début de vos scripts. Il vous permettra d'utiliser `lastIndexOf` avec les navigateurs qui ne le supportent pas nativement. L'algorithme qui suit est le même que celui spécifié par ECMAScript 5 si {{jsxref("Object", "Object")}}, {{jsxref("TypeError", "TypeError")}}, {{jsxref("Number", "Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, et {{jsxref("Math.min")}} n'ont pas été modifiés et conservent leurs valeurs originales. -

    lastIndexOf a été ajouté avec la cinquième édition du standard ECMA-262 ; il peut donc ne pas être présent dans tous les navigateurs web. Vous pouvez contourner ce problème en insérant le code suivant au début de vos scripts. Il vous permettra d'utiliser lastIndexOf avec les navigateurs qui ne le supportent pas nativement. L'algorithme qui suit est le même que celui spécifié par ECMAScript 5 si {{jsxref("Object", "Object")}}, {{jsxref("TypeError", "TypeError")}}, {{jsxref("Number", "Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, et {{jsxref("Math.min")}} n'ont pas été modifiés et conservent leurs valeurs originales.

    - -
    // Production steps of ECMA-262, Edition 5, 15.4.4.15
    +```js
    +// Production steps of ECMA-262, Edition 5, 15.4.4.15
     // Reference: http://es5.github.io/#x15.4.4.15
     if (!Array.prototype.lastIndexOf) {
       Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {
    @@ -90,73 +91,51 @@ if (!Array.prototype.lastIndexOf) {
     
         var n, k,
           t = Object(this),
    -      len = t.length >>> 0;
    +      len = t.length >>> 0;
         if (len === 0) {
           return -1;
         }
     
         n = len - 1;
    -    if (arguments.length > 1) {
    +    if (arguments.length > 1) {
           n = Number(arguments[1]);
           if (n != n) {
             n = 0;
           }
    -      else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
    -        n = (n > 0 || -1) * Math.floor(Math.abs(n));
    +      else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
    +        n = (n > 0 || -1) * Math.floor(Math.abs(n));
           }
         }
     
    -    for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) {
    -      if (k in t && t[k] === searchElement) {
    +    for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) {
    +      if (k in t && t[k] === searchElement) {
             return k;
           }
         }
         return -1;
       };
    -}
    - -

    On notera que cette implémentation vise une compatibilité absolue de lastIndexOf dans Firefox et le moteur JavaScript SpiderMonkey, incluant plusieurs cas très particuliers. Si vous comptez l'utiliser dans une application, vous devriez pouvoir calculer from avec un code beaucoup moins compliqué.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.lastIndexOf")}}

    - -

    Notes de compatibilité

    - -
      -
    • À partir de Firefox 47 ({{geckoRelease(47)}}), cette méthode ne renverra plus -0. Ainsi, [0].lastIndexOf(0, -0) renverra toujours +0 (cf. {{bug(1242043)}}).
    • -
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.indexOf()")}}
    • -
    • {{jsxref("TypedArray.prototype.lastIndexOf()")}}
    • -
    +} +``` + +On notera que cette implémentation vise une compatibilité absolue de `lastIndexOf` dans Firefox et le moteur JavaScript SpiderMonkey, incluant plusieurs cas très particuliers. Si vous comptez l'utiliser dans une application, vous devriez pouvoir calculer `from` avec un code beaucoup moins compliqué. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.lastIndexOf")}} + +## Notes de compatibilité + +- À partir de Firefox 47 ({{geckoRelease(47)}}), cette méthode ne renverra plus `-0`. Ainsi, `[0].lastIndexOf(0, -0)` renverra toujours `+0` (cf. {{bug(1242043)}}). + +## Voir aussi + +- {{jsxref("Array.prototype.indexOf()")}} +- {{jsxref("TypedArray.prototype.lastIndexOf()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/length/index.md b/files/fr/web/javascript/reference/global_objects/array/length/index.md index 4e05fe8940..caa912f99a 100644 --- a/files/fr/web/javascript/reference/global_objects/array/length/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/length/index.md @@ -9,19 +9,18 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/length original_slug: Web/JavaScript/Reference/Objets_globaux/Array/length --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété length (longueur) est un entier non-signé de 32 bits qui indique le nombre d'éléments présents dans le tableau. Elle est toujours supérieure au plus grand indice du tableau.

    +La propriété **`length`** (longueur) est un entier non-signé de 32 bits qui indique le nombre d'éléments présents dans le tableau. Elle est toujours supérieure au plus grand indice du tableau. -
    {{EmbedInteractiveExample("pages/js/array-length.html")}}
    +{{EmbedInteractiveExample("pages/js/array-length.html")}} +## Description +La valeur de la propriété `length` est un entier de signe positif dont la valeur est inférieure à 2 à la puissance 32 (2^32). -

    Description

    - -

    La valeur de la propriété length est un entier de signe positif dont la valeur est inférieure à 2 à la puissance 32 (2^32).

    - -
    var tableauA = new Array(4294967296); // 2 à la puissance 32 = 4294967296
    +```js
    +var tableauA = new Array(4294967296); // 2 à la puissance 32 = 4294967296
     var tableauC = new Array(-100) // une valeur négative
     
     console.log(tableauA.length); // RangeError: Invalid array length
    @@ -30,91 +29,71 @@ console.log(tableauC.length); // RangeError: Invalid array length
     var tableauB = [];
     tableauB.length = Math.pow(2,32)-1; // On déclare une longueur inférieure à 2 puissance 32
     console.log(tableauB.length); // 4294967295
    -
    +``` -

    Vous pouvez modifier la propriété length d'un tableau à loisir pour le tronquer. Quand vous étendez un tableau en modifiant la valeur de sa propriété length, le nombre d'éléments réellement présents dans ce tableau n'augmente pas : par exemple, si vous affectez la valeur 3 à la propriété length d'un tableau alors qu'elle vaut 2, le tableau contiendra toujours seulement 2 éléments. La troisième « case » ne sera pas itérable. De ce fait, la propriété length d'un tableau ne renseigne en rien sur le nombre de valeurs définies dans le tableau. Voir aussi la relation entre longueur et propriétés numériques.

    +Vous pouvez modifier la propriété `length` d'un tableau à loisir pour le tronquer. Quand vous étendez un tableau en modifiant la valeur de sa propriété `length`, le nombre d'éléments réellement présents dans ce tableau n'augmente pas : par exemple, si vous affectez la valeur 3 à la propriété `length` d'un tableau alors qu'elle vaut 2, le tableau contiendra toujours seulement 2 éléments. La troisième « case » ne sera pas itérable. De ce fait, la propriété `length` d'un tableau ne renseigne en rien sur le nombre de valeurs définies dans le tableau. Voir aussi [la relation entre longueur et propriétés numériques](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array#Relation_entre_length_et_les_propri.C3.A9t.C3.A9s_num.C3.A9riques). -
    const arr = [1, 2, 3];
    +```js
    +const arr = [1, 2, 3];
     console.table(arr);
     // [1, 2]
     
     arr.length = 5; // On définit une longueur à 5
     console.table(arr);
    -// [1, 2, <3 éléments vides>]
    +// [1, 2, <3 éléments vides>]
     
    -arr.forEach(element => console.log(element));
    +arr.forEach(element => console.log(element));
     // 1
     // 2
    -
    +``` -

    {{js_property_attributes(1,0,0)}}

    +{{js_property_attributes(1,0,0)}} -

    Exemples

    +## Exemples -

    Renvoyer la longueur d'un tableau

    +### Renvoyer la longueur d'un tableau -
    var items = ["chaise", "bureau", "table", "sac"];
    +```js
    +var items = ["chaise", "bureau", "table", "sac"];
     items.length; // 4
    -
    +``` -

    Parcourir un tableau

    +### Parcourir un tableau -

    Dans l'exemple suivant, on itère sur le tableau nombres en utilisant la propriété length afin de connaître son nombre d'élément. La valeur de chaque élément est ensuite multipliée par deux :

    +Dans l'exemple suivant, on itère sur le tableau `nombres` en utilisant la propriété `length` afin de connaître son nombre d'élément. La valeur de chaque élément est ensuite multipliée par deux : -
    var nombres = [1,2,3,4,5];
    +```js
    +var nombres = [1,2,3,4,5];
     
    -for (var i = 0; i < nombres.length; i++) {
    +for (var i = 0; i < nombres.length; i++) {
       nombres[i] *= 2;
     }
     // nombres vaut maintenant [2,4,6,8,10];
    -
    +``` -

    Tronquer un tableau

    +### Tronquer un tableau -

    L'exemple suivant raccourcit le tableau etatsUS à 50 si sa longueur actuelle est supérieure à 50.

    +L'exemple suivant raccourcit le tableau `etatsUS` à 50 si sa longueur actuelle est supérieure à 50. -
    if (etatsUS.length > 50) {
    +```js
    +if (etatsUS.length > 50) {
        etatsUS.length = 50;
    -}
    - -

    Specifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.length")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array")}}
    • -
    +} +``` + +## Specifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.length")}} + +## Voir aussi + +- {{jsxref("Array")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/map/index.md b/files/fr/web/javascript/reference/global_objects/array/map/index.md index 48a9be07f5..b5a56e9db7 100644 --- a/files/fr/web/javascript/reference/global_objects/array/map/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/map/index.md @@ -12,84 +12,83 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/map original_slug: Web/JavaScript/Reference/Objets_globaux/Array/map --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode map() crée un nouveau tableau avec les résultats de l'appel d'une fonction fournie sur chaque élément du tableau appelant.

    +La méthode **`map()`** crée un nouveau tableau avec les résultats de l'appel d'une fonction fournie sur chaque élément du tableau appelant. -
    {{EmbedInteractiveExample("pages/js/array-map.html")}}
    +{{EmbedInteractiveExample("pages/js/array-map.html")}} -

    Syntaxe

    +## Syntaxe -
    var nouveauTableau = arr.map(callback [, thisArg])
    + var nouveauTableau = arr.map(callback [, thisArg]) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction qui est utilisée pour créer un élément du nouveau tableau. Elle utilise trois arguments : -
    -
    valeurCourante
    -
    La valeur de l'élément du tableau à traiter.
    -
    index{{optional_inline}}
    -
    L'index de l'élément qui est traité par la fonction.
    -
    tableau{{optional_inline}}
    -
    Le tableau sur lequel on a appelé la méthode map.
    -
    -
    -
    thisArg {{optional_inline}}
    -
    La valeur à utiliser pour this lors de l'exécution de callback. La valeur par défaut est l'objet global de l'environnement (Window pour un navigateur).
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction qui est utilisée pour créer un élément du nouveau tableau. Elle utilise trois arguments : -

    Un nouveau tableau composé des images de la fonction de rappel.

    + - `valeurCourante` + - : La valeur de l'élément du tableau à traiter. + - `index`{{optional_inline}} + - : L'index de l'élément qui est traité par la fonction. + - `tableau`{{optional_inline}} + - : Le tableau sur lequel on a appelé la méthode `map`. -

    Description

    +- `thisArg` {{optional_inline}} + - : La valeur à utiliser pour `this` lors de l'exécution de `callback`. La valeur par défaut est l'objet global de l'environnement (`Window` pour un navigateur). -

    Lorsqu'on utilise map, la fonction callback fournie en argument est exécutée une fois pour chacun des éléments du tableau, dans l'ordre du tableau. Chaque résultat de l'opération sur un élément sera un élément du nouveau tableau. La fonction callback est appelée uniquement pour les indices du tableau pour lesquels il y a des valeurs affectées (y compris si cette valeur est {{jsxref("undefined")}}). Si les valeurs ont été supprimées ou qu'elles n'ont jamais été initialisées, la fonction ne sera pas appelée.

    +### Valeur de retour -

    callback est appelée avec trois arguments : la valeur de l'élément du tableau, l'index de cet élément et l'objet {{jsxref("Array")}} qui est parcouru.

    +Un nouveau tableau composé des images de la fonction de rappel. -
    -

    Attention : map() construit un nouveau tableau. Si on utilise cette méthode sans utiliser le résultat, mieux vaudra utiliser forEach ou for...of.  Pour mieux décider si map()est adéquat, regardez si vous utilisez la valeur de retour et/ou si vous renvoyez une valeur avec la fonction callback : si ce n'est pas le cas, il ne faut pas utiliser map().

    -
    +## Description -

    Si le paramètre thisArg est utilisé, il sera utilisé en tant que this par la fonction callback lorsqu'elle sera appelée. S'il n'est pas utilisé, ce sera la valeur {{jsxref("undefined")}} qui sera utilisée pour définir this. La valeur this finalement prise en compte par la fonction callback est définie selon les règles usuelles qui déterminent la valeur this observée par une fonction.

    +Lorsqu'on utilise `map`, la fonction `callback` fournie en argument est exécutée une fois pour chacun des éléments du tableau, dans l'ordre du tableau. Chaque résultat de l'opération sur un élément sera un élément du nouveau tableau. La fonction `callback` est appelée uniquement pour les indices du tableau pour lesquels il y a des valeurs affectées (y compris si cette valeur est {{jsxref("undefined")}}). Si les valeurs ont été supprimées ou qu'elles n'ont jamais été initialisées, la fonction ne sera pas appelée. -

    map ne modifie pas le tableau sur lequel elle est appelée (bien que la fonction callback, si elle est appelée, puisse modifier le tableau).

    +`callback` est appelée avec trois arguments : la valeur de l'élément du tableau, l'index de cet élément et l'objet {{jsxref("Array")}} qui est parcouru. -

    La liste des éléments à traiter lors de l'opération map est définie avant le premier appel à callback. Les éléments qui sont ajoutés au tableau après que l'appel à map ait été initié ne seront pas traités par la fonction callback. Si des éléments ont été modifiés, la valeur utilisée par la fonction callback sera celle au moment où map est utilisée. Les éléments qui sont supprimés ne sont pas traités. De la même façon, si on applique map sur un tableau dont certains éléments sont indéfinis, le résultat possèdera également les mêmes éléments indéfinis.

    +> **Attention :** `map()` construit un nouveau tableau. Si on utilise cette méthode sans utiliser le résultat, mieux vaudra utiliser [`forEach`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/forEach) ou [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of).  Pour mieux décider si `map()`est adéquat, regardez si vous utilisez la valeur de retour et/ou si vous renvoyez une valeur avec la fonction `callback` : si ce n'est pas le cas, il ne faut pas utiliser `map()`. -

    Exemples

    +Si le paramètre `thisArg` est utilisé, il sera utilisé en tant que `this` par la fonction `callback` lorsqu'elle sera appelée. S'il n'est pas utilisé, ce sera la valeur {{jsxref("undefined")}} qui sera utilisée pour définir `this`. La valeur `this` finalement prise en compte par la fonction `callback` est définie [selon les règles usuelles qui déterminent la valeur `this` observée par une fonction](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this). -

    Créer un tableau des racines carrées d'un tableau de nombre

    +`map` ne modifie pas le tableau sur lequel elle est appelée (bien que la fonction `callback`, si elle est appelée, puisse modifier le tableau). -

    Dans l'exemple suivant, on crée un tableau composé des racines carrées des éléments d'un premier tableau :

    +La liste des éléments à traiter lors de l'opération `map` est définie avant le premier appel à `callback`. Les éléments qui sont ajoutés au tableau après que l'appel à `map` ait été initié ne seront pas traités par la fonction `callback`. Si des éléments ont été modifiés, la valeur utilisée par la fonction `callback` sera celle au moment où `map` est utilisée. Les éléments qui sont supprimés ne sont pas traités. De la même façon, si on applique `map` sur un tableau dont certains éléments sont indéfinis, le résultat possèdera également les mêmes éléments indéfinis. -
    var nombres = [1, 4, 9];
    +## Exemples
    +
    +### Créer un tableau des racines carrées d'un tableau de nombre
    +
    +Dans l'exemple suivant, on crée un tableau composé des racines carrées des éléments d'un premier tableau :
    +
    +```js
    +var nombres = [1, 4, 9];
     var racines = nombres.map(Math.sqrt);
     // racines vaut désormais [1, 2, 3]
     // nombres vaut toujours [1, 4, 9]
    -
    +``` -

    Créer un tableau de nombres avec une fonction à un argument

    +### Créer un tableau de nombres avec une fonction à un argument -

    Ici, on illustre le fonctionnement de map avec une fonction à un argument. Cet argument sera automatiquement remplacé par chaque élément du tableau au fur et à mesure que map parcourt le tableau :

    +Ici, on illustre le fonctionnement de `map` avec une fonction à un argument. Cet argument sera automatiquement remplacé par chaque élément du tableau au fur et à mesure que `map` parcourt le tableau : -
    var nombres = [1, 4, 9];
    +```js
    +var nombres = [1, 4, 9];
     var doubles = nombres.map(function(num) {
       return num * 2;
     });
     // doubles vaut désormais [2, 8, 18].
     // nombres vaut toujours [1, 4, 9]
    -
    +``` -

    Utiliser map pour changer le format d'objets dans un tableau

    +### Utiliser `map` pour changer le format d'objets dans un tableau -

    Dans le code qui suit, on utilise un tableau d'objets pour créer un autre tableau contenant de nouveaux objets dans un autre format :

    +Dans le code qui suit, on utilise un tableau d'objets pour créer un autre tableau contenant de nouveaux objets dans un autre format : -
    var tableauOrig = [{clé:1, valeur:10}, {clé:2, valeur:20}, {clé:3, valeur: 30}];
    -var tableauFormaté = tableauOrig.map(obj => {
    +```js
    +var tableauOrig = [{clé:1, valeur:10}, {clé:2, valeur:20}, {clé:3, valeur: 30}];
    +var tableauFormaté = tableauOrig.map(obj => {
       var rObj = {};
       rObj[obj.clé] = obj.valeur;
       return rObj;
    @@ -100,36 +99,39 @@ var tableauFormaté = tableauOrig.map(obj => {
     //  {clé:2, valeur:20},
     //  {clé:3, valeur: 30}
     // ]
    -
    +``` -

    Utiliser map de façon générique

    +### Utiliser `map` de façon générique -

    Dans cet exemple, on voit comment utiliser la fonction map sur une chaîne de caractères pour obtenir un tableau contenant les codes ASCII des valeurs encodées :

    +Dans cet exemple, on voit comment utiliser la fonction `map` sur une chaîne de caractères pour obtenir un tableau contenant les codes ASCII des valeurs encodées : -
    var map = Array.prototype.map;
    +```js
    +var map = Array.prototype.map;
     var a = map.call('Hello World', function(x) { return x.charCodeAt(0); });
     // a vaut désormais [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
    -
    +``` -

    Utiliser map avec querySelectorAll

    +### Utiliser `map` avec `querySelectorAll` -

    Dans cet exemple, on illustre comment utiliser la méthode map de façon générique, sur un tableau d'objets collectés grâce à querySelectorAll :

    +Dans cet exemple, on illustre comment utiliser la méthode map de façon générique, sur un tableau d'objets collectés grâce à `querySelectorAll` : -
    var elems = document.querySelectorAll('select option:checked');
    +```js
    +var elems = document.querySelectorAll('select option:checked');
     var values = Array.prototype.map.call(elems, function(obj) {
       return obj.value;
     });
    -
    +``` -

    On aurait également pu utiliser la méthode {{jsxref("Array.from()")}} qui permet de produire un tableau à partir d'un objet itérable.

    +On aurait également pu utiliser la méthode {{jsxref("Array.from()")}} qui permet de produire un tableau à partir d'un objet itérable. -

    Un résultat inattendu

    +### Un résultat inattendu -

    Exemple inspiré par ce billet (en anglais)

    +[Exemple inspiré par ce billet](https://www.wirfs-brock.com/allen/posts/166) (en anglais) -

    Il est fréquent d'utiliser la fonction callback avec un seul argument (l'élément en cours). Certaines fonctions natives sont également souvent appelées avec un unique argument même si elles peuvent prendre en compte plusieurs arguments. En combinant ces deux « habitudes », on peut obtenir certains résultats inattendus :

    +Il est fréquent d'utiliser la fonction `callback` avec un seul argument (l'élément en cours). Certaines fonctions natives sont également souvent appelées avec un unique argument même si elles peuvent prendre en compte plusieurs arguments. En combinant ces deux « habitudes », on peut obtenir certains résultats inattendus : -
    // Si on utilise :
    +```js
    +// Si on utilise :
     ['1', '2', '3'].map(parseInt);
     // On s'attend à obtenir [1, 2, 3]
     // Le résultat qu'on obtient est en fait [1, NaN, NaN]
    @@ -161,50 +163,29 @@ function returnInt(element) {
     
     // Formulation équivalente plus concise avec
     // une fonction fléchée
    -['1', '2', '3'].map( str => parseInt(str));
    +['1', '2', '3'].map( str => parseInt(str));
     
     // Une autre méthode, plus simple
     ['1', '2', '3'].map(Number); // [1, 2, 3]
     // à la différence de parseInt, cela fonctionnera pour les
     // nombres décimaux ou en notation exponentielle
     ['1.1', '2.2e2', '3e300'].map(Number); // [1.1, 220, 3e+300]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.map")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • L'objet {{jsxref("Map")}}
    • -
    • {{jsxref("Array.from()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.map")}} + +## Voir aussi + +- {{jsxref("Array.prototype.forEach()")}} +- L'objet {{jsxref("Map")}} +- {{jsxref("Array.from()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/of/index.md b/files/fr/web/javascript/reference/global_objects/array/of/index.md index 68508d936f..cbc2b0c156 100644 --- a/files/fr/web/javascript/reference/global_objects/array/of/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/of/index.md @@ -10,93 +10,78 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/of original_slug: Web/JavaScript/Reference/Objets_globaux/Array/of --- -
    {{JSRef}}
    +{{JSRef}} -

    La methode Array.of() permet de créer une nouvelle instance d'objet Array à partir d'un nombre variable d'arguments, quels que soient leur nombre ou leur type.

    +La methode **`Array.of()`** permet de créer une nouvelle instance d'objet `Array` à partir d'un nombre variable d'arguments, quels que soient leur nombre ou leur type. -

    La différence entre Array.of() et le constructeur Array se situe dans la gestion de d'arguments entiers : Array.of(7) crée un tableau avec un seul élément, 7, tandis que Array(7) produit un tableau avec 7 éléments vides (à ne pas confondre avec des éléments qui auraient explicitement la valeur undefined).

    +La différence entre **`Array.of()`** et le constructeur **`Array`** se situe dans la gestion de d'arguments entiers : **`Array.of(7)`** crée un tableau avec un seul élément, 7, tandis que **`Array(7)`** produit un tableau avec 7 éléments vides (à ne pas confondre avec des éléments qui auraient explicitement la valeur [`undefined`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/undefined)). -
    Array.of(7);       // [7]
    +```js
    +Array.of(7);       // [7]
     Array.of(1, 2, 3); // [1, 2, 3]
     
     Array(7);          // un tableau avec 7 emplacements vides
     Array(1, 2, 3);    // [1, 2, 3]
    -
    +``` -

    Syntaxe

    +## Syntaxe -
    Array.of(element0[, element1[, ...[, elementN]]])
    -
    + Array.of(element0[, element1[, ...[, elementN]]]) -

    Paramètres

    +### Paramètres -
    -
    element0, element1, ..., elementN
    -
    Les éléments avec lesquels on souhaite construire le nouveau tableau.
    -
    +- _`element0`, `element1`, ..., `elementN`_ + - : Les éléments avec lesquels on souhaite construire le nouveau tableau. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle instance de {{jsxref("Array")}}.

    +Une nouvelle instance de {{jsxref("Array")}}. -

    Description

    +## Description -

    Cette fonction fait partie du standard ECMAScript 2015. Pour plus d'informations, voir les pages sur la proposition pour Array.of et Array.from ainsi que la page sur le fragment d'émulation pour Array.of.

    +Cette fonction fait partie du standard ECMAScript 2015. Pour plus d'informations, voir les pages sur [la proposition pour `Array.of` et `Array.from`](https://gist.github.com/rwaldron/1074126) ainsi que la page sur le [fragment d'émulation pour `Array.of`](https://gist.github.com/rwaldron/3186576). -
    Array.of(7);       // [7]
    +```js
    +Array.of(7);       // [7]
     Array.of(1, 2, 3); // [1, 2, 3]
     
     Array(7);          // [ , , , , , , ]
     Array(1, 2, 3);    // [1, 2, 3]
    -
    +``` -

    Exemples

    +## Exemples -
    Array.of(1);         // [1]
    +```js
    +Array.of(1);         // [1]
     Array.of(1, 2, 3);   // [1, 2, 3]
     Array.of(undefined); // [undefined]
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Exécuter ce code avant tout autre code permettra de créer la méthode Array.of() si elle n'est pas prise en charge nativement.

    +Exécuter ce code avant tout autre code permettra de créer la méthode **`Array.of()`** si elle n'est pas prise en charge nativement. -
    if (!Array.of) {
    +```js
    +if (!Array.of) {
       Array.of = function() {
         return Array.prototype.slice.call(arguments);
       };
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.of', 'Array.of')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.of")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array", "Array")}}
    • -
    • {{jsxref("Array/from", "Array.from")}}
    • -
    • {{jsxref("TypedArray.of()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.of', 'Array.of')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.of', 'Array.of')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.of")}} + +## Voir aussi + +- {{jsxref("Array", "Array")}} +- {{jsxref("Array/from", "Array.from")}} +- {{jsxref("TypedArray.of()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/pop/index.md b/files/fr/web/javascript/reference/global_objects/array/pop/index.md index 6a5345dd88..7b9862f6fb 100644 --- a/files/fr/web/javascript/reference/global_objects/array/pop/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/pop/index.md @@ -10,97 +10,73 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop original_slug: Web/JavaScript/Reference/Objets_globaux/Array/pop --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode pop() supprime le dernier élément d'un tableau et retourne cet élément. Cette méthode modifie la longueur du tableau.

    +La méthode **`pop()`** supprime le **dernier** élément d'un tableau et retourne cet élément. Cette méthode modifie la longueur du tableau. -
    {{EmbedInteractiveExample("pages/js/array-pop.html")}}
    +{{EmbedInteractiveExample("pages/js/array-pop.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.pop()
    + arr.pop() -

    Valeur de retour

    +### Valeur de retour -

    L'élément qui a été retiré du tableau. Si le tableau est vide, elle renvoie {{jsxref("undefined")}}.

    +L'élément qui a été retiré du tableau. Si le tableau est vide, elle renvoie {{jsxref("undefined")}}. -

    Description

    +## Description -

    La méthode pop() supprime le dernier élément d'un tableau et retourne cette valeur.

    +La méthode `pop()` supprime le dernier élément d'un tableau et retourne cette valeur. -

    pop() est volontairement générique ; cette méthode peut être {{jsxref("Function.call", "appelée")}} ou {{jsxref("Function.apply", "appliquée")}} pour des objets ressemblant à des tableaux. Les objets qui ne contiennent pas une propriété length reflétant la fin d'une série de propriétés consécutives numérotées peuvent se comporter bizarrement.

    +`pop()` est volontairement générique ; cette méthode peut être {{jsxref("Function.call", "appelée")}} ou {{jsxref("Function.apply", "appliquée")}} pour des objets ressemblant à des tableaux. Les objets qui ne contiennent pas une propriété `length` reflétant la fin d'une série de propriétés consécutives numérotées peuvent se comporter bizarrement. -

    Si vous appelez pop() sur un tableau vide, il renverra la valeur {{jsxref("undefined")}}.

    +Si vous appelez `pop()` sur un tableau vide, il renverra la valeur {{jsxref("undefined")}}. -
    -

    Note : La méthode {{jsxref("Array.prototype.shift()")}} possède un comportement analogue mais retire le premier élément du tableau.

    -
    +> **Note :** La méthode {{jsxref("Array.prototype.shift()")}} possède un comportement analogue mais retire le _premier_ élément du tableau. -

    Exemples

    +## Exemples -

    Supprimer le dernier élément d'un tableau

    +### Supprimer le dernier élément d'un tableau -

    Le code suivant crée le tableau mesPoissons qui contient quatre éléments puis supprime le dernier élément.

    +Le code suivant crée le tableau `mesPoissons` qui contient quatre éléments puis supprime le dernier élément. -
    var mesPoissons = ["angel", "clown", "mandarin", "sturgeon"];
    +```js
    +var mesPoissons = ["angel", "clown", "mandarin", "sturgeon"];
     
     var popped = mesPoissons.pop();
     
     console.table(mesPoissons); // angel, clown, madarin
    -console.log(popped);        // sturgeon
    +console.log(popped); // sturgeon +``` -

    Utiliser apply() ou call() sur les objets semblables aux tableaux

    +### Utiliser `apply()` ou `call()` sur les objets semblables aux tableaux -

    Le code suivant crée un objet mesPoissons semblable à un tableau, qui contient 4 propriétés indexées avec des nombres et une propriété length. On utilise la méthode {{jsxref("Function.call()")}} pour invoquer pop() sur cet objet :

    +Le code suivant crée un objet `mesPoissons` semblable à un tableau, qui contient 4 propriétés indexées avec des nombres et une propriété `length`. On utilise la méthode {{jsxref("Function.call()")}} pour invoquer `pop()` sur cet objet : -
    var mesPoissons = {0: 'angel', 1: 'clown', 2: 'mandarin', 3: 'sturgeon', length: 4};
    +```js
    +var mesPoissons = {0: 'angel', 1: 'clown', 2: 'mandarin', 3: 'sturgeon', length: 4};
     
     var popped = Array.prototype.pop.call(mesPoissons); // on aurait pu utiliser apply()
     console.log(mesPoissons); // {0: 'angel', 1: 'clown', 2: 'mandarin', length: 3}
     console.log(popped);      // 'sturgeon'
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.pop")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.push()")}}
    • -
    • {{jsxref("Array.prototype.shift()")}}
    • -
    • {{jsxref("Array.prototype.unshift()")}}
    • -
    • {{jsxref("Array.prototype.splice()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.pop")}} + +## Voir aussi + +- {{jsxref("Array.prototype.push()")}} +- {{jsxref("Array.prototype.shift()")}} +- {{jsxref("Array.prototype.unshift()")}} +- {{jsxref("Array.prototype.splice()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/push/index.md b/files/fr/web/javascript/reference/global_objects/array/push/index.md index c7f18ce86b..0472582660 100644 --- a/files/fr/web/javascript/reference/global_objects/array/push/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/push/index.md @@ -10,72 +10,72 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/push original_slug: Web/JavaScript/Reference/Objets_globaux/Array/push --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode push() ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau.

    +La méthode **`push()`** ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau. -
    {{EmbedInteractiveExample("pages/js/array-push.html")}}
    +{{EmbedInteractiveExample("pages/js/array-push.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.push(élément1, ..., élémentN)
    + arr.push(élément1, ..., élémentN) -

    Paramètres

    +### Paramètres -
    -
    élément1, ...,élémentN
    -
    Les éléments à ajouter à la fin du tableau.
    -
    +- `élément1, ...,élémentN` + - : Les éléments à ajouter à la fin du tableau. -

    Valeur de retour

    +### Valeur de retour -

    La nouvelle valeur de la propriété {{jsxref("Array.length", "length")}} de l'objet sur lequel la méthode a été appelée.

    +La nouvelle valeur de la propriété {{jsxref("Array.length", "length")}} de l'objet sur lequel la méthode a été appelée. -

    Description

    +## Description -

    La méthode push permet d'ajouter des valeurs à un tableau.

    +La méthode `push` permet d'ajouter des valeurs à un tableau. -

    push est une méthode générique. Cette méthode peut ainsi être utilisée avec les méthodes {{jsxref("Function.call()")}} ou {{jsxref("Function.apply()")}} sur des objets similaires aux tableaux.

    +`push` est une méthode générique. Cette méthode peut ainsi être utilisée avec les méthodes {{jsxref("Function.call()")}} ou {{jsxref("Function.apply()")}} sur des objets similaires aux tableaux. -

    La méthode push se base sur la propriété length pour déterminer à partir de quel index les valeurs données doivent être insérées. Si la propriété length ne peut pas être convertie en nombre, l'index utilisé est 0. Si la propriété length n'est pas définie, elle est alors créée.

    +La méthode `push` se base sur la propriété `length` pour déterminer à partir de quel index les valeurs données doivent être insérées. Si la propriété `length` ne peut pas être convertie en nombre, l'index utilisé est 0. Si la propriété `length` n'est pas définie, elle est alors créée. -

    Bien que push soit une méthode générique, elle ne peut pas être utilisée sur les chaînes de caractères ou sur l'objet arguments car ils sont immuables.

    +Bien que `push` soit une méthode générique, elle ne peut pas être utilisée sur les chaînes de caractères ou sur l'objet `arguments` car ils sont immuables. -

    Exemples

    +## Exemples -

    Ajouter des éléments à un tableau

    +### Ajouter des éléments à un tableau -

    Le code suivant crée un tableau sports contenant à sa création deux éléments, auxquels sont ajoutés deux nouveaux éléments. La variable total contient la nouvelle taille du tableau.

    +Le code suivant crée un tableau `sports` contenant à sa création deux éléments, auxquels sont ajoutés deux nouveaux éléments. La variable `total` contient la nouvelle taille du tableau. -
    var sports = ["plongée", "baseball"];
    +```js
    +var sports = ["plongée", "baseball"];
     var total = sports.push("football", "tennis");
     
     console.log(sports); // ["plongée", "baseball", "football", "tennis"]
     console.log(total);  // 4
    -
    +``` -

    Fusionner deux tableaux

    +### Fusionner deux tableaux -

    Dans l'exemple qui suit, on utilise la méthode {{jsxref("Function.apply()")}} pour ajouter les différents éléments d'un second tableau

    +Dans l'exemple qui suit, on utilise la méthode {{jsxref("Function.apply()")}} pour ajouter les différents éléments d'un second tableau -
    var legumes = ['navet', 'pomme de terre'];
    +```js
    +var legumes = ['navet', 'pomme de terre'];
     var autresLegumes = ['céleri', 'radis'];
     
     // On fusionne les deux tableaux
     // Équivalent à legumes.push('céleri', 'radis');
     Array.prototype.push.apply(legumes, autresLegumes);
     
    -console.log(legumes); // ['navet', 'pomme de terre', 'céleri', 'radis']
    +console.log(legumes); // ['navet', 'pomme de terre', 'céleri', 'radis'] +``` -
    -

    Note : Attention à ne pas utiliser cette méthode lorsque les tableaux sont très grands car une fonction n'accepte qu'un nombre limité d'arguments. Voir {{jsxref("Function.apply","apply()")}} pour plus d'informations sur ces limites.

    -
    +> **Note :** Attention à ne pas utiliser cette méthode lorsque les tableaux sont très grands car une fonction n'accepte qu'un nombre limité d'arguments. Voir {{jsxref("Function.apply","apply()")}} pour plus d'informations sur ces limites. -

    Utiliser un objet comme on utiliserait un tableau

    +### Utiliser un objet comme on utiliserait un tableau -

    Comme nous l'avons vu auparavant, push est une méthode générique et nous pouvons donc utiliser Array.prototype.push sur les objets. On notera qu'il n'est pas nécessaire de stocker un ensemble d'objets. En fait, on enregistre l'ensemble dans l'objet et on utilise call sur Array.prototype.push :

    +Comme nous l'avons vu auparavant, `push` est une méthode générique et nous pouvons donc utiliser `Array.prototype.push` sur les objets. On notera qu'il n'est pas nécessaire de stocker un ensemble d'objets. En fait, on enregistre l'ensemble dans l'objet et on utilise `call` sur `Array.prototype.push` : -
    var obj = {
    +```js
    +var obj = {
         length: 0,
     
         ajoutElem: function ajoutElem (elem) {
    @@ -91,49 +91,24 @@ obj.ajoutElem({});
     obj.ajoutElem({});
     console.log(obj.length);
     // → 2
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.push")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.pop()")}}
    • -
    • {{jsxref("Array.prototype.shift()")}}
    • -
    • {{jsxref("Array.prototype.unshift()")}}
    • -
    • {{jsxref("Array.prototype.concat()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.push")}} + +## Voir aussi + +- {{jsxref("Array.prototype.pop()")}} +- {{jsxref("Array.prototype.shift()")}} +- {{jsxref("Array.prototype.unshift()")}} +- {{jsxref("Array.prototype.concat()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/reduce/index.md b/files/fr/web/javascript/reference/global_objects/array/reduce/index.md index 6ec6af3488..183efdeb71 100644 --- a/files/fr/web/javascript/reference/global_objects/array/reduce/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/reduce/index.md @@ -11,225 +11,231 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce original_slug: Web/JavaScript/Reference/Objets_globaux/Array/reduce --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode reduce() applique une fonction qui est un « accumulateur » et qui traite chaque valeur d'une liste (de la gauche vers la droite) afin de la réduire à une seule valeur.

    +La méthode **`reduce()`** applique une fonction qui est un « accumulateur » et qui traite chaque valeur d'une liste (de la gauche vers la droite) afin de la réduire à une seule valeur. -
    {{EmbedInteractiveExample("pages/js/array-reduce.html")}}
    +{{EmbedInteractiveExample("pages/js/array-reduce.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.reduce(callback)
    -arr.reduce(callback, valeurInitiale)
    + arr.reduce(callback) + arr.reduce(callback, valeurInitiale) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction à exécuter sur chaque valeur de la liste (sauf le premier si aucune valeurInitiale n'est fournie), elle prend quatre arguments en entrée : -
    -
    accumulateur
    -
    La valeur précédemment retournée par le dernier appel du callback, ou valeurInitiale, si elle est fournie (voir ci-après) (c'est la valeur « accumulée » au fur et à mesure des appels
    -
    valeurCourante
    -
    La valeur de l'élément courant actuellement manipulé dans le tableau.
    -
    index{{optional_inline}}
    -
    L'index de l'élément courant actuellement manipulé dans le tableau.
    -
    array{{optional_inline}}
    -
    Le tableau sur lequel on a appelé la méthode reduce().
    -
    -
    -
    valeurInitiale{{optional_inline}}
    -
    Une valeur utilisée comme premier argument lors du premier appel de la fonction callback. Si aucune valeur initiale n'est fournie, le premier élément du tableau est utilisé (et la boucle de traitement ne le parcourera pas). Si on appelle reduce() sur un tableau vide sans fournir de valeur initiale, on aura une erreur.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction à exécuter sur chaque valeur de la liste (sauf le premier si aucune `valeurInitiale` n'est fournie), elle prend quatre arguments en entrée : -

    La valeur obtenue grâce à la fonction de réduction.

    + - `accumulateur` + - : La valeur précédemment retournée par le dernier appel du callback, ou `valeurInitiale`, si elle est fournie (voir ci-après) (c'est la valeur « accumulée » au fur et à mesure des appels + - `valeurCourante` + - : La valeur de l'élément courant actuellement manipulé dans le tableau. + - `index`{{optional_inline}} + - : L'index de l'élément courant actuellement manipulé dans le tableau. + - `array`{{optional_inline}} + - : Le tableau sur lequel on a appelé la méthode `reduce()`. -

    Description

    +- `valeurInitiale`{{optional_inline}} + - : Une valeur utilisée comme premier argument lors du premier appel de la fonction `callback`. Si aucune valeur initiale n'est fournie, le premier élément du tableau est utilisé (et la boucle de traitement ne le parcourera pas). Si on appelle `reduce()` sur un tableau vide sans fournir de valeur initiale, on aura une erreur. -

    reduce() exécute la fonction callback une fois pour chaque élément présent dans le tableau et ignore les éléments vides du tableau. La fonction callback utilise quatre arguments :

    +### Valeur de retour -
      -
    1. L'accumulateur (la valeur retournée par le précédent appel de la fonction callback), ou la valeur initiale s'il sagit du premier appel ;
    2. -
    3. la valeur de l'élément courant ;
    4. -
    5. l'index de l'élément courant ;
    6. -
    7. le tableau parcouru par la méthode.
    8. -
    +La valeur obtenue grâce à la fonction de réduction. -

    La première fois que la fonction callback est appelée, valeurInitiale et valeurCourante peuvent correspondre à un ou deux éléments. Si valeurInitiale est fournie dans l'appel de reduce(), alors accumulateur sera égale à valeurInitiale et valeurCourante sera égale à la première valeur de la liste. Si valeurInitiale n'est pas fournie, alors accumulateur sera égale à la première valeur de la liste, et valeurCourante sera alors égale à la seconde.

    +## Description -

    Autrement dit, si valeurInitiale n'est pas fournie, reduce exécutera la fonction de rappel à partir de l'indice 1 et la première valeur du tableau (d'indice 0) sera utilisée pour valeurInitiale.

    +`reduce()` exécute la fonction `callback` une fois pour chaque élément présent dans le tableau et ignore les éléments vides du tableau. La fonction `callback` utilise quatre arguments : -

    En considérant le code suivant :

    +1. L'accumulateur (la valeur retournée par le précédent appel de la fonction `callback`), ou la valeur initiale s'il sagit du premier appel ; +2. la valeur de l'élément courant ; +3. l'index de l'élément courant ; +4. le tableau parcouru par la méthode. -
    [0, 1, 2, 3, 4].reduce(function(accumulateur, valeurCourante, index, array){
    +La première fois que la fonction `callback` est appelée, `valeurInitiale` et `valeurCourante` peuvent correspondre à un ou deux éléments. Si `valeurInitiale` est fournie dans l'appel de `reduce()`, alors `accumulateur` sera égale à `valeurInitiale` et `valeurCourante` sera égale à la première valeur de la liste. Si `valeurInitiale` n'est pas fournie, alors `accumulateur` sera égale à la première valeur de la liste, et `valeurCourante` sera alors égale à la seconde.
    +
    +Autrement dit, si `valeurInitiale` n'est pas fournie, `reduce` exécutera la fonction de rappel à partir de l'indice 1 et la première valeur du tableau (d'indice 0) sera utilisée pour `valeurInitiale`.
    +
    +En considérant le code suivant :
    +
    +```js
    +[0, 1, 2, 3, 4].reduce(function(accumulateur, valeurCourante, index, array){
       return accumulateur + valeurCourante;
     });
    -
    +``` -

    La fonction callback sera appelée quatre fois, avec les arguments et les valeurs de retour de chaque appel suivant :

    +La fonction `callback` sera appelée quatre fois, avec les arguments et les valeurs de retour de chaque appel suivant : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    accumulateurvaleurCouranteindexarrayvaleur retournée
    premier appel011[0,1,2,3,4]1
    deuxième appel122[0,1,2,3,4]3
    troisième appel333[0,1,2,3,4]6
    quatrième appel644[0,1,2,3,4]10
    accumulateurvaleurCouranteindexarrayvaleur retournée
    premier appel011[0,1,2,3,4]1
    deuxième appel122[0,1,2,3,4]3
    troisième appel333[0,1,2,3,4]6
    quatrième appel644[0,1,2,3,4]10
    -

    La valeur retournée par reduce() sera alors celle du dernier appel de la callback (ici 10).

    +La valeur retournée par `reduce()` sera alors celle du dernier appel de la callback (ici `10`). -

    Il est aussi possible d'utiliser une {{jsxref("Fonctions/Fonctions_fléchées","fonction fléchée","",1)}} au lieu d'une fonction classique. Le code suivant, par exemple, produit le même résultat que l'exemple précédent :

    +Il est aussi possible d'utiliser une {{jsxref("Fonctions/Fonctions_fléchées","fonction fléchée","",1)}} au lieu d'une fonction classique. Le code suivant, par exemple, produit le même résultat que l'exemple précédent : -
    [0, 1, 2, 3, 4].reduce(
    -  (accumulateur, valeurCourante) => accumulateur + valeurCourante;
    -);
    +```js +[0, 1, 2, 3, 4].reduce( + (accumulateur, valeurCourante) => accumulateur + valeurCourante; +); +``` -

    Si on fournit une valeur initiale comme second argument à l'appel de reduce(), le résultat sera alors le suivant :

    +Si on fournit une valeur initiale comme second argument à l'appel de `reduce()`, le résultat sera alors le suivant : -
    [0, 1, 2, 3, 4].reduce(function(accumulateur, valeurCourante, index, array){
    +```js
    +[0, 1, 2, 3, 4].reduce(function(accumulateur, valeurCourante, index, array){
       return accumulateur + valeurCourante;
     }, 10);
    -
    +``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    accumulateurvaleurCouranteindexarrayvaleur retournée
    premier appel1000[0,1,2,3,4]10
    deuxième appel1011[0,1,2,3,4]11
    troisième appel1122[0,1,2,3,4]13
    quatrième appel1333[0,1,2,3,4]16
    cinquième appel1644[0,1,2,3,4]20
    accumulateurvaleurCouranteindexarrayvaleur retournée
    premier appel1000[0,1,2,3,4]10
    deuxième appel1011[0,1,2,3,4]11
    troisième appel1122[0,1,2,3,4]13
    quatrième appel1333[0,1,2,3,4]16
    cinquième appel1644[0,1,2,3,4]20
    -

    Ici, la valeur renvoyée par reduce() serait 20.

    +Ici, la valeur renvoyée par `reduce()` serait `20`. -

    Exemples

    +## Exemples -

    Additionner toutes les valeurs d'un tableau

    +### Additionner toutes les valeurs d'un tableau -
    var total = [0, 1, 2, 3].reduce((a, b)=> a + b,0);
    +```js
    +var total = [0, 1, 2, 3].reduce((a, b)=> a + b,0);
     // total == 6
    -
    +``` -

    Additionner les valeurs d'une propriétés pour un tableau d'objets

    +### Additionner les valeurs d'une propriétés pour un tableau d'objets -

    Pour additionner les valeurs d'une propriété donnée des objets d'un tableau, il sera nécessaire de fournir une valeur initiale afin que tous les éléments soient parcourus :

    +Pour additionner les valeurs d'une propriété donnée des objets d'un tableau, il sera nécessaire de fournir une valeur initiale afin que tous les éléments soient parcourus : -
    var valeurInitiale = 0;
    +```js
    +var valeurInitiale = 0;
     var somme = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulateur, valeurCourante) {
         return accumulateur + valeurCourante.x;
     }, valeurInitiale);
     
     console.log(somme); // affiche 6 dans la console
    -
    +``` -

    On peut également écrire une version plus concise avec les fonctions fléchées :

    +On peut également écrire une version plus concise avec les fonctions fléchées : -
    var valeurInitiale = 0;
    +```js
    +var valeurInitiale = 0;
     var somme = [{x: 1}, {x:2}, {x:3}].reduce(
    -    (accumulateur, valeurCourante) => accumulateur + valeurCourante.x
    +    (accumulateur, valeurCourante) => accumulateur + valeurCourante.x
         , valeurInitiale
     );
     
    -console.log(somme); // affiche 6 dans la console
    +console.log(somme); // affiche 6 dans la console +``` -

    Aplatir une liste de listes

    +### Aplatir une liste de listes -
    var applati = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
    +```js
    +var applati = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
         return a.concat(b);
     });
     // applati vaut [0, 1, 2, 3, 4, 5]
    -
    +``` -

    Utiliser le paramètre valeurInitiale

    +### Utiliser le paramètre `valeurInitiale` -
    var amis = [
    +```js
    +var amis = [
       { "nom": "Quentin", "livres": ["City Hall", "Harry Potter"]},
       { "nom": "Alice", "livres": ["L'Avare", "Les Fleurs du Mal"]}
     ]
    @@ -239,56 +245,59 @@ var tousLivres = amis.reduce(function(prev, curr) {
     }, ["Perceval"]);
     
     // tousLivres = ["Perceval", "City Hall", "Harry Potter",
    -//               "L'Avare", "Les Fleurs du Mal"]
    +// "L'Avare", "Les Fleurs du Mal"] +``` -

    Exécuter une suite de promesses stockées dans un tableau

    +### Exécuter une suite de promesses stockées dans un tableau -
    /**
    +```js
    +/**
      * Exécuter un enchaînement de promesses à partir d'un tableau
      *
      * @param {array} arr - un tableau de promesses
      * @return {Object} un objet Promise
      */
     function runPromiseInSequense(arr) {
    -  return arr.reduce((promiseChain, currentPromise) => {
    -    return promiseChain.then((chainedResult) => {
    +  return arr.reduce((promiseChain, currentPromise) => {
    +    return promiseChain.then((chainedResult) => {
           return currentPromise(chainedResult)
    -        .then((res) => res)
    +        .then((res) => res)
         })
       }, Promise.resolve());
     }
     
     // promise function 1
     function p1() {
    -  return new Promise((resolve, reject) => {
    +  return new Promise((resolve, reject) => {
         resolve(5);
       });
     }
     
     // promise function 2
     function p2(a) {
    -  return new Promise((resolve, reject) => {
    +  return new Promise((resolve, reject) => {
         resolve(a * 2);
       });
     }
     
     // promise function 3
     function p3(a) {
    -  return new Promise((resolve, reject) => {
    +  return new Promise((resolve, reject) => {
         resolve(a * 3);
       });
     }
     
     const promiseArr = [p1, p2, p3];
     runPromiseInSequense(promiseArr)
    -  .then((res) => {
    +  .then((res) => {
         console.log(res);   // 30
       });
    -
    +``` -

    Regrouper des objets selon une propriété

    +### Regrouper des objets selon une propriété -
    var personnes = [
    +```js
    +var personnes = [
       { nom: "Alice", age: 21 },
       { nom: "Bob", age: 20 },
       { nom: "Charlie", age: 20 }
    @@ -314,18 +323,19 @@ var personnesParAge = groupBy(personnes, "age");
     //    ],
     //    21: [{ nom: "Alice", age: 21 }]
     // }
    -
    +``` -

    Composition de fonctions

    +### Composition de fonctions -
    // Les briques de base que nous allons composer
    -const double = x => x + x;
    -const triple = x => 3 * x;
    -const quadruple = x => 4 * x;
    +```js
    +// Les briques de base que nous allons composer
    +const double = x => x + x;
    +const triple = x => 3 * x;
    +const quadruple = x => 4 * x;
     
     // Une fonction qui permet d'appliquer une composition
    -const pipe = (...functions) => input => functions.reduce(
    -    (acc, fn) => fn(acc),
    +const pipe = (...functions) => input => functions.reduce(
    +    (acc, fn) => fn(acc),
         input
     );
     
    @@ -340,19 +350,22 @@ multiply6(6); // 36
     multiply9(9); // 81
     multiply16(16); // 256
     multiply24(10); // 240
    -
    +``` -

    Retirer les doublons d'un tableau

    +### Retirer les doublons d'un tableau -

    Avec ECMAScript 2015 (ES6)

    +#### Avec ECMAScript 2015 (ES6) -
    let tableauAvecDoublons = [1, 2, 3, 1, 4, 5, 4, 6];
    +```js
    +let tableauAvecDoublons = [1, 2, 3, 1, 4, 5, 4, 6];
     let tableauSansDoublon = Array.from(new Set(tableauAvecDoublons));
    -console.table(tableauSansDoublon); // [1, 2, 3, 4, 5, 6]
    +console.table(tableauSansDoublon); // [1, 2, 3, 4, 5, 6] +``` -

    Avec reduce()

    +#### Avec `reduce()` -
    var tableauAvecDoublons = [1, 2, 3, 1, 4, 5, 4, 6];
    +```js
    +var tableauAvecDoublons = [1, 2, 3, 1, 4, 5, 4, 6];
     var tableauSansDoublon = tableauAvecDoublon.reduce(function (acc, valCourante) {
       if(acc.indexOf(valCourante) === -1) {
         acc.push(valCourante);
    @@ -361,42 +374,20 @@ var tableauSansDoublon = tableauAvecDoublon.reduce(function (acc, valCourante) {
     }, []);
     
     console.log(tableauSansDoublon); // [1, 2, 3, 4, 5, 6]
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce()')}}{{Spec2('ES5.1')}}Définition initiale.
    - Implémenté dans JavaScript 1.8
    {{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ESDraft')}}
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | --------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce()')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémenté dans JavaScript 1.8 | +| {{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array.reduce")}}

    +{{Compat("javascript.builtins.Array.reduce")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Array.prototype.reduceRight()")}}
    • -
    +- {{jsxref("Array.prototype.reduceRight()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/reduceright/index.md b/files/fr/web/javascript/reference/global_objects/array/reduceright/index.md index 63222a2191..dbb7001bf8 100644 --- a/files/fr/web/javascript/reference/global_objects/array/reduceright/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/reduceright/index.md @@ -11,199 +11,202 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight original_slug: Web/JavaScript/Reference/Objets_globaux/Array/reduceRight --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode reduceRight() applique une fonction sur un accumulateur et chaque valeur d'un tableau (de la droite vers la gauche) de sorte à réduire le tableau en une seule valeur.

    +La méthode **`reduceRight()`** applique une fonction sur un accumulateur et chaque valeur d'un tableau (de la droite vers la gauche) de sorte à réduire le tableau en une seule valeur. -
    {{EmbedInteractiveExample("pages/js/array-reduce-right.html")}}
    +{{EmbedInteractiveExample("pages/js/array-reduce-right.html")}} +Voir également {{jsxref("Array.prototype.reduce()")}} pour une méthode qui réduit de gauche à droite. +## Syntaxe -

    Voir également {{jsxref("Array.prototype.reduce()")}} pour une méthode qui réduit de gauche à droite.

    + arr.reduceRight(callback[, valeurInitiale]) -

    Syntaxe

    +### Paramètres -
    arr.reduceRight(callback[, valeurInitiale])
    +- `callback` -

    Paramètres

    + - : La fonction à éxécuter sur chaque valeur de la liste. Elle utilise quatres arguments : -
    -
    callback
    -
    La fonction à éxécuter sur chaque valeur de la liste. Elle utilise quatres arguments : -
    -
    accumulator
    -
    La valeur précédemment retournée par le dernier appel de la fonction callback, ou valeurInitial si elle est fournie. (Voir ci-après.)
    -
    valeurCourante
    -
    La valeur de l'élément courant dans le tableau.
    -
    index
    -
    L'index de l'élément du tableau actuellement manipulé.
    -
    array
    -
    Le tableau sur lequel reduceRight() est appelée.
    -
    -
    -
    valeurInitiale {{optional_inline}}
    -
    C'est l'objet à utiliser comme accumulateur/premier argument lors du premier appel de la fonction callback. Si aucune valeur n'est fournie, c'est le dernier élément du tableau qui sera utilisé. Si on appelle reduce() ou reduceRight() sur un tableau vide sans fournir de valeur initiale, on aura une exception {{jsxref("TypeError")}}.
    -
    + - `accumulator` + - : La valeur précédemment retournée par le dernier appel de la fonction `callback`, ou `valeurInitial` si elle est fournie. (Voir ci-après.) + - `valeurCourante` + - : La valeur de l'élément courant dans le tableau. + - `index` + - : L'index de l'élément du tableau actuellement manipulé. + - `array` + - : Le tableau sur lequel `reduceRight()` est appelée. -

    Valeur de retour

    +- `valeurInitiale` {{optional_inline}} + - : C'est l'objet à utiliser comme accumulateur/premier argument lors du premier appel de la fonction `callback`. Si aucune valeur n'est fournie, c'est le dernier élément du tableau qui sera utilisé. Si on appelle `reduce()` ou `reduceRight()` sur un tableau vide sans fournir de valeur initiale, on aura une exception {{jsxref("TypeError")}}. -

    La valeur obtenue grâce à la fonction de réduction.

    +### Valeur de retour -

    Description

    +La valeur obtenue grâce à la fonction de réduction. -

    reduceRight exécute la fonction callback une fois pour chaque élément présent dans le tableau, les éléments vides sont ignorés. La fonction callback utilise quatre arguments : la valeur initiale (ou la valeur retournée par le précédent appel de la fonction callback), la valeur de l'élément courant, l'index de l'élément courant, et le tableau qui est parcouru.

    +## Description -

    L'usage de reduceRight avec définition d'un callback devrait ressembler à ceci :

    +`reduceRight` exécute la fonction `callback` une fois pour chaque élément présent dans le tableau, les éléments vides sont ignorés. La fonction `callback` utilise quatre arguments : la valeur initiale (ou la valeur retournée par le précédent appel de la fonction` callback`), la valeur de l'élément courant, l'index de l'élément courant, et le tableau qui est parcouru. -
    array.reduceRight(function(accumulator, valeurCourante, index, array) {
    +L'usage de `reduceRight` avec définition d'un `callback` devrait ressembler à ceci :
    +
    +```js
    +array.reduceRight(function(accumulator, valeurCourante, index, array) {
         // ...
    -});
    +}); +``` -

    La première fois que la fonction de callback est appelée, accumulator et valeurCourante peuvent correspondre à un ou deux éléments. Si valeurInitiale est fournie lors de l'appel à reduceRight, alors accumulator sera égale à valeurInitiale et valeurCourante sera égale à la dernière valeur de la liste. Si valeurInitiale n'est pas fournie, alors accumulator sera égale à la dernière valeur de la liste, et valeurCourante sera alors égale à l'avant-dernière valeur du tableau.

    +La première fois que la fonction de callback est appelée, `accumulator` et `valeurCourante` peuvent correspondre à un ou deux éléments. Si `valeurInitiale` est fournie lors de l'appel à `reduceRight`, alors `accumulator` sera égale à `valeurInitiale` et `valeurCourante` sera égale à la dernière valeur de la liste. Si `valeurInitiale` n'est pas fournie, alors `accumulator` sera égale à la dernière valeur de la liste, et `valeurCourante` sera alors égale à l'avant-dernière valeur du tableau. -

    Si on utilise la méthode reduceRight de la façon suivante :

    +Si on utilise la méthode `reduceRight` de la façon suivante : -
    [0, 1, 2, 3, 4].reduceRight(function(accumulator, valeurCourante, index, array) {
    +```js
    +[0, 1, 2, 3, 4].reduceRight(function(accumulator, valeurCourante, index, array) {
         return accumulator + valeurCourante;
     });
    -
    +``` -

    La fonction callback sera appelée quatre fois, avec les arguments et les valeurs de retour de chaque appel suivant :

    +La fonction `callback` sera appelée quatre fois, avec les arguments et les valeurs de retour de chaque appel suivant : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    callbackaccumulatorvaleurCouranteindexarrayValeur renvoyée
    premier appel433[0,1,2,3,4]7
    second appel722[0,1,2,3,4]9
    troisième appel911[0,1,2,3,4]10
    quatrième appel1000[0,1,2,3,4]10
    callbackaccumulatorvaleurCouranteindexarrayValeur renvoyée
    premier appel433[0,1,2,3,4]7
    second appel722[0,1,2,3,4]9
    troisième appel911[0,1,2,3,4]10
    quatrième appel1000[0,1,2,3,4]10
    -

    La valeur retournée par reduceRight sera alors celle du dernier appel de la fonction callback (10).

    +La valeur retournée par `reduceRight` sera alors celle du dernier appel de la fonction `callback` (`10`). -

    Si vous fournissez une valeur initiale comme second argument à l'appel de reduceRight, le résultat sera alors le suivant :

    +Si vous fournissez une valeur initiale comme second argument à l'appel de `reduceRight`, le résultat sera alors le suivant : -
    [0, 1, 2, 3, 4].reduceRight(function(accumulator, valeurCourante, index, array) {
    +```js
    +[0, 1, 2, 3, 4].reduceRight(function(accumulator, valeurCourante, index, array) {
         return accumulator + valeurCourante;
     }, 10);
    -
    +``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    accumulatorvaleurCouranteindexarrayValeur renvoyée
    premier appel1044[0,1,2,3,4]14
    second appel1433[0,1,2,3,4]17
    troisième appel1722[0,1,2,3,4]19
    quatrième appel1911[0,1,2,3,4]20
    cinquième appel2000[0,1,2,3,4]20
    accumulatorvaleurCouranteindexarrayValeur renvoyée
    premier appel1044[0,1,2,3,4]14
    second appel1433[0,1,2,3,4]17
    troisième appel1722[0,1,2,3,4]19
    quatrième appel1911[0,1,2,3,4]20
    cinquième appel2000[0,1,2,3,4]20
    -

    La valeur renvoyée par reduceRight sera ici 20.

    +La valeur renvoyée par `reduceRight` sera ici `20`. -

    Exemples

    +## Exemples -

    Additionner toutes les valeurs d'une liste

    +### Additionner toutes les valeurs d'une liste -
    var total = [0, 1, 2, 3].reduceRight(function(a, b) {
    +```js
    +var total = [0, 1, 2, 3].reduceRight(function(a, b) {
         return a + b;
     });
     // total == 6
    -
    +``` -

    Aplatir une liste de listes

    +### Aplatir une liste de listes -
    var aplati = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) {
    +```js
    +var aplati = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) {
         return a.concat(b);
     }, []);
     // aplati [4, 5, 2, 3, 0, 1]
    -
    +``` -

    Différence entre reduce et reduceRight

    +### Différence entre `reduce` et `reduceRight` -
    var a = ['1', '2', '3', '4','5']
    +```js
    +var a = ['1', '2', '3', '4','5']
     var gauche = a.reduce(function(prev, cur) {
       return prev + cur;
     });
    @@ -213,67 +216,48 @@ var droite = a.reduceRight(function(prev, cur) {
     });
     
     console.log(gauche); // "12345"
    -console.log(droite); // "54321"
    +console.log(droite); // "54321" +``` -

    Composition de fonctions à l'aide de reduce

    +### Composition de fonctions à l'aide de `reduce` -

    La composition de fonctions consiste en l'enchaînement de n fonctions l'une après l'autre (où les appels sont généralement exécutés de droite à gauche.

    +La composition de fonctions consiste en l'enchaînement de n fonctions l'une après l'autre (où les appels sont généralement exécutés de droite à gauche. -
    /**
    +```js
    +/**
      *
      * h(x) = f(g(x))
      *
      * https://fr.wikipedia.org/wiki/Composition_de_fonctions
      */
     
    -const compose = (...args) => (value) => args.reduceRight((acc, fn) => fn(acc), value)
    +const compose = (...args) => (value) => args.reduceRight((acc, fn) => fn(acc), value)
     
     // On incrémente un nombre passé en argument
    -const inc = (n) => n + 1
    +const inc = (n) => n + 1
     
     // On double la valeur passée en argument
    -const double = (n) => n * 2
    +const double = (n) => n * 2
     
     // On compose double(inc(x))
     compose(double, inc)(2) // 6
     
     // On compose inc(double(x))
     compose(inc, double)(2) // 5
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.8.
    {{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ESDraft')}}
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.8. | +| {{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array.reduceRight")}}

    +{{Compat("javascript.builtins.Array.reduceRight")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Array.prototype.reduce()")}}
    • -
    +- {{jsxref("Array.prototype.reduce()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/reverse/index.md b/files/fr/web/javascript/reference/global_objects/array/reverse/index.md index cfd6d0029a..034a9a73e9 100644 --- a/files/fr/web/javascript/reference/global_objects/array/reverse/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/reverse/index.md @@ -10,91 +10,68 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse original_slug: Web/JavaScript/Reference/Objets_globaux/Array/reverse --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode reverse() transpose les éléments d'un tableau : le premier élément devient le dernier et le dernier devient le premier et ainsi de suite.

    +La méthode **`reverse()`** transpose les éléments d'un tableau : le premier élément devient le dernier et le dernier devient le premier et ainsi de suite. -
    {{EmbedInteractiveExample("pages/js/array-reverse.html")}}
    +{{EmbedInteractiveExample("pages/js/array-reverse.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.reverse()
    + arr.reverse() -

    Valeur de retour

    +### Valeur de retour -

    Le tableau inversé.

    +Le tableau inversé. -

    Description

    +## Description -

    La méthode reverse() permet d'inverser l'ordre des éléments du tableau. La méthode modifie le tableau courant et renvoie une référence à ce tableau.

    +La méthode `reverse()` permet d'inverser l'ordre des éléments du tableau. La méthode modifie le tableau courant et renvoie une référence à ce tableau. -

    Cette méthode est intentionnellement générique et peut être appelée (via {{jsxref("Function.call()")}}) ou appliquée (via {{jsxref("Function.apply()")}}) sur des objets semblables à des tableaux. Les objets qui ne contiennent pas de propriété length qui soit cohérente avec leurs propriétés indexées sur des nombres ne seront pas traités par reverse().

    +Cette méthode est intentionnellement générique et peut être appelée (via {{jsxref("Function.call()")}}) ou appliquée (via {{jsxref("Function.apply()")}}) sur des objets semblables à des tableaux. Les objets qui ne contiennent pas de propriété `length` qui soit cohérente avec leurs propriétés indexées sur des nombres ne seront pas traités par `reverse()`. -

    Exemples

    +## Exemples -

    Inverser l'ordre des éléments d'un tableau

    +### Inverser l'ordre des éléments d'un tableau -

    L'exemple qui suit crée un tableau monArray, qui contient trois éléments, puis inverse celui-ci.

    +L'exemple qui suit crée un tableau `monArray`, qui contient trois éléments, puis inverse celui-ci. -
    var monArray = ["un", "deux", "trois"];
    +```js
    +var monArray = ["un", "deux", "trois"];
     monArray.reverse();
     
     console.log(monArray) // ["trois", "deux", "un"]
    -
    +``` -

    Inverser l'ordre des éléments d'un objet semblable à un tableau

    +### Inverser l'ordre des éléments d'un objet semblable à un tableau -

    Dans l'exemple suivant, on crée un objet semblable à un tableau a qui contient trois éléments et une propriété length. On appelle ensuite reverse() grâce à call() sur cet objet pour inverser ses éléments :

    +Dans l'exemple suivant, on crée un objet semblable à un tableau `a` qui contient trois éléments et une propriété `length`. On appelle ensuite `reverse()` grâce à `call()` sur cet objet pour inverser ses éléments : -
    const a = {0: 1, 1: 2, 2: 3, length: 3};
    +```js
    +const a = {0: 1, 1: 2, 2: 3, length: 3};
     
     console.log(a); // {0: 1, 1: 2, 2: 3, length: 3}
     
     Array.prototype.reverse.call(a); // On aurait pu utiliser apply() également
     
     console.log(a); // {0: 3, 1: 2, 2 : 1, length: 3}
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.reverse")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.join()")}}
    • -
    • {{jsxref("Array.prototype.sort()")}}
    • -
    • {{jsxref("TypedArray.prototype.reverse()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.reverse")}} + +## Voir aussi + +- {{jsxref("Array.prototype.join()")}} +- {{jsxref("Array.prototype.sort()")}} +- {{jsxref("TypedArray.prototype.reverse()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/shift/index.md b/files/fr/web/javascript/reference/global_objects/array/shift/index.md index aa853937b2..f34d0d73da 100644 --- a/files/fr/web/javascript/reference/global_objects/array/shift/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/shift/index.md @@ -10,39 +10,38 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift original_slug: Web/JavaScript/Reference/Objets_globaux/Array/shift --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode shift() permet de retirer le premier élément d'un tableau et de renvoyer cet élément. Cette méthode modifie la longueur du tableau.

    +La méthode **`shift()`** permet de retirer le **premier** élément d'un tableau et de renvoyer cet élément. Cette méthode modifie la longueur du tableau. -
    {{EmbedInteractiveExample("pages/js/array-shift.html")}}
    +{{EmbedInteractiveExample("pages/js/array-shift.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.shift()
    + arr.shift() -

    Valeur de retour

    +### Valeur de retour -

    L'élément retiré du tableau ou {{jsxref("undefined")}} si le tableau est vide.

    +L'élément retiré du tableau ou {{jsxref("undefined")}} si le tableau est vide. -

    Description

    +## Description -

    La méthode shift retire l'élément situé à l'index zéro et décrémente l'index des éléments suivant avant de retourner l'élément supprimé. Si la propriété {{jsxref("Array.length", "length")}} vaut 0, {{jsxref("undefined")}} est retourné.

    +La méthode `shift` retire l'élément situé à l'index zéro et décrémente l'index des éléments suivant avant de retourner l'élément supprimé. Si la propriété {{jsxref("Array.length", "length")}} vaut 0, {{jsxref("undefined")}} est retourné. -

    Cette méthode est générique et peut être {{jsxref("Function.call", "appelée","",1)}} ou {{jsxref("Function.apply", "appliquée","",1)}} sur des objets similaires à des tableaux. 

    +Cette méthode est générique et peut être {{jsxref("Function.call", "appelée","",1)}} ou {{jsxref("Function.apply", "appliquée","",1)}} sur des objets similaires à des tableaux. -

    Cette méthode n'est pas exploitable pour les objets dont la propriété length ne reflète pas la taille du contenu, ou pour lesquels la propriété length n'est pas définie.

    +Cette méthode n'est pas exploitable pour les objets dont la propriété `length` ne reflète pas la taille du contenu, ou pour lesquels la propriété `length` n'est pas définie. -
    -

    Note : La méthode {{jsxref("Array.prototype.pop()")}} possède un comportement similaire mais retire le dernier élément du tableau (et non le premier).

    -
    +> **Note :** La méthode {{jsxref("Array.prototype.pop()")}} possède un comportement similaire mais retire le dernier élément du tableau (et non le premier). -

    Exemples

    +## Exemples -

    Supprimer un élément d'un tableau

    +### Supprimer un élément d'un tableau -

    Le code suivant affiche le tableau mesPoissons avant et après avoir enlevé le premier élément. Il affiche aussi l'élément supprimé :

    +Le code suivant affiche le tableau `mesPoissons` avant et après avoir enlevé le premier élément. Il affiche aussi l'élément supprimé : -
    var mesPoissons = ["ange", "clown", "mandarin", "chirurgien"];
    +```js
    +var mesPoissons = ["ange", "clown", "mandarin", "chirurgien"];
     
     console.log("mesPoissons avant : " + JSON.stringify(mesPoissons));
     // mesPoissons avant : ["ange","clown","mandarin","chirurgien"]
    @@ -54,60 +53,36 @@ console.log("mesPoissons après :", mesPoissons);
     
     console.log("Cet élément a été enlevé :", premierÉlément);
     // "Cet élément a été enlevé : ange"
    -
    +``` -

    Utiliser shift() dans une boucle while

    +### Utiliser `shift()` dans une boucle `while` -

    La méthode shift() peut être utilisée dans une boucle while. Dans l'exemple suivant, chaque itération de la boucle retire un élément du tableau et l'affiche dans la console, jusqu'à ce que ce dernier soit vide.

    +La méthode `shift()` peut être utilisée dans une boucle [`while`](/fr/docs/Web/JavaScript/Reference/Instructions/while). Dans l'exemple suivant, chaque itération de la boucle retire un élément du tableau et l'affiche dans la console, jusqu'à ce que ce dernier soit vide. -
    var noms = ["André", "Édouard", "Paul", "Christophe", "Jean"];
    +```js
    +var noms = ["André", "Édouard", "Paul", "Christophe", "Jean"];
     while ( (i = noms.shift()) !== undefined ) {
       console.log(i);
     }
     // André, Édouard, Paul, Christophe, Jean
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.shift")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.push()")}}
    • -
    • {{jsxref("Array.prototype.pop()")}}
    • -
    • {{jsxref("Array.prototype.unshift()")}}
    • -
    • {{jsxref("Array.prototype.concat()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.shift', 'Array.prototype.shift')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.shift")}} + +## Voir aussi + +- {{jsxref("Array.prototype.push()")}} +- {{jsxref("Array.prototype.pop()")}} +- {{jsxref("Array.prototype.unshift()")}} +- {{jsxref("Array.prototype.concat()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/slice/index.md b/files/fr/web/javascript/reference/global_objects/array/slice/index.md index 988565123b..35f56b4c80 100644 --- a/files/fr/web/javascript/reference/global_objects/array/slice/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/slice/index.md @@ -10,60 +10,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice original_slug: Web/JavaScript/Reference/Objets_globaux/Array/slice --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode slice() renvoie un objet tableau, contenant une copie superficielle (shallow copy) d'une portion du tableau d'origine, la portion est définie par un indice de début et un indice de fin (exclus). Le tableau original ne sera pas modifié.

    +La méthode **`slice()`** renvoie un objet tableau, contenant une copie superficielle (_shallow copy_) d'une portion du tableau d'origine, la portion est définie par un indice de début et un indice de fin (exclus). Le tableau original ne sera pas modifié. -
    {{EmbedInteractiveExample("pages/js/array-slice.html")}}
    +{{EmbedInteractiveExample("pages/js/array-slice.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.slice()
    -arr.slice(début)
    -arr.slice(début, fin)
    -
    + arr.slice() + arr.slice(début) + arr.slice(début, fin) -

    Paramètres

    +### Paramètres -
    -
    début {{optional_inline}}
    -
    Indice (à partir de zéro) depuis lequel commencer l'extraction. S'il s'agit d'un indice négatif, début indique un décalage depuis la fin de la séquence. Par exemple, slice(-2) extrait les avant-dernier et dernier éléments dans la séquence.
    -
    - Si début est absent, slice() commencera depuis 0. Si début est supérieur à la taille du tableau, c'est un tableau vide qui sera renvoyé.
    -
    fin {{optional_inline}}
    -
    Indice (à partir de zéro) auquel arrêter l'extraction. slice() extrait jusqu'à cet indice, mais pas l'élément situé en fin lui-même. slice(1,4) extrait du deuxième au quatrième élément (les éléments d'indices 1, 2 et 3). S'il s'agit d'un indice négatif, fin indique un décalage depuis la fin de la séquence. slice(2,-1) extrait du troisième à l'avant-dernier élément dans la séquence. Si fin n'est pas fourni, slice() extraira jusqu'à la fin de la séquence (arr.length). Si fin est supérieur à la longueur de la séquence, slice() fera une extraction jusqu'à la fin de la séquence.
    -
    +- `début` {{optional_inline}} -

    Valeur de retour

    + - : Indice (à partir de zéro) depuis lequel commencer l'extraction. S'il s'agit d'un indice négatif, `début` indique un décalage depuis la fin de la séquence. Par exemple, `slice(-2)` extrait les avant-dernier et dernier éléments dans la séquence. -

    Un nouveau tableau contenant les éléments extraits.

    + Si `début` est absent, `slice()` commencera depuis 0. Si `début` est supérieur à la taille du tableau, c'est un tableau vide qui sera renvoyé. -

    Description

    +- `fin` {{optional_inline}} + - : Indice (à partir de zéro) auquel arrêter l'extraction. `slice()` extrait jusqu'à cet indice, mais pas l'élément situé en `fin` lui-même. `slice(1,4)` extrait du deuxième au quatrième élément (les éléments d'indices 1, 2 et 3). S'il s'agit d'un indice négatif, `fin` indique un décalage depuis la fin de la séquence. `slice(2,-1)` extrait du troisième à l'avant-dernier élément dans la séquence. Si `fin` n'est pas fourni, `slice()` extraira jusqu'à la fin de la séquence (`arr.length`). Si `fin` est supérieur à la longueur de la séquence, `slice()` fera une extraction jusqu'à la fin de la séquence. -

    slice() ne modifie pas le tableau original, mais renvoie une nouvelle copie du tableau (shallow copy — copie superficielle) dont les éléments sont des copies des éléments extraits du tableau original. Les éléments du tableau original sont copiés dans le nouveau tableau de la manière suivante :

    +### Valeur de retour -
      -
    • Pour les références à des objets (et non les objets eux-mêmes), slice() copie ces références dans le nouveau tableau. Tant l'original que le nouveau tableau font référence au même objet. Si un objet référencé est modifié, ces changements sont visibles tant pour le nouveau que pour l'ancien tableau.
    • -
    • Pour les chaines de caractères, les nombres et les booléens, slice() copie ces chaines de caractères, ces nombres et ces valeurs booléennes dans le nouveau tableau. Les modifications sur ces chaînes, nombres ou booléens dans l'un des tableaux n'affectent pas l'autre tableau (NB : lorsque l'on parle de chaine de caractères, de nombre ou de booléen ici, on parle exclusivement de leur type primitif, pas des objets {{jsxref("String")}}, {{jsxref("Number")}} ou {{jsxref("Boolean")}} — voir par exemple différences entre objet String et type primitif pour les chaines de caractères).
    • -
    +Un nouveau tableau contenant les éléments extraits. -

    Si un nouvel élément est ajouté à l'un ou l'autre tableau, le second n'est pas affecté.

    +## Description -

    Exemples

    +`slice()` ne modifie pas le tableau original, mais renvoie une nouvelle copie du tableau (_shallow copy_ — copie superficielle) dont les éléments sont des copies des éléments extraits du tableau original. Les éléments du tableau original sont copiés dans le nouveau tableau de la manière suivante : -

    Renvoyer un fragment d'un tableau existant

    +- Pour les références à des objets (et non les objets eux-mêmes), `slice()` copie ces références dans le nouveau tableau. Tant l'original que le nouveau tableau font référence au même objet. Si un objet référencé est modifié, ces changements sont visibles tant pour le nouveau que pour l'ancien tableau. +- Pour les chaines de caractères, les nombres et les booléens, `slice()` copie ces chaines de caractères, ces nombres et ces valeurs booléennes dans le nouveau tableau. Les modifications sur ces chaînes, nombres ou booléens dans l'un des tableaux n'affectent pas l'autre tableau (NB : lorsque l'on parle de chaine de caractères, de nombre ou de booléen ici, on parle exclusivement de leur _type primitif_, pas des _objets_ {{jsxref("String")}}, {{jsxref("Number")}} ou {{jsxref("Boolean")}} — voir par exemple [différences entre objet String et type primitif pour les chaines de caractères](/fr/docs/Web/JavaScript/Reference/Objets_globaux/String#Les_différences_entre_les_objets_String_et_le_type_primitif_pour_les_chaînes_de_caractères)). -
    var fruits = ["Banane", "Orange", "Citron", "Pomme", "Mangue"];
    +Si un nouvel élément est ajouté à l'un ou l'autre tableau, le second n'est pas affecté.
    +
    +## Exemples
    +
    +### Renvoyer un fragment d'un tableau existant
    +
    +```js
    +var fruits = ["Banane", "Orange", "Citron", "Pomme", "Mangue"];
     var agrumes = fruits.slice(1, 3);
     
    -// fruits vaut --> ["Banane", "Orange", "Citron", "Pomme", "Mangue"]
    -// agrumes vaut --> ["Orange", "Citron"]
    +// fruits vaut --> ["Banane", "Orange", "Citron", "Pomme", "Mangue"] +// agrumes vaut --> ["Orange", "Citron"] +``` -

    Utiliser slice()

    +### Utiliser `slice()` -

    Dans l'exemple qui suit, slice() crée un nouveau tableau, nouvelleVoiture, à partir de maVoiture. Chacun d'entre eux contient une référence à l'objet maHonda. Lorsque la couleur de maHonda est changée en bordeaux, les deux tableaux reflètent ce changement.

    +Dans l'exemple qui suit, `slice()` crée un nouveau tableau, `nouvelleVoiture`, à partir de `maVoiture`. Chacun d'entre eux contient une référence à l'objet `maHonda`. Lorsque la couleur de `maHonda` est changée en bordeaux, les deux tableaux reflètent ce changement. -
    // Avec slice, crée nouvelleVoiture depuis maVoiture
    +```js
    +// Avec slice, crée nouvelleVoiture depuis maVoiture
     var maHonda = { couleur : "rouge", roues : 4, moteur : { cylindres : 4, capacité : 2.2 } };
     var maVoiture = [maHonda, 2, "excellente condition", "achetée en 1997"];
     var nouvelleVoiture = maVoiture.slice(0, 2);
    @@ -82,11 +82,12 @@ console.log("La nouvelle couleur de ma Honda est " + maHonda.couleur);
     // Affiche la couleur de maHonda référencées depuis les deux tableaux.
     console.log("maVoiture[0].couleur = " + maVoiture[0].couleur);
     console.log("nouvelleVoiture[0].couleur = " + nouvelleVoiture[0].couleur);
    -
    +``` -

    Ce script affichera :

    +Ce script affichera : -
    maVoiture = [{couleur:"rouge", roues:4, moteur:{cylindres:4, capacité:2.2}}, 2,
    +```js
    +maVoiture = [{couleur:"rouge", roues:4, moteur:{cylindres:4, capacité:2.2}}, 2,
                  "excellente condition", "achetée en 1997"]
     nouvelleVoiture = [{couleur:"rouge", roues:4, moteur:{cylindres:4, capacité:2.2}}, 2]
     maVoiture[0].couleur = rouge
    @@ -94,22 +95,24 @@ nouvelleVoiture[0].couleur = rouge
     La nouvelle couleur de ma Honda est bordeaux
     maVoiture[0].couleur = bordeaux
     nouvelleVoiture[0].couleur = bordeaux
    -
    +``` -

    Utilisation avec les objets similaires aux tableaux

    +## Utilisation avec les objets similaires aux tableaux -

    La méthode slice() peut aussi être appelée pour convertir des objets/collections similaires à des tableaux, en un nouveau tableau. L'objet {{jsxref("Fonctions/arguments", "arguments")}} d'une fonction est un exemple d'objet similaire à un tableau.

    +La méthode `slice()` peut aussi être appelée pour convertir des objets/collections similaires à des tableaux, en un nouveau tableau. L'objet {{jsxref("Fonctions/arguments", "arguments")}} d'une fonction est un exemple d'objet similaire à un tableau. -
    function list() {
    +```js
    +function list() {
       return Array.prototype.slice.call(arguments, 0);
     }
     
     var list1 = list(1, 2, 3); // [1, 2, 3]
    -
    +``` -

    Il est possible de lier avec la fonction .call de {{jsxref("Function.prototype")}} et on peut effectuer la réduction avec [].slice.call(arguments) plutôt qu'avec Array.prototype.slice.call. Voici comment on peut simplifier avec {{jsxref("Function.prototype.bind", "bind")}} :

    +Il est possible de lier avec la fonction .`call` de {{jsxref("Function.prototype")}} et on peut effectuer la réduction avec `[].slice.call(arguments)` plutôt qu'avec `Array.prototype.slice.call`. Voici comment on peut simplifier avec {{jsxref("Function.prototype.bind", "bind")}} : -
    var unboundSlice = Array.prototype.slice;
    +```js
    +var unboundSlice = Array.prototype.slice;
     var slice = Function.prototype.call.bind(unboundSlice);
     
     function list() {
    @@ -117,50 +120,23 @@ function list() {
     }
     
     var list1 = list(1, 2, 3); // [1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.slice")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Function.prototype.call()")}}
    • -
    • {{jsxref("Function.prototype.bind()")}}
    • -
    • {{jsxref("Array.prototype.splice()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.slice")}} + +## Voir aussi + +- {{jsxref("Function.prototype.call()")}} +- {{jsxref("Function.prototype.bind()")}} +- {{jsxref("Array.prototype.splice()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/some/index.md b/files/fr/web/javascript/reference/global_objects/array/some/index.md index b9a15a2855..e24fc4cf20 100644 --- a/files/fr/web/javascript/reference/global_objects/array/some/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/some/index.md @@ -12,117 +12,93 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/some original_slug: Web/JavaScript/Reference/Objets_globaux/Array/some --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode some() teste si au moins un élément du tableau passe le test implémenté par la fonction fournie. Elle renvoie un booléen indiquant le résultat du test.

    +La méthode **`some()`** teste si au moins un élément du tableau passe le test implémenté par la fonction fournie. Elle renvoie un booléen indiquant le résultat du test. -
    -

    Note : Cette méthode renverra false, quelle que soit la condition, si elle est utilisée sur un tableau vide.

    -
    +> **Note :** Cette méthode renverra `false`, quelle que soit la condition, si elle est utilisée sur un tableau vide. -
    {{EmbedInteractiveExample("pages/js/array-some.html")}}
    +{{EmbedInteractiveExample("pages/js/array-some.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.some(callback[, objetThis])
    + arr.some(callback[, objetThis]) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction à tester pour chaque élément du tableau. Cette fonction utilise trois arguments : -
    -
    valeurCourante
    -
    L'élément du tableau à traiter par la fonction.
    -
    index {{optional_inline}}
    -
    L'indice de l'élément qui est traité par la fonction.
    -
    array {{optional_inline}}
    -
    Le tableau sur lequel on a appelé la méthode some.
    -
    -
    -
    objetThis {{optional_inline}}
    -
    Paramètre optionnel. Il correspond à la valeur à utiliser pour this lors de l'exécution de la fonction callback.
    -
    +- `callback` -

    Valeur de retour

    + - : La fonction à tester pour chaque élément du tableau. Cette fonction utilise trois arguments : -

    true si la fonction callback renvoie une valeur équivalente à true pour au moins un des éléments du tableau, sinon elle renvoie false.

    + - `valeurCourante` + - : L'élément du tableau à traiter par la fonction. + - `index` {{optional_inline}} + - : L'indice de l'élément qui est traité par la fonction. + - `array `{{optional_inline}} + - : Le tableau sur lequel on a appelé la méthode `some`. -

    Description

    +- `objetThis` {{optional_inline}} + - : Paramètre optionnel. Il correspond à la valeur à utiliser pour `this` lors de l'exécution de la fonction `callback`. -

    La méthode some() exécute la fonction callback une seule fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle en trouve un pour lequel callback renvoie une valeur équivalente à true dans un contexte booléen. Si un tel élément est trouvé, some() renvoie immédiatement true. Dans le cas contraire, some renvoie false. callback n'est invoquée que pour les indices du tableau auxquels des valeurs sont assignées ; elle n'est pas invoquée pour les indices qui ont été supprimés ou auxquels aucune valeur n'a jamais été assignée.

    +### Valeur de retour -

    La fonction callback est invoquée avec trois paramètres : la valeur de l'élément, l'indice de l'élément et l'objet Array parcouru.

    +`true` si la fonction `callback` renvoie une valeur équivalente à `true` pour au moins un des éléments du tableau, sinon elle renvoie `false`. -

    Si un paramètre objetThis est fourni à some(), il sera utilisé comme valeur de this pour chaque invocation du callback. Sinon, la valeur  {{jsxref("undefined")}} sera passée pour utilisation comme valeur this. La valeur this finalement utilisée par callback est déterminée en fonction des règles habituelles pour déterminer this pour une fonction.

    +## Description -

    La méthode some() ne modifie pas le tableau sur lequel elle est appelée.

    +La méthode `some()` exécute la fonction `callback` une seule fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle en trouve un pour lequel `callback` renvoie une valeur équivalente à `true` dans un contexte booléen. Si un tel élément est trouvé, `some()` renvoie immédiatement `true`. Dans le cas contraire, `some` renvoie `false`. `callback` n'est invoquée que pour les indices du tableau auxquels des valeurs sont assignées ; elle n'est pas invoquée pour les indices qui ont été supprimés ou auxquels aucune valeur n'a jamais été assignée. -

    La liste des éléments traités par some() est définie avant la première invocation du callback. Les éléments qui sont ajoutés au tableau après le début de l'appel à some ne seront pas visités par callback. Si un élément existant non encore visité est modifié par callback, sa valeur passée à callback sera sa valeur au moment où some visite l'indice de cet élément ; les éléments supprimés ne seront pas visités.

    +La fonction `callback` est invoquée avec trois paramètres : la valeur de l'élément, l'indice de l'élément et l'objet `Array` parcouru. -

    Exemples

    +Si un paramètre `objetThis` est fourni à `some()`, il sera utilisé comme valeur de `this` pour chaque invocation du `callback`. Sinon, la valeur  {{jsxref("undefined")}} sera passée pour utilisation comme valeur `this`. La valeur `this` finalement utilisée par `callback` est déterminée en fonction [des règles habituelles pour déterminer `this` pour une fonction](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this). -

    Tester la valeur des éléments d'un tableau

    +La méthode `some()` ne modifie pas le tableau sur lequel elle est appelée. -

    L'exemple suivant teste si certains éléments d'un tableau sont plus grands que 10.

    +La liste des éléments traités par `some()` est définie avant la première invocation du `callback`. Les éléments qui sont ajoutés au tableau après le début de l'appel à `some` ne seront pas visités par `callback`. Si un élément existant non encore visité est modifié par `callback`, sa valeur passée à `callback` sera sa valeur au moment où `some` visite l'indice de cet élément ; les éléments supprimés ne seront pas visités. -
    function estAssezGrand(element, indice, array) {
    -  return (element >= 10);
    +## Exemples
    +
    +### Tester la valeur des éléments d'un tableau
    +
    +L'exemple suivant teste si certains éléments d'un tableau sont plus grands que 10.
    +
    +```js
    +function estAssezGrand(element, indice, array) {
    +  return (element >= 10);
     }
     var resultat = [2, 5, 8, 1, 4].some(estAssezGrand);
     // resultat vaut false
     passed = [12, 5, 8, 1, 4].some(estAssezGrand);
     // passed vaut true
    -
    - -

    Tester la valeur des éléments avec les fonctions fléchées

    - -

    Les fonctions fléchées permettent d'utiliser une syntaxe plus concise pour réaliser la même opération que l'exemple précédent.

    - -
    [2, 5, 8, 1, 4].some(elem => elem > 10); // false
    -[12, 5, 8, 1, 4].some(elem => elem > 10); // true
    - -
    -

    Note : Si on veut vérifier qu'un élément est dans un tableau, on pourra utiliser la méthode {{jsxref("Array.prototype.includes()")}}.

    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
    {{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.some")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.find()")}}
    • -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.includes()")}}
    • -
    • {{jsxref("TypedArray.prototype.some()")}}
    • -
    +``` + +### Tester la valeur des éléments avec les fonctions fléchées + +[Les fonctions fléchées ](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es)permettent d'utiliser une syntaxe plus concise pour réaliser la même opération que l'exemple précédent. + +```js +[2, 5, 8, 1, 4].some(elem => elem > 10); // false +[12, 5, 8, 1, 4].some(elem => elem > 10); // true +``` + +> **Note :** Si on veut vérifier qu'un élément est dans un tableau, on pourra utiliser la méthode {{jsxref("Array.prototype.includes()")}}. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.some")}} + +## Voir aussi + +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.includes()")}} +- {{jsxref("TypedArray.prototype.some()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/sort/index.md b/files/fr/web/javascript/reference/global_objects/array/sort/index.md index 84ce52113f..75fe8a8ce3 100644 --- a/files/fr/web/javascript/reference/global_objects/array/sort/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/sort/index.md @@ -10,85 +10,85 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort original_slug: Web/JavaScript/Reference/Objets_globaux/Array/sort --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode sort() trie les éléments d'un tableau, dans ce même tableau, et renvoie le tableau. Par défaut, le tri s'effectue sur les éléments du tableau convertis en chaînes de caractères et triées selon les valeurs des unités de code UTF-16 des caractères.

    +La méthode **`sort()`** trie les éléments d'un tableau, dans ce même tableau, et renvoie le tableau. Par défaut, le tri s'effectue sur les éléments du tableau convertis en chaînes de caractères et triées selon les valeurs des unités de code UTF-16 des caractères. -

    La complexité en espace mémoire et en temps utilisée pour le tri ne peut pas être garantie car elle dépend de l'implémentation.

    +La complexité en espace mémoire et en temps utilisée pour le tri ne peut pas être garantie car elle dépend de l'implémentation. -
    {{EmbedInteractiveExample("pages/js/array-sort.html")}}
    +{{EmbedInteractiveExample("pages/js/array-sort.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.sort()
    -arr.sort(fonctionComparaison)
    + arr.sort() + arr.sort(fonctionComparaison) -

    Paramètres

    +### Paramètres -
    -
    fonctionComparaison {{optional_inline}}
    -
    Ce paramètre optionnel permet de spécifier une fonction définissant l'ordre de tri. Si absente, le tableau est trié selon la valeur de point de code Unicode de chaque caractère, d'après la conversion en chaine de caractères de chaque élément. Cette fonction prendra deux arguments : le premier élément à comparer et le deuxième élément à comparer.
    -
    +- `fonctionComparaison` {{optional_inline}} + - : Ce paramètre optionnel permet de spécifier une fonction définissant l'ordre de tri. Si absente, le tableau est trié selon la valeur de point de code [Unicode](/fr/docs/Web/JavaScript/Guide/Valeurs,_variables,_et_litt%C3%A9raux#Unicode) de chaque caractère, d'après la conversion en chaine de caractères de chaque élément. Cette fonction prendra deux arguments : le premier élément à comparer et le deuxième élément à comparer. -

    Valeur de retour

    +### Valeur de retour -

    Le tableau trié (le tri est effectué sur le tableau courant qui est modifié, aucune copie n'est réalisée).

    +Le tableau trié (le tri est effectué sur le tableau courant qui est modifié, aucune copie n'est réalisée). -

    Description

    +## Description -

    Si le paramètre fonctionComparaison n'est pas fourni, les éléments qui ne valent pas undefined sont triés en les convertissant en chaines de caractères et en comparant ces chaines selon l'ordre des points de code Unicode. Par exemple, "banane" sera trié avant "cerise", mais "Cerise" arrivera avant "banane" à cause de la majuscule (les majuscules arrivent avant dans la liste). Dans un tri numérique, 9 sera trié avant 80, mais comme ces nombres sont convertis en chaînes de caractères, "80" arrive avant "9" selon l'ordre des unités de code UTF-16. Les éléments valant undefined sont placés à la fin du tableau.

    +Si le paramètre `fonctionComparaison` n'est pas fourni, les éléments qui ne valent pas `undefined` sont triés en les convertissant en chaines de caractères et en comparant ces chaines selon l'ordre des points de code Unicode. Par exemple, "banane" sera trié avant "cerise", mais "Cerise" arrivera avant "banane" à cause de la majuscule (les majuscules arrivent avant dans la liste). Dans un tri numérique, 9 sera trié avant 80, mais comme ces nombres sont convertis en chaînes de caractères, "80" arrive avant "9" selon l'ordre des unités de code UTF-16. Les éléments valant `undefined` sont placés à la fin du tableau. -
    -

    Note : En UTF-16, les caractères Unicode situés après \uFFFF sont encodés avec deux unités de code surrogates sur l'intervalle \uD800-\uDFFF. Pour comparer les chaînes de caractères entre elles, ce sont les unités de code séparées qui sont prises en compte. Ainsi, le caractère formé par la paire surrogate \uD655 \uDE55 sera trié avant le caractère \uFF3A.

    -
    +> **Note :** En UTF-16, les caractères Unicode situés après `\uFFFF` sont encodés avec deux unités de code _surrogates_ sur l'intervalle `\uD800`-`\uDFFF`. Pour comparer les chaînes de caractères entre elles, ce sont les unités de code séparées qui sont prises en compte. Ainsi, le caractère formé par la paire _surrogate_ `\uD655 \uDE55` sera trié avant le caractère `\uFF3A`. -

    Si le paramètre fonctionComparaison est fourni, les éléments du tableau (qui ne valent pas undefined) sont triés selon la valeur de retour de la fonction de comparaison. Si a et b sont deux éléments à comparer, alors :

    +Si le paramètre `fonctionComparaison` est fourni, les éléments du tableau (qui ne valent pas `undefined`) sont triés selon la valeur de retour de la fonction de comparaison. Si `a` et `b` sont deux éléments à comparer, alors : -
      -
    • Si fonctionComparaison(a, b) est inférieur à 0, on trie a avec un indice inférieur à b (a sera classé avant b)
    • -
    • Si fonctionComparaison(a, b) renvoie 0, on laisse a et b inchangés l'un par rapport à l'autre, mais triés par rapport à tous les autres éléments. Note : la norme ECMAScript ne garantit pas ce comportement, par conséquent tous les navigateurs (par exemple les versions de Mozilla antérieures à 2003) ne respectent pas ceci.
    • -
    • Si fonctionComparaison(a, b) est supérieur à 0, on trie b avec un indice inférieur à a.
    • -
    • fonctionComparaison(a, b) doit toujours renvoyer le même résultat à partir de la même paire d'arguments. Si la fonction renvoie des résultats incohérents, alors l’ordre dans lequel sont triés les éléments n’est pas défini.
    • -
    +- Si `fonctionComparaison(a, b)` est inférieur à 0, on trie `a` avec un indice inférieur à `b` (`a` sera classé avant `b`) +- Si `fonctionComparaison(a, b)` renvoie 0, on laisse `a` et `b` inchangés l'un par rapport à l'autre, mais triés par rapport à tous les autres éléments. Note : la norme ECMAScript ne garantit pas ce comportement, par conséquent tous les navigateurs (par exemple les versions de Mozilla antérieures à 2003) ne respectent pas ceci. +- Si `fonctionComparaison(a, b)` est supérieur à 0, on trie `b` avec un indice inférieur à `a`. +- `fonctionComparaison(a, b)` doit toujours renvoyer le même résultat à partir de la même paire d'arguments. Si la fonction renvoie des résultats incohérents, alors l’ordre dans lequel sont triés les éléments n’est pas défini. -

    Une fonction de comparaison aura donc généralement la forme suivante :

    +Une fonction de comparaison aura donc généralement la forme suivante : -
    function compare(a, b) {
    -  if (a est inférieur à b selon les critères de tri)
    +```js
    +function compare(a, b) {
    +  if (a est inférieur à b selon les critères de tri)
          return -1;
    -  if (a est supérieur à b selon les critères de tri)
    +  if (a est supérieur à b selon les critères de tri)
          return 1;
       // a doit être égal à b
       return 0;
     }
    -
    +``` -

    Pour comparer des nombres plutôt que des chaînes, la fonction de comparaison peut simplement soustraire b à a (cela fonctionnera si le tableau ne contient pas {{jsxref("NaN")}} ou {{jsxref("Infinity")}}) :

    +Pour comparer des nombres plutôt que des chaînes, la fonction de comparaison peut simplement soustraire `b` à `a` (cela fonctionnera si le tableau ne contient pas {{jsxref("NaN")}} ou {{jsxref("Infinity")}}) : -
    function compareNombres(a, b) {
    +```js
    +function compareNombres(a, b) {
       return a - b;
     }
    -
    +``` -

    L'usage des {{jsxref("Opérateurs/L_opérateur_function", "expressions de fonctions","",11)}} s'avère très pratique avec la méthode sort() :

    +L'usage des {{jsxref("Opérateurs/L_opérateur_function", "expressions de fonctions","",11)}} s'avère très pratique avec la méthode `sort()` : -
    var nombres = [4, 2, 5, 1, 3];
    +```js
    +var nombres = [4, 2, 5, 1, 3];
     nombres.sort(function(a, b) {
       return a - b;
     });
     console.log(nombres);
     // [1, 2, 3, 4, 5]
    -
    +``` -

    ECMAScript 2015 permet d'utiliser les fonctions fléchées et ainsi d'obtenir une syntaxe plus concise :

    +ECMAScript 2015 permet d'utiliser [les fonctions fléchées](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es) et ainsi d'obtenir une syntaxe plus concise : -
    let nombres = [4, 2, 5, 1, 3];
    -nombres.sort((a, b) => a - b);
    -console.log(nombres);
    +```js +let nombres = [4, 2, 5, 1, 3]; +nombres.sort((a, b) => a - b); +console.log(nombres); +``` -

    Les objets peuvent être triés d'après les valeurs d'une de leurs propriétés.

    +Les objets peuvent être triés d'après les valeurs d'une de leurs propriétés. -
    var items = [
    +```js
    +var items = [
       { name: "Edward", value: 21 },
       { name: "Sharpe", value: 37 },
       { name: "And", value: 45 },
    @@ -98,28 +98,30 @@ console.log(nombres);
    ]; items.sort(function (a, b) { return a.value - b.value; -}); +}); +``` -

    Différences d'implémentation

    +### Différences d'implémentation -

    Certaines implémentations de JavaScript utilisent un tri stable : l'ordre partiel de a et b ne change pas si a et b sont égaux. Si l'indice de a était inférieur à celui de b avant le tri, il le sera toujours après, quels que soient les mouvements de a et b dus au tri.

    +Certaines implémentations de JavaScript utilisent un tri stable : l'ordre partiel de `a` et `b` ne change pas si `a` et `b` sont égaux. Si l'indice de `a` était inférieur à celui de `b` avant le tri, il le sera toujours après, quels que soient les mouvements de `a` et `b` dus au tri. -

    Le tri est stable dans SpiderMonkey et tous les navigateurs basés sur Mozilla à partir de Gecko 1.9 (voir le {{ Bug(224128) }}).

    +Le tri est stable dans [SpiderMonkey](/fr/docs/SpiderMonkey) et tous les navigateurs basés sur Mozilla à partir de [Gecko](/fr/docs/Gecko) 1.9 (voir le {{ Bug(224128) }}). -

    Le comportement de la méthode sort() a changé entre JavaScript 1.1 et JavaScript 1.2.

    +Le comportement de la méthode `sort()` a changé entre JavaScript 1.1 et JavaScript 1.2. -

    En JavaScript 1.1, sur certaines plateformes, la méthode sort ne fonctionnait pas. Le tri fonctionne sur toutes les plateformes à partir de JavaScript 1.2.

    +En JavaScript 1.1, sur certaines plateformes, la méthode `sort` ne fonctionnait pas. Le tri fonctionne sur toutes les plateformes à partir de JavaScript 1.2. -

    En JavaScript 1.2, cette méthode ne convertit plus les éléments non définis (undefined) en null ; elle les place en fin de tableau. Par exemple, supposons que vous ayez ce script :

    +En JavaScript 1.2, cette méthode ne convertit plus les éléments non définis (`undefined`) en `null` ; elle les place en fin de tableau. Par exemple, supposons que vous ayez ce script : -
    var a = [];
    +```js
    +var a = [];
     a[0] = "araignée";
     a[5] = "zèbre";
     
     function writeArray(x) {
    -  for (i = 0; i < x.length; i++) {
    +  for (i = 0; i < x.length; i++) {
         console.log(x[i]);
    -    if (i < x.length-1)
    +    if (i < x.length-1)
           console.log(", ");
       }
     }
    @@ -128,27 +130,26 @@ writeArray(a);
     a.sort();
     console.log("\n");
     writeArray(a);
    -
    +``` -

    En JavaScript 1.1, cette fonction affichait :

    +En JavaScript 1.1, cette fonction affichait : -
    araignée, null, null, null, null, zèbre
    -araignée, null, null, null, null, zèbre
    -
    + araignée, null, null, null, null, zèbre + araignée, null, null, null, null, zèbre -

    En JavaScript 1.2, elle affichera :

    +En JavaScript 1.2, elle affichera : -
    araignée, undefined, undefined, undefined, undefined, zèbre
    -araignée, zèbre, undefined, undefined, undefined, undefined
    -
    + araignée, undefined, undefined, undefined, undefined, zèbre + araignée, zèbre, undefined, undefined, undefined, undefined -

    Exemples

    +## Exemples -

    Création, affichage et tri d'un tableau

    +### Création, affichage et tri d'un tableau -

    L'exemple qui suit crée quatre tableaux et affiche le tableau original, puis les tableaux triés. Les tableaux numériques sont triés d'abord sans, puis avec une fonction de comparaison.

    +L'exemple qui suit crée quatre tableaux et affiche le tableau original, puis les tableaux triés. Les tableaux numériques sont triés d'abord sans, puis avec une fonction de comparaison. -
    var stringArray = ["Bosse", "Bleue", "Béluga"];
    +```js
    +var stringArray = ["Bosse", "Bleue", "Béluga"];
     var numericStringArray = ["80", "9", "700"];
     var numberArray = [40, 1, 5, 200];
     var mixedNumericArray = ["80", "9", "700", 40, 1, 5, 200];
    @@ -171,42 +172,44 @@ console.log("Triées avec compareNombres : " + numericStringArray.sort(compareN
     console.log("Nombres et chaînes numériques : " + mixedNumericArray.join() +"\n");
     console.log("Triés sans fonction de comparaison : " + mixedNumericArray.sort() +"\n");
     console.log("Triés avec compareNombres : " + mixedNumericArray.sort(compareNombres) +"\n\n");
    -
    +``` -

    Cet exemple produit la sortie suivante. Comme on peut le voir, lorsqu'on utilise la fonction de comparaison, les nombres sont triés correctement qu'ils soient des nombres ou des chaînes numériques.

    +Cet exemple produit la sortie suivante. Comme on peut le voir, lorsqu'on utilise la fonction de comparaison, les nombres sont triés correctement qu'ils soient des nombres ou des chaînes numériques. -
    Chaînes : Bosse,Bleue,Béluga
    -Triées : Bleue,Bosse,Béluga
    +    Chaînes : Bosse,Bleue,Béluga
    +    Triées : Bleue,Bosse,Béluga
     
    -Nombres : 40,1,5,200
    -Triés sans fonction de comparaison : 1,200,40,5
    -Triés avec compareNombres : 1,5,40,200
    +    Nombres : 40,1,5,200
    +    Triés sans fonction de comparaison : 1,200,40,5
    +    Triés avec compareNombres : 1,5,40,200
     
    -Chaînes numériques : 80,9,700
    -Triées sans fonction de comparaison : 700,80,9
    -Triées avec compareNombres : 9,80,700
    +    Chaînes numériques : 80,9,700
    +    Triées sans fonction de comparaison : 700,80,9
    +    Triées avec compareNombres : 9,80,700
     
    -Nombres et chaînes numériques : 80,9,700,40,1,5,200
    -Triés sans fonction de comparaison : 1,200,40,5,700,80,9
    -Triés avec compareNombres : 1,5,9,40,80,200,700
    -
    + Nombres et chaînes numériques : 80,9,700,40,1,5,200 + Triés sans fonction de comparaison : 1,200,40,5,700,80,9 + Triés avec compareNombres : 1,5,9,40,80,200,700 -

    Trier des caractères non-ASCII

    +### Trier des caractères non-ASCII -

    Pour des chaines de caractères contenant des caractères non ASCII, c'est à dire des chaines de caractères contenant par exemple des accents (é, è, a, ä, etc.) : utilisez {{jsxref("String.localeCompare")}}. Cette fonction peut comparer ces caractères afin qu'ils apparaissent dans le bon ordre.

    +Pour des chaines de caractères contenant des caractères non ASCII, c'est à dire des chaines de caractères contenant par exemple des accents (é, è, a, ä, etc.) : utilisez {{jsxref("String.localeCompare")}}. Cette fonction peut comparer ces caractères afin qu'ils apparaissent dans le bon ordre. -
    var items = ["réservé", "premier", "cliché", "communiqué", "café" ,"adieu"];
    +```js
    +var items = ["réservé", "premier", "cliché", "communiqué", "café" ,"adieu"];
     items.sort(function (a, b) {
       return a.localeCompare(b);
     });
     
    -// items is [ 'adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé' ]
    +// items is [ 'adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé' ] +``` -

    Trier avec map

    +### Trier avec map -

    La fonction de comparaison peut être amenée à être appelée plusieurs fois pour un même élément du tableau. Selon la fonction utilisée, cela peut entraîner des problèmes de performances. Plus le tableau est grand et plus la fonction de comparaison est complexe, plus il sera judicieux d'envisager des opérations de fonctions appliquées au tableau (map). L'idée est la suivante : on extrait les valeurs du tableau original, en appliquant des opérations dans un tableau temporaire, puis on trie ce tableau temporaire. Enfin, on recompose le tableau final avec les éléments du premier tableau et l'ordre obtenu.

    +La fonction de comparaison peut être amenée à être appelée plusieurs fois pour un même élément du tableau. Selon la fonction utilisée, cela peut entraîner des problèmes de performances. Plus le tableau est grand et plus la fonction de comparaison est complexe, plus il sera judicieux d'envisager des opérations de fonctions appliquées au tableau (_map_). L'idée est la suivante : on extrait les valeurs du tableau original, en appliquant des opérations dans un tableau temporaire, puis on trie ce tableau temporaire. Enfin, on recompose le tableau final avec les éléments du premier tableau et l'ordre obtenu. -
    // le tableau à trier
    +```js
    +// le tableau à trier
     var liste = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
     
     // Création d'objet temporaire qui contient les positions
    @@ -217,10 +220,10 @@ var mapped = liste.map(function(e, i) {
     
     // on trie l'objet temporaire avec les valeurs réduites
     mapped.sort(function(a, b) {
    -  if (a.value > b.value) {
    +  if (a.value > b.value) {
         return 1;
       }
    -  if (a.value < b.value) {
    +  if (a.value < b.value) {
         return -1;
       }
       return 0;
    @@ -230,54 +233,25 @@ mapped.sort(function(a, b) {
     var result = mapped.map(function(e){
       return liste[e.index];
     });
    -
    - -
    -

    Note : Une bibliothèque open source utilise cette approche : mapsort.

    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.sort', 'Array.prototype.sort')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.sort")}}

    - -

    Voir aussi

    - - +``` + +> **Note :** Une bibliothèque _open source_ utilise cette approche : [`mapsort`](https://null.house/open-source/mapsort). + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.sort', 'Array.prototype.sort')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.sort")}} + +## Voir aussi + +- {{jsxref("Array.prototype.reverse()")}} +- {{jsxref("String.prototype.localeCompare()")}} +- [À propos de la stabilité du tri pour le moteur V8](https://v8.dev/blog/array-sort) diff --git a/files/fr/web/javascript/reference/global_objects/array/splice/index.md b/files/fr/web/javascript/reference/global_objects/array/splice/index.md index a4fc4f2ad5..8ce0f4aaf2 100644 --- a/files/fr/web/javascript/reference/global_objects/array/splice/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/splice/index.md @@ -10,44 +10,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice original_slug: Web/JavaScript/Reference/Objets_globaux/Array/splice --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode splice() modifie le contenu d'un tableau en retirant des éléments et/ou en ajoutant de nouveaux éléments à même le tableau.On peut ainsi vider ou remplacer une partie d'un tableau.

    +La méthode **`splice()`** modifie le contenu d'un tableau en retirant des éléments et/ou en ajoutant de nouveaux éléments [à même le tableau](https://en.wikipedia.org/wiki/In-place_algorithm).On peut ainsi vider ou remplacer une partie d'un tableau. -
    {{EmbedInteractiveExample("pages/js/array-splice.html")}}
    +{{EmbedInteractiveExample("pages/js/array-splice.html")}} -

    Syntaxe

    +## Syntaxe -
    var tabElementsSupprimes = array.splice(début, nbASupprimer[, élem1[, élem2[, ...]]])
    -
    + var tabElementsSupprimes = array.splice(début, nbASupprimer[, élem1[, élem2[, ...]]]) -

    Paramètres

    +### Paramètres -
    -
    début
    -
    L'indice à partir duquel commencer à changer le tableau (l'indice du premier élement étant 0). Si sa valeur est supérieure à la longueur du tableau array.length, début est ramené à la longueur du tableau array.length. S'il est négatif, le changement commencera d'autant d'éléments à partir de la fin du tableau, c'est à dire à partir de l'index  array.length + début. Si array.length + début est inférieur à 0, le changement commencera à l'index 0.
    -
    nbASupprimer
    -
    Un entier indiquant le nombre d'anciens éléments à remplacer.
    - Si ce paramètre est absent ou si sa valeur est supérieure ou égale à array.length - début, alors les éléments entre début et la fin du tableau seront supprimés. Si nbASupprimer vaut 0, aucun élément ne sera supprimé. Dans ce cas, il est nécessaire de spécifier au moins un nouvel élément.
    -
    élemN
    -
    Les éléments à ajouter au tableau à partir de début. Si vous ne spécifiez pas de nouvel élément, les anciens éléments seront simplement supprimés du tableau.
    -
    +- `début` + - : L'indice à partir duquel commencer à changer le tableau (l'indice du premier élement étant `0`). Si sa valeur est supérieure à la longueur du tableau `array.length`, `début` est ramené à la longueur du tableau `array.length`. S'il est négatif, le changement commencera d'autant d'éléments à partir de la fin du tableau, c'est à dire à partir de l'index  `array.length + début`. Si `array.length + début` est inférieur à `0`, le changement commencera à l'index `0`. +- `nbASupprimer` + - : Un entier indiquant le nombre d'anciens éléments à remplacer. + Si ce paramètre est absent ou si sa valeur est supérieure ou égale à `array.length - début`, alors les éléments entre `début` et la fin du tableau seront supprimés. Si `nbASupprimer` vaut 0, aucun élément ne sera supprimé. Dans ce cas, il est nécessaire de spécifier au moins un nouvel élément. +- `élemN` + - : Les éléments à ajouter au tableau à partir de `début`. Si vous ne spécifiez pas de nouvel élément, les anciens éléments seront simplement supprimés du tableau. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau contenant les éléments supprimés. Si un seul élément est supprimé, un tableau contenant un unique élément est retourné.

    +Un tableau contenant les éléments supprimés. Si un seul élément est supprimé, un tableau contenant un unique élément est retourné. -

    Description

    +## Description -

    Si vous spécifiez un nombre différent d'éléments à insérer et d'éléments à supprimer, le tableau aura une longueur différente après l'appel de la méthode.

    +Si vous spécifiez un nombre différent d'éléments à insérer et d'éléments à supprimer, le tableau aura une longueur différente après l'appel de la méthode. -

    Exemples

    +## Exemples -

    Utiliser splice

    +### Utiliser `splice` -

    Le script suivant illustre l'utilisation de splice :

    +Le script suivant illustre l'utilisation de `splice` : -
    var mesPoissons  = ["scalaire", "clown", "mandarin", "chirurgien"];
    +```js
    +var mesPoissons  = ["scalaire", "clown", "mandarin", "chirurgien"];
     
     // supprime 0 élément à partir de l'index 2, et insère "tambour"
     var enleves = mesPoissons.splice(2, 0, "tambour");
    @@ -85,48 +83,23 @@ enleves = mesAnimaux.splice(-2, 1);
     
     // mesAnimaux vaut ["cheval", "chien", "dauphin"]
     // enleves vaut ["chat"]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ESDraft')}}
    {{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ES6')}}
    {{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}{{Spec2('ES5.1')}}
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.splice")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.push", "push")}} / {{jsxref("Array.prototype.pop", "pop")}} pour ajouter/supprimer des éléments en fin de tableau
    • -
    • {{jsxref("Array.prototype.unshift", "unshift")}} / {{jsxref("Array.prototype.shift", "shift")}} pour ajouter/supprimer des éléments en début de tableau
    • -
    • {{jsxref("Array.prototype.concat", "concat")}} qui renvoie un nouveau tableau résultat de la concaténation d'un tableau avec un autre tableau ou d'autres valeurs
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}} | {{Spec2('ESDraft')}} | | +| {{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}} | {{Spec2('ES6')}} | | +| {{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.splice")}} + +## Voir aussi + +- {{jsxref("Array.prototype.push", "push")}} / {{jsxref("Array.prototype.pop", "pop")}} pour ajouter/supprimer des éléments en fin de tableau +- {{jsxref("Array.prototype.unshift", "unshift")}} / {{jsxref("Array.prototype.shift", "shift")}} pour ajouter/supprimer des éléments en début de tableau +- {{jsxref("Array.prototype.concat", "concat")}} qui renvoie un nouveau tableau résultat de la concaténation d'un tableau avec un autre tableau ou d'autres valeurs diff --git a/files/fr/web/javascript/reference/global_objects/array/tolocalestring/index.md b/files/fr/web/javascript/reference/global_objects/array/tolocalestring/index.md index 8e790d06f6..22c82a4be5 100644 --- a/files/fr/web/javascript/reference/global_objects/array/tolocalestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/tolocalestring/index.md @@ -13,57 +13,54 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString original_slug: Web/JavaScript/Reference/Objets_globaux/Array/toLocaleString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleString() renvoie une chaîne de caractères qui représente les éléments du tableau. Les éléments sont convertis en chaînes de caractères grâce à leurs méthodes toLocaleString et chacune de ces chaînes est séparée des autres avec un séparateur propre à la locale courante (par exemple une virgule ou un point).

    +La méthode **`toLocaleString()`** renvoie une chaîne de caractères qui représente les éléments du tableau. Les éléments sont convertis en chaînes de caractères grâce à leurs méthodes `toLocaleString` et chacune de ces chaînes est séparée des autres avec un séparateur propre à la locale courante (par exemple une virgule ou un point). -
    {{EmbedInteractiveExample("pages/js/array-tolocalestring.html")}}
    +{{EmbedInteractiveExample("pages/js/array-tolocalestring.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.toLocaleString();
    -arr.toLocaleString(locales);
    -arr.toLocaleString(locales, options);
    -
    + arr.toLocaleString(); + arr.toLocaleString(locales); + arr.toLocaleString(locales, options); -

    Paramètres

    +### Paramètres -
    -
    locales {{optional_inline}}
    -
    Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales. Pour plus de détails quant à la forme et l'interprétation de l'argument locales, on consultera la page {{jsxref("Intl")}}.
    -
    options {{optional_inline}}
    -
    Un objet qui contient des propriétés de configuration. Pour les nombres, consulter {{jsxref("Number.prototype.toLocaleString()")}}, pour les dates, consulter {{jsxref("Date.prototype.toLocaleString()")}}.
    -
    +- `locales` {{optional_inline}} + - : Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`. Pour plus de détails quant à la forme et l'interprétation de l'argument `locales`, on consultera la page {{jsxref("Intl")}}. +- `options` {{optional_inline}} + - : Un objet qui contient des propriétés de configuration. Pour les nombres, consulter {{jsxref("Number.prototype.toLocaleString()")}}, pour les dates, consulter {{jsxref("Date.prototype.toLocaleString()")}}. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente les éléments du tableau.

    +Une chaîne de caractères qui représente les éléments du tableau. -

    Exemples

    +## Exemples -

    Utiliser les arguments locales et options

    +### Utiliser les arguments `locales` et `options` -

    Les éléments du tableau sont converties en chaînes de caractères via leurs méthodes toLocaleString().

    +Les éléments du tableau sont converties en chaînes de caractères via leurs méthodes `toLocaleString()`. -
      -
    • Object : {{jsxref("Object.prototype.toLocaleString()")}}
    • -
    • Number : {{jsxref("Number.prototype.toLocaleString()")}}
    • -
    • Date : {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    +- `Object` : {{jsxref("Object.prototype.toLocaleString()")}} +- `Number` : {{jsxref("Number.prototype.toLocaleString()")}} +- `Date` : {{jsxref("Date.prototype.toLocaleString()")}} -

    Ici, on voit qu'on affiche le symbole de la devise de la locale pour chacun des éléments (nombres ou chaînes de caractères) du tableau prix :

    +Ici, on voit qu'on affiche le symbole de la devise de la locale pour chacun des éléments (nombres ou chaînes de caractères) du tableau `prix` : -
    var prix = ["¥7", 500, 8123, 12];
    +```js
    +var prix = ["¥7", 500, 8123, 12];
     prix.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });
     
     // "¥7,¥500,¥8,123,¥12"
    -
    +``` -

    Pour plus d'exemples, on peut se référer aux pages {{jsxref("Intl")}}, {{jsxref("NumberFormat")}} et {{jsxref("DateTimeFormat")}}.

    +Pour plus d'exemples, on peut se référer aux pages {{jsxref("Intl")}}, {{jsxref("NumberFormat")}} et {{jsxref("DateTimeFormat")}}. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    // https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
    +```js
    +// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
     if (!Array.prototype.toLocaleString) {
       Object.defineProperty(Array.prototype, 'toLocaleString', {
         value: function(locales, options) {
    @@ -75,7 +72,7 @@ if (!Array.prototype.toLocaleString) {
           var a = Object(this);
     
           // 2. Let len be ? ToLength(? Get(A, "length")).
    -      var len = a.length >>> 0;
    +      var len = a.length >>> 0;
     
           // 3. Let separator be the String value for the
           //    list-separator String appropriate for the
    @@ -108,8 +105,8 @@ if (!Array.prototype.toLocaleString) {
           // 8. Let k be 1.
           var k = 1;
     
    -      // 9. Repeat, while k < len
    -      while (k < len) {
    +      // 9. Repeat, while k < len
    +      while (k < len) {
             // a. Let S be a String value produced by
             //   concatenating R and separator.
             var s = r + separator;
    @@ -144,42 +141,25 @@ if (!Array.prototype.toLocaleString) {
         }
       });
     }
    -
    - -

    S'il faut absolument prendre en charge les moteurs JavaScript qui ne supportent pas {{jsxref("Object.defineProperty()")}}, mieux vaut ne pas ajouter de prothèse pour les méthodes Array.prototype car elles ne peuvent pas être rendues non-énumérables.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ESDraft')}}Définition initiale dans ECMAScript 3.
    {{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}Cette définition remplace la définition fournit dans ECMA-262.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.toLocaleString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.toString()")}}
    • -
    • {{jsxref("Intl")}}
    • -
    • {{jsxref("Object.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Number.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    +``` + +S'il faut absolument prendre en charge les moteurs JavaScript qui ne supportent pas {{jsxref("Object.defineProperty()")}}, mieux vaut ne pas ajouter de prothèse pour les méthodes `Array.prototype` car elles ne peuvent pas être rendues non-énumérables. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}} | {{Spec2('ESDraft')}} | Définition initiale dans ECMAScript 3. | +| {{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}} | {{Spec2('ES Int Draft')}} | Cette définition remplace la définition fournit dans ECMA-262. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.toLocaleString")}} + +## Voir aussi + +- {{jsxref("Array.prototype.toString()")}} +- {{jsxref("Intl")}} +- {{jsxref("Object.prototype.toLocaleString()")}} +- {{jsxref("Number.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toLocaleString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/tosource/index.md b/files/fr/web/javascript/reference/global_objects/array/tosource/index.md index d4c832779b..def1a9901d 100644 --- a/files/fr/web/javascript/reference/global_objects/array/tosource/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/tosource/index.md @@ -11,57 +11,55 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource original_slug: Web/JavaScript/Reference/Objets_globaux/Array/toSource --- -
    {{JSRef}}{{Non-standard_header}}
    +{{JSRef}}{{Non-standard_header}} -

    La méthode toSource() renvoie une chaine de caractères représentant le code source du tableau.

    +La méthode **`toSource()`** renvoie une chaine de caractères représentant le code source du tableau. -

    Syntaxe

    +## Syntaxe -
    arr.toSource()
    + arr.toSource() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente le code source du tableau.

    +Une chaîne de caractères qui représente le code source du tableau. -

    Description

    +## Description -

    La méthode toSource() renvoie les valeurs suivantes :

    +La méthode `toSource()` renvoie les valeurs suivantes : -
      -
    • Pour l'objet {{jsxref("Array")}} natif, toSource() renvoie la chaîne de caractères suivante indiquant que le code source n'est pas disponible : +- Pour l'objet {{jsxref("Array")}} natif, `toSource()` renvoie la chaîne de caractères suivante indiquant que le code source n'est pas disponible : -
      function Array() {
      -    [native code]
      -}
      -
      -
    • -
    • Pour les instances d'{{jsxref("Array")}}, toSource() renvoie une chaîne représentant le code source.
    • -
    + ```js + function Array() { + [native code] + } + ``` -

    Cette méthode est habituellement appelée en interne par le moteur JavaScript et n'est pas utilisée explicitement dans du code. Il est cependant possible d'appeler toSource() lors du débogage pour examiner le contenu d'un tableau.

    +- Pour les instances d'{{jsxref("Array")}}, `toSource()` renvoie une chaîne représentant le code source. -

    Exemples

    +Cette méthode est habituellement appelée en interne par le moteur JavaScript et n'est pas utilisée explicitement dans du code. Il est cependant possible d'appeler `toSource()` lors du débogage pour examiner le contenu d'un tableau. -

    Examiner le code source d'un tableau

    +## Exemples -

    Pour examiner le code source d'un tableau :

    +### Examiner le code source d'un tableau -
    var alpha = new Array("a", "b", "c");
    +Pour examiner le code source d'un tableau :
    +
    +```js
    +var alpha = new Array("a", "b", "c");
     alpha.toSource();
     // renvoie ["a", "b", "c"]
    -
    +``` -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucun standard. Implémenté dans JavaScript 1.3.

    +Ne fait partie d'aucun standard. Implémenté dans JavaScript 1.3. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array.toSource")}}

    +{{Compat("javascript.builtins.Array.toSource")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Object.prototype.toSource()")}}
    • -
    • {{jsxref("Array.prototype.toString()")}}
    • -
    +- {{jsxref("Object.prototype.toSource()")}} +- {{jsxref("Array.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/tostring/index.md b/files/fr/web/javascript/reference/global_objects/array/tostring/index.md index 2c9944f5dd..a14b6b7b8d 100644 --- a/files/fr/web/javascript/reference/global_objects/array/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/tostring/index.md @@ -10,69 +10,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Array/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toString() renvoie une chaine de caractères représentant le tableau spécifié et ses éléments.

    +La méthode **`toString()`** renvoie une chaine de caractères représentant le tableau spécifié et ses éléments. -
    {{EmbedInteractiveExample("pages/js/array-tostring.html")}}
    +{{EmbedInteractiveExample("pages/js/array-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.toString()
    + arr.toString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente les éléments du tableau.

    +Une chaîne de caractères qui représente les éléments du tableau. -

    Description

    +## Description -

    L'objet {{jsxref("Array")}} redéfinit la méthode toString d'{{jsxref("Object")}}. Pour les objets Array, la méthode toString() concatène les éléments du tableau et renvoie une chaîne contenant chacun des éléments, séparés par des virgules.

    +L'objet {{jsxref("Array")}} redéfinit la méthode `toString` d'{{jsxref("Object")}}. Pour les objets `Array`, la méthode `toString()` concatène les éléments du tableau et renvoie une chaîne contenant chacun des éléments, séparés par des virgules. -

    JavaScript appelle la méthode toString() automatiquement lorsqu'un tableau doit être représenté par une valeur texte ou lorsqu'on fait référence à un tableau dans une concaténation de chaines de caractères.

    +JavaScript appelle la méthode `toString()` automatiquement lorsqu'un tableau doit être représenté par une valeur texte ou lorsqu'on fait référence à un tableau dans une concaténation de chaines de caractères. -

    Sémantique d'ECMAScript 5

    +### Sémantique d'ECMAScript 5 -

    À partir de JavaScript 1.8.5 (Firefox 4), et en cohérence avec la 5e édition d'ECMAScript, la méthode toString() est générique et peut être utilisé avec n'importe quel objet. {{jsxref("Object.prototype.toString()")}} sera appelée, et la valeur résultante sera renvoyée.

    +À partir de JavaScript 1.8.5 (Firefox 4), et en cohérence avec la 5e édition d'ECMAScript, la méthode `toString()` est générique et peut être utilisé avec n'importe quel objet. {{jsxref("Object.prototype.toString()")}} sera appelée, et la valeur résultante sera renvoyée. -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Array.toString")}}

    +{{Compat("javascript.builtins.Array.toString")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Object.prototype.toSource()")}}
    • -
    • {{jsxref("Array.prototype.join()")}}
    • -
    +- {{jsxref("Object.prototype.toSource()")}} +- {{jsxref("Array.prototype.join()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/unshift/index.md b/files/fr/web/javascript/reference/global_objects/array/unshift/index.md index 77ba3d8eeb..9dc04db950 100644 --- a/files/fr/web/javascript/reference/global_objects/array/unshift/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/unshift/index.md @@ -10,36 +10,35 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift original_slug: Web/JavaScript/Reference/Objets_globaux/Array/unshift --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode unshift() ajoute un ou plusieurs éléments au début d'un tableau et renvoie la nouvelle longueur du tableau.

    +La méthode **`unshift()`** ajoute un ou plusieurs éléments au début d'un tableau et renvoie la nouvelle longueur du tableau. -
    {{EmbedInteractiveExample("pages/js/array-unshift.html")}}
    +{{EmbedInteractiveExample("pages/js/array-unshift.html")}} -

    Syntaxe

    +## Syntaxe -
    arr.unshift([élém1[, ...[, élémN]]])
    + arr.unshift([élém1[, ...[, élémN]]]) -

    Paramètres

    +### Paramètres -
    -
    élémN
    -
    Les éléments que l'on souhaite ajouter en début de tableau.
    -
    +- `élémN` + - : Les éléments que l'on souhaite ajouter en début de tableau. -

    Valeur de retour

    +### Valeur de retour -

    La nouvelle valeur de la propriété {{jsxref("Array.length", "length")}} du tableau sur lequel a été appelée la méthode.

    +La nouvelle valeur de la propriété {{jsxref("Array.length", "length")}} du tableau sur lequel a été appelée la méthode. -

    Description

    +## Description -

    La méthode unshift() insère les valeurs renseignées au début d'un objet ressemblant à un tableau.

    +La méthode `unshift()` insère les valeurs renseignées au début d'un objet ressemblant à un tableau. -

    unshift() est volontairement générique ; cette méthode peut être {{jsxref("Function.call", "appelée","",1)}} ou {{jsxref("Function.apply", "appliquée","",1)}} sur des objets ressemblant à des tableaux. Les objets qui ne contiennent pas une propriété length reflètant la fin d'une série de propriétés indexées numériquement pourront ne pas avoir un comportement cohérent avec cette méthode.

    +`unshift()` est volontairement générique ; cette méthode peut être {{jsxref("Function.call", "appelée","",1)}} ou {{jsxref("Function.apply", "appliquée","",1)}} sur des objets ressemblant à des tableaux. Les objets qui ne contiennent pas une propriété `length` reflètant la fin d'une série de propriétés indexées numériquement pourront ne pas avoir un comportement cohérent avec cette méthode. -

    Attention, lorsqu'on utilise unshift() avec plusieurs arguments, ceux-ci sont insérés au début du tableau dans l'ordre selon lequel ils sont passés en arguments. Aussi, on n'obtiendra pas le même résultat en appelant unshift() n fois avec 1 arguments ou en appelant unshift() avec n arguments.

    +Attention, lorsqu'on utilise `unshift()` avec plusieurs arguments, ceux-ci sont insérés au début du tableau dans l'ordre selon lequel ils sont passés en arguments. Aussi, on n'obtiendra pas le même résultat en appelant `unshift()` _n_ fois avec 1 arguments ou en appelant `unshift()` avec _n_ arguments. -
    let arr = [4, 5, 6];
    +```js
    +let arr = [4, 5, 6];
     
     arr.unshift(1, 2, 3);
     console.table(arr);
    @@ -52,11 +51,13 @@ arr2.unshift(2);
     arr2.unshift(3);
     
     console.table(arr2);
    -// [3, 2, 1, 4, 5, 6]
    +// [3, 2, 1, 4, 5, 6] +``` -

    Exemples

    +## Exemples -
    var arr = [1, 2];
    +```js
    +var arr = [1, 2];
     
     arr.unshift(0); // renvoie 3, la nouvelle longueur du tableau
     // arr est [0, 1, 2]
    @@ -69,49 +70,24 @@ arr.unshift( [-3] ); // 6
     
     arr.unshift([-7, -6], [-5]); // 8
     // arr est [[-7, -6], [-5], [-3], -2, -1, 0, 1, 2]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
    {{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.unshift")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.push()")}}
    • -
    • {{jsxref("Array.prototype.pop()")}}
    • -
    • {{jsxref("Array.prototype.shift()")}}
    • -
    • {{jsxref("Array.prototype.concat()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. | +| {{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.unshift")}} + +## Voir aussi + +- {{jsxref("Array.prototype.push()")}} +- {{jsxref("Array.prototype.pop()")}} +- {{jsxref("Array.prototype.shift()")}} +- {{jsxref("Array.prototype.concat()")}} diff --git a/files/fr/web/javascript/reference/global_objects/array/values/index.md b/files/fr/web/javascript/reference/global_objects/array/values/index.md index 881e840bd4..d7f591029d 100644 --- a/files/fr/web/javascript/reference/global_objects/array/values/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/values/index.md @@ -12,13 +12,14 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/values original_slug: Web/JavaScript/Reference/Objets_globaux/Array/values --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode values() renvoie un nouvel objet Array Iterator qui contient les valeurs pour chaque indice du tableau. Cette méthode est l'implémentation par défaut de Array.prototype[Symbol.Iterator].

    +La méthode **`values()`** renvoie un nouvel objet **`Array Iterator`** qui contient les valeurs pour chaque indice du tableau. Cette méthode est l'implémentation par défaut de `Array.prototype[Symbol.Iterator]`. -

    {{EmbedInteractiveExample("pages/js/array-values.html")}}

    +{{EmbedInteractiveExample("pages/js/array-values.html")}} -
    var a = ['t', 'i', 't', 'o', 'u'];
    +```js
    +var a = ['t', 'i', 't', 'o', 'u'];
     var iterateur = a.values();
     
     console.log(iterateur.next().value); // t
    @@ -26,72 +27,57 @@ console.log(iterateur.next().value); // i
     console.log(iterateur.next().value); // t
     console.log(iterateur.next().value); // o
     console.log(iterateur.next().value); // u
    -
    +``` -

    Syntaxe

    +## Syntaxe -
    array.values()
    + array.values() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet itérateur sur {{jsxref("Array")}}.

    +Un nouvel objet itérateur sur {{jsxref("Array")}}. -

    Exemples

    +## Exemples -

    Itérer avec une boucle for...of

    +### Itérer avec une boucle `for...of` -
    var arr = ['w', 'y', 'k', 'o', 'p'];
    +```js
    +var arr = ['w', 'y', 'k', 'o', 'p'];
     var eArr = arr.values();
     // votre navigateur doit supporter les boucles for..of
     // et les variables définies avec let
     for (let lettre of eArr) {
       console.log(lettre);
     }
    -
    +``` -

    Itérer avec next()

    +### Itérer avec `next()` -
    var arr = ['w', 'y', 'k', 'o', 'p'];
    +```js
    +var arr = ['w', 'y', 'k', 'o', 'p'];
     var eArr = arr.values();
     console.log(eArr.next().value); // w
     console.log(eArr.next().value); // y
     console.log(eArr.next().value); // k
     console.log(eArr.next().value); // o
     console.log(eArr.next().value); // p
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Array.values")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.keys()")}}
    • -
    • {{jsxref("Array.prototype.entries()")}}
    • -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Array.prototype.every()")}}
    • -
    • {{jsxref("Array.prototype.some()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.values")}} + +## Voir aussi + +- {{jsxref("Array.prototype.keys()")}} +- {{jsxref("Array.prototype.entries()")}} +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} diff --git a/files/fr/web/javascript/reference/global_objects/arraybuffer/@@species/index.md b/files/fr/web/javascript/reference/global_objects/arraybuffer/@@species/index.md index d86f413799..7a9b7c3e7e 100644 --- a/files/fr/web/javascript/reference/global_objects/arraybuffer/@@species/index.md +++ b/files/fr/web/javascript/reference/global_objects/arraybuffer/@@species/index.md @@ -10,62 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/@@species --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété d'accesseur ArrayBuffer[@@species] renvoie le constructeur ArrayBuffer.

    +La propriété d'accesseur **`ArrayBuffer[@@species]`** renvoie le constructeur `ArrayBuffer`. -

    Syntaxe

    +## Syntaxe -
    ArrayBuffer[Symbol.species]
    -
    + ArrayBuffer[Symbol.species] -

    Description

    +## Description -

    L'accesseur species renvoie le constructeur par défaut pour les objets ArrayBuffer. Les constructeurs des sous-classes peuvent surcharger ce symbole pour modifier l'affectation du constructeur.

    +L'accesseur `species` renvoie le constructeur par défaut pour les objets `ArrayBuffer`. Les constructeurs des sous-classes peuvent surcharger ce symbole pour modifier l'affectation du constructeur. -

    Exemples

    +## Exemples -

    La propriété species renvoie le constructeur par défaut, soit ArrayBuffer dans le cas des objets ArrayBuffer :

    +La propriété `species` renvoie le constructeur par défaut, soit `ArrayBuffer` dans le cas des objets `ArrayBuffer` : -
    ArrayBuffer[Symbol.species]; // function ArrayBuffer()
    +```js +ArrayBuffer[Symbol.species]; // function ArrayBuffer() +``` -

    Pour un objet dérivé (par exemple une classe sur mesure MonArrayBuffer), le symbole species renverra le constructeur MonArrayBuffer. Il est possible de surcharger ce comportement pour renvoyer le constructeur ArrayBuffer :

    +Pour un objet dérivé (par exemple une classe sur mesure `MonArrayBuffer`), le symbole `species` renverra le constructeur `MonArrayBuffer`. Il est possible de surcharger ce comportement pour renvoyer le constructeur `ArrayBuffer` : -
    class MonArrayBuffer extends ArrayBuffer {
    +```js
    +class MonArrayBuffer extends ArrayBuffer {
       // On surcharge species pour renvoyer
       // le constructeur parent ArrayBuffer
       static get [Symbol.species]() { return ArrayBuffer; }
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.ArrayBuffer.@@species")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("Symbol.species")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.ArrayBuffer.@@species")}} + +## Voir aussi + +- {{jsxref("ArrayBuffer")}} +- {{jsxref("Symbol.species")}} diff --git a/files/fr/web/javascript/reference/global_objects/arraybuffer/bytelength/index.md b/files/fr/web/javascript/reference/global_objects/arraybuffer/bytelength/index.md index 8839c62408..5bbc57d6a2 100644 --- a/files/fr/web/javascript/reference/global_objects/arraybuffer/bytelength/index.md +++ b/files/fr/web/javascript/reference/global_objects/arraybuffer/bytelength/index.md @@ -10,59 +10,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/byteLength --- -
    {{JSRef}}
    +{{JSRef}} -

    L'accesseur byteLength est une propriété représentant la longueur d'un {{jsxref("ArrayBuffer")}} en octets.

    +L'accesseur **`byteLength`** est une propriété représentant la longueur d'un {{jsxref("ArrayBuffer")}} en octets. -
    {{EmbedInteractiveExample("pages/js/arraybuffer-bytelength.html")}}
    +{{EmbedInteractiveExample("pages/js/arraybuffer-bytelength.html")}} -

    Syntaxe

    +## Syntaxe -
    arraybuffer.byteLength
    + arraybuffer.byteLength -

    Description

    +## Description -

    La propriété byteLength est un accesseur dont le mutateur associé vaut undefined. Cela signifie que cette propriété est en lecture seule. La valeur est déterminée lors de la construction du tableau et ne peut pas être changée par la suite. Cette propriété renvoie 0 si ce ArrayBuffer a été détaché.

    +La propriété `byteLength` est un accesseur dont le mutateur associé vaut `undefined`. Cela signifie que cette propriété est en lecture seule. La valeur est déterminée lors de la construction du tableau et ne peut pas être changée par la suite. Cette propriété renvoie 0 si ce `ArrayBuffer` a été détaché. -

    Exemples

    +## Exemples -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     buffer.byteLength; // 8
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.ArrayBuffer.byteLength")}}

    +{{Compat("javascript.builtins.ArrayBuffer.byteLength")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("ArrayBuffer")}}
    • -
    +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/arraybuffer/index.md b/files/fr/web/javascript/reference/global_objects/arraybuffer/index.md index 7c46a860de..df2c70beba 100644 --- a/files/fr/web/javascript/reference/global_objects/arraybuffer/index.md +++ b/files/fr/web/javascript/reference/global_objects/arraybuffer/index.md @@ -10,133 +10,105 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet ArrayBuffer est utilisé afin de représenter un tampon (buffer) de données binaires de longueur fixe de façon générique. C'est un tableau d'octets. La manipulation du contenu d'un ArrayBuffer se fait de façon indirecte en créant un tableau typé ou un objet {{jsxref("DataView")}} qui permet de représenter le tampon dans un format donné qui permet de lire/écrire des contenus dans le tampon de mémoire.

    +L'objet **`ArrayBuffer`** est utilisé afin de représenter un tampon (_buffer_) de données binaires de longueur fixe de façon générique. C'est un tableau d'octets. La manipulation du contenu d'un `ArrayBuffer` se fait de façon indirecte en créant un [tableau typé](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray) ou un objet {{jsxref("DataView")}} qui permet de représenter le tampon dans un format donné qui permet de lire/écrire des contenus dans le tampon de mémoire. -
    {{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html")}}
    +{{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html")}} -

    Syntaxe

    +## Syntaxe -
    new ArrayBuffer(longueur)
    -
    + new ArrayBuffer(longueur) -

    Paramètres

    +### Paramètres -
    -
    longueur
    -
    La taille, exprimée en octets, du tableau représentant le tampon.
    -
    +- `longueur` + - : La taille, exprimée en octets, du tableau représentant le tampon. -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet ArrayBuffer de la taille donnée. Ses éléments sont initialisés à 0.

    +Un nouvel objet `ArrayBuffer` de la taille donnée. Ses éléments sont initialisés à 0. -

    Exceptions

    +### Exceptions -

    Une exception {{jsxref("RangeError")}} est levée lorsque l'argument longueur est supérieur à {{jsxref("Number.MAX_SAFE_INTEGER")}} (soit 2^53) ou s'il est négatif.

    +Une exception {{jsxref("RangeError")}} est levée lorsque l'argument `longueur` est supérieur à {{jsxref("Number.MAX_SAFE_INTEGER")}} (soit 2^53) ou s'il est négatif. -

    Description

    +## Description -

    Le constructeur ArrayBuffer crée une nouvelle instance d'ArrayBuffer dont la longueur est celle donnée lors de la construction.

    +Le constructeur `ArrayBuffer` crée une nouvelle instance d'`ArrayBuffer` dont la longueur est celle donnée lors de la construction. -

    Obtenir un tampon mémoire depuis des données existantes

    +### Obtenir un tampon mémoire depuis des données existantes - +- [À partir d'une chaîne de caractères en Base 64](/fr/docs/Décoder_encoder_en_base64#Annexe_.3A_D.C3.A9coder_une_cha.C3.AEne_en_base64_en_un_objet_Uint8Array_ou_ArrayBuffer) +- [À partir d'un fichier local](/fr/docs/Web/API/FileReader) -

    Propriétés

    +## Propriétés -
    -
    ArrayBuffer.length
    -
    La longueur du constructeur ArrayBuffer. Elle vaut 1.
    -
    {{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
    -
    La fonction de construction utilisée pour créer les objets dérivés.
    -
    {{jsxref("ArrayBuffer.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés à tous les objets ArrayBuffer.
    -
    +- `ArrayBuffer.length` + - : La longueur du constructeur `ArrayBuffer`. Elle vaut 1. +- {{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}} + - : La fonction de construction utilisée pour créer les objets dérivés. +- {{jsxref("ArrayBuffer.prototype")}} + - : Cette propriété permet d'ajouter des propriétés à tous les objets `ArrayBuffer`. -

    Méthodes

    +## Méthodes -
    -
    {{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
    -
    Cette méthode renvoie true si arg est une des vues sur l'ArrayBuffer telle qu'un tableau typé ou un objet {{jsxref("DataView")}}, sinon elle renvoie false.
    -
    {{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(ancienTampon [, nouvelleLongueur])")}} {{experimental_inline}}
    -
    -
    Cette méthode renvoie un nouvel objet ArrayBuffer dont le contenu est transféré depuis les données de ancienTampon et qui est ensuite tronqué ou rallongé avec des zéros pour que la taille du nouveau tampon soit nouvelleLongueur.
    -
    -
    +- {{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}} + - : Cette méthode renvoie `true` si `arg` est une des vues sur l'`ArrayBuffer` telle qu'un [tableau typé](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray) ou un objet {{jsxref("DataView")}}, sinon elle renvoie `false`. +- {{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(ancienTampon [, nouvelleLongueur])")}} {{experimental_inline}} + - : Cette méthode renvoie un nouvel objet `ArrayBuffer` dont le contenu est transféré depuis les données de `ancienTampon` et qui est ensuite tronqué ou rallongé avec des zéros pour que la taille du nouveau tampon soit `nouvelleLongueur`. -

    Les instances d'ArrayBuffer

    +## Les instances d'`ArrayBuffer` -

    Toutes les instances d'ArrayBuffer héritent de {{jsxref("ArrayBuffer.prototype")}}.

    +Toutes les instances d'`ArrayBuffer` héritent de {{jsxref("ArrayBuffer.prototype")}}. -

    Propriétés

    +### Propriétés -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','Propri.C3.A9t.C3.A9s')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','Propri.C3.A9t.C3.A9s')}} -

    Méthodes

    +### Méthodes -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','M.C3.A9thodes')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','M.C3.A9thodes')}} -
    -
    {{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
    -
    Cette méthode fournit la même fonctionnalité que {{jsxref("ArrayBuffer.prototype.slice()")}}.
    -
    +- {{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}} + - : Cette méthode fournit la même fonctionnalité que {{jsxref("ArrayBuffer.prototype.slice()")}}. -

    Exemple

    +## Exemple -

    Dans cet exemple, on crée un tampon sur 8 octets avec une vue {{jsxref("Int32Array")}} qui fait référence à ce tampon :

    +Dans cet exemple, on crée un tampon sur 8 octets avec une vue {{jsxref("Int32Array")}} qui fait référence à ce tampon : -
    var tampon = new ArrayBuffer(8);
    -var vue    = new Int32Array(tampon);
    +```js +var tampon = new ArrayBuffer(8); +var vue = new Int32Array(tampon); +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée par ECMAScript 6.
    {{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ES6')}}Définition initiale au sein d'un standard ECMA. new est obligaoire pour utiliser le constructeur.
    {{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ESDraft')}}
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 6. | +| {{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} | {{Spec2('ES6')}} | Définition initiale au sein d'un standard ECMA. `new` est obligaoire pour utiliser le constructeur. | +| {{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.ArrayBuffer")}}

    +{{Compat("javascript.builtins.ArrayBuffer")}} -

    Notes de compatibilité

    +## Notes de compatibilité -

    À partir d'ECMAScript 2015 (ES6), ArrayBuffer doit être utilisée avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur ArrayBuffer comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    +À partir d'ECMAScript 2015 (ES6),` ArrayBuffer` doit être utilisée avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `ArrayBuffer` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}. -
    var dv = ArrayBuffer(10);
    +```js example-bad
    +var dv = ArrayBuffer(10);
     // TypeError: calling a builtin ArrayBuffer constructor
    -// without new is forbidden
    +// without new is forbidden +``` -
    var dv = new ArrayBuffer(10);
    +```js example-good +var dv = new ArrayBuffer(10); +``` -

    Voir aussi

    +## Voir aussi - +- [Les tableaux typés JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- {{jsxref("SharedArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/arraybuffer/isview/index.md b/files/fr/web/javascript/reference/global_objects/arraybuffer/isview/index.md index 876fdd595b..d5224cac4c 100644 --- a/files/fr/web/javascript/reference/global_objects/arraybuffer/isview/index.md +++ b/files/fr/web/javascript/reference/global_objects/arraybuffer/isview/index.md @@ -10,30 +10,29 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/isView --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode ArrayBuffer.isView() renvoie true si l'argument passé est une des vues ArrayBuffer, comme par exemple un tableau typé ou une {{jsxref("DataView")}} ; false sinon.

    +La méthode **`ArrayBuffer.isView()`** renvoie `true` si l'argument passé est une des vues `ArrayBuffer`, comme par exemple [un tableau typé](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray) ou une {{jsxref("DataView")}} ; `false` sinon. -
    {{EmbedInteractiveExample("pages/js/arraybuffer-isview.html")}}
    +{{EmbedInteractiveExample("pages/js/arraybuffer-isview.html")}} -

    Syntaxe

    +## Syntaxe -
    ArrayBuffer.isView(arg)
    + ArrayBuffer.isView(arg) -

    Paramètres

    +### Paramètres -
    -
    arg
    -
    L'argument dont on souhaite savoir s'il est une vue.
    -
    +- `arg` + - : L'argument dont on souhaite savoir s'il est une vue. -

    Valeur de retour

    +### Valeur de retour -

    true si la valeur passée en argument est une des vues du tableau ArrayBuffer, false sinon.

    +`true` si la valeur passée en argument est une des vues du tableau `ArrayBuffer`, `false` sinon. -

    Exemples

    +## Exemples -
    ArrayBuffer.isView();                    // false
    +```js
    +ArrayBuffer.isView();                    // false
     ArrayBuffer.isView([]);                  // false
     ArrayBuffer.isView({});                  // false
     ArrayBuffer.isView(null);                // false
    @@ -47,41 +46,20 @@ ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true
     var buffer = new ArrayBuffer(2);
     var dv = new DataView(buffer);
     ArrayBuffer.isView(dv); // true
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée par ECMAScript 2015
    {{SpecName('ES2015', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}{{Spec2('ES2015')}}Définition initiale dans un standard ECMA.
    {{SpecName('ESDraft', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.ArrayBuffer.isView")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------ | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 2015 | +| {{SpecName('ES2015', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}} | {{Spec2('ES2015')}} | Définition initiale dans un standard ECMA. | +| {{SpecName('ESDraft', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.ArrayBuffer.isView")}} + +## Voir aussi + +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) diff --git a/files/fr/web/javascript/reference/global_objects/arraybuffer/slice/index.md b/files/fr/web/javascript/reference/global_objects/arraybuffer/slice/index.md index e52b95fd86..e776d858bb 100644 --- a/files/fr/web/javascript/reference/global_objects/arraybuffer/slice/index.md +++ b/files/fr/web/javascript/reference/global_objects/arraybuffer/slice/index.md @@ -10,73 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/slice --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode slice() renvoie un nouvel ArrayBuffer dont le contenu est une copie des octets du ArrayBuffer courant, contenus entre début (compris) et fin (non-compris).

    +La méthode **`slice()`** renvoie un nouvel `ArrayBuffer` dont le contenu est une copie des octets du `ArrayBuffer` courant, contenus entre `début` (compris) et `fin` (non-compris). -
    {{EmbedInteractiveExample("pages/js/arraybuffer-slice.html")}}
    +{{EmbedInteractiveExample("pages/js/arraybuffer-slice.html")}} -

    Syntaxe

    +## Syntaxe -
    arraybuffer.slice(début[, fin])
    + arraybuffer.slice(début[, fin]) -

    Paramètres

    +### Paramètres -
    -
    début
    -
    Indice (numérotation commençant à zéro) de l'octet à partir duquel découper le tableau.
    -
    fin
    -
    Indice de l'octet auquel finir la découpe du tableau. Si ce paramètre n'est pas fourni, le nouvel ArrayBuffer contiendra tous les octets entre début et la fin du ArrayBuffer courant. L'intervalle défini par les valeurs début et fin est réduit à un intervalle valide pour le tableau courant si nécessaire. Si la longueur du nouveau tableau ArrayBuffer sera négative, l'intervalle est réduit à zéro.
    -
    +- `début` + - : Indice (numérotation commençant à zéro) de l'octet à partir duquel découper le tableau. +- `fin` + - : Indice de l'octet auquel finir la découpe du tableau. Si ce paramètre n'est pas fourni, le nouvel `ArrayBuffer` contiendra tous les octets entre `début `et la fin du `ArrayBuffer` courant. L'intervalle défini par les valeurs `début` et `fin` est réduit à un intervalle valide pour le tableau courant si nécessaire. Si la longueur du nouveau tableau `ArrayBuffer` sera négative, l'intervalle est réduit à zéro. -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet ArrayBuffer.

    +Un nouvel objet `ArrayBuffer`. -

    Description

    +## Description -

    La méthode slice copie les octets contenus jusqu'au (au sens exclusif) paramètre fin. Si le paramètre début ou  fin est négatif, il fera référence à l'indice à partir de la fin du tableau et non pas à l'indice à partir du début du tableau.

    +La méthode `slice` copie les octets contenus jusqu'au (au sens exclusif) paramètre `fin`. Si le paramètre `début `ou  `fin` est négatif, il fera référence à l'indice à partir de la fin du tableau et non pas à l'indice à partir du début du tableau. -

    Exemples

    +## Exemples -

    Copier un ArrayBuffer

    +### Copier un `ArrayBuffer` -
    var buf1 = new ArrayBuffer(8);
    -var buf2 = buf1.slice(0)
    +```js +var buf1 = new ArrayBuffer(8); +var buf2 = buf1.slice(0) +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans EMCAScript 6.
    {{SpecName('ES6', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}{{Spec2('ES6')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans EMCAScript 6. | +| {{SpecName('ES6', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}} | {{Spec2('ES6')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.ArrayBuffer.slice")}}

    +{{Compat("javascript.builtins.ArrayBuffer.slice")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("ArrayBuffer")}}
    • -
    +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md b/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md index 778e94b924..53d4c091aa 100644 --- a/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md +++ b/files/fr/web/javascript/reference/global_objects/asyncfunction/index.md @@ -9,66 +9,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction original_slug: Web/JavaScript/Reference/Objets_globaux/AsyncFunction --- -
    {{JSRef}}
    +{{JSRef}} -

    Le constructeur AsyncFunction crée un nouvel objet pour {{jsxref("Instructions/async function", "une fonction asynchrone","",1)}}. En JavaScript, chaque fonction asynchrone est en fait un objet AsyncFunction.

    +Le constructeur **`Async`\*\***`Function`\*\* crée un nouvel objet pour {{jsxref("Instructions/async function", "une fonction asynchrone","",1)}}. En JavaScript, chaque fonction asynchrone est en fait un objet `AsyncFunction`. -

    Attention, AsyncFunction n'est pas un objet global. On peut l'obtenir grâce au code suivant :

    +Attention, `AsyncFunction` n'est pas un objet global. On peut l'obtenir grâce au code suivant : -
    Object.getPrototypeOf(async function(){}).constructor
    -
    +```js +Object.getPrototypeOf(async function(){}).constructor +``` -

    Syntaxe

    +## Syntaxe -
    new AsyncFunction ([arg1[, arg2[, ...argN]],] functionBody)
    + new AsyncFunction ([arg1[, arg2[, ...argN]],] functionBody) -

    Paramètres

    +### Paramètres -
    -
    arg1, arg2, ... argN
    -
    Les noms des paramètres passés à la fonction. Chacun doit être une chaîne de caractères qui puisse être un identifiant JavaScript valide ou une liste de telles chaînes séparées par une virgule (ex. "x", "laValeur", ou "a,b").
    -
    functionBody
    -
    Une chaîne de caractères qui contient les instructions JavaScript définissant la définition de la fonction.
    -
    +- `arg1, arg2, ... argN` + - : Les noms des paramètres passés à la fonction. Chacun doit être une chaîne de caractères qui puisse être un identifiant JavaScript valide ou une liste de telles chaînes séparées par une virgule (ex. "`x`", "`laValeur`", ou "`a,b`"). +- `functionBody` + - : Une chaîne de caractères qui contient les instructions JavaScript définissant la définition de la fonction. -

    Description

    +## Description -

    Les objets des {{jsxref("Instructions/async_function", "fonctions asynchrones","",1)}} créés avec le constructeur AsyncFunction sont analysés lorsque la fonction est créée. C'est moins efficace que de déclarer une fonction asynchrone avec une {{jsxref("Instructions/async_function", "expression de fonction asynchrone")}} et de l'appeler depuis le code car ces fonctions sont analysées avec le reste du code.

    +Les objets des {{jsxref("Instructions/async_function", "fonctions asynchrones","",1)}} créés avec le constructeur `AsyncFunction` sont analysés lorsque la fonction est créée. C'est moins efficace que de déclarer une fonction asynchrone avec une {{jsxref("Instructions/async_function", "expression de fonction asynchrone")}} et de l'appeler depuis le code car ces fonctions sont analysées avec le reste du code. -

    Tous les arguments passés à la fonction sont traités comme les noms des identifiants des paramètres de la fonction qui sera créée, dans l'ordre dans lequel ils sont passés.

    +Tous les arguments passés à la fonction sont traités comme les noms des identifiants des paramètres de la fonction qui sera créée, dans l'ordre dans lequel ils sont passés. -
    -

    Note : Les fonctions asynchrones créées avec le constructeur AsyncFunction ne créent pas de fermetutres dans leurs contextes de création. Elles sont toujours créées dans la portée globale. Lorsqu'on les exécute, ellee ne pourront accéder qu'à leurs variables locales et aux variables globales, pas à celles qui appartiennent à la portée dans laquelle AsyncFunction a été appelé. On aurait donc un comportement différent  si on appelait {{jsxref("Objets_globaux/eval", "eval")}} avec le code de l'expression de la fonction asynchrone.

    -
    +> **Note :** Les fonctions asynchrones créées avec le constructeur `AsyncFunction` ne créent pas de fermetutres dans leurs contextes de création. Elles sont toujours créées dans la portée globale. Lorsqu'on les exécute, ellee ne pourront accéder qu'à leurs variables locales et aux variables globales, pas à celles qui appartiennent à la portée dans laquelle `AsyncFunction` a été appelé. On aurait donc un comportement différent  si on appelait {{jsxref("Objets_globaux/eval", "eval")}} avec le code de l'expression de la fonction asynchrone. -

    Si on appelle AsyncFunction comme une fonction (c'est-à-dire sans new), cela aura le même effet que s'il est appelé comme un constructeur.

    +Si on appelle `AsyncFunction` comme une fonction (c'est-à-dire sans `new`), cela aura le même effet que s'il est appelé comme un constructeur. -

    Propriétés

    +## Propriétés -
    -
    AsyncFunction.length
    -
    La propriété de longueur du constructeur AsyncFunction dont la valeur est 1.
    -
    {{jsxref("AsyncFunction.prototype")}}
    -
    Le prototype permet d'ajouter des propriétés à tous les objets représentant les fonctions asynchrones.
    -
    +- **`AsyncFunction.length`** + - : La propriété de longueur du constructeur `AsyncFunction` dont la valeur est 1. +- {{jsxref("AsyncFunction.prototype")}} + - : Le prototype permet d'ajouter des propriétés à tous les objets représentant les fonctions asynchrones. -

    Prototype de l'objet AsyncFunction

    +## Prototype de l'objet `AsyncFunction` -

    Propriétés

    +### Propriétés -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/AsyncFunction/prototype', 'Propriétés')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/AsyncFunction/prototype', 'Propriétés')}} -

    Instances AsyncFunction

    +## Instances `AsyncFunction` -

    Les instances d'AsyncFunction héritent des méthodes et des propriétés de {{jsxref("AsyncFunction.prototype")}}. Comme avec les autres constructeurs, on peut changer l'objet prototype du constructeur afin de modifier l'ensemble des instances AsyncFunction.

    +Les instances d'`AsyncFunction` héritent des méthodes et des propriétés de {{jsxref("AsyncFunction.prototype")}}. Comme avec les autres constructeurs, on peut changer l'objet prototype du constructeur afin de modifier l'ensemble des instances `AsyncFunction`. -

    Exemples

    +## Exemples -

    Créer une fonction asynchrone avec un constructeur AsyncFunction

    +### Créer une fonction asynchrone avec un constructeur `AsyncFunction` -
    function resolveAfter2Seconds(x) {
    -  return new Promise(resolve => {
    -    setTimeout(() => {
    +```js
    +function resolveAfter2Seconds(x) {
    +  return new Promise(resolve => {
    +    setTimeout(() => {
           resolve(x);
         }, 2000);
       });
    @@ -78,41 +74,26 @@ var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
     var a = new AsyncFunction("a",
                               "b",
                               "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);");
    -a(10, 20).then(v => {
    +a(10, 20).then(v => {
       console.log(v); // affiche 30 après 4 secondes
     });
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Définition initiale dans ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.AsyncFunction")}}

    - -

    Voir aussi

    - -
      -
    • Instruction {{jsxref("Instructions/async_function", "async function")}}
    • -
    • Expression {{jsxref("Opérateurs/async_function","async function")}}
    • -
    • {{jsxref("Objets_globaux/Function", "Function")}}
    • -
    • Instruction {{jsxref("Instructions/function", "function")}}
    • -
    • Expression {{jsxref("Opérateurs/function", "function")}}
    • -
    • {{jsxref("Fonctions", "Fonctions et portées des fonctions", "", 1)}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}} | {{Spec2('ESDraft')}} | Définition initiale dans ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.AsyncFunction")}} + +## Voir aussi + +- Instruction {{jsxref("Instructions/async_function", "async function")}} +- Expression {{jsxref("Opérateurs/async_function","async function")}} +- {{jsxref("Objets_globaux/Function", "Function")}} +- Instruction {{jsxref("Instructions/function", "function")}} +- Expression {{jsxref("Opérateurs/function", "function")}} +- {{jsxref("Fonctions", "Fonctions et portées des fonctions", "", 1)}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/add/index.md b/files/fr/web/javascript/reference/global_objects/atomics/add/index.md index d09496b255..9967dde934 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/add/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/add/index.md @@ -10,72 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/add --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.add() ajoute une valeur donnée à un élément du tableau à une position donnée. Elle renvoie l'ancienne valeur qui était contenue à cet emplacement. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    +La méthode statique **`Atomics`\*\***`.add()`\*\* ajoute une valeur donnée à un élément du tableau à une position donnée. Elle renvoie l'ancienne valeur qui était contenue à cet emplacement. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite. -
    {{EmbedInteractiveExample("pages/js/atomics-add.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-add.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.add(typedArray, index, valeur)
    -
    + Atomics.add(typedArray, index, valeur) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray auquel on souhaite ajouter une valeur.
    -
    valeur
    -
    La valeur à ajouter.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position du tableau `typedArray` auquel on souhaite ajouter une `valeur`. +- `valeur` + - : La valeur à ajouter. -

    Valeur de retour

    +### Valeur de retour -

    L'ancienne valeur qui était contenue à (typedArray[index]).

    +L'ancienne valeur qui était contenue à (`typedArray[index]`). -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     
     Atomics.add(ta, 0, 12); // renvoie 0, l'ancienne valeur
    -Atomics.load(ta, 0);    // 12
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.add")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.sub()")}}
    • -
    +Atomics.load(ta, 0); // 12 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.add")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.sub()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/and/index.md b/files/fr/web/javascript/reference/global_objects/atomics/and/index.md index 80e18842ac..d3fba9dc8f 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/and/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/and/index.md @@ -10,118 +10,76 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/and original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/and --- -
    {{JSRef}}
    - -

    La méthode statique Atomics.and() calcule un ET binaire avec une valeur donnée, à un emplacement donné du tableau. Elle renvoie l'ancienne valeur qui était contenue à cet emplacement. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    - -
    {{EmbedInteractiveExample("pages/js/atomics-and.html")}}
    - -

    Syntaxe

    - -
    Atomics.and(typedArray, index, valeur)
    -
    - -

    Paramètres

    - -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position dans typedArray où calculer le ET binaire.
    -
    valeur
    -
    Le nombre avec lequel on souhaite calculer le ET binaire.
    -
    - -

    Valeur de retour

    - -

    L'ancienne valeur qui était contenue à (typedArray[index]).

    - -

    Exceptions levée

    - -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    - -

    Description

    - -

    Un ET binaire fournit la valeur 1 uniquement si a et b valent 1. La table de vérité pour l'opération ET est :

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    aba & b
    000
    010
    100
    111
    - -

    Ainsi, si on calcule le ET binaire de 5 et 1 avec l'instruction 5 & 1, cela fournira la valeur 0001, qui correspond à 1 en notation décimale.

    - -
    5  0101
    -1  0001
    -   ----
    -1  0001
    - -

    Exemples

    - -
    var sab = new SharedArrayBuffer(1024);
    +{{JSRef}}
    +
    +La méthode statique **`Atomics`\*\***`.and()`\*\* calcule un ET binaire avec une valeur donnée, à un emplacement donné du tableau. Elle renvoie l'ancienne valeur qui était contenue à cet emplacement. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.
    +
    +{{EmbedInteractiveExample("pages/js/atomics-and.html")}}
    +
    +## Syntaxe
    +
    +    Atomics.and(typedArray, index, valeur)
    +
    +### Paramètres
    +
    +- `typedArray`
    +  - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    +- `index`
    +  - : La position dans `typedArray` où calculer le ET binaire.
    +- `valeur`
    +  - : Le nombre avec lequel on souhaite calculer le ET binaire.
    +
    +### Valeur de retour
    +
    +L'ancienne valeur qui était contenue à (`typedArray[index]`).
    +
    +### Exceptions levée
    +
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés.
    +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé.
    +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`.
    +
    +## Description
    +
    +Un ET binaire fournit la valeur 1 uniquement si `a` et `b` valent 1. La table de vérité pour l'opération ET est :
    +
    +| `a` | `b` | `a & b` |
    +| --- | --- | ------- |
    +| 0   | 0   | 0       |
    +| 0   | 1   | 0       |
    +| 1   | 0   | 0       |
    +| 1   | 1   | 1       |
    +
    +Ainsi, si on calcule le ET binaire de 5 et 1 avec l'instruction `5 & 1`, cela fournira la valeur `0001`, qui correspond à 1 en notation décimale.
    +
    +    5  0101
    +    1  0001
    +       ----
    +    1  0001
    +
    +## Exemples
    +
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     ta[0] = 5;
     
     Atomics.and(ta, 0, 1); // renvoie 0, l'ancienne valeur
     Atomics.load(ta, 0);   // 1
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.and', 'Atomics.and')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.and")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.or()")}}
    • -
    • {{jsxref("Atomics.xor()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.and', 'Atomics.and')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.and")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.or()")}} +- {{jsxref("Atomics.xor()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/compareexchange/index.md b/files/fr/web/javascript/reference/global_objects/atomics/compareexchange/index.md index add0ccdd87..e606b19bd4 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/compareexchange/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/compareexchange/index.md @@ -10,75 +10,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/compareExchange --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.compareExchange() échange une valeur d'un tableau à un emplacement donné si la valeur qui était dans le tableau correspond à une valeur donnée. Cette méthode renvoie l'ancienne valeur à cet emplacement, qu'il y ait eu remplacement ou non. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    +La méthode statique **`Atomics`\*\***`.compareExchange()`\*\* échange une valeur d'un tableau à un emplacement donné si la valeur qui était dans le tableau correspond à une valeur donnée. Cette méthode renvoie l'ancienne valeur à cet emplacement, qu'il y ait eu remplacement ou non. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite. -
    {{EmbedInteractiveExample("pages/js/atomics-compareexchange.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-compareexchange.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.compareExchange(typedArray, index, valeurAttendue, valeurRemplacement)
    -
    + Atomics.compareExchange(typedArray, index, valeurAttendue, valeurRemplacement) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray à laquelle on veut échanger les valeurs.
    -
    valeurAttendue
    -
    La valeur avec laquelle on teste l'égalité.
    -
    valeurRemplacement
    -
    Le nombre qu'on souhaite placer dans le tableau si l'ancienne valeur est égale avec valeurAttendue.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position du tableau `typedArray` à laquelle on veut échanger les valeurs. +- `valeurAttendue` + - : La valeur avec laquelle on teste l'égalité. +- `valeurRemplacement` + - : Le nombre qu'on souhaite placer dans le tableau si l'ancienne valeur est égale avec `valeurAttendue`. -

    Valeur de retour

    +### Valeur de retour -

    L'ancienne valeur présente à typedArray[index].

    +L'ancienne valeur présente à `typedArray[index]`. -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     ta[0] = 7;
     
     Atomics.compareExchange(ta, 0, 7, 12); // renvoie 7, l'ancienne valeur
    -Atomics.load(ta, 0);                   // 12
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.compareexchange', 'Atomics.compareExchange')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.compareExchange")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.exchange()")}}
    • -
    +Atomics.load(ta, 0); // 12 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.compareexchange', 'Atomics.compareExchange')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.compareExchange")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.exchange()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/exchange/index.md b/files/fr/web/javascript/reference/global_objects/atomics/exchange/index.md index 7a01cb04b1..05b78da455 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/exchange/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/exchange/index.md @@ -10,74 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/exchange original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/exchange --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.exchange() permet d'enregistrer une valeur à une position donnée d'un tableau et de renvoyer l'ancienne valeur qui était contenue dans le tableau. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    +La méthode statique **`Atomics`\*\***`.exchange()`\*\* permet d'enregistrer une valeur à une position donnée d'un tableau et de renvoyer l'ancienne valeur qui était contenue dans le tableau. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite. -
    {{EmbedInteractiveExample("pages/js/atomics-exchange.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-exchange.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.exchange(typedArray, index, valeur)
    -
    + Atomics.exchange(typedArray, index, valeur) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position dans le tableau typedArray à laquelle on veut placer valeur.
    -
    valeur
    -
    Le nombre qu'on souhaite échanger.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position dans le tableau `typedArray` à laquelle on veut placer `valeur`. +- `valeur` + - : Le nombre qu'on souhaite échanger. -

    Valeur de retour

    +### Valeur de retour -

    L'ancienne valeur qui était contenue à (typedArray[index]).

    +L'ancienne valeur qui était contenue à (`typedArray[index]`). -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     
     Atomics.exchange(ta, 0, 12);  // renvoie 0, l'ancienne valeur
    -Atomics.load(ta, 0);          // 12
    +Atomics.load(ta, 0); // 12 +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ESDraft', '#sec-atomics.exchange', 'Atomics.exchange')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.exchange', 'Atomics.exchange')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs +{{Compat("javascript.builtins.Atomics.exchange")}} +## Voir aussi -

    {{Compat("javascript.builtins.Atomics.exchange")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.compareExchange()")}}
    • -
    +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.compareExchange()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/index.md b/files/fr/web/javascript/reference/global_objects/atomics/index.md index b358b66964..c9d61aaa85 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/index.md @@ -8,107 +8,78 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics --- -
    {{JSRef}}
    - -

    L'objet Atomics fournit des opérations atomiques sous la forme de méthodes statiques. Celles-ci sont utilisées avec les objets {{jsxref("SharedArrayBuffer")}}.

    - -

    Les opérations atomiques sont installées sur un module Atomics. À la différence des autres objets globaux, Atomics n'est pas un constructeur. Pour cette raison, il ne peut être utilisé avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new")}} et il ne peut pas être appelé comme une fonction. Les propriétés et les méthodes d'Atomics sont statiques (Atomics fonctionne ainsi comme l'objet {{jsxref("Math")}}).

    - -

    Propriétés

    - -
    -
    Atomics[Symbol.toStringTag]
    -
    -

    La valeur de cette propriété vaut "Atomics".

    -
    -
    - -

    Méthodes

    - -

    Opérations atomiques

    - -

    Lorsque la mémoire est partagée, plusieurs threads peuvent lire et écrire sur les mêmes données en mémoire. Les opérations atomiques permettent de s'assurer que des valeurs prévisibles sont écrites et lues, que les opérations sont finies avant que la prochaine débute et que les opérations ne sont pas interrompues.

    - -
    -
    {{jsxref("Atomics.add()")}}
    -
    Cette méthode ajoute la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position.
    -
    {{jsxref("Atomics.and()")}}
    -
    Cette méthode calcule un ET binaire sur la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position.
    -
    {{jsxref("Atomics.compareExchange()")}}
    -
    Cette méthode stocke la valeur fournie à la position indiquée dans le tableau si elle est égale à une valeur donnée. Elle renvoie l'ancienne valeur.
    -
    {{jsxref("Atomics.exchange()")}}
    -
    Cette méthode stocke la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur.
    -
    {{jsxref("Atomics.load()")}}
    -
    Cette méthode renvoie la valeur à la position indiquée dans le tableau.
    -
    {{jsxref("Atomics.or()")}}
    -
    Cette méthode calcule un OU binaire entre la valeur fournie et la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position.
    -
    {{jsxref("Atomics.store()")}}
    -
    Cette méthode stocke une valeur à une position indiquée dans le tableau. Elle renvoie la valeur.
    -
    {{jsxref("Atomics.sub()")}}
    -
    Cette méthode soustrait la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était contenue à cette position.
    -
    {{jsxref("Atomics.xor()")}}
    -
    Cette méthode calcule un OU exclusif binaire sur une position donnée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position.
    -
    - -

    Attente et notification (wait et notify)

    - -

    Le méthodes wait() et notify() sont basées sur les futex Linux (selon le vocabulaire employé sur Linux où ça signifie « fast user-space mutex » ou encore « mutex rapide pour l'espace utilisateur ») fournissent des outils pour attendre jusqu'à ce qu'une condition donnée soit vérifiée. Généralement ces méthodes sont utilisées pour bloquer des opérations.

    - -
    -
    {{jsxref("Atomics.wait()")}}
    -
    Cette méthode vérifie qu'une position donnée du tableau contient bien une valeur donnée puis dort ou expire. Elle renvoie une des chaînes suivantes "ok", "not-equal", "timed-out". Si l'agent appelant ne permet pas d'attente, cela lèvera une exception Error (la plupart des navigateurs ne permettront pas que futexWait() soit utilisé sur le thread principal du navigateur).
    -
    {{jsxref("Atomics.notify()")}}
    -
    Cette méthode notifient les agents qui attendent dans la file d'attente à une position donnée. Elle renvoie le nombre d'agents notifiés.
    -
    {{jsxref("Atomics.isLockFree()")}}
    -
    Une primitive d'optimisation qui peut être utilisée afin de déterminer s'il faut utiliser des verrous (locks) ou des opérations atomiques. Elle renvoie true si la taille donnée est l'une des propriétés BYTES_PER_ELEMENT des types TypedArray et qu'on peut donc implémenter l'opération de façon atomique plutôt que d'utiliser un verrou.
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}}{{Spec2('ESDraft')}} 
    {{SpecName('ES8', '#sec-atomics-object', 'Atomics')}}{{Spec2('ES8')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics")}}

    - -

    Notes de compatibilité

    - -

    Avant Firefox 48 {{geckoRelease(48)}}, les noms les plus récents et la sémantique la plus récente n'étaient pas encore implémentés. Les changements qui ont eu lieu entre la version 46 et la version 48 de Firefox sont :

    - -
      -
    • Les méthodes Atomics.futexWakeOrRequeue() et Atomics.fence() sont désormais complètement retirées (cf. {{bug(1259544)}} et {{bug(1225028)}}).
    • -
    • Les méthodes {{jsxref("Atomics.wait()")}} et  {{jsxref("Atomics.wake()")}} qui étaient nommées Atomics.futexWait() ete Atomics.futexWake() (cf. {{bug(1260910)}}). Les anciens noms seront  définitivement supprimés à partir de la version 49 ({{bug(1262062)}}). Atomics.wake() a été renommé en Atomics.notify() à partir de la version 63.
    • -
    • Les propriétés Atomics.OK, Atomics.TIMEDOUT, Atomics.NOTEQUAL ont été retirées. La méthode {{jsxref("Atomics.wait()")}} renvoie désormais les chaînes de caractères "ok", "timed-out" ou "not-equal" (cf. {{bug(1260835)}}).
    • -
    • -

      Le paramètre count de la méthode {{jsxref("Atomics.wake()")}} a été modifié, sa valeur par défaut est désormais +Infinity et non 0 ({{bug(1253350)}}).

      -
    • -
    - -

    Voir aussi

    - - +{{JSRef}} + +L'objet **`Atomics`** fournit des opérations atomiques sous la forme de méthodes statiques. Celles-ci sont utilisées avec les objets {{jsxref("SharedArrayBuffer")}}. + +Les opérations atomiques sont installées sur un module `Atomics`. À la différence des autres objets globaux, `Atomics` n'est pas un constructeur. Pour cette raison, il ne peut être utilisé avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new")}} et il ne peut pas être appelé comme une fonction. Les propriétés et les méthodes d'`Atomics` sont statiques (`Atomics` fonctionne ainsi comme l'objet {{jsxref("Math")}}). + +## Propriétés + +- `Atomics[Symbol.toStringTag]` + - : La valeur de cette propriété vaut `"Atomics"`. + +## Méthodes + +### Opérations atomiques + +Lorsque la mémoire est partagée, plusieurs _threads_ peuvent lire et écrire sur les mêmes données en mémoire. Les opérations atomiques permettent de s'assurer que des valeurs prévisibles sont écrites et lues, que les opérations sont finies avant que la prochaine débute et que les opérations ne sont pas interrompues. + +- {{jsxref("Atomics.add()")}} + - : Cette méthode ajoute la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position. +- {{jsxref("Atomics.and()")}} + - : Cette méthode calcule un ET binaire sur la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position. +- {{jsxref("Atomics.compareExchange()")}} + - : Cette méthode stocke la valeur fournie à la position indiquée dans le tableau si elle est égale à une valeur donnée. Elle renvoie l'ancienne valeur. +- {{jsxref("Atomics.exchange()")}} + - : Cette méthode stocke la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur. +- {{jsxref("Atomics.load()")}} + - : Cette méthode renvoie la valeur à la position indiquée dans le tableau. +- {{jsxref("Atomics.or()")}} + - : Cette méthode calcule un OU binaire entre la valeur fournie et la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position. +- {{jsxref("Atomics.store()")}} + - : Cette méthode stocke une valeur à une position indiquée dans le tableau. Elle renvoie la valeur. +- {{jsxref("Atomics.sub()")}} + - : Cette méthode soustrait la valeur fournie à la position indiquée dans le tableau. Elle renvoie l'ancienne valeur qui était contenue à cette position. +- {{jsxref("Atomics.xor()")}} + - : Cette méthode calcule un OU exclusif binaire sur une position donnée dans le tableau. Elle renvoie l'ancienne valeur qui était à cette position. + +### Attente et notification (`wait` et `notify`) + +Le méthodes `wait`() et `notify()` sont basées sur les _futex_ Linux (selon le vocabulaire employé sur Linux où ça signifie « _fast user-space mutex_ » ou encore « mutex rapide pour l'espace utilisateur ») fournissent des outils pour attendre jusqu'à ce qu'une condition donnée soit vérifiée. Généralement ces méthodes sont utilisées pour bloquer des opérations. + +- {{jsxref("Atomics.wait()")}} + - : Cette méthode vérifie qu'une position donnée du tableau contient bien une valeur donnée puis dort ou expire. Elle renvoie une des chaînes suivantes `"ok"`, `"not-equal"`, `"timed-out"`. Si l'agent appelant ne permet pas d'attente, cela lèvera une exception `Error` (la plupart des navigateurs ne permettront pas que `futexWait()` soit utilisé sur le _thread_ principal du navigateur). +- {{jsxref("Atomics.notify()")}} + - : Cette méthode notifient les agents qui attendent dans la file d'attente à une position donnée. Elle renvoie le nombre d'agents notifiés. +- {{jsxref("Atomics.isLockFree()")}} + - : Une primitive d'optimisation qui peut être utilisée afin de déterminer s'il faut utiliser des verrous (_locks_) ou des opérations atomiques. Elle renvoie `true` si la taille donnée est l'une des propriétés `BYTES_PER_ELEMENT` des types `TypedArray` et qu'on peut donc implémenter l'opération de façon atomique plutôt que d'utiliser un verrou. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ES8', '#sec-atomics-object', 'Atomics')}} | {{Spec2('ES8')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics")}} + +### Notes de compatibilité + +Avant Firefox 48 {{geckoRelease(48)}}, les noms les plus récents et la sémantique la plus récente n'étaient pas encore implémentés. Les changements qui ont eu lieu entre la version 46 et la version 48 de Firefox sont : + +- Les méthodes `Atomics.futexWakeOrRequeue()` et `Atomics.fence()` sont désormais complètement retirées (cf. {{bug(1259544)}} et {{bug(1225028)}}). +- Les méthodes {{jsxref("Atomics.wait()")}} et  {{jsxref("Atomics.wake()")}} qui étaient nommées `Atomics.futexWait()` ete `Atomics.futexWake()` (cf. {{bug(1260910)}}). Les anciens noms seront  définitivement supprimés à partir de la version 49 ({{bug(1262062)}}). `Atomics.wake()` a été renommé en `Atomics.notify()` à partir de la version 63. +- Les propriétés `Atomics.OK`, `Atomics.TIMEDOUT`, `Atomics.NOTEQUAL` ont été retirées. La méthode {{jsxref("Atomics.wait()")}} renvoie désormais les chaînes de caractères `"ok"`, `"timed-out"` ou `"not-equal"` (cf. {{bug(1260835)}}). +- Le paramètre `count` de la méthode {{jsxref("Atomics.wake()")}} a été modifié, sa valeur par défaut est désormais `+Infinity` et non `0` ({{bug(1253350)}}). + +## Voir aussi + +- {{jsxref("ArrayBuffer")}} +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- [Web Workers](/fr/docs/Web/API/Web_Workers_API) +- [parlib-simple ](https://github.com/lars-t-hansen/parlib-simple)– un bibliothèque simple qui fournit des abstractions pour synchronisers et distribuer des tâches. +- [La mémoire partagée – un rapide tutoriel](https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md) +- [A Taste of JavaScript’s New Parallel Primitives – Mozilla Hacks (en anglais)](https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/) diff --git a/files/fr/web/javascript/reference/global_objects/atomics/islockfree/index.md b/files/fr/web/javascript/reference/global_objects/atomics/islockfree/index.md index be1df1cda2..a13dde87ca 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/islockfree/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/islockfree/index.md @@ -10,62 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/isLockFree --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.isLockFree() est utilisée afin de déterminer si on doit utiliser des verrous (locks) ou des opérations atomiques. Elle renvoie true si la taille donnée correspond à une des propriétés BYTES_PER_ELEMENT d'un des types TypedArray.

    +La méthode statique **`Atomics`\*\***`.isLockFree()`\** est utilisée afin de déterminer si on doit utiliser des verrous (*locks\*) ou des opérations atomiques. Elle renvoie `true` si la taille donnée correspond à une des propriétés [`BYTES_PER_ELEMENT`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray/BYTES_PER_ELEMENT) d'un des types `TypedArray`. -
    {{EmbedInteractiveExample("pages/js/atomics-islockfree.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-islockfree.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.isLockFree(taille)
    -
    + Atomics.isLockFree(taille) -

    Paramètres

    +### Paramètres -
    -
    taille
    -
    La taille en octets qu'on souhaite vérifier.
    -
    +- `taille` + - : La taille en octets qu'on souhaite vérifier. -

    Valeur de retour

    +### Valeur de retour -

    Un {{jsxref("Boolean","booléen","",1)}} indiquant si l'opération se déroule sans verrou.

    +Un {{jsxref("Boolean","booléen","",1)}} indiquant si l'opération se déroule sans verrou. -

    Exemples

    +## Exemples -
    Atomics.isLockFree(1); // true
    +```js
    +Atomics.isLockFree(1); // true
     Atomics.isLockFree(2); // true
     Atomics.isLockFree(3); // false
     Atomics.isLockFree(4); // true
     Atomics.isLockFree(5); // false
     Atomics.isLockFree(6); // false
     Atomics.isLockFree(7); // false
    -Atomics.isLockFree(8); // true
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.islockfree', 'Atomics.isLockFree')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.isLockFree")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    +Atomics.isLockFree(8); // true +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.islockfree', 'Atomics.isLockFree')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.isLockFree")}} + +## Voir aussi + +- {{jsxref("Atomics")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/load/index.md b/files/fr/web/javascript/reference/global_objects/atomics/load/index.md index 8e692f4ce8..9ada195398 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/load/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/load/index.md @@ -10,70 +10,54 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/load original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/load --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.load() renvoie une valeur située à une position donnée du tableau.

    +La méthode statique **`Atomics`\*\***`.load()`\*\* renvoie une valeur située à une position donnée du tableau. -
    {{EmbedInteractiveExample("pages/js/atomics-load.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-load.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.load(typedArray, index)
    -
    + Atomics.load(typedArray, index) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray qu'on souhaite charger.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position du tableau `typedArray` qu'on souhaite charger. -

    Valeur de retour

    +### Valeur de retour -

    La valeur à la position indiquée (typedArray[index]).

    +La valeur à la position indiquée (`typedArray[index]`). -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     
     Atomics.add(ta, 0, 12);
    -Atomics.load(ta, 0); // 12
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.load', 'Atomics.load')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.load")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.store()")}}
    • -
    +Atomics.load(ta, 0); // 12 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.load', 'Atomics.load')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.load")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.store()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/notify/index.md b/files/fr/web/javascript/reference/global_objects/atomics/notify/index.md index 81135aa541..ca6dd91a0a 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/notify/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/notify/index.md @@ -10,84 +10,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/notify original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/notify --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.notify() permet de réveiller des agents dormants qui sont dans la file d'attente.

    +La méthode statique **`Atomics`\*\***`.notify()`\*\* permet de réveiller des agents dormants qui sont dans la file d'attente. -
    -

    Note : Cette opération ne fonctionne que sur un tableau typé partagé de type {{jsxref("Int32Array")}}.

    -
    +> **Note :** Cette opération ne fonctionne que sur un tableau typé partagé de type {{jsxref("Int32Array")}}. -

    Syntaxe

    +## Syntaxe -
    Atomics.notify(typedArray, index, count)
    -
    + Atomics.notify(typedArray, index, count) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un table typé partagé de type {{jsxref("Int32Array")}}.
    -
    index
    -
    La position sur le tableau typedArray pour laquelle réveiller les agents.
    -
    count
    -
    Le nombre d'agents dormants à réveiller.
    -
    +- `typedArray` + - : Un table typé partagé de type {{jsxref("Int32Array")}}. +- `index` + - : La position sur le tableau `typedArray` pour laquelle réveiller les agents. +- `count` + - : Le nombre d'agents dormants à réveiller. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre d'agents réveillés.

    +Le nombre d'agents réveillés. -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas un tableau typé partagé de type{{jsxref("Int32Array")}}.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas un tableau typé partagé de type{{jsxref("Int32Array")}}. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -

    Soit un tableau typé partagé Int32Array:

    +Soit un tableau typé partagé `Int32Array`: -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var int32 = new Int32Array(sab);
    -
    +``` -

    Un thread de lecture est en sommeil et surveille l'emplacement 0 et s'attend à ce que la valeur soit 0. Tant que cette condition est vérifiée, l'exécution n'ira pas plus loin. Lorsque le thread d'écriture a enregistré une nouvelle valeur, le thread de lecture sera réveillé par le thread d'écriture et renverra la nouvelle valeur (123).

    +Un _thread_ de lecture est en sommeil et surveille l'emplacement 0 et s'attend à ce que la valeur soit 0. Tant que cette condition est vérifiée, l'exécution n'ira pas plus loin. Lorsque le _thread_ d'écriture a enregistré une nouvelle valeur, le _thread_ de lecture sera réveillé par le _thread_ d'écriture et renverra la nouvelle valeur (123). -
    Atomics.wait(int32, 0, 0);
    -console.log(int32[0]); // 123
    +```js +Atomics.wait(int32, 0, 0); +console.log(int32[0]); // 123 +``` -

    Un thread d'écriture stocke une nouvelle valeur et notifie le thread de lecture une fois que la valeur a bien été écrite :

    +Un _thread_ d'écriture stocke une nouvelle valeur et notifie le _thread_ de lecture une fois que la valeur a bien été écrite : -
    console.log(int32[0]); // 0;
    +```js
    +console.log(int32[0]); // 0;
     Atomics.store(int32, 0, 123);
    -Atomics.notify(int32, 0, 1);
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ESDraft', '#sec-atomics.notify', 'Atomics.notify')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.notify")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.wait()")}}
    • -
    +Atomics.notify(int32, 0, 1); +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.notify', 'Atomics.notify')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.notify")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.wait()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/or/index.md b/files/fr/web/javascript/reference/global_objects/atomics/or/index.md index 0147a2d36e..26c37fcd96 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/or/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/or/index.md @@ -10,118 +10,76 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/or original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/or --- -
    {{JSRef}}
    - -

    La méthode statique Atomics.or() calcule le résultat d'un OU binaire entre une valeur donnée et une valeur du tableau typé et y place le résultat obtenu. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    - -
    {{EmbedInteractiveExample("pages/js/atomics-or.html")}}
    - -

    Syntaxe

    - -
    Atomics.or(typedArray, index, value)
    -
    - -

    Paramètres

    - -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray sur laquelle calculer le OU binaire.
    -
    valeur
    -
    Le nombre avec lequel calculer le OU binaire.
    -
    - -

    Valeur de retour

    - -

    L'ancienne valeur contenue à l'emplacement du tableau (typedArray[index]).

    - -

    Exceptions levées

    - -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    - -

    Description

    - -

    L'opération binaire OU renvoie 1 si a ou b valent 1. La table de vérité de cette opération est :

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    aba | b
    000
    011
    101
    111
    - -

    Par exemple, un OU binaire appliqué entre 5 et 1 (5 | 1) renvoie 0101, ce qui correspond à 5 en notation décimale.

    - -
    5  0101
    -1  0001
    -   ----
    -5  0101
    -
    - -

    Exemples

    - -
    var sab = new SharedArrayBuffer(1024);
    +{{JSRef}}
    +
    +La méthode statique **`Atomics`\*\***`.or()`\*\* calcule le résultat d'un OU binaire entre une valeur donnée et une valeur du tableau typé et y place le résultat obtenu. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.
    +
    +{{EmbedInteractiveExample("pages/js/atomics-or.html")}}
    +
    +## Syntaxe
    +
    +    Atomics.or(typedArray, index, value)
    +
    +### Paramètres
    +
    +- `typedArray`
    +  - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    +- `index`
    +  - : La position du tableau `typedArray` sur laquelle calculer le OU binaire.
    +- `valeur`
    +  - : Le nombre avec lequel calculer le OU binaire.
    +
    +### Valeur de retour
    +
    +L'ancienne valeur contenue à l'emplacement du tableau (`typedArray[index]`).
    +
    +### Exceptions levées
    +
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés.
    +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé.
    +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`.
    +
    +## Description
    +
    +L'opération binaire OU renvoie 1 si `a` ou `b` valent 1. La table de vérité de cette opération est :
    +
    +| `a` | `b` | `a \| b` |
    +| --- | --- | -------- |
    +| 0   | 0   | 0        |
    +| 0   | 1   | 1        |
    +| 1   | 0   | 1        |
    +| 1   | 1   | 1        |
    +
    +Par exemple, un OU binaire appliqué entre 5 et 1 (`5 | 1`) renvoie `0101`, ce qui correspond à 5 en notation décimale.
    +
    +    5  0101
    +    1  0001
    +       ----
    +    5  0101
    +
    +## Exemples
    +
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     ta[0] = 2;
     
     Atomics.or(ta, 0, 1); // renvoie 2, l'ancienne valeur
    -Atomics.load(ta, 0);  // 3
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.or', 'Atomics.or')}}{{Spec2('ESDraft')}}Définition initiale avec 2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.or")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.and()")}}
    • -
    • {{jsxref("Atomics.xor()")}}
    • -
    +Atomics.load(ta, 0); // 3 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ------------------------------ | +| {{SpecName('ESDraft', '#sec-atomics.or', 'Atomics.or')}} | {{Spec2('ESDraft')}} | Définition initiale avec 2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.or")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.and()")}} +- {{jsxref("Atomics.xor()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/store/index.md b/files/fr/web/javascript/reference/global_objects/atomics/store/index.md index 4f31079d58..bb609861db 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/store/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/store/index.md @@ -10,43 +10,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/store original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/store --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.store() enregistre une valeur donnée à un emplacement donné du tableau partagé et renvoie cette valeur.

    +La méthode statique **`Atomics`\*\***`.store()`\*\* enregistre une valeur donnée à un emplacement donné du tableau partagé et renvoie cette valeur. -
    {{EmbedInteractiveExample("pages/js/atomics-store.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-store.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.store(typedArray, index, valeur)
    -
    + Atomics.store(typedArray, index, valeur) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray à laquelle on souhaite stocker la valeur.
    -
    valeur
    -
    Le nombre à enregistrer.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position du tableau `typedArray` à laquelle on souhaite stocker la valeur. +- `valeur` + - : Le nombre à enregistrer. -

    Valeur de retour

    +### Valeur de retour -

    La valeur qui a été enregistrée.

    +La valeur qui a été enregistrée. -

    Exceptions

    +### Exceptions -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var buffer = new ArrayBuffer(4);         // Buffer classique
    +```js
    +var buffer = new ArrayBuffer(4);         // Buffer classique
     var float32 = new Float32Array(buffer);  // Nombre flottant
     var uint32 = new Uint32Array(buffer);    // Représentation IEEE754
     
    @@ -55,33 +51,19 @@ console.log("0x" + uint32[0].toString(16));
     
     uint32[0] = 0x3f000000;   /// Représentation sur 32 bits de 0.5 (IEEE754)
     console.log(float32[0]);
    +```
     
    -
    +## Spécifications -

    Spécifications

    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.store', 'Atomics.store')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.store', 'Atomics.store')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    +## Compatibilité des navigateurs -

    Compatibilité des navigateurs

    +{{Compat("javascript.builtins.Atomics.store")}} -

    {{Compat("javascript.builtins.Atomics.store")}}

    +## Voir aussi -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.load()")}}
    • -
    +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.load()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/sub/index.md b/files/fr/web/javascript/reference/global_objects/atomics/sub/index.md index 313fc0577e..d219dfead1 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/sub/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/sub/index.md @@ -10,74 +10,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/sub --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.sub() permet de soustraire une valeur donnée à une position donnée du tableau partagé. Elle renvoie l'ancienne valeur qui était contenue dans le tableau avant l'opération. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    +La méthode statique **`Atomics`\*\***`.sub()`\*\* permet de soustraire une valeur donnée à une position donnée du tableau partagé. Elle renvoie l'ancienne valeur qui était contenue dans le tableau avant l'opération. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite. -
    {{EmbedInteractiveExample("pages/js/atomics-sub.html")}}
    +{{EmbedInteractiveExample("pages/js/atomics-sub.html")}} -

    Syntaxe

    +## Syntaxe -
    Atomics.sub(typedArray, index, valeur)
    -
    + Atomics.sub(typedArray, index, valeur) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typé typedArray à laquelle on veut soustraire valeur.
    -
    valeur
    -
    La quantité qu'on souhaite soustraire.
    -
    +- `typedArray` + - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}. +- `index` + - : La position du tableau typé `typedArray` à laquelle on veut soustraire `valeur`. +- `valeur` + - : La quantité qu'on souhaite soustraire. -

    Valeur de retour

    +### Valeur de retour -

    L'ancienne valeur qui était contenue à (typedArray[index]).

    +L'ancienne valeur qui était contenue à (`typedArray[index]`). -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés. +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     ta[0] = 48;
     
     Atomics.sub(ta, 0, 12); // renvoie 48, l'ancienne valeur
     Atomics.load(ta, 0);    // 36
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.sub")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.add()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.sub")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.add()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/wait/index.md b/files/fr/web/javascript/reference/global_objects/atomics/wait/index.md index 0a25246d86..ac14c69920 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/wait/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/wait/index.md @@ -10,86 +10,71 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/wait original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/wait --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode statique Atomics.wait() permet de vérifier qu'un emplacement d'un tableau {{jsxref("Int32Array")}} contient toujours une valeur donnée et, si c'est le cas, l'agent dort en attendant un réveil ou un délai d'expiration. La méthode renvoie une chaîne qui vaut "ok", "not-equal" ou "timed-out".

    +La méthode statique **`Atomics`\*\***`.wait()`\*\* permet de vérifier qu'un emplacement d'un tableau {{jsxref("Int32Array")}} contient toujours une valeur donnée et, si c'est le cas, l'agent dort en attendant un réveil ou un délai d'expiration. La méthode renvoie une chaîne qui vaut `"ok"`, `"not-equal"` ou `"timed-out"`. -
    -

    Note : Cette opération ne fonctionne qu'avec un tableau typé partagé {{jsxref("Int32Array")}} et peut ne pas être autorisée sur le thread principal.

    -
    +> **Note :** Cette opération ne fonctionne qu'avec un tableau typé partagé {{jsxref("Int32Array")}} et peut ne pas être autorisée sur le _thread_ principal. -

    Syntaxe

    +## Syntaxe -
    Atomics.wait(typedArray, index, valeur[, timeout])
    -
    + Atomics.wait(typedArray, index, valeur[, timeout]) -

    Paramètres

    +### Paramètres -
    -
    typedArray
    -
    Un tableau typé partagé de type {{jsxref("Int32Array")}}.
    -
    index
    -
    La position du tableau typé typedArray sur laquelle on attend un changement.
    -
    valeur
    -
    La valeur attendue qu'on souhaite tester.
    -
    timeout {{optional_inline}}
    -
    Le temps à attendre pour le changement de valeur, exprimé en millisecondes. La valeur par défaut est {{jsxref("Infinity")}}.
    -
    +- `typedArray` + - : Un tableau typé partagé de type {{jsxref("Int32Array")}}. +- `index` + - : La position du tableau typé `typedArray` sur laquelle on attend un changement. +- `valeur` + - : La valeur attendue qu'on souhaite tester. +- `timeout` {{optional_inline}} + - : Le temps à attendre pour le changement de valeur, exprimé en millisecondes. La valeur par défaut est {{jsxref("Infinity")}}. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères ({{jsxref("String")}} qui vaut "ok", "not-equal" ou "timed-out" selon le cas.

    +Une chaîne de caractères ({{jsxref("String")}} qui vaut `"ok"`, `"not-equal"` ou `"timed-out"` selon le cas. -

    Exceptions levées

    +### Exceptions levées -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas un tableau typé partagé de type {{jsxref("Int32Array")}}.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas un tableau typé partagé de type {{jsxref("Int32Array")}}. +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`. -

    Exemples

    +## Exemples -

    Soit un tableau typé partagé Int32Array:

    +Soit un tableau typé partagé `Int32Array`: -
    var sab = new SharedArrayBuffer(1024);
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var int32 = new Int32Array(sab);
    -
    +``` -

    Un thread de lecture est en sommeille et surveille l'emplacement 0 et s'attend à ce que la valeur soit 0. Tant que cette condition est vérifiée, l'exécution n'ira pas plus loin. Lorsque le thread d'écriture a enregistré une nouvelle valeur, le thread de lecture sera notifié par le thread d'écriture et renverra la nouvelle valeur (123).

    +Un _thread_ de lecture est en sommeille et surveille l'emplacement 0 et s'attend à ce que la valeur soit 0. Tant que cette condition est vérifiée, l'exécution n'ira pas plus loin. Lorsque le _thread_ d'écriture a enregistré une nouvelle valeur, le _thread_ de lecture sera notifié par le _thread_ d'écriture et renverra la nouvelle valeur (123). -
    Atomics.wait(int32, 0, 0);
    -console.log(int32[0]); // 123
    +```js +Atomics.wait(int32, 0, 0); +console.log(int32[0]); // 123 +``` -

    Un thread d'écriture stocke une nouvelle valeur et notifie le thread de lecture une fois que la valeur a bien été écrite :

    +Un _thread_ d'écriture stocke une nouvelle valeur et notifie le _thread_ de lecture une fois que la valeur a bien été écrite : -
    console.log(int32[0]); // 0;
    +```js
    +console.log(int32[0]); // 0;
     Atomics.store(int32, 0, 123);
    -Atomics.notify(int32, 0, 1);
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.wait")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.notify()")}}
    • -
    +Atomics.notify(int32, 0, 1); +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.wait")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.notify()")}} diff --git a/files/fr/web/javascript/reference/global_objects/atomics/xor/index.md b/files/fr/web/javascript/reference/global_objects/atomics/xor/index.md index c3de46ad67..935579982a 100644 --- a/files/fr/web/javascript/reference/global_objects/atomics/xor/index.md +++ b/files/fr/web/javascript/reference/global_objects/atomics/xor/index.md @@ -10,118 +10,76 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/xor original_slug: Web/JavaScript/Reference/Objets_globaux/Atomics/xor --- -
    {{JSRef}}
    - -

    La méthode statique Atomics.xor() calcule le résultat d'un OU exclusif (XOR) binaire entre une valeur donnée et une valeur du tableau partagé à un emplacement donné. Elle renvoie l'ancienne valeur qui était contenue à cette position. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.

    - -
    {{EmbedInteractiveExample("pages/js/atomics-xor.html")}}
    - -

    Syntaxe

    - -
    Atomics.xor(typedArray, index, valeur)
    -
    - -

    Paramètres

    - -
    -
    typedArray
    -
    Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    -
    index
    -
    La position du tableau typedArray à laquelle calculer le OU exclusif binaire.
    -
    valeur
    -
    La valeur avec laquelle on souhaite calculer le OU exclusif binaire.
    -
    - -

    Valeur de retour

    - -

    L'ancienne valeur située à cet emplacement du tableau (typedArray[index]).

    - -

    Exceptions

    - -
      -
    • Cette méthode lève {{jsxref("TypeError")}} si le type de typedArray n'est pas un des types entiers autorisés.
    • -
    • Cette méthode lève {{jsxref("TypeError")}} si typedArray n'est pas tableau typé partagé.
    • -
    • Cette méthode lève {{jsxref("RangeError")}} si index est en dehors des limites de typedArray.
    • -
    - -

    Description

    - -

    L'opération binaire OU exclusif (XOR) renvoie 1 si a et b sont différents. La table de vérité correspondante est :

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    aba ^ b
    000
    011
    101
    110
    - -

    Par exemple, le calcul d'un OU exclusif binaire entre 5 et 1 (5 ^ 1) renvoie 0100, qui correspond à 4 en notation décimale.

    - -
    5  0101
    -1  0001
    -   ----
    -4  0100
    -
    - -

    Exemples

    - -
    var sab = new SharedArrayBuffer(1024);
    +{{JSRef}}
    +
    +La méthode statique **`Atomics`\*\***`.xor()`\*\* calcule le résultat d'un OU exclusif (XOR) binaire entre une valeur donnée et une valeur du tableau partagé à un emplacement donné. Elle renvoie l'ancienne valeur qui était contenue à cette position. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.
    +
    +{{EmbedInteractiveExample("pages/js/atomics-xor.html")}}
    +
    +## Syntaxe
    +
    +    Atomics.xor(typedArray, index, valeur)
    +
    +### Paramètres
    +
    +- `typedArray`
    +  - : Un tableau typé entier partagé parmi {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} ou {{jsxref("Uint32Array")}}.
    +- `index`
    +  - : La position du tableau `typedArray` à laquelle calculer le OU exclusif binaire.
    +- `valeur`
    +  - : La valeur avec laquelle on souhaite calculer le OU exclusif binaire.
    +
    +### Valeur de retour
    +
    +L'ancienne valeur située à cet emplacement du tableau (`typedArray[index]`).
    +
    +### Exceptions
    +
    +- Cette méthode lève {{jsxref("TypeError")}} si le type de `typedArray` n'est pas un des types entiers autorisés.
    +- Cette méthode lève {{jsxref("TypeError")}} si `typedArray` n'est pas tableau typé partagé.
    +- Cette méthode lève {{jsxref("RangeError")}} si `index` est en dehors des limites de `typedArray`.
    +
    +## Description
    +
    +L'opération binaire OU exclusif (XOR) renvoie 1 si `a` et `b` sont différents. La table de vérité correspondante est :
    +
    +| `a` | `b` | `a ^ b` |
    +| --- | --- | ------- |
    +| 0   | 0   | 0       |
    +| 0   | 1   | 1       |
    +| 1   | 0   | 1       |
    +| 1   | 1   | 0       |
    +
    +Par exemple, le calcul d'un OU exclusif binaire entre 5 et 1 (`5 ^ 1`) renvoie `0100`, qui correspond à 4 en notation décimale.
    +
    +    5  0101
    +    1  0001
    +       ----
    +    4  0100
    +
    +## Exemples
    +
    +```js
    +var sab = new SharedArrayBuffer(1024);
     var ta = new Uint8Array(sab);
     ta[0] = 5;
     
     Atomics.xor(ta, 0, 1); // renvoie 5, l'ancienne valeur
    -Atomics.load(ta, 0);   // 4
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-atomics.xor', 'Atomics.xor')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Atomics.xor")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Atomics")}}
    • -
    • {{jsxref("Atomics.and()")}}
    • -
    • {{jsxref("Atomics.or()")}}
    • -
    +Atomics.load(ta, 0); // 4 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-atomics.xor', 'Atomics.xor')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Atomics.xor")}} + +## Voir aussi + +- {{jsxref("Atomics")}} +- {{jsxref("Atomics.and()")}} +- {{jsxref("Atomics.or()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/asintn/index.md b/files/fr/web/javascript/reference/global_objects/bigint/asintn/index.md index 13023405cf..3465ce6c21 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/asintn/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/asintn/index.md @@ -9,34 +9,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt/asIntN --- -

    {{JSRef}}

    +{{JSRef}} -

    La méthode statique BigInt.asIntN() permet d'écréter un nombre BigInt pour obtenir un entier signé entre 2^(largeur-1) et 2^(largeur-1)-1.

    +La méthode statique **`BigInt.asIntN()`** permet d'écréter un nombre `BigInt` pour obtenir un entier signé entre 2^(largeur-1) et 2^(largeur-1)-1. -
    {{EmbedInteractiveExample("pages/js/bigint-asintn.html")}}
    +{{EmbedInteractiveExample("pages/js/bigint-asintn.html")}} -

    Syntaxe

    +## Syntaxe -
    var resultat = BigInt.asIntN(largeur, bigint);
    + var resultat = BigInt.asIntN(largeur, bigint); -

    Paramètres

    +### Paramètres -
    -
    largeur
    -
    La quantité de bits disponible pour stocker l'entier.
    -
    bigint
    -
    L'entier qu'on souhaite stocker sur le nombre de bits indiqués.
    -
    +- `largeur` + - : La quantité de bits disponible pour stocker l'entier. +- `bigint` + - : L'entier qu'on souhaite stocker sur le nombre de bits indiqués. -

    Valeur de retour

    +### Valeur de retour -

    La valeur de bigint modulo 2^largeur comme entier signé.

    +La valeur de `bigint` modulo 2^`largeur` comme entier signé. -

    Exemples

    +## Exemples -

    La méthode BigInt.asIntN() peut être utile pour rester dans une arithmétique sur 64 bits :

    +La méthode `BigInt.asIntN()` peut être utile pour rester dans une arithmétique sur 64 bits : -
    const max = 2n ** (64n - 1n) - 1n;
    +```js
    +const max = 2n ** (64n - 1n) - 1n;
     
     BigInt.asIntN(64, max);
     // ↪ 9223372036854775807n
    @@ -44,30 +43,19 @@ BigInt.asIntN(64, max);
     BigInt.asIntN(64, max + 1n);
     // ↪ -9223372036854775807n
     // négatif car dépassement sur le nombre de bits
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    SpécificationÉtat
    BigInt proposalProposition de niveau 3.
    +| Spécification | État | +| ---------------------------------------------------------------------------- | ------------------------ | +| [BigInt proposal](https://tc39.github.io/proposal-bigint/#sec-bigint.asintn) | Proposition de niveau 3. | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.BigInt.asIntN")}}

    +{{Compat("javascript.builtins.BigInt.asIntN")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{JSxRef("BigInt")}}
    • -
    • {{JSxRef("BigInt.asUintN()")}}
    • -
    +- {{JSxRef("BigInt")}} +- {{JSxRef("BigInt.asUintN()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/asuintn/index.md b/files/fr/web/javascript/reference/global_objects/bigint/asuintn/index.md index 5331dbae11..096fc6af73 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/asuintn/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/asuintn/index.md @@ -10,64 +10,53 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt/asUintN --- -

    {{JSRef}}

    +{{JSRef}} -

    La méthode statique BigInt.asUintN() permet d'écréter un BigInt pour ramener sa valeur sur un entier non-signé entre 0 et 2^(largeur)-1.

    +La méthode statique **`BigInt.asUintN()`** permet d'écréter un `BigInt` pour ramener sa valeur sur un entier non-signé entre 0 et 2^(largeur)-1. -
    {{EmbedInteractiveExample("pages/js/bigint-asuintn.html")}}
    +{{EmbedInteractiveExample("pages/js/bigint-asuintn.html")}} -

    Syntaxe

    +## Syntaxe -
    var résultat = BigInt.asUintN(largeur, bigint);
    + var résultat = BigInt.asUintN(largeur, bigint); -

    Paramètres

    +### Paramètres -
    -
    largeur
    -
    Le nombre de bits disponible pour stocker l'entier.
    -
    bigint
    -
    L'entier qu'on souhaite stocker sur le nombre de bits indiqués.
    -
    +- `largeur` + - : Le nombre de bits disponible pour stocker l'entier. +- `bigint` + - : L'entier qu'on souhaite stocker sur le nombre de bits indiqués. -

    Valeur de retour

    +### Valeur de retour -

    La valeur de bigint modulo 2^largeur comme un entier non signé.

    +La valeur de `bigint` modulo 2^`largeur` comme un entier non signé. -

    Exemples

    +## Exemples -

    La méthode BigInt.asUintN() peut s'avérer utile pour rester dans une arithmétique exprimée sur 64 bits .

    +La méthode `BigInt.asUintN()` peut s'avérer utile pour rester dans une arithmétique exprimée sur 64 bits . -
    const max = 2n ** 64n - 1n;
    +```js
    +const max = 2n ** 64n - 1n;
     
     BigInt.asUintN(64, max);
     // ↪ 18446744073709551615n
     
     BigInt.asUintN(64, max + 1n);
     // ↪ 0n
    -// zéro en raison du dépassement
    +// zéro en raison du dépassement +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    SpécificationÉtat
    Proposition pour BigIntProposition de niveau 3
    +| Spécification | État | +| ------------------------------------------------------------------------------------- | ----------------------- | +| [Proposition pour BigInt](https://tc39.github.io/proposal-bigint/#sec-bigint.asuintn) | Proposition de niveau 3 | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.BigInt.asUintN")}}

    +{{Compat("javascript.builtins.BigInt.asUintN")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{JSxRef("BigInt")}}
    • -
    • {{JSxRef("BigInt.asIntN()")}}
    • -
    +- {{JSxRef("BigInt")}} +- {{JSxRef("BigInt.asIntN()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/index.md b/files/fr/web/javascript/reference/global_objects/bigint/index.md index 6e842994cc..4cb7b392cf 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/index.md @@ -9,39 +9,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt --- -
    {{JSRef}}
    +{{JSRef}} -

    BigInt est un objet natif qui permet de représenter des nombres entiers supérieurs à 2^53 (la plus grande valeur entière qui puisse être représentée par le type primitif {{jsxref("Number")}}). BigInt peut être utilisé afin de représenter de grands entiers de n'importe quelle taille.

    +**`BigInt`** est un objet natif qui permet de représenter des nombres entiers supérieurs à 2^53 (la plus grande valeur entière qui puisse être représentée par le type primitif {{jsxref("Number")}}). `BigInt` peut être utilisé afin de représenter de grands entiers de n'importe quelle taille. -
    -

    Note : BigInt est actuellement une proposition de niveau 3 pour la spécification ECMAScript.

    +> **Note :** BigInt est actuellement une **proposition de niveau 3** pour la [spécification](#Spécifications) ECMAScript. +> +> Lorsque cette proposition atteindra le niveau 4 (soit la spécification finale), BigInt sera le deuxième type natif disponible en JavaScript pour représenter des valeurs numériques. +> +> **`BigInt`** sera ainsi le prochain type primitif ajouté à JavaScript depuis {{JSxRef("Symbol")}} avec ES2015 -

    Lorsque cette proposition atteindra le niveau 4 (soit la spécification finale), BigInt sera le deuxième type natif disponible en JavaScript pour représenter des valeurs numériques.

    +## Syntaxe -

    BigInt sera ainsi le prochain type primitif ajouté à JavaScript depuis {{JSxRef("Symbol")}} avec ES2015

    -
    + BigInt(valeur); -

    Syntaxe

    +### Paramètres -
    BigInt(valeur);
    -
    +- `valeur` + - : La valeur numérique de l'objet qu'on souhaite créer. Cet argument peut être une chaîne de caractères ou un entier. -

    Paramètres

    +> **Note :** `BigInt()` n'est pas censé être utilisé avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. -
    -
    valeur
    -
    La valeur numérique de l'objet qu'on souhaite créer. Cet argument peut être une chaîne de caractères ou un entier.
    -
    +## Description -
    -

    Note : BigInt() n'est pas censé être utilisé avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}.

    -
    +Un objet `BigInt` est créé en ajoutant un `n` à la fin d'un littéral d'entier — `10n` par exemple — ou en appelant la fonction `BigInt()`. -

    Description

    - -

    Un objet BigInt est créé en ajoutant un n à la fin d'un littéral d'entier — 10n par exemple — ou en appelant la fonction BigInt().

    - -
    const plusGrandEntier = 9007199254740991n;
    +```js
    +const plusGrandEntier = 9007199254740991n;
     
     const grandNombre = BigInt(9007199254740991);
     // ↪ 9007199254740991n
    @@ -53,32 +47,36 @@ const grandeNombreHexa = BigInt("0x1fffffffffffff");
     // ↪ 9007199254740991n
     
     const grandeNombreBinaire = BigInt("0b11111111111111111111111111111111111111111111111111111");
    -// ↪ 9007199254740991n
    - -

    Les objets BigInt sont semblables aux objets {{jsxref("Number")}} selon certains aspects mais avec quelques différences clés. Les objets BigInt ne peuvent pas êre utilisés avec l'objet {{jsxref("Math")}} et ne peuvent pas être manipulés avec des opérations qui impliquent des objets {{jsxref("Number")}}.

    +// ↪ 9007199254740991n +``` -
    -

    Attention : Il est nécessaire de convertir des valeurs {{jsxref("Number")}} ou BigInt dans les opérations qui les combinent.

    +Les objets `BigInt` sont semblables aux objets {{jsxref("Number")}} selon certains aspects mais avec quelques différences clés. Les objets `BigInt` ne peuvent pas êre utilisés avec l'objet {{jsxref("Math")}} et ne peuvent pas être manipulés avec des opérations qui impliquent des objets {{jsxref("Number")}}. -

    Attention lors de ces conversions car la précision d'une valeur BigInt peut être perdue lorsque ce dernier est converti en {{jsxref("Number")}}.

    -
    +> **Attention :** Il est nécessaire de convertir des valeurs {{jsxref("Number")}} ou `BigInt` dans les opérations qui les combinent. +> +> Attention lors de ces conversions car la précision d'une valeur `BigInt` peut être perdue lorsque ce dernier est converti en {{jsxref("Number")}}. -

    Type

    +### Type -

    Lorsqu'on utilise typeof sur une valeur BigInt, cet opérateur renverra "bigint" :

    +Lorsqu'on utilise `typeof` sur une valeur `BigInt`, cet opérateur renverra `"bigint"` : -
    typeof 1n === "bigint"; // true
    -typeof BigInt("1") === "bigint"; // true
    +```js +typeof 1n === "bigint"; // true +typeof BigInt("1") === "bigint"; // true +``` -

    Lorsqu'on « enveloppe » la valeur dans un objet, on aura alors un type "object" (comme pour les autres valeurs primitives lorsqu'on les enveloppe dans le constructeur objet) :

    +Lorsqu'on « enveloppe » la valeur dans un objet, on aura alors un type `"object"` (comme pour les autres valeurs primitives lorsqu'on les enveloppe dans le constructeur objet) : -
    typeof Object(1n) === "object"; // true
    +```js +typeof Object(1n) === "object"; // true +``` -

    Opérateurs

    +### Opérateurs -

    On peut utiliser les opérateurs suivants avec les objets BigInt : +, `*`, `-`, `**`, `%` , les opérateurs binaires (à l'exception de >>> / décalage à droite avec des zéros) car les grands entiers sont signés. Le + unaire n'est pas non plus pris en charge (afin de ne pas casser asm.js).

    +On peut utiliser les opérateurs suivants avec les objets `BigInt` : `+`, \``*`\`, \``-`\`, \``**`\`, \``%`\` , [les opérateurs binaires](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_binaires) (à l'exception de `>>>` / décalage à droite avec des zéros) car les grands entiers sont signés. Le `+` unaire n'est pas non plus pris en charge (afin de [ne pas casser asm.js](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs)). -
    const nombreSain = BigInt(Number.MAX_SAFE_INTEGER);
    +```js
    +const nombreSain = BigInt(Number.MAX_SAFE_INTEGER);
     // ↪ 9007199254740991
     
     const maxPlusUn = nombreSain + 1n;
    @@ -101,66 +99,75 @@ const bigN = 2n ** 54n;
     
     bigN * -1n
     // ↪ –18014398509481984n
    -
    +``` -

    L'opérateur / fonctionne de façon analogue aux nombres classiques. Toutefois, les objets BigInt permettent uniquement de représenter des entiers et non des nombres décimaux. Aussi, la division ne produira pas de partie décimale pour les BigInt.

    +L'opérateur `/` fonctionne de façon analogue aux nombres classiques. Toutefois, les objets `BigInt` permettent uniquement de représenter des entiers et non des nombres décimaux. Aussi, la division ne produira pas de partie décimale pour les `BigInt`. -
    const attendu = 4n / 2n;
    +```js
    +const attendu = 4n / 2n;
     // ↪ 2n
     
     const tronque = 5n / 2n;
     // ↪ 2n et pas 2.5n
    +```
     
    -
    +### Comparaisons -

    Comparaisons

    +Un objet `BigInt` n'est pas strictement égal à {{jsxref( "Number")}} mais peut l'être au sens de l'égalité faible. -

    Un objet BigInt n'est pas strictement égal à {{jsxref( "Number")}} mais peut l'être au sens de l'égalité faible.

    - -
    0n === 0
    +```js
    +0n === 0
     // ↪ false
     
     0n == 0
    -// ↪ true
    +// ↪ true +``` -

    On peut toutefois comparer des objets {{jsxref("Number")}} et BigInt :

    +On peut toutefois comparer des objets {{jsxref("Number")}} et `BigInt` : -
    1n < 2
    +```js
    +1n < 2
     // ↪ true
     
    -2n > 1
    +2n > 1
     // ↪ true
     
    -2 > 2
    +2 > 2
     // ↪ false
     
    -2n > 2
    +2n > 2
     // ↪ false
     
    -2n >= 2
    -// ↪ true
    +2n >= 2 +// ↪ true +``` -

    On peut également mélanger ces valeurs au sein de tableaux :

    +On peut également mélanger ces valeurs au sein de tableaux : -
    const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
    +```js
    +const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
     // ↪  [4n, 6, -12n, 10, 4, 0, 0n]
     
     mixed.sort();
    -// ↪ [-12n, 0, 0n, 10, 4n, 4, 6]
    +// ↪ [-12n, 0, 0n, 10, 4n, 4, 6] +``` -

    On notera que les comparaisons entre les valeurs BigInt et les mêmes valeurs, passées dans le constructeur Object() ne seront pas équivalentes au sens strict :

    +On notera que les comparaisons entre les valeurs `BigInt` et les mêmes valeurs, passées dans le constructeur `Object()` ne seront pas équivalentes au sens strict : -
    0n === Object(0n); // false
    +```js
    +0n === Object(0n); // false
     Object(0n) === Object(0n); // false
     
     const o = Object(0n);
    -o === o; // true
    +o === o; // true +``` -

    Opérations conditionnelles

    +### Opérations conditionnelles -

    Un objet BigInt se comporte comme un objet {{jsxref("Number")}} lorsqu'il est utilisé dans un contexte booléen : comme argument pour le constructeur {{jsxref("Boolean")}}, comme opérandes pour les opérateurs logiques ||, `&&` et ! ou avec les instructions conditonnelles telles que if.

    +Un objet `BigInt` se comporte comme un objet {{jsxref("Number")}} lorsqu'il est utilisé dans un contexte booléen : comme argument pour le constructeur {{jsxref("Boolean")}}, comme opérandes pour les opérateurs logiques `||`, \``&&`\` et `!` ou avec les instructions conditonnelles telles que [`if`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else). -
    if (0n) {
    +```js
    +if (0n) {
       console.log('Nous voici dans le if !');
     } else {
       console.log('Et nous voilà dans le else !');
    @@ -171,7 +178,7 @@ o === o; // true
    0n || 12n // ↪ 12n -0n && 12n +0n && 12n // ↪ 0n Boolean(0n) @@ -185,48 +192,45 @@ Boolean(12n) !0n // ↪ true - +``` -

    Méthodes

    +## Méthodes -
    -
    BigInt.asIntN()
    -
    Écrète un objet BigInt pour obtenir un entier signé entre -2^(largeur-1) et 2^(largeur-1)-1
    -
    BigInt.asUintN()
    -
    Écrète un objet BigInt pour obtenir un entier non-signé entre 0 et 2^(largeur)-1
    -
    +- **`BigInt.asIntN()`** + - : Écrète un objet `BigInt` pour obtenir un entier signé entre -2^(largeur-1) et 2^(largeur-1)-1 +- `BigInt.asUintN()` + - : Écrète un objet `BigInt` pour obtenir un entier non-signé entre 0 et 2^(largeur)-1 -

    Propriétés

    +## Propriétés -
    -
    {{jsxref("BigInt.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés aux objets BigInt.
    -
    +- {{jsxref("BigInt.prototype")}} + - : Cette propriété permet d'ajouter des propriétés aux objets `BigInt`. -

    Instances de BigInt

    +## Instances de `BigInt` -

    L'ensemble des instances de BigInt héritent de BigInt.prototype. Le prototype du constructeur BigInt peut être modifié afin de modifier l'ensemble des instances de BigInt.

    +L'ensemble des instances de `BigInt` héritent de `BigInt.prototype`. Le prototype du constructeur `BigInt` peut être modifié afin de modifier l'ensemble des instances de `BigInt`. -

    Méthodes

    +### Méthodes -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/BigInt/prototype', 'Méthodes')}}

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/BigInt/prototype', 'Méthodes')}} -

    Recommandations

    +## Recommandations -

    Coercition en Number

    +### Coercition en `Number` -

    Lorsqu'on convertit une valeur BigInt en {{jsxref("Objets_globaux/Number","Number")}}, on perd en précision. Si on effectue des allers-retours entre ces deux types, on ne conservera pas la même valeur. Aussi, il est recommandé d'utiliser uniquement BigInt lorsque les valeurs qu'on manipule seront supérieures à 2^53 et qu'il ne sera pas nécessaire de passer d'un type à l'autre.

    +Lorsqu'on convertit une valeur `BigInt` en {{jsxref("Objets_globaux/Number","Number")}}, on perd en précision. Si on effectue des allers-retours entre ces deux types, on ne conservera pas la même valeur. Aussi, il est recommandé d'utiliser uniquement `BigInt` lorsque les valeurs qu'on manipule seront supérieures à 2^53 et qu'il ne sera pas nécessaire de passer d'un type à l'autre. -

    Cryptographie

    +### Cryptographie -

    Les opérations prises en charge pour les valeurs BigInt ne s'effectuent pas à temps constant. Aussi, BigInt ne serait être utilisé à des fins cryptographiques.

    +Les opérations prises en charge pour les valeurs `BigInt` ne s'effectuent pas à temps constant. Aussi, `BigInt` ne serait être utilisé à [des fins cryptographiques](https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html). -

    Exemples

    +## Exemples -

    Calculer des nombres premiers

    +### Calculer des nombres premiers -
    function isPrime(p) {
    -  for (let i = 2n; i * i <= p; i++) {
    +```js
    +function isPrime(p) {
    +  for (let i = 2n; i * i <= p; i++) {
         if (p % i === 0n) return false;
       }
       return true;
    @@ -237,7 +241,7 @@ function nthPrime(nth) {
       let maybePrime = 2n;
       let prime = 0n;
     
    -  while (nth >= 0n) {
    +  while (nth >= 0n) {
         if (isPrime(maybePrime)) {
           nth -= 1n;
           prime = maybePrime;
    @@ -249,31 +253,19 @@ function nthPrime(nth) {
     }
     
     nthPrime(20n)
    -// ↪ 73n
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtat
    BigIntBrouillon de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.BigInt")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number")}}
    • -
    +// ↪ 73n +``` + +## Spécifications + +| Spécification | État | +| --------------------------------------------------------------- | --------------------- | +| [`BigInt`](https://tc39.es/proposal-bigint/#sec-bigint-objects) | Brouillon de niveau 3 | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.BigInt")}} + +## Voir aussi + +- {{jsxref("Number")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/tolocalestring/index.md b/files/fr/web/javascript/reference/global_objects/bigint/tolocalestring/index.md index 05c8d2860a..ba569b8723 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/tolocalestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/tolocalestring/index.md @@ -12,46 +12,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt/toLocaleString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleString() renvoie une chaîne de caractères représentant le grand entier pour la ou les locale(s) indiquée(s).

    +La méthode **`toLocaleString()`** renvoie une chaîne de caractères représentant le grand entier pour la ou les locale(s) indiquée(s). -
    {{EmbedInteractiveExample("pages/js/bigint-tolocalestring.html")}}
    +{{EmbedInteractiveExample("pages/js/bigint-tolocalestring.html")}} -

    Syntaxe

    +## Syntaxe -
    bigIntObj.toLocaleString([locales [, options]])
    + bigIntObj.toLocaleString([locales [, options]]) -

    Paramètres

    +### Paramètres -
    -
    locales {{optional_inline}}
    -
    Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales. Pour plus de détails quant à la forme et l'interprétation de l'argument locales, on consultera la page {{jsxref("Intl")}}.
    -
    options {{optional_inline}}
    -
    Un objet qui contient des propriétés de configuration. Pour les nombres, consulter {{jsxref("Number.prototype.toLocaleString()")}}, pour les dates, consulter {{jsxref("Date.prototype.toLocaleString()")}}.
    -
    +- `locales` {{optional_inline}} + - : Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`. Pour plus de détails quant à la forme et l'interprétation de l'argument `locales`, on consultera la page {{jsxref("Intl")}}. +- `options` {{optional_inline}} + - : Un objet qui contient des propriétés de configuration. Pour les nombres, consulter {{jsxref("Number.prototype.toLocaleString()")}}, pour les dates, consulter {{jsxref("Date.prototype.toLocaleString()")}}. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente le grand entier selon la ou les locales et les options indiquées.

    +Une chaîne de caractères qui représente le grand entier selon la ou les locales et les options indiquées. -

    Exemples

    +## Exemples -

    Utiliser toLocaleString()

    +### Utiliser `toLocaleString()` -

    Voici un exemple d'utilisation simple, sans indiquer de locale ni d'options.

    +Voici un exemple d'utilisation simple, sans indiquer de locale ni d'options. -
    var bigint = 3500n;
    +```js
    +var bigint = 3500n;
     
     bigint.toLocaleString();
     // Affichera "3500" en français
    -
    +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Cet exemple illustre certaines variations pour la représentation d'une même valeur en fonction des différentes locales. En fonction de la langue utilisée par l'utilisateur et par votre interface, vous pourrez utiliser locales pour indiquer la locale ciblée :

    +Cet exemple illustre certaines variations pour la représentation d'une même valeur en fonction des différentes locales. En fonction de la langue utilisée par l'utilisateur et par votre interface, vous pourrez utiliser `locales` pour indiquer la locale ciblée : -
    var bigint = 123456789123456789n;
    +```js
    +var bigint = 123456789123456789n;
     
     // En allemand, on utilise les points pour séparer
     // les milliers
    @@ -59,7 +59,7 @@ console.log(bigint.toLocaleString('de-DE'));
     // → 123.456.789.123.456.789
     
     // La plupart des pays arabes utilise
    -// des chiffres hindoux-arabes
    +// des chiffres hindoux-arabes
     console.log(bigint.toLocaleString('ar-EG'));
     // → ١٢٣٬٤٥٦٬٧٨٩٬١٢٣٬٤٥٦٬٧٨٩
     
    @@ -78,13 +78,14 @@ console.log(bigint.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
     // locale qui sera utilisée en recours (ici l'indonésien)
     console.log(bigint.toLocaleString(['ban', 'id']));
     // → 123.456.789.123.456.789
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Ici, on personnalise le résultat fourni par toLocaleString() grâce à l'argument options :

    +Ici, on personnalise le résultat fourni par `toLocaleString()` grâce à l'argument `options` : -
    var bigint = 123456789123456789n;
    +```js
    +var bigint = 123456789123456789n;
     
     // On utilise un format avec une devise
     console.log(bigint.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
    @@ -97,33 +98,22 @@ console.log(bigint.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY'
     // On limite l'écriture aux trois premiers chiffres significatifs
     console.log(bigint.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
     // → 1,23,00,00,00,00,00,00,000
    -
    +``` -

    Performance

    +## Performance -

    Lorsqu'on souhaite mettre en forme une grande quantité de nombres, mieux vaudra créer un objet {{jsxref("NumberFormat")}} et utiliser la fonction fournie par sa propriété {{jsxref("NumberFormat.format")}}.

    +Lorsqu'on souhaite mettre en forme une grande quantité de nombres, mieux vaudra créer un objet {{jsxref("NumberFormat")}} et utiliser la fonction fournie par sa propriété {{jsxref("NumberFormat.format")}}. -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    SpécificationÉtat
    BigIntProposition de niveau 3.
    +| Spécification | État | +| ------------------------------------------------------------------------ | ------------------------ | +| [`BigInt`](https://tc39.es/ecma402/#sup-bigint.prototype.tolocalestring) | Proposition de niveau 3. | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.BigInt.toLocaleString")}}

    +{{Compat("javascript.builtins.BigInt.toLocaleString")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("BigInt.toString()")}}
    • -
    +- {{jsxref("BigInt.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/tostring/index.md b/files/fr/web/javascript/reference/global_objects/bigint/tostring/index.md index 4fbc9eab99..b1fdcdbef7 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/tostring/index.md @@ -10,85 +10,73 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/toString original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    The toString() method returns a string representing the specified {{jsxref("BigInt")}} object. The trailing "n" is not part of the string.

    +The **`toString()`** method returns a string representing the specified {{jsxref("BigInt")}} object. The trailing "n" is not part of the string. -
    {{EmbedInteractiveExample("pages/js/bigint-tostring.html")}}
    +{{EmbedInteractiveExample("pages/js/bigint-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    bigIntObj.toString([base])
    + bigIntObj.toString([base]) -

    Paramètres

    +### Paramètres -
    -
    base{{optional_inline}}
    -
    Ce paramètre optionnel est compris entre 2 et 36 et indique la base à utiliser pour représenter les valeurs numériques.
    -
    +- `base`{{optional_inline}} + - : Ce paramètre optionnel est compris entre 2 et 36 et indique la base à utiliser pour représenter les valeurs numériques. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant l'objet {{jsxref("BigInt")}} courant.

    +Une chaîne de caractères représentant l'objet {{jsxref("BigInt")}} courant. -

    Exceptions

    +### Exceptions -
    -
    {{jsxref("RangeError")}}
    -
    Si la base fournie comme argument toString() est inférieure à 2 ou supérieure à 36, cela déclenchera une exception {{jsxref("RangeError")}}.
    -
    +- {{jsxref("RangeError")}} + - : Si la base fournie comme argument `toString()` est inférieure à 2 ou supérieure à 36, cela déclenchera une exception {{jsxref("RangeError")}}. -

    Description

    +## Description -

    L'objet {{jsxref("BigInt")}} surcharge la méthode toString() de {{jsxref("Object")}}. Il n'hérite pas ou n'utilise pas {{jsxref("Object.prototype.toString()")}}. Pour les objets {{jsxref( "BigInt")}}, la méthode toString() renvoie une représentation textuelle de l'objet dans la base indiquée.

    +L'objet {{jsxref("BigInt")}} surcharge la méthode `toString()` de {{jsxref("Object")}}. Il n'hérite pas ou n'utilise pas {{jsxref("Object.prototype.toString()")}}. Pour les objets {{jsxref( "BigInt")}}, la méthode `toString()` renvoie une représentation textuelle de l'objet dans la base indiquée. -

    La méthode toString() analyse le premier argument qui lui est passé et tente de renvoyer une représentation textuelle dans cette base. Pour les bases supérieures à 10, ce seront les lettres de l'alphabet pour indiquer les chiffres supérieurs à 9. Pour les nombres hexadécimaux (base 16), les lettres a à f sont utilisées par exemple.

    +La méthode `toString()` analyse le premier argument qui lui est passé et tente de renvoyer une représentation textuelle dans cette base. Pour les bases supérieures à 10, ce seront les lettres de l'alphabet pour indiquer les chiffres supérieurs à 9. Pour les nombres hexadécimaux (base 16), les lettres `a` à `f` sont utilisées par exemple. -

    Si l'argument base n'est pas indiquée, ce sera la base 10 qui sera considérée par défaut.

    +Si l'argument `base` n'est pas indiquée, ce sera la base 10 qui sera considérée par défaut. -

    Si bigIntObj est négatif, le signe est conservé, y compris lorsque la base est 2 (dans ce cas, la chaîne renvoyée sera la représentation binaire précédée par un signe - et non le complément à deux de bigIntObj).

    +Si `bigIntObj` est négatif, le signe est conservé, y compris lorsque la base est 2 (dans ce cas, la chaîne renvoyée sera la représentation binaire précédée par un signe `-` et **non** le complément à deux de `bigIntObj`). -

    Exemples

    +## Exemples -

    Utiliser toString()

    +### Utiliser `toString()` -
    17n.toString();      // '17'
    +```js
    +17n.toString();      // '17'
     66n.toString(2);     // '1000010'
     254n.toString(16);   // 'fe'
     -10n.toString(2);    // -1010'
     -0xffn.toString(2);  // '-11111111'
    -
    +``` -

    Gestion du zéro négatif en BigInt

    +### Gestion du zéro négatif en `BigInt` -

    Il n'existe pas de zéro négatif pour BigInt car les entiers ne gèrent pas de concept de zéro négatif. -0.0 est un concept relatif à la représentation flottante IEEE et n'est présent que pour le type {{jsxref("Number")}}.

    +Il n'existe pas de zéro négatif pour `BigInt` car les entiers ne gèrent pas de concept de zéro négatif. `-0.0` est un concept relatif à la représentation flottante IEEE et n'est présent que pour le type {{jsxref("Number")}}. -
    (-0n).toString();      // '0'
    -BigInt(-0).toString(); // '0'
    +```js +(-0n).toString(); // '0' +BigInt(-0).toString(); // '0' +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    SpécificationÉtat
    Proposition pour BigIntProposition de niveau 3
    +| Spécification | État | +| -------------------------------------------------------------------------------------------------- | ----------------------- | +| [Proposition pour `BigInt`](https://tc39.github.io/proposal-bigint/#sec-bigint.prototype.tostring) | Proposition de niveau 3 | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.BigInt.toString")}}

    +{{Compat("javascript.builtins.BigInt.toString")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("BigInt.prototype.toLocaleString()")}}
    • -
    • {{jsxref("BigInt.prototype.valueOf()")}}
    • -
    • {{jsxref("Number.prototype.toString()")}}
    • -
    +- {{jsxref("BigInt.prototype.toLocaleString()")}} +- {{jsxref("BigInt.prototype.valueOf()")}} +- {{jsxref("Number.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint/valueof/index.md b/files/fr/web/javascript/reference/global_objects/bigint/valueof/index.md index 92a6e74350..fae0cd160f 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint/valueof/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint/valueof/index.md @@ -11,49 +11,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/valueOf original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt/valueOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode valueOf() renvoie la valeur primitive encapsulée dans un objet {{jsxref("BigInt")}}.

    +La méthode **`valueOf()`** renvoie la valeur primitive encapsulée dans un objet {{jsxref("BigInt")}}. -
    {{EmbedInteractiveExample("pages/js/bigint-valueof.html")}}
    +{{EmbedInteractiveExample("pages/js/bigint-valueof.html")}} -

    Syntaxe

    +## Syntaxe -
    bigIntObj.valueOf()
    + bigIntObj.valueOf() -

    Valeur de retour

    +### Valeur de retour -

    Un grand entier (big int) représentant la valeur primitive de l'objet {{jsxref("BigInt")}} courant.

    +Un grand entier (_big int_) représentant la valeur primitive de l'objet {{jsxref("BigInt")}} courant. -

    Exemples

    +## Exemples -

    Utiliser valueOf()

    +### Utiliser `valueOf()` -
    typeof Object(1n); // object
    +```js
    +typeof Object(1n); // object
     typeof Object(1n).valueOf(); // bigint
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    SpécificationÉtat
    Proposition pour BigIntProposition de niveau 3
    +| Spécification | État | +| ------------------------------------------------------------------------------------------------- | ----------------------- | +| [Proposition pour `BigInt`](https://tc39.github.io/proposal-bigint/#sec-bigint.prototype.valueof) | Proposition de niveau 3 | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.BigInt.valueOf")}}

    +{{Compat("javascript.builtins.BigInt.valueOf")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("BigInt.prototype.toString()")}}
    • -
    +- {{jsxref("BigInt.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/bigint64array/index.md b/files/fr/web/javascript/reference/global_objects/bigint64array/index.md index 3631f56e60..8c4ec7637a 100644 --- a/files/fr/web/javascript/reference/global_objects/bigint64array/index.md +++ b/files/fr/web/javascript/reference/global_objects/bigint64array/index.md @@ -11,123 +11,116 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigInt64Array original_slug: Web/JavaScript/Reference/Objets_globaux/BigInt64Array --- -
    {{JSRef}}
    - -

    Le tableau typé BigInt64Array permet de représenter un tableau d'entiers signés représentés sur 64 bits, où l'ordre des octets correspond à celui de la plateforme utilisée. Si on souhaite contrôler l'ordre des octets utilisé (le « boutisme »), on utilisera un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0n. Une fois que le tableau est construit, on peut manipuler ses différents éléments grâce aux méthodes de l'objet ou grâce à la notation usuelle (avec les crochets).

    - -

    Syntaxe

    - -
    new BigInt64Array();
    -new BigInt64Array(longueur);
    -new BigInt64Array(tableauTypé);
    -new BigInt64Array(objet);
    -new BigInt64Array(tampon [, décalage [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur et le rôle des différents paramètres, voir la page TypedArray.

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigInt64Array.BYTES_PER_ELEMENT")}}
    -
    Cette propriété renvoie un nombre correspondant à la quantité d'octets pour un élément du tableau. Dans le cas d'BigInt64Array, ce sera 8.
    -
    BigInt64Array.length
    -
    La propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "BigInt64Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "BigInt64Array.name")}}
    -
    Cette propriété renvoie la chaîne de caractères correspondant au nom du constructeur. Pour BigInt64Array ce sera : "BigInt64Array".
    -
    {{jsxref("TypedArray.prototype", "BigInt64Array.prototype")}}
    -
    Le prototype des objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.from", "BigInt64Array.from()")}}
    -
    Cette méthode permet de créer un nouveau tableau typé BigInt64Array à partir d'un itérable ou d'un objet semblable à un tableau. Voir aussi {{jsxref("Array.from()")}}.
    -
    {{jsxref("TypedArray.of", "BigInt64Array.of()")}}
    -
    Cette méthode permet de créer un nouvel objet BigInt64Array à partir d'un nombre d'arguments variables. Voir aussi {{jsxref("Array.of()")}}.
    -
    - -

    Prototype BigInt64Array

    - -

    Tous les objets BigInt64Array héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    BigInt64Array.prototype.constructor
    -
    Cette propriété renvoie la fonction qui a créé l'instance du prototype. Par défaut, ce sera le constructeur BigInt64Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "BigInt64Array.prototype.buffer")}} {{readonlyInline}}
    -
    Cette propriété renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet BigInt64Array Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "BigInt64Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Cette propriété renvoie la longueur, exprimée en octets, de l'objet BigInt64Array à partir du début de l'objet {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "BigInt64Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Cette propriété renvoie le décalage, en nombre d'octets, entre le début du tableau typé courant et du début du {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "BigInt64Array.prototype.length")}} {{readonlyInline}}
    -
    Cette propriété renvoie le nombre d'éléments contenus dans le tableau BigInt64Array. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "BigInt64Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "BigInt64Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "BigInt64Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "BigInt64Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "BigInt64Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "BigInt64Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "BigInt64Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "BigInt64Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "BigInt64Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "BigInt64Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "BigInt64Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "BigInt64Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "BigInt64Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "BigInt64Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.reduce", "BigInt64Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "BigInt64Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "BigInt64Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "BigInt64Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "BigInt64Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "BigInt64Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "BigInt64Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "BigInt64Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet BigInt64Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "BigInt64Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "BigInt64Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "BigInt64Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "BigInt64Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet BigInt64Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`BigInt64Array`** permet de représenter un tableau d'entiers signés représentés sur 64 bits, où l'ordre des octets correspond à celui de la plateforme utilisée. Si on souhaite contrôler l'ordre des octets utilisé (le « boutisme »), on utilisera un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à `0n`. Une fois que le tableau est construit, on peut manipuler ses différents éléments grâce aux méthodes de l'objet ou grâce à la notation usuelle (avec les crochets).
    +
    +## Syntaxe
    +
    +    new BigInt64Array();
    +    new BigInt64Array(longueur);
    +    new BigInt64Array(tableauTypé);
    +    new BigInt64Array(objet);
    +    new BigInt64Array(tampon [, décalage [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur et le rôle des différents paramètres, voir la page _[TypedArray](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray#Syntaxe)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigInt64Array.BYTES_PER_ELEMENT")}}
    +  - : Cette propriété renvoie un nombre correspondant à la quantité d'octets pour un élément du tableau. Dans le cas d'`BigInt64Array`, ce sera `8`.
    +- `BigInt64Array.length`
    +  - : La propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "BigInt64Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "BigInt64Array.name")}}
    +  - : Cette propriété renvoie la chaîne de caractères correspondant au nom du constructeur. Pour `BigInt64Array` ce sera : "BigInt64Array".
    +- {{jsxref("TypedArray.prototype", "BigInt64Array.prototype")}}
    +  - : Le prototype des objets _TypedArray_.
    +
    +## Méthodes
    +
    +- {{jsxref("TypedArray.from", "BigInt64Array.from()")}}
    +  - : Cette méthode permet de créer un nouveau tableau typé `BigInt64Array` à partir d'un itérable ou d'un objet semblable à un tableau. Voir aussi {{jsxref("Array.from()")}}.
    +- {{jsxref("TypedArray.of", "BigInt64Array.of()")}}
    +  - : Cette méthode permet de créer un nouvel objet `BigInt64Array` à partir d'un nombre d'arguments variables. Voir aussi {{jsxref("Array.of()")}}.
    +
    +## Prototype `BigInt64Array`
    +
    +Tous les objets `BigInt64Array` héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `BigInt64Array.prototype.constructor`
    +  - : Cette propriété renvoie la fonction qui a créé l'instance du prototype. Par défaut, ce sera le constructeur `BigInt64Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "BigInt64Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Cette propriété renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet `BigInt64Array` Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "BigInt64Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Cette propriété renvoie la longueur, exprimée en octets, de l'objet `BigInt64Array` à partir du début de l'objet {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "BigInt64Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Cette propriété renvoie le décalage, en nombre d'octets, entre le début du tableau typé courant et du début du {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "BigInt64Array.prototype.length")}} {{readonlyInline}}
    +  - : Cette propriété renvoie le nombre d'éléments contenus dans le tableau `BigInt64Array`. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "BigInt64Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "BigInt64Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "BigInt64Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "BigInt64Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "BigInt64Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "BigInt64Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "BigInt64Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "BigInt64Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "BigInt64Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "BigInt64Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "BigInt64Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "BigInt64Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "BigInt64Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "BigInt64Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.reduce", "BigInt64Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "BigInt64Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "BigInt64Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "BigInt64Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "BigInt64Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "BigInt64Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "BigInt64Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "BigInt64Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `BigInt64Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "BigInt64Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "BigInt64Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "BigInt64Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "BigInt64Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `BigInt64Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var bigInt64 = new BigInt64Array(2);
     bigInt64[0] = 42n;
     console.log(bigInt64[0]); // 42n
    @@ -151,33 +144,20 @@ var z = new BigInt64Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1n, 2n, 3n]; }();
     var BigInt64 = new BigInt64Array(iterable);
     // BigInt64Array[1n, 2n, 3n]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour BigIntProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.BigInt64Array")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `BigInt`](https://tc39.github.io/proposal-bigint/#sec-typedarrays-and-dataview) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.BigInt64Array")}} + +## Voir aussi + +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- {{jsxref("BigUint64Array")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/biguint64array/index.md b/files/fr/web/javascript/reference/global_objects/biguint64array/index.md index 3eca7d67bd..12be32dff7 100644 --- a/files/fr/web/javascript/reference/global_objects/biguint64array/index.md +++ b/files/fr/web/javascript/reference/global_objects/biguint64array/index.md @@ -11,123 +11,116 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/BigUint64Array original_slug: Web/JavaScript/Reference/Objets_globaux/BigUint64Array --- -
    {{JSRef}}
    - -

    Le tableau typé BigUint64Array permet de représenter un tableau d'entiers non signés représentés sur 64 bits, où l'ordre des octets correspond à celui de la plateforme utilisée. Si on souhaite contrôler l'ordre des octets utilisé (le « boutisme »), on utilisera un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0n. Une fois que le tableau est construit, on peut manipuler ses différents éléments grâce aux méthodes de l'objet ou grâce à la notation usuelle (avec les crochets).

    - -

    Syntaxe

    - -
    new BigUint64Array();
    -new BigUint64Array(longueur);
    -new BigUint64Array(tableauTypé);
    -new BigUint64Array(objet);
    -new BigUint64Array(tampon [, décalage [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur et le rôle des différents paramètres, voir la page TypedArray.

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigUint64Array.BYTES_PER_ELEMENT")}}
    -
    Cette propriété renvoie un nombre correspondant à la quantité d'octets pour un élément du tableau. Dans le cas d'BigUint64Array, ce sera 8.
    -
    BigUint64Array.length
    -
    La propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "BigUint64Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "BigUint64Array.name")}}
    -
    Cette propriété renvoie la chaîne de caractères correspondant au nom du constructeur. Pour BigUint64Array ce sera : "BigUint64Array".
    -
    {{jsxref("TypedArray.prototype", "BigUint64Array.prototype")}}
    -
    Le prototype des objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.from", "BigUint64Array.from()")}}
    -
    Cette méthode permet de créer un nouveau tableau typé BigUint64Array à partir d'un itérable ou d'un objet semblable à un tableau. Voir aussi {{jsxref("Array.from()")}}.
    -
    {{jsxref("TypedArray.of", "BigUint64Array.of()")}}
    -
    Cette méthode permet de créer un nouvel objet BigUint64Array à partir d'un nombre d'arguments variables. Voir aussi {{jsxref("Array.of()")}}.
    -
    - -

    Prototype BigUint64Array

    - -

    Tous les objets BigUint64Array héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    BigUint64Array.prototype.constructor
    -
    Cette propriété renvoie la fonction qui a créé l'instance du prototype. Par défaut, ce sera le constructeur BigUint64Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "BigUint64Array.prototype.buffer")}} {{readonlyInline}}
    -
    Cette propriété renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet BigUint64Array Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "BigUint64Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Cette propriété renvoie la longueur, exprimée en octets, de l'objet BigUint64Array à partir du début de l'objet {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "BigUint64Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Cette propriété renvoie le décalage, en nombre d'octets, entre le début du tableau typé courant et du début du {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "BigUint64Array.prototype.length")}} {{readonlyInline}}
    -
    Cette propriété renvoie le nombre d'éléments contenus dans le tableau BigUint64Array. Elle est déterminée lors de la construction et est accessible uniquement en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "BigUint64Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "BigUint64Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "BigUint64Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "BigUint64Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "BigUint64Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "BigUint64Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "BigUint64Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "BigUint64Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "BigUint64Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "BigUint64Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "BigUint64Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "BigUint64Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "BigUint64Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "BigUint64Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.reduce", "BigUint64Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "BigUint64Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "BigUint64Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "BigUint64Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "BigUint64Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "BigUint64Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "BigUint64Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "BigUint64Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet BigUint64Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "BigUint64Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "BigUint64Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "BigUint64Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "BigUint64Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet BigUint64Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`BigUint64Array`** permet de représenter un tableau d'entiers non signés représentés sur 64 bits, où l'ordre des octets correspond à celui de la plateforme utilisée. Si on souhaite contrôler l'ordre des octets utilisé (le « boutisme »), on utilisera un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à `0n`. Une fois que le tableau est construit, on peut manipuler ses différents éléments grâce aux méthodes de l'objet ou grâce à la notation usuelle (avec les crochets).
    +
    +## Syntaxe
    +
    +    new BigUint64Array();
    +    new BigUint64Array(longueur);
    +    new BigUint64Array(tableauTypé);
    +    new BigUint64Array(objet);
    +    new BigUint64Array(tampon [, décalage [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur et le rôle des différents paramètres, voir la page _[TypedArray](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray#Syntaxe)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigUint64Array.BYTES_PER_ELEMENT")}}
    +  - : Cette propriété renvoie un nombre correspondant à la quantité d'octets pour un élément du tableau. Dans le cas d'`BigUint64Array`, ce sera `8`.
    +- `BigUint64Array.length`
    +  - : La propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "BigUint64Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "BigUint64Array.name")}}
    +  - : Cette propriété renvoie la chaîne de caractères correspondant au nom du constructeur. Pour `BigUint64Array` ce sera : "BigUint64Array".
    +- {{jsxref("TypedArray.prototype", "BigUint64Array.prototype")}}
    +  - : Le prototype des objets _TypedArray_.
    +
    +## Méthodes
    +
    +- {{jsxref("TypedArray.from", "BigUint64Array.from()")}}
    +  - : Cette méthode permet de créer un nouveau tableau typé `BigUint64Array` à partir d'un itérable ou d'un objet semblable à un tableau. Voir aussi {{jsxref("Array.from()")}}.
    +- {{jsxref("TypedArray.of", "BigUint64Array.of()")}}
    +  - : Cette méthode permet de créer un nouvel objet `BigUint64Array` à partir d'un nombre d'arguments variables. Voir aussi {{jsxref("Array.of()")}}.
    +
    +## Prototype `BigUint64Array`
    +
    +Tous les objets `BigUint64Array` héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `BigUint64Array.prototype.constructor`
    +  - : Cette propriété renvoie la fonction qui a créé l'instance du prototype. Par défaut, ce sera le constructeur `BigUint64Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "BigUint64Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Cette propriété renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet `BigUint64Array` Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "BigUint64Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Cette propriété renvoie la longueur, exprimée en octets, de l'objet `BigUint64Array` à partir du début de l'objet {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "BigUint64Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Cette propriété renvoie le décalage, en nombre d'octets, entre le début du tableau typé courant et du début du {{jsxref("ArrayBuffer")}} correspondant. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "BigUint64Array.prototype.length")}} {{readonlyInline}}
    +  - : Cette propriété renvoie le nombre d'éléments contenus dans le tableau `BigUint64Array`. Elle est déterminée lors de la construction et est accessible uniquement en **lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "BigUint64Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "BigUint64Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "BigUint64Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "BigUint64Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "BigUint64Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "BigUint64Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "BigUint64Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "BigUint64Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "BigUint64Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "BigUint64Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "BigUint64Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "BigUint64Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "BigUint64Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "BigUint64Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.reduce", "BigUint64Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "BigUint64Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "BigUint64Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "BigUint64Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "BigUint64Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "BigUint64Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "BigUint64Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "BigUint64Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `BigUint64Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "BigUint64Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "BigUint64Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "BigUint64Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "BigUint64Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `BigUint64Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var bigInt64 = new BigUint64Array(2);
     bigInt64[0] = 42n;
     console.log(bigInt64[0]); // 42n
    @@ -151,33 +144,20 @@ var z = new BigUint64Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1n, 2n, 3n]; }();
     var BigInt64 = new BigUint64Array(iterable);
     // BigUint64Array[1n, 2n, 3n]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour BigIntProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.BigUint64Array")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `BigInt`](https://tc39.github.io/proposal-bigint/#sec-typedarrays-and-dataview) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.BigUint64Array")}} + +## Voir aussi + +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- {{jsxref("BigUint64Array")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/boolean/index.md b/files/fr/web/javascript/reference/global_objects/boolean/index.md index abfa0c874d..970556573d 100644 --- a/files/fr/web/javascript/reference/global_objects/boolean/index.md +++ b/files/fr/web/javascript/reference/global_objects/boolean/index.md @@ -9,30 +9,29 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Boolean original_slug: Web/JavaScript/Reference/Objets_globaux/Boolean --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Boolean est un objet permettant de représenter une valeur booléenne.

    +L'objet **`Boolean`** est un objet permettant de représenter une valeur booléenne. -

    Syntaxe

    +## Syntaxe -
    new Boolean([valeur])
    + new Boolean([valeur]) -

    Paramètres

    +## Paramètres -
    -
    valeur{{optional_inline}}
    -
    Paramètre optionnel, la valeur initiale de l'objet Boolean.
    -
    +- `valeur`{{optional_inline}} + - : Paramètre optionnel, la valeur initiale de l'objet `Boolean`. -

    Description

    +## Description -

    La valeur passée en premier paramètre est, si nécessaire, convertie en valeur booléenne. Si la valeur est omise ou est 0, -0, {{jsxref("null")}}, false, {{jsxref("NaN")}}, {{jsxref("undefined")}} ou une chaine de caractères vide (""), l'objet a un valeur initiale à false (faux). Si l'objet DOM {{domxref("document.all")}} est passé en argument, la valeur initiale sera également false. Toutes les autres valeurs, y compris n'importe quel objet, un tableau vide ([]), ou une chaine de caractères "false", créént un objet avec une valeur initiale à true (vrai).

    +La valeur passée en premier paramètre est, si nécessaire, convertie en valeur booléenne. Si la valeur est omise ou est `0`, `-0`, {{jsxref("null")}}, `false`, {{jsxref("NaN")}}, {{jsxref("undefined")}} ou une chaine de caractères vide (""), l'objet a un valeur initiale à `false` (faux). Si l'objet DOM {{domxref("document.all")}} est passé en argument, la valeur initiale sera également `false`. Toutes les autres valeurs, y compris n'importe quel objet, un tableau vide (`[]`), ou une chaine de caractères `"false"`, créént un objet avec une valeur initiale à `true` (vrai). -

    Ne pas confondre les valeurs primitives booléennes true et false avec les valeurs true et false d'un objet Booléen.

    +Ne pas confondre les valeurs primitives booléennes `true` et `false` avec les valeurs _true_ et _false_ d'un objet Booléen. -

    Tout objet dont la valeur n'est ni  undefined ni null, incluant un objet Booléen dont la valeur est fausse, évalue à true lorsqu'il est à une instruction conditionnelle. Par exemple, la condition (voir {{jsxref("Instructions/if...else", "if")}}), dans le code suivant, est validée si l'expression est évaluée à true :

    +Tout objet dont la valeur n'est ni  `undefined` ni `null`, incluant un objet Booléen dont la valeur est fausse, évalue à `true` lorsqu'il est à une instruction conditionnelle. Par exemple, la condition (voir {{jsxref("Instructions/if...else", "if")}}), dans le code suivant, est validée si l'expression est évaluée à `true` : -
    var x = new Boolean("false");
    +```js
    +var x = new Boolean("false");
     if (x) {
       // . . . le code est exécuté
     }
    @@ -41,123 +40,99 @@ var y = new Boolean(false);
     if (y) {
       // ce code est également exécuté
     }
    -
    +``` -

    Ce comportement ne s'applique pas aux valeurs primitives booléennes. Par exemple, la condition, dans le code suivant, est évaluée à false :

    +Ce comportement ne s'applique pas aux valeurs primitives booléennes. Par exemple, la condition, dans le code suivant, est évaluée à `false` : -
    var x = false;
    +```js
    +var x = false;
     if (x) {
       // . . . le code n'est pas exécuté
     }
    -
    +``` -

    Ne pas utiliser un objet Boolean pour convertir une valeur non-booléenne en une valeur booléenne. Utilisez plutot une fonction booléenne pour effectuer cette tâche :

    +Ne pas utiliser un objet `Boolean` pour convertir une valeur non-booléenne en une valeur booléenne. Utilisez plutot une fonction booléenne pour effectuer cette tâche : -
    var x = Boolean(expression);     // conseillé
    +```js
    +var x = Boolean(expression);     // conseillé
     var y = new Boolean(expression); // à ne pas utiliser
    -
    +``` -

    Si vous spécifiez un objet quelconque, incluant un objet booléen qui a une valeur fausse, le nouvel objet Boolean a une valeur vraie.

    +Si vous spécifiez un objet quelconque, incluant un objet booléen qui a une valeur fausse, le nouvel objet `Boolean` a une valeur vraie. -
    var myFalse = new Boolean(false);   // valeur initiale à false
    +```js
    +var myFalse = new Boolean(false);   // valeur initiale à false
     var g = Boolean(myFalse);       // valeur initiale à true
     var myString = new String("Hello"); // un object String
     var s = Boolean(myString);      // valeur initiale à true
    -
    +``` -

    Ne pas utiliser un objet Booléen à la place d'une valeur primitive booléenne.

    +Ne pas utiliser un objet Booléen à la place d'une valeur primitive booléenne. -
    -

    Note : Lorsque la propriété historique, non-standard, document.all est utilisée comme argument, le constructeur Boolean renvoie un objet booléen faux. Cette propriété étant non-standard, son utilisation est déconseillée.

    -
    +> **Note :** Lorsque la propriété historique, non-standard, [`document.all`](/fr/docs/Web/API/Document#Properties) est utilisée comme argument, le constructeur `Boolean` renvoie un objet booléen faux. Cette propriété étant non-standard, son utilisation est déconseillée. -

    Propriétés

    +## Propriétés -
    -
    Boolean.length
    -
    Renvoie 1. Le nombre d'arguments pris en charge par le constructeur.
    -
    {{jsxref("Boolean.prototype")}}
    -
    Représente le prototype du constructeur Boolean.
    -
    +- `Boolean.length` + - : Renvoie 1. Le nombre d'arguments pris en charge par le constructeur. +- {{jsxref("Boolean.prototype")}} + - : Représente le prototype du constructeur `Boolean`. -

    Méthodes

    +## Méthodes -

    L'objet global Boolean ne contient pas ses propres méthodes, cependant, il hérite de certaines méthodes à travers la chaine de prototypes.

    +L'objet global `Boolean` ne contient pas ses propres méthodes, cependant, il hérite de certaines méthodes à travers la chaine de prototypes. -

    Instances de Boolean

    +## Instances de `Boolean` -

    Toutes les Boolean héritent de {{jsxref("Boolean.prototype")}}. Comme avec tous les constructeurs, l'objet prototype dicte les propriétés et les méthodes héritées par les instances.

    +Toutes les `Boolean` héritent de {{jsxref("Boolean.prototype")}}. Comme avec tous les constructeurs, l'objet prototype dicte les propriétés et les méthodes héritées par les instances. -

    Propriétés

    +### Propriétés -

    {{page('fr/docs/JavaScript/Reference/Objets_globaux/Boolean/prototype','Propri.C3.A9t.C3.A9s')}}

    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/Boolean/prototype','Propri.C3.A9t.C3.A9s')}} -

    Méthodes

    +### Méthodes -

    {{page('fr/docs/JavaScript/Reference/Objets_globaux/Boolean/prototype','M.C3.A9thodes')}}

    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/Boolean/prototype','M.C3.A9thodes')}} -

    Exemples

    +## Exemples -

    Création d'objets Boolean avec une valeur initiale à faux

    +### Création d'objets `Boolean` avec une valeur initiale à faux -
    var bNoParam = new Boolean();
    +```js
    +var bNoParam = new Boolean();
     var bZero = new Boolean(0);
     var bNull = new Boolean(null);
     var bEmptyString = new Boolean("");
     var bfalse = new Boolean(false);
    -
    +``` -

    Création d'objets Boolean avec une valeur initiale à vrai

    +### Création d'objets `Boolean` avec une valeur initiale à vrai -
    var btrue = new Boolean(true);
    +```js
    +var btrue = new Boolean(true);
     var btrueString = new Boolean("true");
     var bfalseString = new Boolean("false");
     var bArrayProto = new Boolean([]);
     var bObjProto = new Boolean({});
     var bSuLin = new Boolean("Su Lin");
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.6', 'Boolean')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-boolean-objects', 'Boolean')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-boolean-objects', 'Boolean')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Boolean")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.6', 'Boolean')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-boolean-objects', 'Boolean')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-boolean-objects', 'Boolean')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Boolean")}} + +## Voir aussi + +- {{jsxref("Boolean.prototype")}} +- [Les valeurs primitives en JavaScript](/fr/docs/Web/JavaScript/Structures_de_données#Les_valeurs_primitives) +- {{Glossary("Boolean","booléen")}} +- [Le type de données booléen (Wikipédia)](https://fr.wikipedia.org/wiki/Bool%C3%A9en) diff --git a/files/fr/web/javascript/reference/global_objects/boolean/tosource/index.md b/files/fr/web/javascript/reference/global_objects/boolean/tosource/index.md index c194c56ae6..df7e12c637 100644 --- a/files/fr/web/javascript/reference/global_objects/boolean/tosource/index.md +++ b/files/fr/web/javascript/reference/global_objects/boolean/tosource/index.md @@ -11,46 +11,43 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource original_slug: Web/JavaScript/Reference/Objets_globaux/Boolean/toSource --- -
    {{JSRef}} {{Non-standard_header}}
    +{{JSRef}} {{Non-standard_header}} -

    La méthode toSource() renvoie une chaine de caractères représentant le code source de l'objet.

    +La méthode **`toSource()`** renvoie une chaine de caractères représentant le code source de l'objet. -

    Syntaxe

    +## Syntaxe -
    booleanObj.toSource()
    -Boolean.toSource()
    + booleanObj.toSource() + Boolean.toSource() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant le code source de l'objet.

    +Une chaîne de caractères représentant le code source de l'objet. -

    Description

    +## Description -

    La méthode toSource renvoie les valeurs suivantes :

    +La méthode `toSource` renvoie les valeurs suivantes : -
      -
    • Pour l'objet natif {{jsxref("Boolean")}} object, toSource renvoie la chaîne de caractères suivantes qui indique que le code source n'est pas disponible : +- Pour l'objet natif {{jsxref("Boolean")}} object, `toSource` renvoie la chaîne de caractères suivantes qui indique que le code source n'est pas disponible : -
      function Boolean() {
      -    [native code]
      -}
      -
      -
    • -
    • Pour les instances de {{jsxref("Boolean")}}, toSource renvoie une chaîne explicitant le code source de l'objet.
    • -
    + ```js + function Boolean() { + [native code] + } + ``` -

    Cette méthode est généralement utilisée de façon interne par le moteur JavaScript et n'est pas appelée explicitement dans des scripts.

    +- Pour les instances de {{jsxref("Boolean")}}, `toSource` renvoie une chaîne explicitant le code source de l'objet. -

    Spécifications

    +Cette méthode est généralement utilisée de façon interne par le moteur JavaScript et n'est pas appelée explicitement dans des scripts. -

    Ne fait partie d'aucun standard. Implémentée avec JavaScript 1.3.

    +## Spécifications -

    Compatibilité des navigateurs

    +Ne fait partie d'aucun standard. Implémentée avec JavaScript 1.3. -

    {{Compat("javascript.builtins.Boolean.toSource")}}

    +## Compatibilité des navigateurs -

    Voir aussi

    +{{Compat("javascript.builtins.Boolean.toSource")}} -
      -
    • {{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
    • -
    +## Voir aussi + +- {{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/boolean/tostring/index.md b/files/fr/web/javascript/reference/global_objects/boolean/tostring/index.md index aedf9e0b00..d3c00ab270 100644 --- a/files/fr/web/javascript/reference/global_objects/boolean/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/boolean/tostring/index.md @@ -10,76 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Boolean/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toString() renvoie une chaine de caractères correspondant à l'objet Boolean courant.

    +La méthode **`toString()`** renvoie une chaine de caractères correspondant à l'objet `Boolean` courant. -
    {{EmbedInteractiveExample("pages/js/boolean-tostring.html")}}
    +{{EmbedInteractiveExample("pages/js/boolean-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    bool.toString()
    + bool.toString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente l'objet {{jsxref("Boolean")}}.

    +Une chaîne de caractères qui représente l'objet {{jsxref("Boolean")}}. -

    Description

    +## Description -

    L'objet {{jsxref("Boolean")}} surcharge la méthode toString() de l'objet {{jsxref("Object")}} ; il n'hérite pas de la méthode {{jsxref("Object.prototype.toString()")}}. Pour les objets de type Boolean, la méthode toString() renvoie une chaine de caractère representative de l'objet.

    +L'objet {{jsxref("Boolean")}} surcharge la méthode `toString()` de l'objet {{jsxref("Object")}} ; il n'hérite pas de la méthode {{jsxref("Object.prototype.toString()")}}. Pour les objets de type `Boolean`, la méthode `toString()` renvoie une chaine de caractère representative de l'objet. -

    La méthode toString() est automatiquement appelée quand le Boolean doit être representé comme une texte ou lorsque qu'il est concaténé avec une chaine de caractères.

    +La méthode `toString()` est automatiquement appelée quand le `Boolean` doit être representé comme une texte ou lorsque qu'il est concaténé avec une chaine de caractères. -

    Pour les objets de type Boolean , la fonction native toString() renvoie la chaine de caractère "true" ou "false" en fonction de la valeur de l'objet.

    +Pour les objets de type `Boolean` , la fonction native `toString()` renvoie la chaine de caractère "`true`" ou "`false`" en fonction de la valeur de l'objet. -

    Exemples

    +## Exemples -

    Utiliser toString()

    +### Utiliser `toString()` -

    Dans ce code, flag.toString() renvoie "true" :

    +Dans ce code, `flag.toString()` renvoie "`true`" : -
    var flag = new Boolean(true);
    +```js
    +var flag = new Boolean(true);
     var maVar = flag.toString();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.6.4.2', 'Boolean.prototype.toString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Boolean.toString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Object.prototype.toString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.6.4.2', 'Boolean.prototype.toString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Boolean.toString")}} + +## Voir aussi + +- {{jsxref("Object.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/boolean/valueof/index.md b/files/fr/web/javascript/reference/global_objects/boolean/valueof/index.md index 336b15a0ea..78b325ede5 100644 --- a/files/fr/web/javascript/reference/global_objects/boolean/valueof/index.md +++ b/files/fr/web/javascript/reference/global_objects/boolean/valueof/index.md @@ -10,72 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf original_slug: Web/JavaScript/Reference/Objets_globaux/Boolean/valueOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode valueOf() renvoie la valeur primitive de l'objet {{jsxref("Boolean")}}.

    +La méthode **`valueOf()`** renvoie la valeur primitive de l'objet {{jsxref("Boolean")}}. -
    {{EmbedInteractiveExample("pages/js/boolean-valueof.html")}}
    +{{EmbedInteractiveExample("pages/js/boolean-valueof.html")}} -

    Syntaxe

    +## Syntaxe -
    bool.valueOf()
    + bool.valueOf() -

    Valeur de retour

    +### Valeur de retour -

    La valeur primitive associée à l'objet {{jsxref("Boolean")}}.

    +La valeur primitive associée à l'objet {{jsxref("Boolean")}}. -

    Description

    +## Description -

    La méthode valueOf() de {{jsxref("Boolean")}} renvoie la valeur primitive d'un objet Boolean, ou d'un littéral booléen.

    +La méthode `valueOf()` de {{jsxref("Boolean")}} renvoie la valeur primitive d'un objet `Boolean`, ou d'un littéral booléen. -

    Cette méthode est généralement utilisée de façon interne pas le moteur JavaScript et n'est pas utilisée explicitement dans les scripts.

    +Cette méthode est généralement utilisée de façon interne pas le moteur JavaScript et n'est pas utilisée explicitement dans les scripts. -

    Exemples

    +## Exemples -

    Utiliser valueOf()

    +### Utiliser `valueOf()` -
    var x = new Boolean();
    +```js
    +var x = new Boolean();
     var maVar = x.valueOf()      // assigne false à maVar
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.6.4.3', 'Boolean.prototype.valueOf')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Boolean.valueOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Object.prototype.valueOf()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.6.4.3', 'Boolean.prototype.valueOf')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Boolean.valueOf")}} + +## Voir aussi + +- {{jsxref("Object.prototype.valueOf()")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/buffer/index.md b/files/fr/web/javascript/reference/global_objects/dataview/buffer/index.md index 5e8b762109..879a678bf9 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/buffer/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/buffer/index.md @@ -11,58 +11,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/buffer original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/buffer --- -
    {{JSRef}}
    +{{JSRef}} -

    L'accesseur buffer est une propriété représentant l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} référencé par la vue DataView lors de sa construction.

    +L'accesseur **`buffer`** est une propriété représentant l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} référencé par la vue `DataView` lors de sa construction. -
    {{EmbedInteractiveExample("pages/js/dataview-buffer.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-buffer.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.buffer
    + dataview.buffer -

    Description

    +## Description -

    La propriété buffer est un accesseur/mutateur dont le mutateur correspondant vaut undefined, cela signifie qu'il n'est possible que de lire cette propriété. Sa valeur est établie lors de la construction de l'objet DataView et ne peut pas être modifiée.

    +La propriété `buffer` est un accesseur/mutateur dont le mutateur correspondant vaut `undefined`, cela signifie qu'il n'est possible que de lire cette propriété. Sa valeur est établie lors de la construction de l'objet `DataView` et ne peut pas être modifiée. -

    Exemples

    +## Exemples -

    Utilisation de la propriété buffer

    +### Utilisation de la propriété `buffer` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.buffer; // ArrayBuffer { byteLength: 8 }
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES6', '#sec-get-dataview.prototype.buffer', 'DataView.prototype.buffer')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-dataview.prototype.buffer', 'DataView.prototype.buffer')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-get-dataview.prototype.buffer', 'DataView.prototype.buffer')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-dataview.prototype.buffer', 'DataView.prototype.buffer')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.DataView.buffer")}}

    +{{Compat("javascript.builtins.DataView.buffer")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/bytelength/index.md b/files/fr/web/javascript/reference/global_objects/dataview/bytelength/index.md index 0ee441d0f0..bd25a6f629 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/bytelength/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/bytelength/index.md @@ -11,25 +11,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/byteLength original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/byteLength --- -
    {{JSRef}}
    +{{JSRef}} -

    L'accesseur byteLength est une propriété représentant la longueur, exprimée en octets, de cette vue depuis le début de l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} correspondant.

    +L'accesseur **`byteLength`** est une propriété représentant la longueur, exprimée en octets, de cette vue depuis le début de l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} correspondant. -
    {{EmbedInteractiveExample("pages/js/dataview-bytelength.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-bytelength.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.byteLength
    + dataview.byteLength -

    Description

    +## Description -

    La propriété byteLength est une propriété accesseur/mutateur dont le mutateur vaut  undefined. Cela signifie que cette propriété est en lecture seule. Cette valeur est déterminée lorsque l'objet DataView est construit et ne peut pas être changée. Si DataView ne définit pas de décalage avec byteOffset ou ne spécifie pas byteLength, ce sera la byteLength de l'objet ArrayBuffer ou SharedArrayBuffer référencé qui sera renvoyée.

    +La propriété `byteLength` est une propriété accesseur/mutateur dont le mutateur vaut  `undefined`. Cela signifie que cette propriété est en lecture seule. Cette valeur est déterminée lorsque l'objet `DataView` est construit et ne peut pas être changée. Si `DataView` ne définit pas de décalage avec `byteOffset` ou ne spécifie pas `byteLength`, ce sera la `byteLength` de l'objet `ArrayBuffer` ou `SharedArrayBuffer `référencé qui sera renvoyée. -

    Exemples

    +## Exemples -

    Utilisation de la propriété byteLength

    +### Utilisation de la propriété `byteLength` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.byteLength; // 8 (correspond au byteLength du buffer)
     
    @@ -38,38 +39,21 @@ dataview2.byteLength; // 5 (correspond à la longueur utilisée pour la définit
     
     var dataview3 = new DataView(buffer, 2);
     dataview3.byteLength; // 6 (en raison du décalage (offset) pour la construction du DataView)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES6', '#sec-get-dataview.prototype.bytelength', 'DataView.prototype.byteLength')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-dataview.prototype.bytelength', 'DataView.prototype.byteLength')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.byteLength")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("SharedArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-get-dataview.prototype.bytelength', 'DataView.prototype.byteLength')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-dataview.prototype.bytelength', 'DataView.prototype.byteLength')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.byteLength")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("SharedArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/byteoffset/index.md b/files/fr/web/javascript/reference/global_objects/dataview/byteoffset/index.md index fe99429718..ec2f25d33a 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/byteoffset/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/byteoffset/index.md @@ -11,62 +11,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/byteOffset original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/byteOffset --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété byteOffset est un accesseur représentant le décalage, exprimé en octets, entre la vue et le début de l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} correspondant.

    +La propriété **`byteOffset`** est un accesseur représentant le décalage, exprimé en octets, entre la vue et le début de l'objet {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} correspondant. -
    {{EmbedInteractiveExample("pages/js/dataview-byteoffset.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-byteoffset.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.byteOffset
    + dataview.byteOffset -

    Description

    +## Description -

    La propriété byteOffset est un accesseur/mutateur dont la fonction du mutateur vaut  undefined. Cela signifie que la propriété n'est accesssible qu'en lecture seule. La valeur de la propriété est définie lors de la construction de l'objet DataView et ne peut pas être modifiée.

    +La propriété `byteOffset` est un accesseur/mutateur dont la fonction du mutateur vaut  `undefined`. Cela signifie que la propriété n'est accesssible qu'en lecture seule. La valeur de la propriété est définie lors de la construction de l'objet `DataView` et ne peut pas être modifiée. -

    Exemples

    +## Exemples -

    Utilisation de la propriété byteOffset

    +### Utilisation de la propriété `byteOffset` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.byteOffset; // 0 (aucun décalage)
     
     var dataview2 = new DataView(buffer, 3);
     dataview2.byteOffset; // 3 (décalage défini lors de la construction de la vue)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES6', '#sec-get-dataview.prototype.byteoffset', 'DataView.prototype.byteOffset')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-dataview.prototype.byteoffset', 'DataView.prototype.byteOffset')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.byteOffset")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("SharedArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-get-dataview.prototype.byteoffset', 'DataView.prototype.byteOffset')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-dataview.prototype.byteoffset', 'DataView.prototype.byteOffset')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.byteOffset")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("SharedArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getbigint64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getbigint64/index.md index db4490ac0d..6bdaade750 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getbigint64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getbigint64/index.md @@ -12,74 +12,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getBigInt64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getBigInt64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getBigInt64() permet de lire un entier signé sur 64 bits (type long long par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getBigInt64()`** permet de lire un entier signé sur 64 bits (type _long long_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getbigint64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getbigint64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getBigInt64(positionOctet [, littleEndian])
    + dataview.getBigInt64(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Une valeur {{jsxref("BigInt")}}

    +Une valeur {{jsxref("BigInt")}} -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getBigInt64()

    +### Utilisation de la méthode `getBigInt64()` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getBigInt64(0); // 0n
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour DataView.prototype.getBigInt64()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getBigInt64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------------------------------------------- | ---- | ------------ | +| [Proposition pour `DataView.prototype.getBigInt64()`](https://tc39.github.io/proposal-bigint/#sec-dataview.prototype.getbigint64) | | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getBigInt64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getbiguint64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getbiguint64/index.md index b6fcc2c2ab..115e157fc8 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getbiguint64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getbiguint64/index.md @@ -12,74 +12,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getBigUint64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getBigUint64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getBigUint64() permet de lire un entier non signé sur 64 bits (type unsigned long long par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getBigUint64()`** permet de lire un entier non signé sur 64 bits (type _unsigned long long_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getbiguint64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getbiguint64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getBigUint64(positionOctet [, littleEndian])
    + dataview.getBigUint64(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Une valeur {{jsxref("BigInt")}}

    +Une valeur {{jsxref("BigInt")}} -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getBigUint64()

    +### Utilisation de la méthode `getBigUint64()` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getBigUint64(0); // 0n
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour DataView.prototype.getBigUint64()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getBigUint64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---- | ------------ | +| [Proposition pour `DataView.prototype.getBigUint64()`](https://tc39.es/proposal-bigint/#sec-dataview.prototype.getbiguint64) | | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getBigUint64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getfloat32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getfloat32/index.md index 20fb09388e..94e7f06fba 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getfloat32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getfloat32/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getFloat32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getFloat32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getFloat32() permet de lire un nombre flottant signé sur 32 bits à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getFloat32()`** permet de lire un nombre flottant signé sur 32 bits à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getfloat32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getfloat32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getFloat32(positionOctet [, littleEndian])
    + dataview.getFloat32(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre flottant signé, sur 32 bits.

    +Un nombre flottant signé, sur 32 bits. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getFloat32

    +### Utilisation de la méthode `getFloat32` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getFloat32(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getfloat32', 'DataView.prototype.getFloat32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getfloat32', 'DataView.prototype.getFloat32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getFloat32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getfloat32', 'DataView.prototype.getFloat32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getfloat32', 'DataView.prototype.getFloat32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getFloat32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getfloat64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getfloat64/index.md index ba67808c2d..dc7d43000f 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getfloat64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getfloat64/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getFloat64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getFloat64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getFloat64() permet de lire un entier signé sur 64 bits (type double par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getFloat64()`** permet de lire un entier signé sur 64 bits (type _double_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getfloat64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getfloat64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getFloat64(positionOctet [, littleEndian])
    + dataview.getFloat64(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre flottant signé sur 64 bits.

    +Un nombre flottant signé sur 64 bits. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getFloat64

    +### Utilisation de la méthode `getFloat64` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getFloat64(0); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getfloat64', 'DataView.prototype.getFloat64')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getfloat64', 'DataView.prototype.getFloat64')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getFloat64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getfloat64', 'DataView.prototype.getFloat64')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getfloat64', 'DataView.prototype.getFloat64')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getFloat64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getint16/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getint16/index.md index 07973e9fa7..0d42b98be8 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getint16/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getint16/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt16 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getInt16 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getInt16() permet de lire un entier signé sur 16 bits (type short par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getInt16()`** permet de lire un entier signé sur 16 bits (type _short_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getint16.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getint16.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getInt16(positionOctet [, littleEndian])
    + dataview.getInt16(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 16 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 16 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un entier signé sur 16 bits.

    +Un entier signé sur 16 bits. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getInt16

    +### Utilisation de la méthode `getInt16` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getInt16(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getint16', 'DataView.prototype.getInt16')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getint16', 'DataView.prototype.getInt16')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getInt16")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getint16', 'DataView.prototype.getInt16')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getint16', 'DataView.prototype.getInt16')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getInt16")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getint32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getint32/index.md index 024dea3e3e..c611ff5885 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getint32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getint32/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getInt32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getInt32() permet de lire un entier signé sur 32 bits (type long par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getInt32()`** permet de lire un entier signé sur 32 bits (type _long_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getint32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getint32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getInt32(positionOctet [, littleEndian])
    + dataview.getInt32(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un entier signé sur 32 bits.

    +Un entier signé sur 32 bits. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getInt32

    +### Utilisation de la méthode `getInt32` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getInt32(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getint32', 'DataView.prototype.getInt32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getint32', 'DataView.prototype.getInt32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getInt32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getint32', 'DataView.prototype.getInt32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getint32', 'DataView.prototype.getInt32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getInt32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getint8/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getint8/index.md index 7404ee6626..137c728e37 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getint8/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getint8/index.md @@ -11,81 +11,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt8 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getInt8 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getInt8() permet de lire un entier signé sur 8 bits à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getInt8()`** permet de lire un entier signé sur 8 bits à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getint8.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getint8.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getInt8(positionOctet)
    + dataview.getInt8(positionOctet) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. -

    Valeur de retour

    +### Valeur de retour -

    Un entier signé sur 8 bits.

    +Un entier signé sur 8 bits. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getInt8

    +### Utilisation de la méthode `getInt8` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getInt8(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getint8', 'DataView.prototype.getInt8')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getint8', 'DataView.prototype.getInt8')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getInt8")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getint8', 'DataView.prototype.getInt8')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getint8', 'DataView.prototype.getInt8')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getInt8")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getuint16/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getuint16/index.md index 7f2a5c307a..c3da190fe2 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getuint16/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getuint16/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint16 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getUint16 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUint16() permet de lire un entier non-signé sur 16 bits (type unsigned short par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getUint16()`** permet de lire un entier non-signé sur 16 bits (type _unsigned short_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getuint16.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getuint16.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getUint16(positionOctet [, littleEndian])
    + dataview.getUint16(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 16 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 16 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un entier sur 16 bits non signé.

    +Un entier sur 16 bits non signé. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getUint16

    +### Utilisation de la méthode `getUint16` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getUint16(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getuint16', 'DataView.prototype.getUint16')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getuint16', 'DataView.prototype.getUint16')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getUint16")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getuint16', 'DataView.prototype.getUint16')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getuint16', 'DataView.prototype.getUint16')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getUint16")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getuint32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getuint32/index.md index d01a4a0f87..d45830129d 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getuint32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getuint32/index.md @@ -11,83 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getUint32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUint32() permet de lire un entier non-signé sur 32 bits (type unsigned long par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}.

    +La méthode **`getUint32()`** permet de lire un entier non-signé sur 32 bits (type _unsigned long_ par analogie avec C) à l'octet donné par rapport au début de {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getuint32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getuint32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getUint32(positionOctet [, littleEndian])
    + dataview.getUint32(positionOctet [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    littleEndian
    -
    {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut false ou undefined, la valeur sera lue dans l'ordre des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. +- `littleEndian` + - : {{optional_inline}} indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets {{Glossary("Endianness", "de poids faible")}}. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    Un entier sur 32 bits, non-signé.

    +Un entier sur 32 bits, non-signé. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getUint32()

    +### Utilisation de la méthode `getUint32()` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getUint32(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getuint32', 'DataView.prototype.getUint32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getuint32', 'DataView.prototype.getUint32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getUint32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getuint32', 'DataView.prototype.getUint32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getuint32', 'DataView.prototype.getUint32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getUint32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/getuint8/index.md b/files/fr/web/javascript/reference/global_objects/dataview/getuint8/index.md index a8c94778c7..b49458a38a 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/getuint8/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/getuint8/index.md @@ -11,81 +11,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint8 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/getUint8 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUint8() permet de lire un entier non-signé sur 8 bits à l'octet donné par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`getUint8()`** permet de lire un entier non-signé sur 8 bits à l'octet donné par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-getuint8.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-getuint8.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.getUint8(positionOctet)
    + dataview.getUint8(positionOctet) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données. -

    Valeur de retour

    +### Valeur de retour -

    Un entier sur 8 bits, non-signé.

    +Un entier sur 8 bits, non-signé. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel qu'il est en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue. -

    Description

    +## Description -

    Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

    +Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position. -

    Exemples

    +## Exemples -

    Utilisation de la méthode getUint8

    +### Utilisation de la méthode `getUint8` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.getUint8(1); // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.getuint8', 'DataView.prototype.getUint8')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.getuint8', 'DataView.prototype.getUint8')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.getUint8")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.getuint8', 'DataView.prototype.getUint8')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.getuint8', 'DataView.prototype.getUint8')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.getUint8")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/index.md b/files/fr/web/javascript/reference/global_objects/dataview/index.md index 41edfcb904..d828888f25 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/index.md @@ -10,62 +10,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView original_slug: Web/JavaScript/Reference/Objets_globaux/DataView --- -
    {{JSRef}}
    +{{JSRef}} -

    La vue DataView fournit une interface de bas niveau pour lire et écrire des données de différents types numériques dans un {{jsxref("ArrayBuffer")}}, quel que soit le « boutisme » de la plate-forme.

    +La vue **`DataView`** fournit une interface de bas niveau pour lire et écrire des données de différents types numériques dans un {{jsxref("ArrayBuffer")}}, quel que soit le « [boutisme](https://fr.wikipedia.org/wiki/Endianness) » de la plate-forme. -
    {{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}} -

    Syntaxe

    +## Syntaxe -
    new DataView(buffer [, décalageOctets [, longueurOctets]])
    + new DataView(buffer [, décalageOctets [, longueurOctets]]) -

    Paramètres

    +### Paramètres -
    -
    buffer
    -
    Un {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}}{{experimental_inline}} existant à utiliser pour la mise en mémoire du nouvel objet DataView.
    -
    décalageOctets {{optional_inline}}
    -
    Le décalage, exprimé en octets, pour trouver le premier octet significatif du buffer à représenter dans la vue. Si ce paramètre n'est pas fourni, la vue commencera au premier octet du buffer.
    -
    longueurOctets {{optional_inline}}
    -
    Le nombre d'éléments dans le tableau d'octets. Si ce paramètre n'est pas fourni, la longueur de la vue correspondra à celle du buffer.
    -
    +- `buffer` + - : Un {{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}}{{experimental_inline}} existant à utiliser pour la mise en mémoire du nouvel objet `DataView`. +- `décalageOctets `{{optional_inline}} + - : Le décalage, exprimé en octets, pour trouver le premier octet significatif du buffer à représenter dans la vue. Si ce paramètre n'est pas fourni, la vue commencera au premier octet du buffer. +- `longueurOctets `{{optional_inline}} + - : Le nombre d'éléments dans le tableau d'octets. Si ce paramètre n'est pas fourni, la longueur de la vue correspondra à celle du buffer. -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet DataView représentant le tampon mémoire (buffer) fourni.

    +Un nouvel objet `DataView` représentant le tampon mémoire (_buffer_) fourni. -

    L'objet ainsi renvoyé peut être vu comme un interpréteur du tampon mémoire. Cet objet sait comment convertir des nombres afin de lire ou d'écrire des valeurs dans le tampon. C'est la vue qui s'occupe de la gestion des entiers, de la conversion des flottants, du boutisme utilisé et des autres détails de représentation binaire.

    +L'objet ainsi renvoyé peut être vu comme un interpréteur du tampon mémoire. Cet objet sait comment convertir des nombres afin de lire ou d'écrire des valeurs dans le tampon. C'est la vue qui s'occupe de la gestion des entiers, de la conversion des flottants, du boutisme utilisé et des autres détails de représentation binaire. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si les paramètres décalageOctets et longueurOctets dépassent la fin du buffer fourni.
    -
    +- `{{jsxref("RangeError")}}` + - : Renvoyée si les paramètres `décalageOctets` et `longueurOctets` dépassent la fin du buffer fourni. -

    Ainsi, si la taille du tampon mémoire est de 16 octets, que décalageOctetsvaut 8 et que longueurOctets vaut 10, cette exception est levée car la vue résultante dépassera de deux octets la longueur totale du tampon mémoire.

    +Ainsi, si la taille du tampon mémoire est de 16 octets, que `décalageOctets`vaut 8 et que `longueurOctets` vaut 10, cette exception est levée car la vue résultante dépassera de deux octets la longueur totale du tampon mémoire. -

    Description

    +## Description -

    Le boutisme (endianness)

    +### Le boutisme (_endianness_) -

    En utilisant cet objet, vous pouvez détecter le type d'architecture qui exécute votre script, ce qui peut être utile dans certains cas. Voici un fragment de code pour permettre cette détection. Voir {{Glossary("Endianness")}} pour plus d'informations.

    +En utilisant cet objet, vous pouvez détecter le type d'architecture qui exécute votre script, ce qui peut être utile dans certains cas. Voici un fragment de code pour permettre cette détection. Voir {{Glossary("Endianness")}} pour plus d'informations. -
    var littleEndian = (function() {
    +```js
    +var littleEndian = (function() {
       var buffer = new ArrayBuffer(2);
       new DataView(buffer).setInt16(0, 256, true /*littleEndian donc */);
       // Int16Array utilise le boutisme de la plate-forme
       return new Int16Array(buffer)[0] === 256;
     })();
     console.log(littleEndian); // true ou false
    -
    +``` -

    Gestion des valeurs entières sur 64 bits

    +### Gestion des valeurs entières sur 64 bits -

    JavaScript manipule les nombres comme des valeurs sur 32 bits. Aussi, le moteur ne prend pas en charge la gestion des entiers sur 64 bits et on ne peut donc pas manipuler de telles valeurs avec DataView. Afin de contourner ce problème, on peut implémenter une méthode getUint64() afin d'otbenir une valeur avec une précision allant jusqu'à {{jsxref("Number.MAX_SAFE_INTEGER")}}, ce qui peut être suffisant dans certains cas.

    +JavaScript manipule les nombres comme des valeurs sur 32 bits. Aussi, le moteur ne prend pas en charge la gestion des entiers sur 64 bits et on ne peut donc pas manipuler de telles valeurs avec `DataView`. Afin de contourner ce problème, on peut implémenter une méthode `getUint64()` afin d'otbenir une valeur avec une précision allant jusqu'à {{jsxref("Number.MAX_SAFE_INTEGER")}}, ce qui peut être suffisant dans certains cas. -
    function getUint64(dataview, byteOffset, littleEndian) {
    +```js
    +function getUint64(dataview, byteOffset, littleEndian) {
       // on décompose la valeur 64 sur bits en deux nombres 32 bits
       const gauche = dataview.getUint32(byteOffset, littleEndian);
       const droite = dataview.getUint32(byteOffset + 4, littleEndian);
    @@ -76,11 +74,13 @@ console.log(littleEndian); // true ou false
         console.warn(combinaison, " dépasse MAX_SAFE_INTEGER : perte de précision !");
       }
       return combinaison;
    -}
    +} +``` -

    On peut également créer un objet {{jsxref("BigInt")}} si on veut avoir accès à 64 bits :

    +On peut également créer un objet {{jsxref("BigInt")}} si on veut avoir accès à 64 bits : -
    function getUin64BigInt(dataview, byteOffset, littleEndian) {
    +```js
    +function getUin64BigInt(dataview, byteOffset, littleEndian) {
       const left = dataview.getUint32(byteOffset, littleEndian);
       const right = dataview.getUint32(byteOffset, littleEndian);
     
    @@ -89,75 +89,58 @@ console.log(littleEndian); // true ou false
         left.toString(16) + right.toString(16).padStart(8, '0');
     
       return BigInt(`0x${combined}`);
    -}
    +} +``` -
    -

    Note : Sur le plan des performances, les grands entiers ({{jsxref("BigInt")}} ont une taille variable, aussi leur manipulation sera nécessairement plus lente que celle des nombres stockés sur 32 bits. Ceci étant écrit, les valeurs natives {{jsxref("BigInt")}} seront plus performantes que les implémentations tierces (bibliothèques, etc.).

    -
    +> **Note :** Sur le plan des performances, les grands entiers ({{jsxref("BigInt")}} ont une taille variable, aussi leur manipulation sera nécessairement plus lente que celle des nombres stockés sur 32 bits. Ceci étant écrit, les valeurs natives {{jsxref("BigInt")}} seront plus performantes que les implémentations tierces (bibliothèques, etc.). -

    Propriétés

    +## Propriétés -

    Toutes les instances de DataView héritent de {{jsxref("DataView.prototype")}} qui permet d'ajouter des propriétés à l'ensemble des objets DataView.

    +Toutes les instances de `DataView` héritent de {{jsxref("DataView.prototype")}} qui permet d'ajouter des propriétés à l'ensemble des objets `DataView`. -

    {{page("fr/Web/JavaScript/Reference/Objets_globaux/DataView/prototype","Propriétés")}}

    +{{page("fr/Web/JavaScript/Reference/Objets_globaux/DataView/prototype","Propriétés")}} -

    Méthodes

    +## Méthodes -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/DataView/prototype','Méthodes')}}

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/DataView/prototype','Méthodes')}} -

    Exemples

    +## Exemples -
    var buffer = new ArrayBuffer(16);
    +```js
    +var buffer = new ArrayBuffer(16);
     var dv = new DataView(buffer, 0);
     
     dv.setInt16(1, 42);
     dv.getInt16(1); //42
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée par ECMAScript 6
    {{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ES6')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView")}}

    - -

    Notes de compatibilité

    - -

    A partir de Firefox 40 {{geckoRelease(40)}}, DataView doit êre construit avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Si on invoque DataView() sans utiliser new, cela lèvera une exception {{jsxref("TypeError")}}.

    - -
    var dv = DataView(buffer, 0);
    -// TypeError: calling a builtin DataView constructor without new is forbidden
    - -
    var dv = new DataView(buffer, 0);
    - -

    Voir aussi

    - -
      -
    • jDataView : une bibliothèque JavaScrit qui ajoute des prothèses et des extensions à l'API DataView afin de pouvoir la manipuler au travers des différents navigateurs et de Node.js.
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("SharedArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 6 | +| {{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}} | {{Spec2('ES6')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView")}} + +### Notes de compatibilité + +A partir de Firefox 40 {{geckoRelease(40)}}, `DataView` doit êre construit avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Si on invoque `DataView()` sans utiliser `new`, cela lèvera une exception {{jsxref("TypeError")}}. + +```js example-bad +var dv = DataView(buffer, 0); +// TypeError: calling a builtin DataView constructor without new is forbidden +``` + +```js example-good +var dv = new DataView(buffer, 0); +``` + +## Voir aussi + +- [jDataView](https://github.com/jDataView/jDataView) : une bibliothèque JavaScrit qui ajoute des prothèses et des extensions à l'API `DataView` afin de pouvoir la manipuler au travers des différents navigateurs et de Node.js. +- {{jsxref("ArrayBuffer")}} +- {{jsxref("SharedArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setbigint64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setbigint64/index.md index 5db0110c35..8581c06772 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setbigint64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setbigint64/index.md @@ -11,71 +11,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setBigInt64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setBigInt64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setBigInt64() permet d'enregister un entier signé sur 64 bits (type long long par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setBigInt64()`** permet d'enregister un entier signé sur 64 bits (type _long long_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setbigint64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setbigint64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setBigInt64(positionOctet, value [, littleEndian])
    + dataview.setBigInt64(positionOctet, value [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setBigInt64()

    +### Utilisation de la méthode `setBigInt64()` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setBigInt64(0, 3n);
     dataview.getInt32(0); // 3n
    -
    - -

    Spécifications

    - - - - - - - - - - - - -
    SpécificationÉtat
    Proposition pour DataView.prototype.setBigInt64()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setBigInt64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | +| --------------------------------------------------------------------------------------------------------------------------------- | ---- | +| [Proposition pour `DataView.prototype.setBigInt64()`](https://tc39.github.io/proposal-bigint/#sec-dataview.prototype.setbigint64) | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setBigInt64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setbiguint64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setbiguint64/index.md index b13aaff413..a55fe3d40a 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setbiguint64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setbiguint64/index.md @@ -12,71 +12,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setBigUint64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setBigUint64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setBigUint64() permet d'enregister un entier non-signé sur 64 bits (type unsigned long long par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setBigUint64()`** permet d'enregister un entier non-signé sur 64 bits (type _unsigned long long_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setbiguint64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setbiguint64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setBigUint64(positionOctet, value [, littleEndian])
    + dataview.setBigUint64(positionOctet, value [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en nombre d'octets, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en nombre d'octets, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setBigUint64()

    +### Utilisation de la méthode `setBigUint64()` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setBigUint64(0, 3n);
     dataview.getInt32(0); // 3n
    -
    - -

    Spécifications

    - - - - - - - - - - - - -
    SpécificationÉtat
    Proposition pour DataView.prototype.setBigUint64()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setBigUint64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | +| ----------------------------------------------------------------------------------------------------------------------------------- | ---- | +| [Proposition pour `DataView.prototype.setBigUint64()`](https://tc39.github.io/proposal-bigint/#sec-dataview.prototype.setBigUint64) | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setBigUint64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setfloat32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setfloat32/index.md index a3862d3e4d..2ab89de9f2 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setfloat32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setfloat32/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setFloat32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setFloat32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setFloat32() permet d'enregistrer un nombre flottant signé sur 32 bits (type float par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setFloat32()`** permet d'enregistrer un nombre flottant signé sur 32 bits (type _float_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setfloat32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setfloat32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setFloat32(positionOctet, valeur [, littleEndian])
    + dataview.setFloat32(positionOctet, valeur [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setFloat32

    +### Utilisation de la méthode `setFloat32` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setFloat32(1, 3);
     dataview.getFloat32(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setfloat32', 'DataView.prototype.setFloat32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setfloat32', 'DataView.prototype.setFloat32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setFloat32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setfloat32', 'DataView.prototype.setFloat32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setfloat32', 'DataView.prototype.setFloat32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setFloat32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setfloat64/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setfloat64/index.md index 0b1d62773b..c374e3732b 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setfloat64/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setfloat64/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setFloat64 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setFloat64 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setFloat64() permet d'enregistrer un nombre flottant signé sur 64 bits (type double par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setFloat64()`** permet d'enregistrer un nombre flottant signé sur 64 bits (type _double_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setfloat64.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setfloat64.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setFloat64(positionOctet, value [, littleEndian])
    + dataview.setFloat64(positionOctet, value [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 64 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setFloat64

    +### Utilisation de la méthode `setFloat64` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setFloat64(0, 3);
     dataview.getFloat64(0); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setfloat64', 'DataView.prototype.setFloat64')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setfloat64', 'DataView.prototype.setFloat64')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setFloat64")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setfloat64', 'DataView.prototype.setFloat64')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setfloat64', 'DataView.prototype.setFloat64')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setFloat64")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setint16/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setint16/index.md index b275f78339..60e26fd516 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setint16/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setint16/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt16 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setInt16 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setInt16() permet d'enregister un entier signé sur 16 bits (type short par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setInt16()`** permet d'enregister un entier signé sur 16 bits (type short par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setint16.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setint16.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setInt16(positionOctet, value [, littleEndian])
    + dataview.setInt16(positionOctet, value [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 16 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 16 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setInt16

    +### Utilisation de la méthode `setInt16` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setInt16(1, 3);
     dataview.getInt16(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée par ECMAScript 2015 (ES6).
    {{SpecName('ES2015', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setInt16")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 2015 (ES6). | +| {{SpecName('ES2015', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setInt16")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setint32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setint32/index.md index 21e51b28dd..65e8802da3 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setint32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setint32/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setInt32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setInt32() permet d'enregister un entier signé sur 32 bits (type long par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setInt32()`** permet d'enregister un entier signé sur 32 bits (type _long_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setint32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setint32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setInt32(positionOctet, value [, littleEndian])
    + dataview.setInt32(positionOctet, value [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setInt32

    +### Utilisation de la méthode `setInt32` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setInt32(1, 3);
     dataview.getInt32(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée par ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setint32', 'DataView.prototype.setInt32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setint32', 'DataView.prototype.setInt32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setInt32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setint32', 'DataView.prototype.setInt32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setint32', 'DataView.prototype.setInt32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setInt32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setint8/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setint8/index.md index f088ea3247..80f169d855 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setint8/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setint8/index.md @@ -11,82 +11,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt8 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setInt8 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setInt8() permet d'enregister un entier signé sur 8 bits à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setInt8()`** permet d'enregister un entier signé sur 8 bits à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setint8.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setint8.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setInt8(positionOctet, valeur)
    + dataview.setInt8(positionOctet, valeur) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setInt8

    +### Utilisation de la méthode `setInt8` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setInt8(1, 3);
     dataview.getInt8(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setint8', 'DataView.prototype.setInt8')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setint8', 'DataView.prototype.setInt8')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - - - -

    {{Compat("javascript.builtins.DataView.setInt8")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setint8', 'DataView.prototype.setInt8')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setint8', 'DataView.prototype.setInt8')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setInt8")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setuint16/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setuint16/index.md index 45ce24f36d..350929f26d 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setuint16/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setuint16/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint16 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setUint16 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUint16() permet d'enregister un entier non-signé sur 16 bits (type unsigned short par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setUint16()`** permet d'enregister un entier non-signé sur 16 bits (type _unsigned short_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setuint16.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setuint16.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setUint16(positionOctet, valeur [, littleEndian])
    + dataview.setUint16(positionOctet, valeur [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setUint1

    +### Utilisation de la méthode `setUint1` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setUint16(1, 3);
     dataview.getUint16(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setuint16', 'DataView.prototype.setUint16')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setuint16', 'DataView.prototype.setUint16')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setUint16")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setuint16', 'DataView.prototype.setUint16')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setuint16', 'DataView.prototype.setUint16')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setUint16")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setuint32/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setuint32/index.md index 7c0dc85072..15dc13fe04 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setuint32/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setuint32/index.md @@ -11,82 +11,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint32 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setUint32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUint32() permet d'enregister un entier non-signé sur 32 bits (type unsigned long par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setUint32()`** permet d'enregister un entier non-signé sur 32 bits (type _unsigned long_ par analogie avec C) à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setuint32.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setuint32.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setUint32(positionOctet, valeur [, littleEndian])
    + dataview.setUint32(positionOctet, valeur [, littleEndian]) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer
    -
    littleEndian
    -
    {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut false ou undefined, l'ordre sera celui des octets de poids forts.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer +- `littleEndian` + - : {{optional_inline}} Indique si la donnée sur 32 bits est enregistrée {{Glossary("Endianness", "dans l'ordre des octets de poids faibles")}}. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setUint32

    +### Utilisation de la méthode `setUint32` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setUint32(1, 3);
     dataview.getUint32(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015 (ES6).
    {{SpecName('ES2015', '#sec-dataview.prototype.setuint32', 'DataView.prototype.setUint32')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setuint32', 'DataView.prototype.setUint32')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setUint32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015 (ES6). | +| {{SpecName('ES2015', '#sec-dataview.prototype.setuint32', 'DataView.prototype.setUint32')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setuint32', 'DataView.prototype.setUint32')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setUint32")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/dataview/setuint8/index.md b/files/fr/web/javascript/reference/global_objects/dataview/setuint8/index.md index f53c1a78ce..45c7db8f89 100644 --- a/files/fr/web/javascript/reference/global_objects/dataview/setuint8/index.md +++ b/files/fr/web/javascript/reference/global_objects/dataview/setuint8/index.md @@ -11,80 +11,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint8 original_slug: Web/JavaScript/Reference/Objets_globaux/DataView/setUint8 --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUint8() permet d'enregister un entier non-signé sur 8 bits à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}.

    +La méthode **`setUint8()`** permet d'enregister un entier non-signé sur 8 bits à l'octet indiqué par rapport au début de la {{jsxref("DataView")}}. -
    {{EmbedInteractiveExample("pages/js/dataview-setuint8.html")}}
    +{{EmbedInteractiveExample("pages/js/dataview-setuint8.html")}} -

    Syntaxe

    +## Syntaxe -
    dataview.setUint8(positionOctet, valeur)
    + dataview.setUint8(positionOctet, valeur) -

    Paramètres

    +### Paramètres -
    -
    positionOctet
    -
    La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.
    -
    valeur
    -
    La valeur à enregistrer.
    -
    +- `positionOctet` + - : La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée. +- `valeur` + - : La valeur à enregistrer. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Erreurs renvoyées

    +### Erreurs renvoyées -
    -
    {{jsxref("RangeError")}}
    -
    Renvoyée si positionOctet est tel que l'enregistrement sera fait en dehors de la vue.
    -
    +- {{jsxref("RangeError")}} + - : Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue. -

    Exemples

    +## Exemples -

    Utilisation de la méthode setUint8

    +### Utilisation de la méthode `setUint8` -
    var buffer = new ArrayBuffer(8);
    +```js
    +var buffer = new ArrayBuffer(8);
     var dataview = new DataView(buffer);
     dataview.setUint8(1, 3);
     dataview.getUint8(1); // 3
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#sec-dataview.prototype.setuint8', 'DataView.prototype.setUint8')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA.
    {{SpecName('ESDraft', '#sec-dataview.prototype.setuint8', 'DataView.prototype.setUint8')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.DataView.setUint8")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("ArrayBuffer")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#sec-dataview.prototype.setuint8', 'DataView.prototype.setUint8')}} | {{Spec2('ES2015')}} | Définition initiale au sein d'un standard ECMA. | +| {{SpecName('ESDraft', '#sec-dataview.prototype.setuint8', 'DataView.prototype.setUint8')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.DataView.setUint8")}} + +## Voir aussi + +- {{jsxref("DataView")}} +- {{jsxref("ArrayBuffer")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/@@toprimitive/index.md b/files/fr/web/javascript/reference/global_objects/date/@@toprimitive/index.md index ee85093529..574dd32262 100644 --- a/files/fr/web/javascript/reference/global_objects/date/@@toprimitive/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/@@toprimitive/index.md @@ -10,57 +10,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive original_slug: Web/JavaScript/Reference/Objets_globaux/Date/@@toPrimitive --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode [@@toPrimitive]() permet de convertir un objet Date en une valeur primitive.

    +La méthode **`[@@toPrimitive]()`** permet de convertir un objet `Date` en une valeur primitive. -

    Syntaxe

    +## Syntaxe -
    Date()[Symbol.toPrimitive](hint);
    -
    + Date()[Symbol.toPrimitive](hint); -

    Valeur de retour

    +### Valeur de retour -

    La valeur primitive de l'objet {{jsxref("Date")}}. Selon la valeur de l'argument, la méthode peut renvoyer une chaîne de caractères ou un nombre.

    +La valeur primitive de l'objet {{jsxref("Date")}}. Selon la valeur de l'argument, la méthode peut renvoyer une chaîne de caractères ou un nombre. -

    Description

    +## Description -

    La méthode [@@toPrimitive]() de {{jsxref("Date")}} renvoie une valeur primitive qui est un nombre ou une chaîne de caractère.

    +La méthode `[@@toPrimitive]()` de {{jsxref("Date")}} renvoie une valeur primitive qui est un nombre ou une chaîne de caractère. -

    Si le paramètre hint vaut "string" ou "default", [@@toPrimitive]() tentera d'appeler la méthode {{jsxref("Object.prototype.toString()", "toString")}}, si la propriété toString() n'existe pas, elle tentera alors d'appeler la méthode {{jsxref("Object.prototype.valueOf()", "valueOf")}}, si cette dernière n'existe pas non plus, [@@toPrimitive]() lèvera une exception {{jsxref("TypeError")}}.

    +Si le paramètre `hint` vaut `"string"` ou `"default"`, `[@@toPrimitive]()` tentera d'appeler la méthode {{jsxref("Object.prototype.toString()", "toString")}}, si la propriété `toString()` n'existe pas, elle tentera alors d'appeler la méthode {{jsxref("Object.prototype.valueOf()", "valueOf")}}, si cette dernière n'existe pas non plus, `[@@toPrimitive]()` lèvera une exception {{jsxref("TypeError")}}. -

    Si le paramètre hint vaut "number", [@@toPrimitive]() tentera d'abord un appel à valueOf() puis ensuite un appel à toString().

    +Si le paramètre `hint` vaut `"number"`, `[@@toPrimitive]()` tentera d'abord un appel à `valueOf()` puis ensuite un appel à `toString()`. -

    Le moteur JavaScript appelle la méthode [@@toPrimitive]() afin de convertir un objet en une valeur primitive. Il est rarement nécessaire d'appeler [@@toPrimitive]() explicitement dans son propre code, le moteur JavaScript l'utilisera automatiquement lorsqu'il détectera un objet là où une valeur primitive est attendue.

    +Le moteur JavaScript appelle la méthode `[@@toPrimitive]()` afin de convertir un objet en une valeur primitive. Il est rarement nécessaire d'appeler `[@@toPrimitive]()` explicitement dans son propre code, le moteur JavaScript l'utilisera automatiquement lorsqu'il détectera un objet là où une valeur primitive est attendue. -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date.@@toPrimitive")}}

    +{{Compat("javascript.builtins.Date.@@toPrimitive")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Symbol.toPrimitive")}}
    • -
    +- {{jsxref("Symbol.toPrimitive")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getdate/index.md b/files/fr/web/javascript/reference/global_objects/date/getdate/index.md index 7c87be827c..934bca97de 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getdate/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getdate/index.md @@ -10,76 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getDate --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getDate() retourne le jour du mois pour la date spécifiée d'après l'heure locale.

    +La méthode **`getDate()`** retourne le jour du mois pour la date spécifiée d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-getdate.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getdate.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getDate()
    + dateObj.getDate() -

    Paramètres

    +### Paramètres -

    Aucun.

    +Aucun. -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 1 et 31 correspondant au jour du mois de la date indiquée selon l'heure locale.

    +Un entier entre 1 et 31 correspondant au jour du mois de la date indiquée selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getDate()

    +### Utiliser `getDate()` -

    La seconde instruction ci-dessous affecte la valeur 25 à la variable jour, d'après la valeur de l'objet {{jsxref("Date")}} Noel95.

    +La seconde instruction ci-dessous affecte la valeur 25 à la variable `jour`, d'après la valeur de l'objet {{jsxref("Date")}} `Noel95`. -
    var Noel95 = new Date("December 25, 1995 23:15:00");
    +```js
    +var Noel95 = new Date("December 25, 1995 23:15:00");
     var jour = Noel95.getDate();
     
     console.log(jour); // 25
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}{{Spec2('ESDraft')}} 
    {{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}{{Spec2('ES6')}} 
    {{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getDate")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCDate()")}}
    • -
    • {{jsxref("Date.prototype.getUTCDay()")}}
    • -
    • {{jsxref("Date.prototype.setDate()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getDate")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCDate()")}} +- {{jsxref("Date.prototype.getUTCDay()")}} +- {{jsxref("Date.prototype.setDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getday/index.md b/files/fr/web/javascript/reference/global_objects/date/getday/index.md index 0c4c3d23be..343fc41fcc 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getday/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getday/index.md @@ -10,83 +10,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getDay --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getDay() renvoie le jour de la semaine pour la date spécifiée selon l'heure locale (0 correspondant à dimanche). Pour obtenir le jour du mois, on utilisera {{jsxref("Date.prototype.getDate()")}}.

    +La méthode **`getDay()`** renvoie le jour de la semaine pour la date spécifiée selon l'heure locale (0 correspondant à dimanche). Pour obtenir le jour du mois, on utilisera {{jsxref("Date.prototype.getDate()")}}. -
    {{EmbedInteractiveExample("pages/js/date-getday.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getday.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getDay()
    + dateObj.getDay() -

    Valeur de retour

    +### Valeur de retour -

    Un entier correspondant au jour de la semaine (0 correspondant à dimanche, 1 à lundi, 2 à mardi et ainsi de suite) de la date indiquée selon l'heure locale.

    +Un entier correspondant au jour de la semaine (0 correspondant à dimanche, 1 à lundi, 2 à mardi et ainsi de suite) de la date indiquée selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getDay()

    +### Utiliser `getDay()` -

    La seconde instruction ci-dessous assigne la valeur 1 à jourSemaine, selon la valeur de l'objet Date noel95. Le 25 décembre 1995 est un lundi.

    +La seconde instruction ci-dessous assigne la valeur 1 à `jourSemaine`, selon la valeur de l'objet `Date` `noel95`. Le 25 décembre 1995 est un lundi. -
    var noel95 = new Date("December 25, 1995 23:15:00");
    +```js
    +var noel95 = new Date("December 25, 1995 23:15:00");
     var jourSemaine = noel95.getDay();
     
     console.log(jourSemaine); //1
    -
    - -
    -

    Note : Si besoin, on pourra obtenir le nom complet du jour ("lundi" par exemple) en utilisant la méthode {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} avec un paramètre options. Ce faisant, il est plus simple d'internationaliser un site ou une application :

    - -
    var options = { weekday: 'long'};
    -console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95));
    -// Monday
    -console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95));
    -// Montag
    -
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}{{Spec2('ESDraft')}} 
    {{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}{{Spec2('ES6')}} 
    {{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getDay")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCDate()")}}
    • -
    • {{jsxref("Date.prototype.getUTCDay()")}}
    • -
    • {{jsxref("Date.prototype.setDate()")}}
    • -
    +``` + +> **Note :** Si besoin, on pourra obtenir le nom complet du jour (`"lundi"` par exemple) en utilisant la méthode {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} avec un paramètre `options`. Ce faisant, il est plus simple d'internationaliser un site ou une application : +> +> ```js +> var options = { weekday: 'long'}; +> console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95)); +> // Monday +> console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95)); +> // Montag +> ``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-date.prototype.getday', 'Date.prototype.getDay')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getDay")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCDate()")}} +- {{jsxref("Date.prototype.getUTCDay()")}} +- {{jsxref("Date.prototype.setDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getfullyear/index.md b/files/fr/web/javascript/reference/global_objects/date/getfullyear/index.md index 16d862b7e3..d3cf612ee7 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getfullyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getfullyear/index.md @@ -10,72 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getFullYear --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getFullYear() renvoie l'année de la date renseignée d'après l'heure locale.

    +La méthode **`getFullYear()`** renvoie l'année de la date renseignée d'après l'heure locale. -

    Cette méthode doit être utilisée à la place de {{jsxref("Date.prototype.getYear()", "getYear()")}}.

    +Cette méthode doit être utilisée à la place de {{jsxref("Date.prototype.getYear()", "getYear()")}}. -
    {{EmbedInteractiveExample("pages/js/date-getfullyear.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getfullyear.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getFullYear()
    + dateObj.getFullYear() -

    Valeur de retour

    +### Valeur de retour -

    Un entier correspondant à l'année de la date selon l'heure locale.

    +Un entier correspondant à l'année de la date selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getFullYear()

    +### Utiliser `getFullYear()` -

    L'exemple qui suit assigne la valeur à quatre chiffres de l'année courante à la variable année.

    +L'exemple qui suit assigne la valeur à quatre chiffres de l'année courante à la variable `année`. -
    var aujd = new Date();
    +```js
    +var aujd = new Date();
     var année = aujd.getFullYear();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.10', 'Date.prototype.getFullYear')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getFullYear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setFullYear()")}}
    • -
    • {{jsxref("Date.prototype.getYear()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.10', 'Date.prototype.getFullYear')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getFullYear")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCFullYear()")}} +- {{jsxref("Date.prototype.setFullYear()")}} +- {{jsxref("Date.prototype.getYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/gethours/index.md b/files/fr/web/javascript/reference/global_objects/date/gethours/index.md index b0a5765a38..502652786f 100644 --- a/files/fr/web/javascript/reference/global_objects/date/gethours/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/gethours/index.md @@ -10,71 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getHours --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getHours() renvoie l'heure pour la date renseignée, d'après l'heure locale.

    +La méthode **`getHours()`** renvoie l'heure pour la date renseignée, d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-gethours.html")}}
    +{{EmbedInteractiveExample("pages/js/date-gethours.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getHours()
    + dateObj.getHours() -

    Valeur de retour

    +### Valeur de retour -

    Un entier, compris entre 0 et 23 qui indique l'heure de la date indiquée selon l'heure locale.

    +Un entier, compris entre 0 et 23 qui indique l'heure de la date indiquée selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getHours()

    +### Utiliser `getHours()` -

    La seconde instruction ci-dessous assigne la valeur 23 à la variable heure, selon la valeur de l'objet {{jsxref("Date")}} noel95.

    +La seconde instruction ci-dessous assigne la valeur 23 à la variable `heure`, selon la valeur de l'objet {{jsxref("Date")}} `noel95`. -
    var noel95 = new Date("December 25, 1995 23:15:00");
    +```js
    +var noel95 = new Date("December 25, 1995 23:15:00");
     var heure = noel95.getHours();
     
     console.log(heure); //23
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getHours")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCHours()")}}
    • -
    • {{jsxref("Date.prototype.setHours()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getHours")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCHours()")}} +- {{jsxref("Date.prototype.setHours()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getmilliseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/getmilliseconds/index.md index d2befc401d..5476fccef0 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getmilliseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getmilliseconds/index.md @@ -10,69 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getMilliseconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getMilliseconds() renvoie les millièmes de secondes de la date renseignée d'après l'heure locale.

    +La méthode **`getMilliseconds()`** renvoie les millièmes de secondes de la date renseignée d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-getmilliseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getmilliseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getMilliseconds()
    + dateObj.getMilliseconds() -

    Valeur de retour

    +### Valeur de retour -

    Un nombre entre 0 et 999 indiquant le nombre de millisecondes pour la date indiquée, selon l'heure locale.

    +Un nombre entre 0 et 999 indiquant le nombre de millisecondes pour la date indiquée, selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getMilliseconds()

    +### Utiliser `getMilliseconds()` -

    L'exemple suivant assigne la partie des millièmes de secondes de l'heure courante à la variable ms.

    +L'exemple suivant assigne la partie des millièmes de secondes de l'heure courante à la variable `ms`. -
    var aujd = new Date();
    +```js
    +var aujd = new Date();
     var ms = aujd.getMilliseconds();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.24', 'Date.prototype.getMilliseconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getMilliseconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMilliseconds()")}}
    • -
    • {{jsxref("Date.prototype.setMilliseconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.24', 'Date.prototype.getMilliseconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getMilliseconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMilliseconds()")}} +- {{jsxref("Date.prototype.setMilliseconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getminutes/index.md b/files/fr/web/javascript/reference/global_objects/date/getminutes/index.md index 5a866eef11..f7a9657f90 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getminutes/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getminutes/index.md @@ -10,71 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getMinutes --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getMinutes() renvoie les minutes pour la date renseignée d'après l'heure locale.

    +La méthode **`getMinutes()`** renvoie les minutes pour la date renseignée d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-getminutes.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getminutes.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getMinutes()
    + dateObj.getMinutes() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renvoyée par getMinutes est un entier entre 0 et 59 représentant le nombre de minutes pour la date indiquée, selon l'heure locale.

    +La valeur renvoyée par `getMinutes` est un entier entre 0 et 59 représentant le nombre de minutes pour la date indiquée, selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getMinutes()

    +### Utiliser `getMinutes()` -

    La seconde instruction ci-dessous assigne la valeur 15 à la variable minutes, selon la valeur de l'objet {{jsxref("Date")}} noel95.

    +La seconde instruction ci-dessous assigne la valeur 15 à la variable `minutes`, selon la valeur de l'objet {{jsxref("Date")}} `noel95`. -
    var noel95 = new Date("December 25, 1995 23:15:00");
    +```js
    +var noel95 = new Date("December 25, 1995 23:15:00");
     var minutes = noel95.getMinutes();
     
     console.log(minutes); //15
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.20', 'Date.prototype.getMinutes')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getMinutes")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMinutes()")}}
    • -
    • {{jsxref("Date.prototype.setMinutes()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.20', 'Date.prototype.getMinutes')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getMinutes")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMinutes()")}} +- {{jsxref("Date.prototype.setMinutes()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getmonth/index.md b/files/fr/web/javascript/reference/global_objects/date/getmonth/index.md index e51d1ccb64..2f3cdd1c3f 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getmonth/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getmonth/index.md @@ -10,82 +10,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getMonth --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getMonth() retourne le mois de la date renseignée d'après l'heure locale. La numérotation démarre à 0 (c'est-à-dire que 0 correspond au premier mois de l'année).

    +La méthode **`getMonth()`** retourne le mois de la date renseignée d'après l'heure locale. La numérotation démarre à 0 (c'est-à-dire que 0 correspond au premier mois de l'année). -
    {{EmbedInteractiveExample("pages/js/date-getmonth.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getmonth.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getMonth()
    + dateObj.getMonth() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 11 selon le mois de la date indiquée et d'après l'heure locale (0 correspond à janvier, 1 à février, et ainsi de suite).

    +Un entier entre 0 et 11 selon le mois de la date indiquée et d'après l'heure locale (0 correspond à janvier, 1 à février, et ainsi de suite). -

    Exemples

    +## Exemples -

    Utiliser getMonth()

    +### Utiliser `getMonth()` -

    La seconde instruction ci-dessous assigne la valeur 11 à la variable mois, d'après la valeur de l'objet {{jsxref("Date")}} noel95.

    +La seconde instruction ci-dessous assigne la valeur 11 à la variable `mois`, d'après la valeur de l'objet {{jsxref("Date")}} `noel95`. -
    var noel95 = new Date("December 25, 1995 23:15:00");
    +```js
    +var noel95 = new Date("December 25, 1995 23:15:00");
     var mois = noel95.getMonth();
     
     console.log(mois); //11
    -
    - -
    -

    Note : Si besoin, on pourra récupérer le nom complet du mois ("Janvier" par exemple) en utilisant Intl.DateTimeFormat() avec un paramètre options. En utilisant cette méthode, il est plus simple d'internationaliser le site ou l'application :

    - -
    var options = { month: 'long'};
    -console.log(new Intl.DateTimeFormat('en-US', options).format(noel95));
    -// December
    -console.log(new Intl.DateTimeFormat('de-DE', options).format(noel95));
    -// Dezember
    -
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.12', 'Date.prototype.getMonth')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getMonth")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMonth()")}}
    • -
    • {{jsxref("Date.prototype.setMonth()")}}
    • -
    +``` + +> **Note :** Si besoin, on pourra récupérer le nom complet du mois (`"Janvier"` par exemple) en utilisant [`Intl.DateTimeFormat()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat) avec un paramètre `options`. En utilisant cette méthode, il est plus simple d'internationaliser le site ou l'application : +> +> ```js +> var options = { month: 'long'}; +> console.log(new Intl.DateTimeFormat('en-US', options).format(noel95)); +> // December +> console.log(new Intl.DateTimeFormat('de-DE', options).format(noel95)); +> // Dezember +> ``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.12', 'Date.prototype.getMonth')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getMonth")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMonth()")}} +- {{jsxref("Date.prototype.setMonth()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/getseconds/index.md index 32c91e493c..ddbd49d19a 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getseconds/index.md @@ -10,71 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getSeconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getSeconds() renvoie les secondes pour la date renseignée d'après l'heure locale.

    +La méthode **`getSeconds()`** renvoie les secondes pour la date renseignée d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-getseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getSeconds()
    + dateObj.getSeconds() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renvoyée par getSeconds() est un entier entre 0 et 59 correspondant au nombre de secondes pour la date donnée selon l'heure locale.

    +La valeur renvoyée par `getSeconds()` est un entier entre 0 et 59 correspondant au nombre de secondes pour la date donnée selon l'heure locale. -

    Exemples

    +## Exemples -

    Utiliser getSeconds()

    +### Utiliser `getSeconds()` -

    La seconde instruction ci-dessous assigne la valeur 30 à la variable secondes, selon la valeur de l'objet {{jsxref("Date")}} noel95.

    +La seconde instruction ci-dessous assigne la valeur 30 à la variable `secondes`, selon la valeur de l'objet {{jsxref("Date")}} `noel95`. -
    var noel95 = new Date("December 25, 1995 23:15:30");
    +```js
    +var noel95 = new Date("December 25, 1995 23:15:30");
     var secondes = noel95.getSeconds();
     
     console.log(secondes); //30
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.22', 'Date.prototype.getSeconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getSeconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCSeconds()")}}
    • -
    • {{jsxref("Date.prototype.setSeconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.22', 'Date.prototype.getSeconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getSeconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCSeconds()")}} +- {{jsxref("Date.prototype.setSeconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/gettime/index.md b/files/fr/web/javascript/reference/global_objects/date/gettime/index.md index 86ceaedccd..9c2ac28bca 100644 --- a/files/fr/web/javascript/reference/global_objects/date/gettime/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/gettime/index.md @@ -10,53 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getTime --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getTime() renvoie la valeur numérique correspondant au temps pour la date renseignée, d'après le temps universel (c'est-à-dire relative à UTC, une mesure donnée par getTime() sera indépendante du fuseau horaire sur lequel on se trouve). Cette valeur numérique est le nombre de millisecondes écoulées depuis le premier janvier 1970 à minuit UTC.

    +La méthode **`getTime()`** renvoie la valeur numérique correspondant au temps pour la date renseignée, d'après le temps universel (c'est-à-dire relative à UTC, une mesure donnée par `getTime()` sera indépendante du fuseau horaire sur lequel on se trouve). Cette valeur numérique est le nombre de millisecondes écoulées depuis le premier janvier 1970 à minuit UTC. -

    Vous pouvez utiliser cette méthode pour vous affecter une date et un temps à une autre instance de Date. Cette méthode est fonctionnellement équivalente à la méthode {{jsxref("Date.valueof", "valueOf()")}}.

    +Vous pouvez utiliser cette méthode pour vous affecter une date et un temps à une autre instance de `Date`. Cette méthode est fonctionnellement équivalente à la méthode {{jsxref("Date.valueof", "valueOf()")}}. -
    {{EmbedInteractiveExample("pages/js/date-gettime.html")}}
    +{{EmbedInteractiveExample("pages/js/date-gettime.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getTime()
    + dateObj.getTime() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renvoyée par la méthode getTime() est le nombre de millièmes de secondes entre le 1 janvier 1970 à 00:00:00 UTC et la date indiquée.

    +La valeur renvoyée par la méthode `getTime()` est le nombre de millièmes de secondes entre le 1 janvier 1970 à 00:00:00 UTC et la date indiquée. -

    Exemples

    +## Exemples -

    Utiliser getTime()

    +### Utiliser `getTime()` -

    L'exemple qui suit assigne la valeur de anniversaire à copie :

    +L'exemple qui suit assigne la valeur de `anniversaire` à `copie` : -
    var anniversaire = new Date(1994 , 11, 10); // 10 décembre 1994
    +```js
    +var anniversaire = new Date(1994 , 11, 10); // 10 décembre 1994
     var copie = new Date();
     copie.setTime(anniversaire.getTime());
    -
    +``` -

    Mesurer un temps d'exécution

    +### Mesurer un temps d'exécution -

    Effectuer une soustration entre deux appels à getTime() donne la durée écoulée entre ces appels. On peut donc utiliser cette méthode afin de connaître la durée d'exécution de certaines opérations (voir également la méthode {{jsxref("Date.now()")}} qui peut permettre d'éviter d'instancier des objets intermédiaires).

    +Effectuer une soustration entre deux appels à `getTime()` donne la durée écoulée entre ces appels. On peut donc utiliser cette méthode afin de connaître la durée d'exécution de certaines opérations (voir également la méthode {{jsxref("Date.now()")}} qui peut permettre d'éviter d'instancier des objets intermédiaires). -
    var fin, début;
    +```js
    +var fin, début;
     
     début = new Date();
    -for (var i = 0; i < 1000; i++) {
    +for (var i = 0; i < 1000; i++) {
       Math.sqrt(i);
     }
     fin = new Date();
     
     console.log('Durée de cette opération : ' + (fin.getTime() - début.getTime()) + ' msec');
    -
    +``` -

    Précision temporelle réduite

    +## Précision temporelle réduite -

    Afin de protéger contre les attaques de minutage et d'identification, la précision de new Date().getTime() peut être arrondie en fonction des paramètres du navigateur. Pour Firefox, la préférence privacy.reduceTimerPrecision est activée par défaut et vaut, par défaut 20µs pour Firefox 59 et 2ms pour Firefox 60.

    +Afin de protéger contre les attaques de minutage et d'identification, la précision de `new Date().getTime()` peut être arrondie en fonction des paramètres du navigateur. Pour Firefox, la préférence `privacy.reduceTimerPrecision` est activée par défaut et vaut, par défaut 20µs pour Firefox 59 et 2ms pour Firefox 60. -
    // Précision temporelle réduite (2ms) pour Firefox 60
    +```js
    +// Précision temporelle réduite (2ms) pour Firefox 60
     new Date().getTime();
     // 1519211809934
     // 1519211810362
    @@ -70,50 +73,25 @@ new Date().getTime();
     // 1519129858900
     // 1519129864400
     // ...
    -
    - -

    Pour Firefox, il est également possible d'activer privacy.resistFingerprinting auquel cas la précision sera 100ms ou la valeur de privacy.resistFingerprinting.reduceTimerPrecision.microseconds selon laquelle est plus grande.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.9', 'Date.prototype.getTime')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getTime")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.setTime()")}}
    • -
    • {{jsxref("Date.prototype.valueOf()")}}
    • -
    • {{jsxref("Date.prototype.now()")}}
    • -
    +``` + +Pour Firefox, il est également possible d'activer `privacy.resistFingerprinting` auquel cas la précision sera 100ms ou la valeur de `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` selon laquelle est plus grande. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.9', 'Date.prototype.getTime')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getTime")}} + +## Voir aussi + +- {{jsxref("Date.prototype.setTime()")}} +- {{jsxref("Date.prototype.valueOf()")}} +- {{jsxref("Date.prototype.now()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/gettimezoneoffset/index.md b/files/fr/web/javascript/reference/global_objects/date/gettimezoneoffset/index.md index a4a46512c1..a313ba77c9 100644 --- a/files/fr/web/javascript/reference/global_objects/date/gettimezoneoffset/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/gettimezoneoffset/index.md @@ -10,27 +10,28 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getTimezoneOffset --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getTimezoneOffset() retourne la différence en minutes entre le fuseau horaire UTC, et celui de l'heure locale.

    +La méthode **`getTimezoneOffset()`** retourne la différence en minutes entre le fuseau horaire UTC, et celui de l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-gettimezoneoffset.html")}}
    +{{EmbedInteractiveExample("pages/js/date-gettimezoneoffset.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getTimezoneOffset()
    + dateObj.getTimezoneOffset() -

    Valeur de retour

    +### Valeur de retour -

    La valeur retournée est la différence, exprimée en minutes, entre les fuseaux horaires UTC et celui de l'heure locale. Cette différence est positive si le fuseau horaire local est en retard par rapport à UTC, et négative s'il est en avance.

    +La valeur retournée est la différence, exprimée en minutes, entre les fuseaux horaires UTC et celui de l'heure locale. Cette différence est positive si le fuseau horaire local est en retard par rapport à UTC, et négative s'il est en avance. -

    Par exemple, si votre fuseau horaire est UTC+10 (Australian Eastern Standard Time, Vladivostok, Chamorro), la valeur retournée sera -600. L'heure d'été (DST pour daylight saving time en anglais) empêche cette valeur d'être une constante.

    +Par exemple, si votre fuseau horaire est UTC+10 (Australian Eastern Standard Time, Vladivostok, Chamorro), la valeur retournée sera -600. L'heure d'été (DST pour _daylight saving time_ en anglais) empêche cette valeur d'être une constante. -

    Exemples

    +## Exemples -

    Utiliser getTimezoneOffset()

    +### Utiliser `getTimezoneOffset()` -
    var x = new Date();
    +```js
    +var x = new Date();
     var differenceFuseauxEnHeures = x.getTimezoneOffset() / 60;
     // -2
     
    @@ -40,40 +41,17 @@ var differenceFuseauxEnHeures = x.getTimezoneOffset() / 60;
     // avec 4 (et pas 5)
     var travail = new Date(2017, 4, 1);
     var decalage = travail.getTimezoneOffset() / 60;
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.26', 'Date.prototype.getTimezoneOffset')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.26', 'Date.prototype.getTimezoneOffset')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date.getTimezoneOffset")}}

    +{{Compat("javascript.builtins.Date.getTimezoneOffset")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcdate/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcdate/index.md index 0d4fa90f29..5f062ea4fb 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcdate/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcdate/index.md @@ -10,70 +10,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCDate --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCDate() renvoie le jour du mois pour la date renseignée d'après UTC.

    +La méthode **`getUTCDate()`** renvoie le jour du mois pour la date renseignée d'après UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutcdate.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcdate.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCDate()
    + dateObj.getUTCDate() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renseignée par getUTCDate() est un entier entre 1 et 31 pour le jour du mois de la date indiquée selon le temps universel.

    +La valeur renseignée par `getUTCDate()` est un entier entre 1 et 31 pour le jour du mois de la date indiquée selon le temps universel. -

    Exemples

    +## Exemples -

    Utiliser getUTCDate()

    +### Utiliser `getUTCDate()` -

    L'exemple suivant assigne le jour du mois pour la date actuelle, à la variable jour.

    +L'exemple suivant assigne le jour du mois pour la date actuelle, à la variable `jour`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var jour = aujourdhui.getUTCDate();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.15', 'Date.prototype.getUTCDate')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCDate")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getDate()")}}
    • -
    • {{jsxref("Date.prototype.getUTCDay()")}}
    • -
    • {{jsxref("Date.prototype.setUTCDate()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.15', 'Date.prototype.getUTCDate')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCDate")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getDate()")}} +- {{jsxref("Date.prototype.getUTCDay()")}} +- {{jsxref("Date.prototype.setUTCDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcday/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcday/index.md index db8134b5ce..6fe7f094b9 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcday/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcday/index.md @@ -10,70 +10,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCDay --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCDay() renvoie le jour de la semaine pour la date renseignée d'après UTC. La numérotation commence à 0, et dimanche est considéré comme le premier jour de la semaine.

    +La méthode **`getUTCDay()`** renvoie le jour de la semaine pour la date renseignée d'après UTC. La numérotation commence à 0, et dimanche est considéré comme le premier jour de la semaine. -
    {{EmbedInteractiveExample("pages/js/date-getutcday.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcday.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCDay()
    + dateObj.getUTCDay() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renvoyée par getUTCDay() est un entier correspondant au jour de la semaine de la date indiquée selon le temps universel (0 pour dimanche, 1 pour lundi, 2 pour mardi, et ainsi de suite).

    +La valeur renvoyée par `getUTCDay()` est un entier correspondant au jour de la semaine de la date indiquée selon le temps universel (0 pour dimanche, 1 pour lundi, 2 pour mardi, et ainsi de suite). -

    Exemples

    +## Exemples -

    Utiliser getUTCDay()

    +### Utiliser `getUTCDay()` -

    L'exemple suivant assigne le jour de la semaine de la date actuelle à la variable jourSemaine.

    +L'exemple suivant assigne le jour de la semaine de la date actuelle à la variable `jourSemaine`. -
    var aujourdhui = new Date()
    +```js
    +var aujourdhui = new Date()
     var jourSemaine = aujourdhui.getUTCDay()
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.17', 'Date.prototype.getUTCDay')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCDay")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCDate()")}}
    • -
    • {{jsxref("Date.prototype.getDay()")}}
    • -
    • {{jsxref("Date.prototype.setUTCDate()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.17', 'Date.prototype.getUTCDay')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCDay")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCDate()")}} +- {{jsxref("Date.prototype.getDay()")}} +- {{jsxref("Date.prototype.setUTCDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcfullyear/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcfullyear/index.md index c2c81cc8ab..a481accedf 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcfullyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcfullyear/index.md @@ -10,68 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCFullYear --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCFullYear() renvoie l'année de la date renseignée, d'après UTC.

    +La méthode **`getUTCFullYear()`** renvoie l'année de la date renseignée, d'après UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutcfullyear.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcfullyear.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCFullYear()
    + dateObj.getUTCFullYear() -

    Valeur de retour

    +### Valeur de retour -

    La valeur renvoyée par getUTCFullYear() est un nombre correspondant à l'année de la date indiquée selon le temps universel. Pour les dates entre les années 1000 et 9999, getUTCFullYear() renvoie un nombre à quatre chiffres, par exemple 1995.

    +La valeur renvoyée par ` getUTCFullYear``() ` est un nombre correspondant à l'année de la date indiquée selon le temps universel. Pour les dates entre les années 1000 et 9999, ` getUTCFullYear``() ` renvoie un nombre à quatre chiffres, par exemple 1995. -

    Exemples

    +## Exemples -

    Utiliser getUTCFullYear()

    +### Utiliser `getUTCFullYear()` -

    L'exemple suivant assigne une valeur à 4 chiffres, l'année courante, à la variable annee.

    +L'exemple suivant assigne une valeur à 4 chiffres, l'année courante, à la variable `annee`. -
    var aujourdhui = new Date();
    -var annee = aujourdhui.getUTCFullYear();
    +```js +var aujourdhui = new Date(); +var annee = aujourdhui.getUTCFullYear(); +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.11', 'Date.prototype.getUTCFullYear')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.11', 'Date.prototype.getUTCFullYear')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date.getUTCFullYear")}}

    +{{Compat("javascript.builtins.Date.getUTCFullYear")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Date.prototype.getFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setFullYear()")}}
    • -
    +- {{jsxref("Date.prototype.getFullYear()")}} +- {{jsxref("Date.prototype.setFullYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutchours/index.md b/files/fr/web/javascript/reference/global_objects/date/getutchours/index.md index 225b1d3721..186c88055b 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutchours/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutchours/index.md @@ -10,69 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCHours --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCHours() renvoie les heures de la date renseignée, d'après UTC.

    +La méthode **`getUTCHours()`** renvoie les heures de la date renseignée, d'après UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutchours.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutchours.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCHours()
    + dateObj.getUTCHours() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 23 correspondant à l'heure de la date indiquée selon le temps universel.

    +Un entier entre 0 et 23 correspondant à l'heure de la date indiquée selon le temps universel. -

    Exemples

    +## Exemples -

    Utiliser getUTCHours()

    +### Utiliser `getUTCHours()` -

    L'exemple suivant assigne les heures de la date actuelle à la variable heures.

    +L'exemple suivant assigne les heures de la date actuelle à la variable `heures`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var heures = aujourdhui.getUTCHours();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCHours")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getHours()")}}
    • -
    • {{jsxref("Date.prototype.setUTCHours()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCHours")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getHours()")}} +- {{jsxref("Date.prototype.setUTCHours()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcmilliseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcmilliseconds/index.md index 898edb560b..ba7b30ec9c 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcmilliseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcmilliseconds/index.md @@ -10,73 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCMilliseconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCMilliseconds() renvoie les millièmes de secondes pour la date renseignée selon UTC.

    +La méthode **`getUTCMilliseconds()`** renvoie les millièmes de secondes pour la date renseignée selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutcmilliseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcmilliseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCMilliseconds()
    + dateObj.getUTCMilliseconds() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 999 correspondant au nombre de millisecondes pour la date indiquée, selon le temps universel.

    +Un entier entre 0 et 999 correspondant au nombre de millisecondes pour la date indiquée, selon le temps universel. -
    -

    Note : Le résultat de cette méthode n'est pas le temps "Epoch". Si on veut obtenir le nombre de millisecondes depuis le premier janvier 1970, on utilisera la méthode {{jsxref("Date.prototype.getTime()")}}.

    -
    +> **Note :** Le résultat de cette méthode n'est pas le temps "Epoch". Si on veut obtenir le nombre de millisecondes depuis le premier janvier 1970, on utilisera la méthode {{jsxref("Date.prototype.getTime()")}}. -

    Exemples

    +## Exemples -

    Utiliser getUTCMilliseconds()

    +### Utiliser `getUTCMilliseconds()` -

    L'exemple suivant assigne les millièmes de secondes pour la date actuelle à la variable ms.

    +L'exemple suivant assigne les millièmes de secondes pour la date actuelle à la variable `ms`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var ms = aujourdhui.getUTCMilliseconds();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.25', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCMilliseconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMilliseconds()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMilliseconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.25', 'Date.prototype.getUTCMilliseconds')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCMilliseconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMilliseconds()")}} +- {{jsxref("Date.prototype.setUTCMilliseconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcminutes/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcminutes/index.md index 53b7aec489..5cda61f0a0 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcminutes/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcminutes/index.md @@ -10,69 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCMinutes --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCMinutes() renvoie les minutes de la date renseignée, d'après UTC.

    +La méthode **`getUTCMinutes()`** renvoie les minutes de la date renseignée, d'après UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutcminutes.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcminutes.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCMinutes()
    + dateObj.getUTCMinutes() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 59 correspondant au nombre de minutes pour la date indiquée selon le temps universel.

    +Un entier entre 0 et 59 correspondant au nombre de minutes pour la date indiquée selon le temps universel. -

    Exemples

    +## Exemples -

    Utiliser getUTCMinutes

    +### Utiliser `getUTCMinutes` -

    L'exemple suivant assigne les minutes de la date actuelle à la variable minutes.

    +L'exemple suivant assigne les minutes de la date actuelle à la variable `minutes`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var minutes = aujourdhui.getUTCMinutes();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.21', 'Date.prototype.getUTCMinutes')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCMinutes")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMinutes()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMinutes()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.21', 'Date.prototype.getUTCMinutes')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCMinutes")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMinutes()")}} +- {{jsxref("Date.prototype.setUTCMinutes()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcmonth/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcmonth/index.md index 5f8ce36dca..562f934ba4 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcmonth/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcmonth/index.md @@ -10,69 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCMonth --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCMonth() renvoie le mois de la date renseignée, d'après UTC. La numérotation des mois commence à 0 pour le premier mois de l'année.

    +La méthode **`getUTCMonth()`** renvoie le mois de la date renseignée, d'après UTC. La numérotation des mois commence à 0 pour le premier mois de l'année. -
    {{EmbedInteractiveExample("pages/js/date-getutcmonth.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcmonth.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCMonth()
    + dateObj.getUTCMonth() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 11 correspondant au mois dans l'année de la date indiquée selon le temps universel (0 pour janvier, 1 pour février, 2 pour mars, et ainsi de suite…).

    +Un entier entre 0 et 11 correspondant au mois dans l'année de la date indiquée selon le temps universel (0 pour janvier, 1 pour février, 2 pour mars, et ainsi de suite…). -

    Exemples

    +## Exemples -

    Utiliser getUTCMonth()

    +### Utiliser `getUTCMonth()` -

    L'exemple suivant assigne le mois de la date actuelle à la variable mois.

    +L'exemple suivant assigne le mois de la date actuelle à la variable `mois`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var mois = aujourdhui.getUTCMonth();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.13', 'Date.prototype.getUTCMonth')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCMonth")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMonth()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMonth()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.13', 'Date.prototype.getUTCMonth')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCMonth")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMonth()")}} +- {{jsxref("Date.prototype.setUTCMonth()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getutcseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/getutcseconds/index.md index 8f65ada277..10b092970d 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getutcseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getutcseconds/index.md @@ -10,69 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getUTCSeconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode getUTCSeconds() renvoie les secondes de la date renseignée, d'après UTC.

    +La méthode **`getUTCSeconds()`** renvoie les secondes de la date renseignée, d'après UTC. -
    {{EmbedInteractiveExample("pages/js/date-getutcseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-getutcseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.getUTCSeconds()
    + dateObj.getUTCSeconds() -

    Valeur de retour

    +### Valeur de retour -

    Un entier entre 0 et 59 correspondant au nombre de secondes écoulées pour la date indiquée selon le temps universel.

    +Un entier entre 0 et 59 correspondant au nombre de secondes écoulées pour la date indiquée selon le temps universel. -

    Exemples

    +## Exemples -

    Utiliser getUTCSeconds()

    +### Utiliser `getUTCSeconds()` -

    L'exemple suivant assigne les secondes de la date actuelle à la variable secondes.

    +L'exemple suivant assigne les secondes de la date actuelle à la variable `secondes`. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var secondes = aujourdhui.getUTCSeconds();
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.23', 'Date.prototype.getUTCSeconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getUTCSeconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getSeconds()")}}
    • -
    • {{jsxref("Date.prototype.setUTCSeconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.23', 'Date.prototype.getUTCSeconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getUTCSeconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getSeconds()")}} +- {{jsxref("Date.prototype.setUTCSeconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/getyear/index.md b/files/fr/web/javascript/reference/global_objects/date/getyear/index.md index 438c7107cd..30f96ed639 100644 --- a/files/fr/web/javascript/reference/global_objects/date/getyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/getyear/index.md @@ -11,116 +11,91 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/getYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/getYear --- -
    {{JSRef}} {{Deprecated_header}}
    +{{JSRef}} {{Deprecated_header}} -

    La méthode getYear() renvoie l'année de la date renseignée, d'après l'heure locale. Parce que getYear() ne renvoie pas l'année complète (« bug de l'an 2000 »), cette méthode n'est plus utilisée et doit être remplacée par {{jsxref("Date.getFullYear", "getFullYear")}}.

    +La méthode **`getYear()`** renvoie l'année de la date renseignée, d'après l'heure locale. Parce que `getYear()` ne renvoie pas l'année complète (« bug de l'an 2000 »), cette méthode n'est plus utilisée et doit être remplacée par {{jsxref("Date.getFullYear", "getFullYear")}}. -

    Syntaxe

    +## Syntaxe -
    dateObj.getYear()
    + dateObj.getYear() -

    Valeur de retour

    +### Valeur de retour -

    Un nombre représentant l'année de la date indiquée, selon l'heure locale, auquel on a soustrait 1900.

    +Un nombre représentant l'année de la date indiquée, selon l'heure locale, auquel on a soustrait 1900. -

    Description

    +## Description -

    La méthode getYear() renvoie l'année moins 1900 ; par conséquent :

    +La méthode `getYear()` renvoie l'année moins 1900 ; par conséquent : -
      -
    • Pour les années supérieures ou égales à 2000, la valeur renvoyée par getYear() est supérieure ou égale à 100. Par exemple, si l'année est 2026, getYear() renvoie 126.
    • -
    • Pour les années entre 1900 et 1999 incluses, la valeur renvoyée par getYear() est comprise entre 0 et 99. Par exemple, si l'année est 1976, getYear() renvoie 76.
    • -
    • Pour les années inférieures à 1900, la valeur renvoyée par getYear() est négative. Par exemple, si l'année est 1800, getYear() renvoie -100.
    • -
    +- Pour les années supérieures ou égales à 2000, la valeur renvoyée par `getYear()` est supérieure ou égale à 100. Par exemple, si l'année est 2026, `getYear()` renvoie 126. +- Pour les années entre 1900 et 1999 incluses, la valeur renvoyée par `getYear()` est comprise entre 0 et 99. Par exemple, si l'année est 1976, `getYear()` renvoie 76. +- Pour les années inférieures à 1900, la valeur renvoyée par `getYear()` est négative. Par exemple, si l'année est 1800, `getYear()` renvoie -100. -

    Pour prendre en compte les années avant et après 2000, il vaut mieux utiliser {{jsxref("Date.getFullYear", "getFullYear()")}} au lieu de getYear afin que l'année soit spécifiée en entier.

    +Pour prendre en compte les années avant et après 2000, il vaut mieux utiliser {{jsxref("Date.getFullYear", "getFullYear()")}} au lieu de `getYear` afin que l'année soit spécifiée en entier. -

    Rétrocompatibilité

    +## Rétrocompatibilité -

    Comportement dans JavaScript 1.2 et versions antérieures

    +### Comportement dans JavaScript 1.2 et versions antérieures -

    La méthode getYear() renvoyait soit une année en deux chiffres, soit une année en quatre chiffres :

    +La méthode `getYear()` renvoyait soit une année en deux chiffres, soit une année en quatre chiffres : -
      -
    • Pour les années entre 1900 et 1999 incluses, la valeur renvoyée par getYear() était l'année moins 1900. Par exemple, si l'année était 1976, la valeur renvoyée était 76.
    • -
    • Pour les années inférieures à 1900 ou supérieures à 1999, la valeur renvoyée par getYear était l'année en quatre chiffres. Par exemple, si l'année était 1856, la valeur renvoyée était 1856. Si l'année était 2026, la valeur renvoyée était 2026.
    • -
    +- Pour les années entre 1900 et 1999 incluses, la valeur renvoyée par `getYear()` était l'année moins 1900. Par exemple, si l'année était 1976, la valeur renvoyée était 76. +- Pour les années inférieures à 1900 ou supérieures à 1999, la valeur renvoyée par `getYear` était l'année en quatre chiffres. Par exemple, si l'année était 1856, la valeur renvoyée était 1856. Si l'année était 2026, la valeur renvoyée était 2026. -

    Exemples

    +## Exemples -

    Années entre 1900 et 1999

    +### Années entre 1900 et 1999 -

    La seconde instruction assigne la valeur 95 à la variable annee.

    +La seconde instruction assigne la valeur 95 à la variable `annee`. -
    var noel = new Date("December 25, 1995 23:15:00");
    +```js
    +var noel = new Date("December 25, 1995 23:15:00");
     var annee = noel.getYear(); // renvoie 95
    -
    +``` -

    Années après 1999

    +### Années après 1999 -

    La seconde instruction assigne la valeur 100 à la variable annee.

    +La seconde instruction assigne la valeur 100 à la variable `annee`. -
    var noel = new Date("December 25, 2000 23:15:00");
    +```js
    +var noel = new Date("December 25, 2000 23:15:00");
     var annee = noel.getYear(); // renvoie 100
    -
    +``` -

    Années avant 1900

    +### Années avant 1900 -

    La seconde instruction assigne la valeur -100 à la variable annee.

    +La seconde instruction assigne la valeur -100 à la variable `annee`. -
    var noel = new Date("December 25, 1800 23:15:00");
    +```js
    +var noel = new Date("December 25, 1800 23:15:00");
     var annee = noel.getYear(); // renvoie -100
    -
    +``` -

    Définition et lecture d'une année entre 1900 et 1999

    +### Définition et lecture d'une année entre 1900 et 1999 -

    La troisième instruction assigne la valeur 95 à la variable annee, représentant l'année 1995.

    +La troisième instruction assigne la valeur 95 à la variable `annee`, représentant l'année 1995. -
    var noel = new Date("December 25, 1800 23:15:00");
    +```js
    +var noel = new Date("December 25, 1800 23:15:00");
     var noel.setYear(95);
     var annee = noel.getYear(); // renvoie 95
    -
    - -

    Specifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-B.2.4', 'Date.prototype.getYear')}}{{Spec2('ES5.1')}}Défini dans l'annexe informative sur la compatibilité.
    {{SpecName('ES6', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}{{Spec2('ES6')}}Défini dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web.
    {{SpecName('ESDraft', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.getYear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getFullYear()")}}
    • -
    • {{jsxref("Date.prototype.getUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setYear()")}}
    • -
    +``` + +## Specifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------------------ | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-B.2.4', 'Date.prototype.getYear')}} | {{Spec2('ES5.1')}} | Défini dans l'annexe informative sur la compatibilité. | +| {{SpecName('ES6', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}} | {{Spec2('ES6')}} | Défini dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web. | +| {{SpecName('ESDraft', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.getYear")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getFullYear()")}} +- {{jsxref("Date.prototype.getUTCFullYear()")}} +- {{jsxref("Date.prototype.setYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/index.md b/files/fr/web/javascript/reference/global_objects/date/index.md index d2ea76a64e..d5ed46eb1a 100644 --- a/files/fr/web/javascript/reference/global_objects/date/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/index.md @@ -8,205 +8,201 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date original_slug: Web/JavaScript/Reference/Objets_globaux/Date --- -
    {{JSRef}}
    - -

    Les objets JavaScript Date représentent un instant donné sur l'axe du temps dans un format indépendant de la plateforme utilisée. Les objets Date contiennent un nombre (Number) qui représente le nombre de millisecondes écoulées depuis le premier janvier 1970 sur l'échelle UTC.

    - -

    Note : TC39 travaille actuellement sur Temporal, une nouvelle API pour la gestion des dates, heures et données temporelles.
    - Pour en savoir plus, consultez le blog d'Igalia et n'hésitez pas à répondre au sondage. Les retours concrets de développeurs web sont importants pour affiner cette API. Attention, elle n'est pas encore prête à être utilisée en production !

    -
    - -

    Description

    - -

    L'epoch ECMAScript

    - -

    D'un point de vue technique, une date JavaScript correspond au nombre de millisecondes écoulées depuis le premier janvier 1970, minuit UTC. Cette date et cette heure sont les mêmes que l'epoch UNIX, qui est l'instant de référence principalement utilisé pour manipuler les dates/heures dans les systèmes informatiques.

    - -

    Note : Bien que les valeurs temporelles des objets dates soient relatives à UTC, certaines des méthodes simples pour obtenir les composantes d'une date/heure fonctionnent relativement au fuseau horaire du système.

    - -

    On notera également que la représentation maximale d'un objet Date n'est pas la même que le plus grand entier représentable en JavaScript (Number.MAX_SAFE_INTEGER vaut 9,007,199,254,740,991). En effet, ECMA-262 définit un maximum de ±100 000 000 (cent millions) jours relatifs au premier janvier 1970 UTC (ce qui correspond au 20 avril 271 821 avant notre ètre d'une part et au 13 septembre 275 760 de notre ère) pouvant être représentés par un objet Date standard (soit un intervalle de ±8 640 000 000 000 000 millisecondes).

    - -

    Les formats de date et les conversions entre les fuseaux horaires

    - -

    Il existe différentes méthodes pour obtenir une date sous différents formats ou effectuer une conversion entre différents fuseaux. On distingue notamment les fonctions qui manipulent les dates relativement au temps universal coordonné (UTC). Le temps local est celui utilisé par l'appareil de l'utilisateur.

    - -

    Ainsi, on dispose de méthodes permettant d'obtenir ou de définir les différentes composantes d'une date selon le temps local (ex. {{jsxref("Date.getDay", "getDay()")}}, {{jsxref("Date.setHours", "setHours()")}}) et de méthodes équivalentes pour la manipulation en UTC (ex. {{jsxref("Date.getUTCDay()", "getUTCDay()")}} et {{jsxref("Date.setUTCHours", "setUTCHours()")}} respectivement).

    - -

    Constructeur

    - -
    -
    {{jsxref("Date/Date", "Date()")}}
    -
    Cette fonction permet de créer un nouvel objet Date.
    -
    - -

    Méthodes statiques

    - -
    -
    {{jsxref("Date.now()")}}
    -
    Renvoie la valeur numérique correspondant au moment présent sous la forme du nombre de millisecondes écoulées depuis le premier janvier 1970 00:00:00 UTC (les secondes intercalaires (leap seconds) sont ignorées).
    -
    {{jsxref("Date.parse()")}}
    -
    Analyse la représentation textuelle d'une date et renvoie le nombre de millisecondes écoulées entre cette date et le premier janvier 1970, 00:00:00 UTC (les secondes intercalaires (leap seconds) sont ignorées). -
    -

    Note : L'analyse de chaînes de caractères à l'aide de Date.parse est fortement déconseillée en raison des incohérences qui existent entre les navigateurs.

    -
    -
    -
    {{jsxref("Date.UTC()")}}
    -
    Accepte les mêmes paramètres que la forme longue du constructeur (c'est-à-dire entre 2 et 7) et renvoie le nombre de millisecondes entre cette date et le premier janvier 1970, 00:00:00 UTC (les secondes intercalaires (leap seconds) sont ignorées).
    -
    - -

    Méthodes des instances

    - -
    -
    {{jsxref("Date.prototype.getDate()")}}
    -
    Renvoie le jour du mois (entre 1 et 31) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getDay()")}}
    -
    Renvoie le jour de la semaine (entre 0 et 6) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getFullYear()")}}
    -
    Renvoie l'année (sans chiffre implicite, 1999 sera renvoyé et pas 99 par exemple) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getHours()")}}
    -
    Renvoie l'heure (entre 0 et 23) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getMilliseconds()")}}
    -
    Renvoie les millisecondes (entre 0 et 999) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getMinutes()")}}
    -
    Renvoie les minutes (entre 0 et 59) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getMonth()")}}
    -
    Renvoie le mois (entre 0 et 11) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getSeconds()")}}
    -
    Renvoie les secondes (entre 0 et 59) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.getTime()")}}
    -
    Renvoie la valeur numérique de la date donnée, exprimée en nombre de millisecondes écoulées depuis le premier janvier 1970, 00:00:00 UTC (pour les temps antérieurs, ce sont des valeurs négatives qui seront renvoyées).
    -
    {{jsxref("Date.prototype.getTimezoneOffset()")}}
    -
    Renvoie le décalage horaire, exprimé en minutes, pour la locale courante.
    -
    {{jsxref("Date.prototype.getUTCDate()")}}
    -
    Renvoie le jour du mois (entre 1 et 31) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCDay()")}}
    -
    Renvoie le jour de la semaine (entre 0 et 6) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCFullYear()")}}
    -
    Renvoie l'année (sans chiffre implicite, 1999 sera renvoyé plutôt que 99) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCHours()")}}
    -
    Renvoie l'heure (entre 0 et 23) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCMilliseconds()")}}
    -
    Renvoie les millisecondes (entre 0 et 999) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCMinutes()")}}
    -
    Renvoie les minutes (entre 0 et 59) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCMonth()")}}
    -
    Renvoie le mois (entre 0 et 11) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getUTCSeconds()")}}
    -
    Renvoie les secondes (entre 0 et 59) pour la date donnée, selon le temps universel.
    -
    {{jsxref("Date.prototype.getYear()")}}
    -
    Renvoie l'année (généralement exprimée sur 2 ou 3 chiffres) pour la date donnée selon le temps local. On utilisera plutôt {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}.
    -
    {{jsxref("Date.prototype.setDate()")}}
    -
    Définit le jour du mois pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setFullYear()")}}
    -
    Définit l'année (sans chiffre implicite, on utilisera 1999 et pas 99) pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setHours()")}}
    -
    Définit les heures pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setMilliseconds()")}}
    -
    Définit les millisecondes pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setMinutes()")}}
    -
    Définit les minutes pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setMonth()")}}
    -
    Définit le mois pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setSeconds()")}}
    -
    Définit les secondes pour la date donnée, selon le temps local.
    -
    {{jsxref("Date.prototype.setTime()")}}
    -
    Définit le nombre de millisecondes écoulées depuis le premier janvier 1970, 00:00:00 UTC et la date donnée. On utilisera des nombres négatifs pour les moments antérieurs à cette date.
    -
    {{jsxref("Date.prototype.setUTCDate()")}}
    -
    Définit le jour du mois pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCFullYear()")}}
    -
    Définit l'année (exprimée sans chiffres implicites, ex. 1999 et pas 99) pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCHours()")}}
    -
    Définit l'heure pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCMilliseconds()")}}
    -
    Définit les millisecondes pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCMinutes()")}}
    -
    Définit les minutes pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCMonth()")}}
    -
    Définit le mois pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setUTCSeconds()")}}
    -
    Définit les secondes pour la date donnée selon le temps universel.
    -
    {{jsxref("Date.prototype.setYear()")}}
    -
    Définit l'année (avec 2 à 3 chiffres) pour la date courante selon le temps local. On privilégiera la méthode {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}} à la place.
    -
    {{jsxref("Date.prototype.toDateString()")}}
    -
    Renvoie la partie "date" (jour, mois, année) de l'objet {{jsxref("Date")}} en une chaîne de caractères compréhensible par un humain (anglophone) (ex. 'Thu Apr 12 2018').
    -
    {{jsxref("Date.prototype.toISOString()")}}
    -
    Convertit une date en une chaîne de caractères selon le format ISO 8601 Étendu.
    -
    {{jsxref("Date.prototype.toJSON()")}}
    -
    Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} avec {{jsxref("Date.prototype.toISOString()", "toISOString()")}}. Cette méthode est utilisée par {{jsxref("JSON.stringify()")}}.
    -
    {{jsxref("Date.prototype.toGMTString()")}}
    -
    Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} d'après le fuseau GMT (UTC). On utilisera plutôt {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.
    -
    {{jsxref("Date.prototype.toLocaleDateString()")}}
    -
    Renvoie une chaîne de caractères représentant les jours / mois / années de la date courante avec une représentation propre à la locale courante (déduite des paramètres systèmes utilisés).
    -
    {{jsxref("Date.prototype.toLocaleFormat()")}}
    -
    Convertit la date courante en une chaîne de caractères avec un format décrit en paramètre via une chaîne de caractères.
    -
    {{jsxref("Date.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères représentant la date sous le forme de la locale courante. Cette méthode surcharge la méthode {{jsxref("Object.prototype.toLocaleString()")}}.
    -
    {{jsxref("Date.prototype.toLocaleTimeString()")}}
    -
    Renvoie une chaîne de caractères représentant les heures / minutes / secondes de la date courante avec une représentation propre à la locale courante (déduite des paramètres systèmes utilisés).
    -
    {{jsxref("Date.prototype.toString()")}}
    -
    Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} courant. Cette méthode surcharge la méthode {{jsxref("Object.prototype.toString()")}}.
    -
    {{jsxref("Date.prototype.toTimeString()")}}
    -
    Renvoie l'heure (avec les minutes et les secondes) d'une date sous la forme d'une chaîne de caractères compréhensible par un humain.
    -
    {{jsxref("Date.prototype.toUTCString()")}}
    -
    Convertit une date en chaîne de caractère en utilisant le temps universel comme référentiel.
    -
    {{jsxref("Date.prototype.valueOf()")}}
    -
    Renvoie la valeur primitive d'un objet {{jsxref("Date")}}. Cette méthode surcharge la méthode {{jsxref("Object.prototype.valueOf()")}}.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet Date

    - -

    Les exemples qui suivent illustrent différentes méthodes permettant de créer des dates JavaScript :

    - -
    -

    Note : L'analyse de chaîne de caractères représentant des dates avec le constructeur Date  (ou Date.parse qui est équivalent) est fortement déconseillée en raison des différences de comportement existant entre les navigateurs.

    -
    - -
    let aujourdhui = new Date()
    +{{JSRef}}
    +
    +Les objets JavaScript **`Date`** représentent un instant donné sur l'axe du temps dans un format indépendant de la plateforme utilisée. Les objets `Date` contiennent un nombre (`Number`) qui représente le nombre de millisecondes écoulées depuis le premier janvier 1970 sur l'échelle [UTC](https://fr.wikipedia.org/wiki/Temps_universel_coordonn%C3%A9).
    +
    +> **Note :** TC39 travaille actuellement sur [Temporal](https://tc39.es/proposal-temporal/docs/index.html), une nouvelle API pour la gestion des dates, heures et données temporelles.
    +> Pour en savoir plus, consultez le [blog d'Igalia](https://blogs.igalia.com/compilers/2020/06/23/dates-and-times-in-javascript/) et n'hésitez pas à répondre [au sondage](https://forms.gle/iL9iZg7Y9LvH41Nv8). Les retours concrets de développeurs web sont importants pour affiner cette API. Attention, elle n'est pas encore prête à être utilisée en production !
    +
    +## Description
    +
    +### L'epoch ECMAScript
    +
    +D'un point de vue technique, une date JavaScript correspond au nombre de millisecondes écoulées depuis le premier janvier 1970, minuit UTC. Cette date et cette heure sont les mêmes que **l'[epoch](https://fr.wikipedia.org/wiki/Epoch) UNIX**, qui est l'instant de référence principalement utilisé pour manipuler les dates/heures dans les systèmes informatiques.
    +
    +> **Note :** Bien que les valeurs temporelles des objets dates soient relatives à UTC, certaines des méthodes simples pour obtenir les composantes d'une date/heure fonctionnent relativement au fuseau horaire du système.
    +
    +On notera également que la représentation maximale d'un objet `Date` n'est pas la même que le plus grand entier représentable en JavaScript (`Number.MAX_SAFE_INTEGER` vaut 9,007,199,254,740,991). En effet, ECMA-262 définit un maximum de ±100 000 000 (cent millions) jours relatifs au premier janvier 1970 UTC (ce qui correspond au 20 avril 271 821 avant notre ètre d'une part et au 13 septembre 275 760 de notre ère) pouvant être représentés par un objet `Date` standard (soit un intervalle de ±8 640 000 000 000 000 millisecondes).
    +
    +### Les formats de date et les conversions entre les fuseaux horaires
    +
    +Il existe différentes méthodes pour obtenir une date sous différents formats ou effectuer une conversion entre différents fuseaux. On distingue notamment les fonctions qui manipulent les dates relativement au temps universal coordonné (UTC). Le temps local est celui utilisé par l'appareil de l'utilisateur.
    +
    +Ainsi, on dispose de méthodes permettant d'obtenir ou de définir les différentes composantes d'une date selon le temps local (ex. {{jsxref("Date.getDay", "getDay()")}}, {{jsxref("Date.setHours", "setHours()")}}) et de méthodes équivalentes pour la manipulation en UTC (ex. {{jsxref("Date.getUTCDay()", "getUTCDay()")}} et {{jsxref("Date.setUTCHours", "setUTCHours()")}} respectivement).
    +
    +## Constructeur
    +
    +- {{jsxref("Date/Date", "Date()")}}
    +  - : Cette fonction permet de créer un nouvel objet `Date`.
    +
    +## Méthodes statiques
    +
    +- {{jsxref("Date.now()")}}
    +  - : Renvoie la valeur numérique correspondant au moment présent sous la forme du nombre de millisecondes écoulées depuis le premier janvier 1970 00:00:00 UTC (les secondes intercalaires (_leap seconds_) sont ignorées).
    +- {{jsxref("Date.parse()")}}
    +
    +  - : Analyse la représentation textuelle d'une date et renvoie le nombre de millisecondes écoulées entre cette date et le premier janvier 1970, 00:00:00 UTC (les secondes intercalaires (_leap seconds_) sont ignorées).
    +
    +    > **Note :** L'analyse de chaînes de caractères à l'aide de `Date.parse` est fortement déconseillée en raison des incohérences qui existent entre les navigateurs.
    +
    +- {{jsxref("Date.UTC()")}}
    +  - : Accepte les mêmes paramètres que la forme longue du constructeur (c'est-à-dire entre 2 et 7) et renvoie le nombre de millisecondes entre cette date et le premier janvier 1970, 00:00:00 UTC (les secondes intercalaires (_leap seconds_) sont ignorées).
    +
    +## Méthodes des instances
    +
    +- {{jsxref("Date.prototype.getDate()")}}
    +  - : Renvoie le jour du mois (entre `1` et `31`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getDay()")}}
    +  - : Renvoie le jour de la semaine (entre `0` et `6`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getFullYear()")}}
    +  - : Renvoie l'année (sans chiffre implicite, `1999` sera renvoyé et pas `99` par exemple) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getHours()")}}
    +  - : Renvoie l'heure (entre `0` et `23`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getMilliseconds()")}}
    +  - : Renvoie les millisecondes (entre `0` et `999`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getMinutes()")}}
    +  - : Renvoie les minutes (entre `0` et `59`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getMonth()")}}
    +  - : Renvoie le mois (entre `0` et `11`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getSeconds()")}}
    +  - : Renvoie les secondes (entre `0` et `59`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.getTime()")}}
    +  - : Renvoie la valeur numérique de la date donnée, exprimée en nombre de millisecondes écoulées depuis le premier janvier 1970, 00:00:00 UTC (pour les temps antérieurs, ce sont des valeurs négatives qui seront renvoyées).
    +- {{jsxref("Date.prototype.getTimezoneOffset()")}}
    +  - : Renvoie le décalage horaire, exprimé en minutes, pour la locale courante.
    +- {{jsxref("Date.prototype.getUTCDate()")}}
    +  - : Renvoie le jour du mois (entre `1` et `31`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCDay()")}}
    +  - : Renvoie le jour de la semaine (entre `0` et `6`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCFullYear()")}}
    +  - : Renvoie l'année (sans chiffre implicite, `1999` sera renvoyé plutôt que `99`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCHours()")}}
    +  - : Renvoie l'heure (entre `0` et `23`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCMilliseconds()")}}
    +  - : Renvoie les millisecondes (entre `0` et `999`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCMinutes()")}}
    +  - : Renvoie les minutes (entre `0` et `59`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCMonth()")}}
    +  - : Renvoie le mois (entre `0` et `11`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getUTCSeconds()")}}
    +  - : Renvoie les secondes (entre `0` et `59`) pour la date donnée, selon le temps universel.
    +- {{jsxref("Date.prototype.getYear()")}}
    +  - : Renvoie l'année (généralement exprimée sur 2 ou 3 chiffres) pour la date donnée selon le temps local. **On utilisera plutôt {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}**.
    +- {{jsxref("Date.prototype.setDate()")}}
    +  - : Définit le jour du mois pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setFullYear()")}}
    +  - : Définit l'année (sans chiffre implicite, on utilisera `1999` et pas `99`) pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setHours()")}}
    +  - : Définit les heures pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setMilliseconds()")}}
    +  - : Définit les millisecondes pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setMinutes()")}}
    +  - : Définit les minutes pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setMonth()")}}
    +  - : Définit le mois pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setSeconds()")}}
    +  - : Définit les secondes pour la date donnée, selon le temps local.
    +- {{jsxref("Date.prototype.setTime()")}}
    +  - : Définit le nombre de millisecondes écoulées depuis le premier janvier 1970, 00:00:00 UTC et la date donnée. On utilisera des nombres négatifs pour les moments antérieurs à cette date.
    +- {{jsxref("Date.prototype.setUTCDate()")}}
    +  - : Définit le jour du mois pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCFullYear()")}}
    +  - : Définit l'année (exprimée sans chiffres implicites, ex. `1999` et pas `99`) pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCHours()")}}
    +  - : Définit l'heure pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCMilliseconds()")}}
    +  - : Définit les millisecondes pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCMinutes()")}}
    +  - : Définit les minutes pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCMonth()")}}
    +  - : Définit le mois pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setUTCSeconds()")}}
    +  - : Définit les secondes pour la date donnée selon le temps universel.
    +- {{jsxref("Date.prototype.setYear()")}}
    +  - : Définit l'année (avec 2 à 3 chiffres) pour la date courante selon le temps local. **On privilégiera la méthode {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}} à la place.**
    +- {{jsxref("Date.prototype.toDateString()")}}
    +  - : Renvoie la partie "date" (jour, mois, année) de l'objet {{jsxref("Date")}} en une chaîne de caractères compréhensible par un humain (anglophone) (ex. `'Thu Apr 12 2018'`).
    +- {{jsxref("Date.prototype.toISOString()")}}
    +  - : Convertit une date en une chaîne de caractères selon le format ISO 8601 Étendu.
    +- {{jsxref("Date.prototype.toJSON()")}}
    +  - : Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} avec {{jsxref("Date.prototype.toISOString()", "toISOString()")}}. Cette méthode est utilisée par {{jsxref("JSON.stringify()")}}.
    +- {{jsxref("Date.prototype.toGMTString()")}}
    +  - : Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} d'après le fuseau GMT (UTC). **On utilisera plutôt {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}**.
    +- {{jsxref("Date.prototype.toLocaleDateString()")}}
    +  - : Renvoie une chaîne de caractères représentant les jours / mois / années de la date courante avec une représentation propre à la locale courante (déduite des paramètres systèmes utilisés).
    +- {{jsxref("Date.prototype.toLocaleFormat()")}}
    +  - : Convertit la date courante en une chaîne de caractères avec un format décrit en paramètre via une chaîne de caractères.
    +- {{jsxref("Date.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères représentant la date sous le forme de la locale courante. Cette méthode surcharge la méthode {{jsxref("Object.prototype.toLocaleString()")}}.
    +- {{jsxref("Date.prototype.toLocaleTimeString()")}}
    +  - : Renvoie une chaîne de caractères représentant les heures / minutes / secondes de la date courante avec une représentation propre à la locale courante (déduite des paramètres systèmes utilisés).
    +- {{jsxref("Date.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}} courant. Cette méthode surcharge la méthode {{jsxref("Object.prototype.toString()")}}.
    +- {{jsxref("Date.prototype.toTimeString()")}}
    +  - : Renvoie l'heure (avec les minutes et les secondes) d'une date sous la forme d'une chaîne de caractères compréhensible par un humain.
    +- {{jsxref("Date.prototype.toUTCString()")}}
    +  - : Convertit une date en chaîne de caractère en utilisant le temps universel comme référentiel.
    +- {{jsxref("Date.prototype.valueOf()")}}
    +  - : Renvoie la valeur primitive d'un objet {{jsxref("Date")}}. Cette méthode surcharge la méthode {{jsxref("Object.prototype.valueOf()")}}.
    +
    +## Exemples
    +
    +### Différentes façons de créer un objet `Date`
    +
    +Les exemples qui suivent illustrent différentes méthodes permettant de créer des dates JavaScript :
    +
    +> **Note :** L'analyse de chaîne de caractères représentant des dates avec le constructeur `Date`  (ou `Date.parse` qui est équivalent) est fortement déconseillée en raison des différences de comportement existant entre les navigateurs.
    +
    +```js
    +let aujourdhui = new Date()
     let anniversaire = new Date('September 22, 2018 15:00:00')
     let anniversaire = new Date('2018-09-22T15:00:00')
     let anniversaire = new Date(2018, 8, 22)            // the month is 0-indexed
     let anniversaire = new Date(2018, 8, 22, 15, 0, 0)
    -
    +``` -

    Les années sur deux chiffres correspondent à la période 1900 – 1999

    +### Les années sur deux chiffres correspondent à la période 1900 – 1999 -

    Afin de créer et de manipuler des dates sur les années 0 à 99 de notre ère, on doit utiliser les méthodes {{jsxref("Date.prototype.setFullYear()")}} and {{jsxref("Date.prototype.getFullYear()")}}.

    +Afin de créer et de manipuler des dates sur les années `0` à `99` de notre ère, on doit utiliser les méthodes {{jsxref("Date.prototype.setFullYear()")}} and {{jsxref("Date.prototype.getFullYear()")}}. -
    let date = new Date(98, 1)  // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
    +```js
    +let date = new Date(98, 1)  // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
     
     // Méthode dépréciée, 98 correspond également ici à 1998
     date.setYear(98)            // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
     
     date.setFullYear(98)        // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)
    -
    +``` -

    Calculer le temps écoulé

    +### Calculer le temps écoulé -

    Dans les exemples suivants, on illustre comment calculer le temps écoulé entre deux dates JavaScript en millisecondes.

    +Dans les exemples suivants, on illustre comment calculer le temps écoulé entre deux dates JavaScript en millisecondes. -

    En raison de durées différentes pour les jours (heure d'été / heure d'hiver), les mois et les années, il faudra faire attention et étudier le sujet avant d'exprimer des durées en unités supérieures à des heures / minutes / secondes.

    +En raison de durées différentes pour les jours (heure d'été / heure d'hiver), les mois et les années, il faudra faire attention et étudier le sujet avant d'exprimer des durées en unités supérieures à des heures / minutes / secondes. -
    // Utiliser des objets Date
    +```js
    +// Utiliser des objets Date
     let debut = Date.now()
     
     // Ici, l'évènement dont on veut mesurer la durée :
     faireQuelqueChosePendantLongtemps()
     let fin = Date.now()
     let duree = fin - debut // La durée écoulée, en millisecondes
    -
    +``` -
    // En utilisant les méthodes natives
    +```js
    +// En utilisant les méthodes natives
     let debut = new Date()
     
     // Ici, l'évènement dont on veut mesurer la durée :
     faireQuelqueChosePendantLongtemps()
     let fin = new Date()
     let duree = fin.getTime() - debut.getTime() // La durée écoulée, en millisecondes
    -
    +``` -
    // Pour tester le temps d'exécution d'une fonction
    +```js
    +// Pour tester le temps d'exécution d'une fonction
     function afficheDureeEcoulee(fTest) {
       let debut = Date.now(),
           valRetour = fTest(),
    @@ -217,40 +213,28 @@ function afficheDureeEcoulee(fTest) {
     }
     
     let valeurDeRetour = afficheDureeEcoulee(maFonctionATester)
    -
    +``` -
    -

    Note : Pour les navigateurs qui prennent en charge l'{{domxref("Window.performance", "API Web Performance", "", 1)}}, la méthode {{domxref("Performance.now()")}} peut fournir un outil de mesure des durées écoulées plus fiable et précis que {{jsxref("Date.now()")}}.

    -
    +> **Note :** Pour les navigateurs qui prennent en charge l'{{domxref("Window.performance", "API Web Performance", "", 1)}}, la méthode {{domxref("Performance.now()")}} peut fournir un outil de mesure des durées écoulées plus fiable et précis que {{jsxref("Date.now()")}}. -

    Obtenir le nombre de secondes écoulées depuis l'epoch ECMAScript

    +### Obtenir le nombre de secondes écoulées depuis l'epoch ECMAScript -
    let secondes = Math.floor(Date.now() / 1000)
    -
    +```js +let secondes = Math.floor(Date.now() / 1000) +``` -

    Dans ce cas, on renvoie un entier et c'est pour ça qu'on utilise {{jsxref("Math.floor()")}}. Par ailleurs, on n'utilise pas {{jsxref("Math.round()")}} afin d'avoir le nombre de secondes effectivement écoulées.

    +Dans ce cas, on renvoie un entier et c'est pour ça qu'on utilise {{jsxref("Math.floor()")}}. Par ailleurs, on n'utilise pas {{jsxref("Math.round()")}} afin d'avoir le nombre de secondes effectivement écoulées. -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    Spécification
    {{SpecName('ESDraft', '#sec-date-objects', 'Date')}}
    +| Spécification | +| -------------------------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-date-objects', 'Date')}} | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date", 3)}}

    +{{Compat("javascript.builtins.Date", 3)}} -

    Voir aussi

    +## Voir aussi -
      -
    • Le constructeur {{jsxref("Date/Date", "Date()")}}
    • -
    +- Le constructeur {{jsxref("Date/Date", "Date()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/now/index.md b/files/fr/web/javascript/reference/global_objects/date/now/index.md index 271fbf39bb..27cfc90da5 100644 --- a/files/fr/web/javascript/reference/global_objects/date/now/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/now/index.md @@ -10,43 +10,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/now original_slug: Web/JavaScript/Reference/Objets_globaux/Date/now --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Date.now() renvoie le nombre de millisecondes écoulées depuis le 1er Janvier 1970 00:00:00 UTC.

    +La méthode **`Date.now()`** renvoie le nombre de millisecondes écoulées depuis le 1er Janvier 1970 00:00:00 UTC. -
    {{EmbedInteractiveExample("pages/js/date-now.html")}}
    +{{EmbedInteractiveExample("pages/js/date-now.html")}} -

    Syntaxe

    +## Syntaxe -
    var tempsEnMs = Date.now();
    -
    + var tempsEnMs = Date.now(); -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées depuis le premier janvier 1970 à minuit UTC.

    +Le nombre de millisecondes écoulées depuis le premier janvier 1970 à minuit UTC. -

    Description

    +## Description -

    La méthode now() renvoie le nombre de millisecondes écoulées depuis le 1er janvier 1970 00:00:00 UTC sous forme d'un {{jsxref("Number")}} (nombre).

    +La méthode `now()` renvoie le nombre de millisecondes écoulées depuis le 1er janvier 1970 00:00:00 UTC sous forme d'un {{jsxref("Number")}} (nombre). -

    now() étant une méthode statique de {{jsxref("Date")}}, on utilisera toujours la forme Date.now().

    +`now()` étant une méthode statique de {{jsxref("Date")}}, on utilisera toujours la forme `Date.now()`. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette méthode a été standardisée dans la 5e édition d'ECMA-262. Les moteurs JavaScript ne la supportant pas peuvent l'émuler de la façon suivante :

    +Cette méthode a été standardisée dans la 5e édition d'ECMA-262. Les moteurs JavaScript ne la supportant pas peuvent l'émuler de la façon suivante : -
    if (!Date.now) {
    +```js
    +if (!Date.now) {
       Date.now = function now() {
         return new Date().getTime();
       };
     }
    -
    +``` -

    Précision temporelle réduite

    +## Précision temporelle réduite -

    Afin de protéger contre les attaques de minutage et d'identification, la précision de new Date.now() peut être arrondie en fonction des paramètres du navigateur. Pour Firefox, la préférence privacy.reduceTimerPrecision est activée par défaut et vaut, par défaut 20ms pour Firefox 59 et 2ms pour Firefox 60.

    +Afin de protéger contre les attaques de minutage et d'identification, la précision de `new Date.now()` peut être arrondie en fonction des paramètres du navigateur. Pour Firefox, la préférence `privacy.reduceTimerPrecision` est activée par défaut et vaut, par défaut 20ms pour Firefox 59 et 2ms pour Firefox 60. -
    // Précision temporelle réduite (2ms) pour Firefox 60
    +```js
    +// Précision temporelle réduite (2ms) pour Firefox 60
     new Date().getTime();
     // 1519211809934
     // 1519211810362
    @@ -60,44 +61,23 @@ new Date().getTime();
     // 1519129858900
     // 1519129864400
     // ...
    -
    - -

    Pour Firefox, il est également possible d'activer privacy.resistFingerprinting auquel cas la précision sera 100ms ou la valeur de privacy.resistFingerprinting.reduceTimerPrecision.microseconds selon laquelle est plus grande.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.9.4.4', 'Date.now')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.5.
    {{SpecName('ES6', '#sec-date.now', 'Date.now')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.now', 'Date.now')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.now")}}

    - -

    Voir aussi

    - -
      -
    • {{domxref("window.performance.now")}} - renvoie des timestamps (horodatages) avec une précision supérieure à la milliseconde pour mesurer la performance des pages web.
    • -
    • {{domxref("console.time")}} / {{domxref("console.timeEnd")}}
    • -
    +``` + +Pour Firefox, il est également possible d'activer `privacy.resistFingerprinting` auquel cas la précision sera 100ms ou la valeur de `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` selon laquelle est plus grande. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.9.4.4', 'Date.now')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.5. | +| {{SpecName('ES6', '#sec-date.now', 'Date.now')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.now', 'Date.now')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.now")}} + +## Voir aussi + +- {{domxref("window.performance.now")}} - renvoie des timestamps (horodatages) avec une précision supérieure à la milliseconde pour mesurer la performance des pages web. +- {{domxref("console.time")}} / {{domxref("console.timeEnd")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/parse/index.md b/files/fr/web/javascript/reference/global_objects/date/parse/index.md index 86226b698a..5aebdfbe75 100644 --- a/files/fr/web/javascript/reference/global_objects/date/parse/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/parse/index.md @@ -9,187 +9,169 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse original_slug: Web/JavaScript/Reference/Objets_globaux/Date/parse --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Date.parse() analyse la représentation textuelle d'une date, et renvoie le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00 UTC jusqu'à cette date ou NaN si la chaîne n'est pas reconnue ou décrit une date invalide (par exemple 2015-02-31).

    +La méthode **`Date.parse()`\*\*** \*\*analyse la représentation textuelle d'une date, et renvoie le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00 UTC jusqu'à cette date ou `NaN` si la chaîne n'est pas reconnue ou décrit une date invalide (par exemple 2015-02-31). -
    -

    Note : Pour les anciennes implémentations (avant ES5), le résultat de Date.parse variait d'une implémentation à l'autre. Attention donc à la compatibilité avec ces anciennes versions.

    -
    +> **Note :** Pour les anciennes implémentations (avant ES5), le résultat de ` Date.``parse ` variait d'une implémentation à l'autre. Attention donc à la compatibilité avec ces anciennes versions. -
    {{EmbedInteractiveExample("pages/js/date-parse.html")}}
    +{{EmbedInteractiveExample("pages/js/date-parse.html")}} -

    Syntaxe

    +## Syntaxe -

    Appel direct :

    +Appel direct : -
    Date.parse(dateString)
    + Date.parse(dateString) -

    Appel implicite :

    +Appel implicite : -
    new Date(dateString)
    + new Date(dateString) -

    Paramètres

    +### Paramètres -
    -
    dateString
    -
    Une chaine de caractères représentant une date dans une version simplifiéee d'ISO 8601 (d'autres formats peuvent être utilisés mais les résultats ne sont pas garantis).
    -
    +- `dateString` + - : Une chaine de caractères représentant une date dans une version simplifiéee d'ISO 8601 (d'autres formats peuvent être utilisés mais les résultats ne sont pas garantis). -

    Valeur de retour

    +### Valeur de retour -

    Un nombre correspondant au nombre de millisecondes écoulées entre le premier janvier 1970 à minuit UTC et la date indiquée en argument sous la forme d'une chaîne de caractères. Si l'argument ne permet pas de décrire une date valide, c'est {{jsxref("NaN")}} qui sera renvoyé.

    +Un nombre correspondant au nombre de millisecondes écoulées entre le premier janvier 1970 à minuit UTC et la date indiquée en argument sous la forme d'une chaîne de caractères. Si l'argument ne permet pas de décrire une date valide, c'est {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    La méthode parse prend en argument une chaine de caractères contenant une date en paramètre (comme "Dec 25, 1995") et renvoie le nombre de millièmes de secondes depuis le 1er janvier 1970, 00:00:00 UTC. Cette fonction est utile pour définir des valeurs de dates à partir de représentations textuelles, par exemple en conjonction avec la méthode {{jsxref("Objets_globaux/Date/setTime", "setTime()")}} et l'objet {{jsxref("Objets_globaux/Date", "Date")}}.

    +La méthode `parse` prend en argument une chaine de caractères contenant une date en paramètre (comme "`Dec 25, 1995`") et renvoie le nombre de millièmes de secondes depuis le 1er janvier 1970, 00:00:00 UTC. Cette fonction est utile pour définir des valeurs de dates à partir de représentations textuelles, par exemple en conjonction avec la méthode {{jsxref("Objets_globaux/Date/setTime", "setTime()")}} et l'objet {{jsxref("Objets_globaux/Date", "Date")}}. -

    Format de la chaîne de caractères

    +### Format de la chaîne de caractères -

    À partir d'une chaine de caractères représentant une date, parse renvoie une valeur de temps. La syntaxe acceptée est un format simplifié de la norme ISO 8601. On pourra par exemple utiliser "2011-10-10" (date uniquement), "2011-10-10T14:48:00" (date et heure) ou "2011-10-10T14:48:00.000+09:00" (date, heure, millisecondes et fuseau horaire).

    +À partir d'une chaine de caractères représentant une date, `parse` renvoie une valeur de temps. La syntaxe acceptée est un format simplifié de la norme ISO 8601. On pourra par exemple utiliser `"2011-10-10"` (date uniquement), `"2011-10-10T14:48:00"` (date et heure) ou `"2011-10-10T14:48:00.000+09:00"` (date, heure, millisecondes et fuseau horaire). -

    Si aucun fuseau horaire n'est spécifié, les chaînes représentant uniquement des dates seront considérées comme UTC et les dates / heures seront considérées comme locales.

    +Si aucun fuseau horaire n'est spécifié, les chaînes représentant uniquement des dates seront considérées comme UTC et les dates / heures seront considérées comme locales. -

    Lorsque des indicateurs de fuseau horaire sont utilisés, la valeur renvoyée correspondra toujours au nombre de millisecondes écoulées entre l'argument et le premier janvier 1970 à minuit UTC.

    +Lorsque des indicateurs de fuseau horaire sont utilisés, la valeur renvoyée correspondra toujours au nombre de millisecondes écoulées entre l'argument et le premier janvier 1970 à minuit UTC. -

    parse() est une méthode statique de {{jsxref("Date")}} et on invoquera ainsi Date.parse() plutôt que parse() sur une instance d'un objet Date.

    +`parse()` est une méthode statique de {{jsxref("Date")}} et on invoquera ainsi `Date.parse()` plutôt que `parse()` sur une instance d'un objet `Date`. -

    Différences entre les fuseaux horaires supposés

    +### Différences entre les fuseaux horaires supposés -

    Avec une chaîne comme "March 7, 2014", parse() supposera un fuseau horaire local, avec une chaîne au format ISO comme "2014-03-07", la méthode supposera un fuseau horaire UTC en ES5 et un fuseau horaire local pour ECMAScript 2015. Ainsi les objets {{jsxref("Date")}} construits avec ces chaînes représenteront des instants différents, sauf si le fuseau horaire local du système utilisé correspond à UTC. Cela signifie que deux dates représentées de façon textuelles semblables peuvent donner des dates différentes (ce comportement doit être corrigé avec ECMAScript 6 afin que les deux dates soient traitées de façon locale).

    +Avec une chaîne comme `"March 7, 2014"`, `parse()` supposera un fuseau horaire local, avec une chaîne au format ISO comme `"2014-03-07"`, la méthode supposera un fuseau horaire UTC en ES5 et un fuseau horaire local pour ECMAScript 2015. Ainsi les objets {{jsxref("Date")}} construits avec ces chaînes représenteront des instants différents, sauf si le fuseau horaire local du système utilisé correspond à UTC. Cela signifie que deux dates représentées de façon textuelles semblables peuvent donner des dates différentes (ce comportement doit être corrigé avec ECMAScript 6 afin que les deux dates soient traitées de façon locale). -

    Traitement laissé libre à l'implémentation

    +### Traitement laissé libre à l'implémentation -

    Le standard ECMAScript dicte que si la chaîne utilisée n'est pas conforme au format standard, alors la fonction peut utiliser une heuristique et/ou un algorithme d'analyse de texte propre à l'implémentation. Les chaînes impossibles à décoder et/ou qui contiennent des éléments non-conformes aux formats ISO doivent renvoyer {{jsxref("NaN")}} lors de l'appel à Date.parse().

    +Le standard ECMAScript dicte que si la chaîne utilisée n'est pas conforme au format standard, alors la fonction peut utiliser une heuristique et/ou un algorithme d'analyse de texte propre à l'implémentation. Les chaînes impossibles à décoder et/ou qui contiennent des éléments non-conformes aux formats ISO doivent renvoyer {{jsxref("NaN")}} lors de l'appel à `Date.parse()`. -

    Cependant, les valeurs invalides qui ne sont pas reconnues dans un format ISO pris en charge par ECMA-262 peuvent ou non engendrer la valeur {{jsxref("NaN")}} selon le navigateur et les valeurs utilisées. Par exemple :

    +Cependant, les valeurs invalides qui ne sont pas reconnues dans un format ISO pris en charge par ECMA-262 peuvent ou non engendrer la valeur {{jsxref("NaN")}} selon le navigateur et les valeurs utilisées. Par exemple : -
    // Chaîne non ISO avec des valeurs invalides
    -new Date('23/25/2014');
    +```js +// Chaîne non ISO avec des valeurs invalides +new Date('23/25/2014'); +``` -

    sera traitée comme la date locale du 25 novembre 2015 avec Firefox 30 et comme invalide avec Safari 7. Cependant, si la chaîne est reconnue dans un format ISO mais contient des valeurs invalides, la méthode renverra {{jsxref("NaN")}} pour tous les navigateurs conformes à ES5 (ou aux versions ultérieures) :

    +sera traitée comme la date locale du 25 novembre 2015 avec Firefox 30 et comme invalide avec Safari 7. Cependant, si la chaîne est reconnue dans un format ISO mais contient des valeurs invalides, la méthode renverra {{jsxref("NaN")}} pour tous les navigateurs conformes à ES5 (ou aux versions ultérieures) : -
    // Chaîne ISO avec des valeurs invalides new
    +```js
    +// Chaîne ISO avec des valeurs invalides new
     Date('2014-25-23').toISOString();
    -// renvoie "RangeError: invalid date" pour les navigateurs ES5
    +// renvoie "RangeError: invalid date" pour les navigateurs ES5 +``` -

    L'implémentation spécifique de SpiderMonkey peut être trouvée dans le fichier jsdate.cpp. La chaîne "10 06 2014" est un exemple de chaîne non ISO, utiliser parse() sur cette chaîne entraînera le moteur JavaScript à utiliser son implémentation de recours. Voir ce bug pour une explication rapide de la façon dont est faite l'analyse de la chaîne.

    +L'implémentation spécifique de SpiderMonkey peut être trouvée dans le fichier [`jsdate.cpp`](https://dxr.mozilla.org/mozilla-central/source/js/src/jsdate.cpp?rev=64553c483cd1#889). La chaîne `"10 06 2014"` est un exemple de chaîne non ISO, utiliser parse() sur cette chaîne entraînera le moteur JavaScript à utiliser son implémentation de recours. Voir ce [bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1023155#c6) pour une explication rapide de la façon dont est faite l'analyse de la chaîne. -
    new Date('10 06 2014');
    +```js +new Date('10 06 2014'); +``` -

    sera traitée comme la date locale du 6 octobre 2014 et non comme le 10 juin 2014. D'autres exemples :

    +sera traitée comme la date locale du 6 octobre 2014 et non comme le 10 juin 2014. D'autres exemples : -
    new Date('toto-truc 2014').toString();
    +```js
    +new Date('toto-truc 2014').toString();
     // renvoie : "Invalid Date"
     Date.parse('toto-truc 2014');
    -// renvoie : NaN
    +// renvoie : NaN +``` -

    Exemples

    +## Exemples -

    Utiliser Date.parse()

    +### Utiliser `Date.parse()` -

    Les appels suivants renvoient tous 1546300800000. Dans le premier appel, on indique uniquement la date (et donc le fuseau UTC implicite). Les chaînes qui suivent utilisent une indication de fuseau horaire selon la norme ISO (Z et +00:00)

    +Les appels suivants renvoient tous `1546300800000`. Dans le premier appel, on indique uniquement la date (et donc le fuseau UTC implicite). Les chaînes qui suivent utilisent une indication de fuseau horaire selon la norme ISO (`Z` et `+00:00`) -
    Date.parse("2019-01-01")
    +```js
    +Date.parse("2019-01-01")
     Date.parse("2019-01-01T00:00:00.000Z")
     Date.parse("2019-01-01T00:00:00.000+00:00")
    -
    +``` -

    L'appel suivant, qui ne précise pas le fuseau horaire, fournira le nombre de millisecondes écoulées entre le premier janvier 1970 minuit UTC et le premier janvier 2019 à minuit selon l'heure locale du système utilisé.

    +L'appel suivant, qui ne précise pas le fuseau horaire, fournira le nombre de millisecondes écoulées entre le premier janvier 1970 minuit UTC et le premier janvier 2019 à minuit selon l'heure locale du système utilisé. -
    Date.parse("2019-01-01T00:00:00")
    -
    +```js +Date.parse("2019-01-01T00:00:00") +``` -

    Chaînes de caractères non-standard

    +### Chaînes de caractères non-standard -
    -

    Note : Cette section contient des exemples qui reposent sur des comportements spécifiques aux implémentations et on peut donc avoir des incohérences entre les moteurs utilisés.

    -
    +> **Note :** Cette section contient des exemples qui reposent sur des comportements spécifiques aux implémentations et on peut donc avoir des incohérences entre les moteurs utilisés. -

    Si IPOdate est un objet {{jsxref("Date")}}, on peut définir sa valeur au 9 août 1995 (heure locale), de la façon suivante :

    +Si `IPOdate` est un objet {{jsxref("Date")}}, on peut définir sa valeur au 9 août 1995 (heure locale), de la façon suivante : -
    IPOdate.setTime(Date.parse('Aug 9, 1995'));
    -
    +```js +IPOdate.setTime(Date.parse('Aug 9, 1995')); +``` -

    Voici un autre exemple avec une chaîne qui ne suit pas le format standard.

    +Voici un autre exemple avec une chaîne qui ne suit pas le format standard. -
    Date.parse('Aug 9, 1995');
    -
    +```js +Date.parse('Aug 9, 1995'); +``` -

    Cette méthode renverra 807937200000 pour le fuseau horaire GMT-0300 et d'autres valeurs pour d'autres fuseaux car la chaîne n'indique pas le fuseau horaire et ne respecte pas le format ISO (le fuseau considéré par défaut est donc le fuseau local).

    +Cette méthode renverra `807937200000` pour le fuseau horaire GMT-0300 et d'autres valeurs pour d'autres fuseaux car la chaîne n'indique pas le fuseau horaire et ne respecte pas le format ISO (le fuseau considéré par défaut est donc le fuseau local). -
    Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');
    -
    +```js +Date.parse('Wed, 09 Aug 1995 00:00:00 GMT'); +``` -

    Renvoie 807926400000 quel que soit le fuseau local car on indique GMT.

    +Renvoie `807926400000` quel que soit le fuseau local car on indique GMT. -
    Date.parse('Wed, 09 Aug 1995 00:00:00');
    -
    +```js +Date.parse('Wed, 09 Aug 1995 00:00:00'); +``` -

    Renvoie 807937200000 dans le fuseau GMT-0300 et d'autres valeurs pour d'autres fuseaux car aucune indication de fuseau n'est fournie et que la chaîne n'est pas au format ISO, elle est donc traitée comme un temps local.

    +Renvoie `807937200000` dans le fuseau GMT-0300 et d'autres valeurs pour d'autres fuseaux car aucune indication de fuseau n'est fournie et que la chaîne n'est pas au format ISO, elle est donc traitée comme un temps local. -
    Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');
    -
    +```js +Date.parse('Thu, 01 Jan 1970 00:00:00 GMT'); +``` -

    Renvoie 0 quel que soit le fuseau local car l'indicateur GMT est fourni.

    +Renvoie `0` quel que soit le fuseau local car l'indicateur GMT est fourni. -
    Date.parse('Thu, 01 Jan 1970 00:00:00');
    -
    +```js +Date.parse('Thu, 01 Jan 1970 00:00:00'); +``` -

    Renvoie 14400000 pour le fuseau GMT-0400 et d'autres valeurs dans d'autres fuseaux car aucune indication de fuseau n'est fournie et la chaîne n'est pas au format ISO, elle est donc traitée comme un temps local.

    +Renvoie `14400000` pour le fuseau GMT-0400 et d'autres valeurs dans d'autres fuseaux car aucune indication de fuseau n'est fournie et la chaîne n'est pas au format ISO, elle est donc traitée comme un temps local. -
    Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');
    -
    +```js +Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400'); +``` -

    Renvoie 14400000 quel que soit le fuseau car l'indicateur GMT est fourni.

    +Renvoie `14400000` quel que soit le fuseau car l'indicateur GMT est fourni. -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}}{{Spec2('ES5.1')}}Ajout du format ISO 8601 simplifié.
    {{SpecName('ES6', '#sec-date.parse', 'Date.parse')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-date.parse', 'Date.parse')}}{{Spec2('ESDraft')}}
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}} | {{Spec2('ES5.1')}} | Ajout du format ISO 8601 simplifié. | +| {{SpecName('ES6', '#sec-date.parse', 'Date.parse')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-date.parse', 'Date.parse')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date.parse")}}

    +{{Compat("javascript.builtins.Date.parse")}} -

    Notes de compatibilité

    +## Notes de compatibilité -
      -
    • À partir de Firefox 49 ({{geckoRelease(49)}}, l'interprétation des années exprimées sur deux chiffres est alignée avec Google Chrome (et non plus avec Internet Explorer). Désormais, les années exprimées sur deux chiffres et strictement inférieures à 50 seront considérées comme des années du XXIe siècle. Ainsi, 04/16/17 correspondait avant au 16 avril 1917 et correspond désormais au 16 avril 2017. Cela évite des problèmes d'interopérabilité et d'ambiguïté et cette méthode est recommandée par le format ISO 8601 (cf. {{bug(1265136)}}).
    • -
    • Google Chrome acceptera une chaîne de caractères avec un nombre pour le paramètre dateString. Ainsi, si on exécute !!Date.parse("42") dans Firefox, on obtiendra false tandis que que Google Chrome donnera true car "42" sera interprété comme la date du premier janvier 2042.
    • -
    +- À partir de Firefox 49 ({{geckoRelease(49)}}, l'interprétation des années exprimées sur deux chiffres est alignée avec Google Chrome (et non plus avec Internet Explorer). Désormais, les années exprimées sur deux chiffres et strictement inférieures à 50 seront considérées comme des années du XXIe siècle. Ainsi, `04/16/17` correspondait avant au 16 avril 1917 et correspond désormais au 16 avril 2017. Cela évite des problèmes d'interopérabilité et d'ambiguïté et cette méthode est recommandée par le format ISO 8601 (cf. {{bug(1265136)}}). +- Google Chrome acceptera une chaîne de caractères avec un nombre pour le paramètre `dateString`. Ainsi, si on exécute `!!Date.parse("42")` dans Firefox, on obtiendra `false` tandis que que Google Chrome donnera `true` car `"42"` sera interprété comme la date du premier janvier 2042. -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Date.UTC()")}}
    • -
    +- {{jsxref("Date.UTC()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setdate/index.md b/files/fr/web/javascript/reference/global_objects/date/setdate/index.md index 7091ece853..01ebb5094c 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setdate/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setdate/index.md @@ -10,86 +10,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setDate original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setDate --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setDate() définit le jour du mois (relatif au début du mois courant) pour une date donnée.

    +La méthode **`setDate()`** définit le jour du mois (relatif au début du mois courant) pour une date donnée. -
    {{EmbedInteractiveExample("pages/js/date-setdate.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setdate.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setDate(valeurJour)
    + dateObj.setDate(valeurJour) -

    Paramètres

    +### Paramètres -
    -
    valeurJour
    -
    Un entier représentant le jour du mois.
    -
    +- `valeurJour` + - : Un entier représentant le jour du mois. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 00:00:00 UTC et la date résultante (l'objet {{jsxref("Date")}} est également modifié).

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 00:00:00 UTC et la date résultante (l'objet {{jsxref("Date")}} est également modifié). -

    Description

    +## Description -

    Si la valeurJour est en dehors des limites du mois courant, setDate() mettra à jour l'objet {{jsxref("Date")}} en conséquence.

    +Si la `valeurJour` est en dehors des limites du mois courant, `setDate()` mettra à jour l'objet` `{{jsxref("Date")}} en conséquence. -

    Par exemple, si 0 est fourni pour valeurJour, la date sera défini sur le dernier jour du mois précédent.

    +Par exemple, si 0 est fourni pour `valeurJour`, la date sera défini sur le dernier jour du mois précédent. -

    Si on fournit un nombre négatif, la date sera déterminée à rebours à partir du dernier jour du mois précédent. Ainsi, avec -1, on obtiendrait la veille du dernier jour du mois précédent.

    +Si on fournit un nombre négatif, la date sera déterminée à rebours à partir du dernier jour du mois précédent. Ainsi, avec -1, on obtiendrait la veille du dernier jour du mois précédent. -

    Exemples

    +## Exemples -

    Utiliser setDate()

    +### Utiliser `setDate()` -
    var theBigDay = new Date(1962, 6, 7); // 1962-07-06T23:00:00.000Z
    +```js
    +var theBigDay = new Date(1962, 6, 7); // 1962-07-06T23:00:00.000Z
     theBigDay.setDate(24);   // 1962-07-23T23:00:00.000Z
     theBigDay.setDate(32);   // 1962-07-31T23:00:00.000Z
     theBigDay.setDate(22);   // 1962-08-21T23:00:00.000Z
     theBigDay.setDate(0);    // 1962-07-30T23:00:00.000Z
     theBigDay.setDate(98);   // 1962-10-05T23:00:00.000Z
    -theBigDay.setDate(-50);  // 1962-08-10T23:00:00.000Z
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.36', 'Date.prototype.setDate')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setDate")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getDate()")}}
    • -
    • {{jsxref("Date.prototype.setUTCDate()")}}
    • -
    +theBigDay.setDate(-50); // 1962-08-10T23:00:00.000Z +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.36', 'Date.prototype.setDate')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setDate")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getDate()")}} +- {{jsxref("Date.prototype.setUTCDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setfullyear/index.md b/files/fr/web/javascript/reference/global_objects/date/setfullyear/index.md index 5c08f44347..c5ce1547e4 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setfullyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setfullyear/index.md @@ -10,85 +10,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setFullYear --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setFullYear() définit l'année complête pour une date, d'après l'heure locale.

    +La méthode **`setFullYear()`** définit l'année complête pour une date, d'après l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-setfullyear.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setfullyear.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setFullYear(valeurAnnée[, valeurMois[, valeurJour]])
    + dateObj.setFullYear(valeurAnnée[, valeurMois[, valeurJour]]) -

    Paramètres

    +### Paramètres -
    -
    valeurAnnée
    -
    Un entier indiquant la valeur numérique de l'année, par exemple, 1995.
    -
    valeurMois
    -
    Paramètre optionnel qui représente un entier entre 0 et 11, représentant les mois de janvier à décembre.
    -
    valeurJour
    -
    Paramètre optionnel qui représente un entier entre 1 et 31 représentant le jour du mois. Si vous indiquez une valeurJour, vous devez aussi indiquer valeurMois.
    -
    +- `valeurAnnée` + - : Un entier indiquant la valeur numérique de l'année, par exemple, 1995. +- `valeurMois` + - : Paramètre optionnel qui représente un entier entre 0 et 11, représentant les mois de janvier à décembre. +- `valeurJour` + - : Paramètre optionnel qui représente un entier entre 1 et 31 représentant le jour du mois. Si vous indiquez une `valeurJour`, vous devez aussi indiquer `valeurMois`. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit UTC et la date mise à jour. -

    Description

    +## Description -

    Si vous n'indiquez pas les paramètres valeurMois et valeurJour. Les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getMonth()", "getMonth()")}} et {{jsxref("Date.prototype.getDate()", "getDate()")}} seront utilisées.

    +Si vous n'indiquez pas les paramètres `valeurMois` et `valeurJour`. Les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getMonth()", "getMonth()")}} et {{jsxref("Date.prototype.getDate()", "getDate()")}} seront utilisées. -

    Si un des paramètres que vous indiquez est en dehors des limites attendues, setFullYear() tentera de mettre à jour la date en conséquence. Pa exemple, si vous indiquez 15 pour valeurMois, l'année sera incrémenté de 1 (année + 1), et 3 sera utilisé pour le mois.

    +Si un des paramètres que vous indiquez est en dehors des limites attendues, `setFullYear()` tentera de mettre à jour la date en conséquence. Pa exemple, si vous indiquez 15 pour `valeurMois`, l'année sera incrémenté de 1 (année + 1), et 3 sera utilisé pour le mois. -

    Exemples

    +## Exemples -

    Utiliser setFullYear()

    +### Utiliser `setFullYear()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setFullYear(1997);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setFullYear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setYear()")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setFullYear")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCFullYear()")}} +- {{jsxref("Date.prototype.setUTCFullYear()")}} +- {{jsxref("Date.prototype.setYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/sethours/index.md b/files/fr/web/javascript/reference/global_objects/date/sethours/index.md index a2823e19d0..0571dbdf8b 100644 --- a/files/fr/web/javascript/reference/global_objects/date/sethours/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/sethours/index.md @@ -10,91 +10,64 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setHours original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setHours --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setHours() définit les heures pour une date donnée, selon l'heure locale, et renvoie le nombre de millièmes de secondes écoulées entre le 1er janvier 1970 00:00:00 UTC et la nouvelle date mise à jour.

    +La méthode **`setHours()`** définit les heures pour une date donnée, selon l'heure locale, et renvoie le nombre de millièmes de secondes écoulées entre le 1er janvier 1970 00:00:00 UTC et la nouvelle date mise à jour. -
    {{EmbedInteractiveExample("pages/js/date-sethours.html")}}
    +{{EmbedInteractiveExample("pages/js/date-sethours.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setHours(valeurHeures[, valeurMinutes[, valeurSecondes[, valeurMs]]])
    -
    + dateObj.setHours(valeurHeures[, valeurMinutes[, valeurSecondes[, valeurMs]]]) -

    Versions antérieures à JavaScript 1.3

    +### Versions antérieures à JavaScript 1.3 -
    dateObj.setHours(valeurHeures)
    + dateObj.setHours(valeurHeures) -

    Paramètres

    +### Paramètres -
    -
    valeurHeures
    -
    Un entier normalement compris entre 0 et 23, représentant l'heure. Si la valeur est supérieure à 23, la valeur de l'heure sera incrémentée d'autant d'heures supplémentaires.
    -
    valeurMinutes
    -
    Paramètre optionnel, un entier normalement compris entre 0 et 59, représentant les minutes. Si la valeur est supérieure à 59, la valeur de l'heure sera incrémentée d'autant de minutes supplémentaires.
    -
    valeurSecondes
    -
    Paramètre optionnel, un entier normalement compris entre 0 et 59, représentant les secondes. Si vous indiquez le paramètre valeurSecondes, vous devez aussi renseigner valeurMinutes. Si la valeur est supérieure à 59, l'heure sera incrémentée d'autant de secondes supplémentaires.
    -
    valeurMs
    -
    Paramètre optionnel, un entier normalement compris entre 0 et 999, représentant les millièmes de secondes. Si vous indiquez valeurMs, vous devez aussi renseigner valeurMinutes et valeurSecondes. Si la valeur fournie est supérieure à 999, l'heure sera incrémentée d'autant de millisecondes supplémentaires.
    -
    +- `valeurHeures` + - : Un entier normalement compris entre 0 et 23, représentant l'heure. Si la valeur est supérieure à 23, la valeur de l'heure sera incrémentée d'autant d'heures supplémentaires. +- `valeurMinutes` + - : Paramètre optionnel, un entier normalement compris entre 0 et 59, représentant les minutes. Si la valeur est supérieure à 59, la valeur de l'heure sera incrémentée d'autant de minutes supplémentaires. +- `valeurSecondes` + - : Paramètre optionnel, un entier normalement compris entre 0 et 59, représentant les secondes. Si vous indiquez le paramètre `valeurSecondes`, vous devez aussi renseigner `valeurMinutes`. Si la valeur est supérieure à 59, l'heure sera incrémentée d'autant de secondes supplémentaires. +- `valeurMs` + - : Paramètre optionnel, un entier normalement compris entre 0 et 999, représentant les millièmes de secondes. Si vous indiquez `valeurMs`, vous devez aussi renseigner `valeurMinutes` et `valeurSecondes`. Si la valeur fournie est supérieure à 999, l'heure sera incrémentée d'autant de millisecondes supplémentaires. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si vous ne renseignez pas valeurMinutes, valeurSecondes et valeurMs, les valeurs renvoyées par les méthodes {{jsxref("Date.getMinutes", "getMinutes()")}}, {{jsxref("Date.getSeconds", "getSeconds()")}}, et {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} seront utilisées.

    +Si vous ne renseignez pas `valeurMinutes`, `valeurSecondes` et `valeurMs`, les valeurs renvoyées par les méthodes {{jsxref("Date.getMinutes", "getMinutes()")}}, {{jsxref("Date.getSeconds", "getSeconds()")}}, et {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} seront utilisées. -

    Si un des paramètres que vous renseignez est en dehors des limites attendues, setHours() tentera de mettre à jour la date en conséquence. Par exemple, si vous utilisez 100 pour valeurSecondes, les minutes seront incrémentées de 1 (min + 1), et 40 sera utilisé pour les secondes.

    +Si un des paramètres que vous renseignez est en dehors des limites attendues, `setHours()` tentera de mettre à jour la date en conséquence. Par exemple, si vous utilisez 100 pour `valeurSecondes`, les minutes seront incrémentées de 1 (min + 1), et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setHours()

    +### Utiliser `setHours()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setHours(7);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0
    {{SpecName('ES5.1', '#sec-15.9.5.34', 'Date.prototype.setHours')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setHours")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getHours()")}}
    • -
    • {{jsxref("Date.prototype.setUTCHours()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ---------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0 | +| {{SpecName('ES5.1', '#sec-15.9.5.34', 'Date.prototype.setHours')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setHours")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getHours()")}} +- {{jsxref("Date.prototype.setUTCHours()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setmilliseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/setmilliseconds/index.md index 472eb7e43e..e6ab186569 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setmilliseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setmilliseconds/index.md @@ -10,78 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setMilliseconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setMilliseconds() définit les millièmes de secondes pour la date, selon l'heure locale.

    +La méthode **`setMilliseconds()`** définit les millièmes de secondes pour la date, selon l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-setmilliseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setmilliseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setMilliseconds(valeurMs)
    + dateObj.setMilliseconds(valeurMs) -

    Paramètres

    +### Paramètres -
    -
    valeurMs
    -
    Un entier entre 0 et 999, représentant les millièmes de secondes.
    -
    +- `valeurMs` + - : Un entier entre 0 et 999, représentant les millièmes de secondes. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si vous indiquez un nombre en dehors des limites attendues, la date sera mise à jour en conséquence. Par exemple, si vous indiquez 1005, le nombre des secondes sera incrémenté de 1, et 5 sera utilisé pour les millièmes de secondes.

    +Si vous indiquez un nombre en dehors des limites attendues, la date sera mise à jour en conséquence. Par exemple, si vous indiquez 1005, le nombre des secondes sera incrémenté de 1, et 5 sera utilisé pour les millièmes de secondes. -

    Exemples

    +## Exemples -

    Utiliser setMilliseconds()

    +### Utiliser `setMilliseconds()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setMilliseconds(100);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.28', 'Date.prototype.setMilliseconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setMilliseconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMilliseconds()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMilliseconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.28', 'Date.prototype.setMilliseconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setMilliseconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMilliseconds()")}} +- {{jsxref("Date.prototype.setUTCMilliseconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setminutes/index.md b/files/fr/web/javascript/reference/global_objects/date/setminutes/index.md index dfed490684..894474edac 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setminutes/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setminutes/index.md @@ -10,88 +10,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setMinutes --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setMinutes() définit les minutes pour la date donnée, selon l'heure locale.

    +La méthode **`setMinutes()`** définit les minutes pour la date donnée, selon l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-setminutes.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setminutes.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setMinutes(valeurMinutes[, valeurSecondes[, valeurMs]])
    + dateObj.setMinutes(valeurMinutes[, valeurSecondes[, valeurMs]]) -

    Versions antérieures à JavaScript 1.3

    +### Versions antérieures à JavaScript 1.3 -
    dateObj.setMinutes(valeurMinutes)
    + dateObj.setMinutes(valeurMinutes) -

    Paramètres

    +### Paramètres -
    -
    valeurMinutes
    -
    Un entier entre 0 et 59, représentant les minutes.
    -
    valeurSecondes
    -
    Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si valeurSecondes est utilisé, il faut également utiliser valeurMinutes.
    -
    valeurMs
    -
    Paramètre optionel, un nombre entre 0 et 999, représentant les millièmes de secondes. Si valeurMs est utilisé, il faut également utiliser valeurMinutes et valeurSecondes.
    -
    +- `valeurMinutes` + - : Un entier entre 0 et 59, représentant les minutes. +- `valeurSecondes` + - : Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si `valeurSecondes` est utilisé, il faut également utiliser `valeurMinutes`. +- `valeurMs` + - : Paramètre optionel, un nombre entre 0 et 999, représentant les millièmes de secondes. Si `valeurMs` est utilisé, il faut également utiliser `valeurMinutes` et `valeurSecondes`. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si valeurSecondes et valeurMs ne sont pas indiquées, les valeurs renvoyées par les méthodes {{jsxref("Date.getSeconds", "getSeconds()")}} et {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} seront utilisées.

    +Si `valeurSecondes` et `valeurMs` ne sont pas indiquées, les valeurs renvoyées par les méthodes {{jsxref("Date.getSeconds", "getSeconds()")}} et {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} seront utilisées. -

    Si un paramètre est en dehors des limites attendues, setMinutes() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour valeurSecondes, les minutes (valeurMinutes) seront incrémentées de 1 (valeurMinutes + 1), et 40 sera utilisé pour les secondes.

    +Si un paramètre est en dehors des limites attendues, `setMinutes()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour `valeurSecondes`, les minutes (`valeurMinutes`) seront incrémentées de 1 (`valeurMinutes` + 1), et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setMinutes()

    +### Utiliser `setMinutes()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setMinutes(45);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.32', 'Date.prototype.setMinutes')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setMinutes")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMinutes()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMinutes()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.32', 'Date.prototype.setMinutes')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setMinutes")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMinutes()")}} +- {{jsxref("Date.prototype.setUTCMinutes()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setmonth/index.md b/files/fr/web/javascript/reference/global_objects/date/setmonth/index.md index 08e81440aa..adaccb768d 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setmonth/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setmonth/index.md @@ -10,95 +10,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setMonth --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setMonth() définit le mois de la date, selon l'heure locale et l'année courante de l'objet {{jsxref("Date")}}

    +La méthode **`setMonth()`** définit le mois de la date, selon l'heure locale et l'année courante de l'objet {{jsxref("Date")}} -
    {{EmbedInteractiveExample("pages/js/date-setmonth.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setmonth.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setMonth(valeurMois[, valeurJour])
    + dateObj.setMonth(valeurMois[, valeurJour]) -

    Versions antérieures à JavaScript 1.3

    +### Versions antérieures à JavaScript 1.3 -
    dateObj.setMonth(valeurMois)
    + dateObj.setMonth(valeurMois) -

    Paramètres

    +### Paramètres -
    -
    valeurMois
    -
    Un entier entre 0 et 11 (représentant les mois de janvier à décembre).
    -
    valeurJour
    -
    Paramètre optionnel, un entier entre 1 et 31, représentant le jour du mois.
    -
    +- `valeurMois` + - : Un entier entre 0 et 11 (représentant les mois de janvier à décembre). +- `valeurJour` + - : Paramètre optionnel, un entier entre 1 et 31, représentant le jour du mois. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre valeurJour n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.getDate", "getDate()")}} sera utilisée.

    +Si le paramètre `valeurJour` n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.getDate", "getDate()")}} sera utilisée. -

    Si un paramètre que vous renseignez n'est pas dans les limites attendues, setMonth() tentera de mettre à jour la date en conséquence. Par exemple, si la valeur 15 est utilisée pour valeurMois, l'année sera incrémenté de 1 (année + 1), et 3 sera utilisé pour le mois.

    +Si un paramètre que vous renseignez n'est pas dans les limites attendues, `setMonth()` tentera de mettre à jour la date en conséquence. Par exemple, si la valeur 15 est utilisée pour `valeurMois`, l'année sera incrémenté de 1 (année + 1), et 3 sera utilisé pour le mois. -
    -

    Note : Attention aux jours du mois lorsqu'on utilise setMonth(). En effet, setMonth() cherchera à aboutir à une date correcte et on peut avoir des surprises pour les transitions entre les mois. Ainsi, en 2016 (où février a eu 29 jours), on aura le cas suivant :

    +> **Note :** Attention aux jours du mois lorsqu'on utilise `setMonth()`. En effet, `setMonth()` cherchera à aboutir à une date correcte et on peut avoir des surprises pour les transitions entre les mois. Ainsi, en 2016 (où février a eu 29 jours), on aura le cas suivant : +> +> ```js +> var finDuMois = new Date(2016, 7, 31); // le 31 août 2016 +> finDuMois.setMonth(1); +> +> console.log(finDuMois.toLocaleString()); // 02/03/2016 à 00:00:00 +> ``` -
    var finDuMois = new Date(2016, 7, 31); // le 31 août 2016
    -finDuMois.setMonth(1);
    +## Exemples
     
    -console.log(finDuMois.toLocaleString()); // 02/03/2016 à 00:00:00
    -
    +### Utiliser `setMonth()` -

    Exemples

    +```js +var leGrandJour = new Date(); +leGrandJour.setMonth(6); +``` -

    Utiliser setMonth()

    +## Spécifications -
    var leGrandJour = new Date();
    -leGrandJour.setMonth(6);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.38', 'Date.prototype.setMonth')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setMonth")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getMonth()")}}
    • -
    • {{jsxref("Date.prototype.setUTCMonth()")}}
    • -
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.38', 'Date.prototype.setMonth')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setMonth")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getMonth()")}} +- {{jsxref("Date.prototype.setUTCMonth()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/setseconds/index.md index b979885ed8..b6db54ba85 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setseconds/index.md @@ -10,86 +10,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setSeconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setSeconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setSeconds() définit les secondes pour la date, selon l'heure locale.

    +La méthode **`setSeconds()`** définit les secondes pour la date, selon l'heure locale. -
    {{EmbedInteractiveExample("pages/js/date-setseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setSeconds(valeurSecondes[, valeurMs])
    + dateObj.setSeconds(valeurSecondes[, valeurMs]) -

    Versions antérieures à JavaScript 1.3

    +### Versions antérieures à JavaScript 1.3 -
    dateObj.setSeconds(valeurSecondes)
    + dateObj.setSeconds(valeurSecondes) -

    Paramètres

    +### Paramètres -
    -
    valeurSecondes
    -
    Un entier entre 0 et 59.
    -
    valeurMs
    -
    Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes.
    -
    +- `valeurSecondes` + - : Un entier entre 0 et 59. +- `valeurMs` + - : Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre valeurMs n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} sera utilisée.

    +Si le paramètre `valeurMs` n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.getMilliseconds", "getMilliseconds()")}} sera utilisée. -

    Si un paramètre utilisé est en dehors des limites attendues, setSeconds() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour valeurSecondes, les minutes de la date seront incrémentées de 1, et 40 sera utilisé pour les secondes.

    +Si un paramètre utilisé est en dehors des limites attendues, `setSeconds()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour `valeurSecondes`, les minutes de la date seront incrémentées de 1, et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setSeconds()

    +### Utiliser `setSeconds()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setSeconds(30)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.30', 'Date.prototype.setSeconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setSeconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getSeconds()")}}
    • -
    • {{jsxref("Date.prototype.setUTCSeconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.30', 'Date.prototype.setSeconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setSeconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getSeconds()")}} +- {{jsxref("Date.prototype.setUTCSeconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/settime/index.md b/files/fr/web/javascript/reference/global_objects/date/settime/index.md index 4318c595b4..01c26769a9 100644 --- a/files/fr/web/javascript/reference/global_objects/date/settime/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/settime/index.md @@ -10,79 +10,53 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setTime original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setTime --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setTime() met l'objet {{jsxref("Date")}} à jour par rapport au nombre de millisecondes depuis le 1 janvier 1970, 00:00:00 UTC.

    +La méthode **`setTime()`** met l'objet {{jsxref("Date")}} à jour par rapport au nombre de millisecondes depuis le 1 janvier 1970, 00:00:00 UTC. -
    {{EmbedInteractiveExample("pages/js/date-settime.html")}}
    +{{EmbedInteractiveExample("pages/js/date-settime.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setTime(valeurTemps)
    + dateObj.setTime(valeurTemps) -

    Paramètres

    +### Paramètres -
    -
    valeurTemps
    -
    Un entier représentant le nombre de millisecondes depuis le 1 janvier 1970, 00:00:00 UTC.
    -
    +- `valeurTemps` + - : Un entier représentant le nombre de millisecondes depuis le 1 janvier 1970, 00:00:00 UTC. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit, UTC et la date mise à jour (ce qui correspond à la valeur de l'argument).

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 à minuit, UTC et la date mise à jour (ce qui correspond à la valeur de l'argument). -

    Description

    +## Description -

    La méthode setTime() est utilisée afin d'assigner une date à un autre objet {{jsxref("Date")}}.

    +La méthode `setTime()` est utilisée afin d'assigner une date à un autre objet {{jsxref("Date")}}. -

    Exemples

    +## Exemples -

    Utiliser setTime()

    +### Utiliser `setTime()` -
    var leGrandJour = new Date("July 1, 1999");
    +```js
    +var leGrandJour = new Date("July 1, 1999");
     var pareilQueGrandJour = new Date();
     pareilQueGrandJour.setTime(leGrandJour.getTime());
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.27', 'Date.prototype.setTime')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setTime")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getTime()")}}
    • -
    • {{jsxref("Date.prototype.setUTCHours()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.27', 'Date.prototype.setTime')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.settime', 'Date.prototype.setTime')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.settime', 'Date.prototype.setTime')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setTime")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getTime()")}} +- {{jsxref("Date.prototype.setUTCHours()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcdate/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcdate/index.md index 98de0005b5..b2b6aa67a4 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcdate/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcdate/index.md @@ -10,78 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCDate --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCDate() définit le jour du mois pour la date, selon UTC.

    +La méthode **`setUTCDate()`** définit le jour du mois pour la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcdate.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcdate.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCDate(valeurJour)
    + dateObj.setUTCDate(valeurJour) -

    Paramètres

    +### Paramètres -
    -
    valeurJour
    -
    Un entier de 1 à 31, représentant un jour dans le mois.
    -
    +- `valeurJour` + - : Un entier de 1 à 31, représentant un jour dans le mois. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre renseigné est en dehors des limites attendues, setUTCDate() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 40 pour valeurJour, et que le mois de la date est juin, le jour sera changé en 10 et le mois passera à juillet.

    +Si le paramètre renseigné est en dehors des limites attendues, `setUTCDate()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 40 pour `valeurJour`, et que le mois de la date est juin, le jour sera changé en 10 et le mois passera à juillet. -

    Exemples

    +## Exemples -

    Utiliser setUTCDate()

    +### Utiliser `setUTCDate()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCDate(20);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.37', 'Date.prototype.setUTCDate')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCDate")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCDate()")}}
    • -
    • {{jsxref("Date.prototype.setDate()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.37', 'Date.prototype.setUTCDate')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCDate")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCDate()")}} +- {{jsxref("Date.prototype.setDate()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcfullyear/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcfullyear/index.md index beeedfb099..4490cf9d6a 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcfullyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcfullyear/index.md @@ -10,84 +10,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCFullYear --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCFullYear() définit l'année complête pour la date, selon UTC.

    +La méthode **`setUTCFullYear()`** définit l'année complête pour la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcfullyear.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcfullyear.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCFullYear(valeurAnnée[, valeurMois[, valeurJour]])
    + dateObj.setUTCFullYear(valeurAnnée[, valeurMois[, valeurJour]]) -

    Paramètres

    +### Paramètres -
    -
    valeurAnnée
    -
    Un entier indiquant la valeur numérique d'une année, par exemple, 1995.
    -
    valeurMois
    -
    Paramètre optionnel, un entier entre 0 et 11 représentant les mois de janvier à décembre.
    -
    valeurJour
    -
    Paramètre optionnel, un entier entre 1 et 31 représentant le jour du mois. Si le paramètre valeurJour est utilisé, il est également nécessaire d'indiquer valeurMois.
    -
    +- `valeurAnnée` + - : Un entier indiquant la valeur numérique d'une année, par exemple, 1995. +- `valeurMois` + - : Paramètre optionnel, un entier entre 0 et 11 représentant les mois de janvier à décembre. +- `valeurJour` + - : Paramètre optionnel, un entier entre 1 et 31 représentant le jour du mois. Si le paramètre `valeurJour` est utilisé, il est également nécessaire d'indiquer `valeurMois`. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si les paramètres valeurMois et valeurJour ne sont pas utilisés, les valeurs renvoyées par les méthodes {{jsxref("Objets_globaux/Date/getUTCMonth", "getUTCMonth()")}} et {{jsxref("Objets_globaux/Date/getUTCDate", "getUTCDate()")}} seront utilisées.

    +Si les paramètres `valeurMois` et `valeurJour` ne sont pas utilisés, les valeurs renvoyées par les méthodes {{jsxref("Objets_globaux/Date/getUTCMonth", "getUTCMonth()")}} et {{jsxref("Objets_globaux/Date/getUTCDate", "getUTCDate()")}} seront utilisées. -

    Si un des paramètres indiqué est en dehors des limites attendues, setUTCFullYear() tentera de mettre à jour la date en conséquence. Ainsi si on utilise la valeur 15 pour valeurMois, l'année sera incrémentée de 1 (année + 1), et 3 sera utilisé pour le mois.

    +Si un des paramètres indiqué est en dehors des limites attendues, `setUTCFullYear()` tentera de mettre à jour la date en conséquence. Ainsi si on utilise la valeur 15 pour `valeurMois`, l'année sera incrémentée de 1 (année + 1), et 3 sera utilisé pour le mois. -

    Exemples

    +## Exemples -

    Utiliser setUTCFullYear()

    +### Utiliser `setUTCFullYear()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCFullYear(1997);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.41', 'Date.prototype.setUTCFullYear')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCFullYear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setFullYear()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.41', 'Date.prototype.setUTCFullYear')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCFullYear")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCFullYear()")}} +- {{jsxref("Date.prototype.setFullYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutchours/index.md b/files/fr/web/javascript/reference/global_objects/date/setutchours/index.md index 038f330691..775990f78e 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutchours/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutchours/index.md @@ -10,86 +10,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCHours --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCHours() définit les heures pour la date, selon UTC, et renvoie le nombre de millièmes de secondes écoulées entre le 1er janvier 1970 00:00:00 UTC et cette nouvelle date.

    +La méthode **`setUTCHours()`** définit les heures pour la date, selon UTC, et renvoie le nombre de millièmes de secondes écoulées entre le 1er janvier 1970 00:00:00 UTC et cette nouvelle date. -
    {{EmbedInteractiveExample("pages/js/date-setutchours.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutchours.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCHours(valeurHeures[, valeurMinutes[, valeurSecondes[, valeurMs]]])
    + dateObj.setUTCHours(valeurHeures[, valeurMinutes[, valeurSecondes[, valeurMs]]]) -

    Paramètres

    +### Paramètres -
    -
    valeurHeures
    -
    Un entier entre 0 et 23, représentant l'heure.
    -
    valeurMinutes
    -
    Paramètre optionnel, un entier entre 0 et 59, représentant les minutes.
    -
    valeurSecondes
    -
    Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si le paramètre valeurSecondes est utilisé, le paramètre valeurMinutes devra également être renseigné.
    -
    valeurMs
    -
    Paramètre optionnel, un entier entre 0 et 999, représentant les millièmes de secondes. Si le paramètre valeurMs est utilisé, les paramètres valeurMinutes et valeurSecondes devront également être renseignés.
    -
    +- `valeurHeures` + - : Un entier entre 0 et 23, représentant l'heure. +- `valeurMinutes` + - : Paramètre optionnel, un entier entre 0 et 59, représentant les minutes. +- `valeurSecondes` + - : Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si le paramètre `valeurSecondes` est utilisé, le paramètre `valeurMinutes` devra également être renseigné. +- `valeurMs` + - : Paramètre optionnel, un entier entre 0 et 999, représentant les millièmes de secondes. Si le paramètre `valeurMs` est utilisé, les paramètres `valeurMinutes` et `valeurSecondes` devront également être renseignés. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si les paramètres valeurMinutes, valeurSecondes et valeurMs ne sont pas renseignés, les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getUTCMinutes", "getUTCMinutes()")}}, {{jsxref("Date.prototype.getUTCSeconds", "getUTCSeconds()")}}, et {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} seront utilisées.

    +Si les paramètres `valeurMinutes`, `valeurSecondes` et `valeurMs` ne sont pas renseignés, les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getUTCMinutes", "getUTCMinutes()")}}, {{jsxref("Date.prototype.getUTCSeconds", "getUTCSeconds()")}}, et {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} seront utilisées. -

    Si un des paramètres renseignés est en dehors des limites attendues, setUTCHours() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour valeurSecondes, les minutes seront incrémentées de 1 (min + 1), et 40 sera utilisé pour les secondes.

    +Si un des paramètres renseignés est en dehors des limites attendues, `setUTCHours()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise la valeur 100 pour `valeurSecondes`, les minutes seront incrémentées de 1 (min + 1), et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setUTCHours()

    +### Utiliser `setUTCHours()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCHours(8);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.35', 'Date.prototype.setUTCHours')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCHours")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCHours()")}}
    • -
    • {{jsxref("Date.prototype.setHours()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.35', 'Date.prototype.setUTCHours')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCHours")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCHours()")}} +- {{jsxref("Date.prototype.setHours()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcmilliseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcmilliseconds/index.md index 4e6b3e26f1..7e7e0a4e3d 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcmilliseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcmilliseconds/index.md @@ -10,78 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCMilliseconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCMilliseconds() définit les millièmes de secondes pour la date, selon UTC.

    +La méthode **`setUTCMilliseconds()`** définit les millièmes de secondes pour la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcmilliseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcmilliseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCMilliseconds(valeurMs) 
    + dateObj.setUTCMilliseconds(valeurMs) -

    Paramètres

    +### Paramètres -
    -
    valeurMs
    -
    Un entier entre 0 et 999, représentant les millièmes de secondes.
    -
    +- `valeurMs` + - : Un entier entre 0 et 999, représentant les millièmes de secondes. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre indiqué est en dehors des limites attendues, la date sera mise à jour en conséquence. Par exemple, si on utilise la valeur 1005, le nombre des secondes sera incrémenté de 1, et 5 sera utilisé pour les millièmes de secondes.

    +Si le paramètre indiqué est en dehors des limites attendues, la date sera mise à jour en conséquence. Par exemple, si on utilise la valeur 1005, le nombre des secondes sera incrémenté de 1, et 5 sera utilisé pour les millièmes de secondes. -

    Exemples

    +## Exemples -

    Utiliser setUTCMilliseconds()

    +### Utiliser `setUTCMilliseconds()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCMilliseconds(500);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.29', 'Date.prototype.setUTCMilliseconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCMilliseconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMilliseconds()")}}
    • -
    • {{jsxref("Date.prototype.setMilliseconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.29', 'Date.prototype.setUTCMilliseconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCMilliseconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMilliseconds()")}} +- {{jsxref("Date.prototype.setMilliseconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcminutes/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcminutes/index.md index 5e57b4e761..ebf0a4ead5 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcminutes/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcminutes/index.md @@ -10,84 +10,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCMinutes --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCMinutes() définit les minutes pour la date, selon UTC.

    +La méthode **`setUTCMinutes()`** définit les minutes pour la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcminutes.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcminutes.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCMinutes(valeurMinutes[, valeurSecondes[, valeurMs]]) 
    + dateObj.setUTCMinutes(valeurMinutes[, valeurSecondes[, valeurMs]]) -

    Paramètres

    +### Paramètres -
    -
    valeurMinutes
    -
    Un entier entre 0 et 59, représentant les minutes.
    -
    valeurSecondes
    -
    Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si ce paramètre est utilisé, il faut également utiliser valeurMinutes.
    -
    valeurMs
    -
    Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes. Si ce paramètre est utilisé, il faut aussi indiquer valeurMinutes et valeurSecondes.
    -
    +- `valeurMinutes` + - : Un entier entre 0 et 59, représentant les minutes. +- `valeurSecondes` + - : Paramètre optionnel, un entier entre 0 et 59, représentant les secondes. Si ce paramètre est utilisé, il faut également utiliser `valeurMinutes`. +- `valeurMs` + - : Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes. Si ce paramètre est utilisé, il faut aussi indiquer `valeurMinutes` et `valeurSecondes`. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si les paramètres valeurSecondes et valeurMs ne sont pas utilisés, les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getUTCSeconds", "getUTCSeconds()")}} et {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} seront utilisées.

    +Si les paramètres `valeurSecondes` et `valeurMs` ne sont pas utilisés, les valeurs renvoyées par les méthodes {{jsxref("Date.prototype.getUTCSeconds", "getUTCSeconds()")}} et {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} seront utilisées. -

    Si un paramètre est en dehors des limites attendues, setUTCMinutes() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 100 pour valeurSecondes, les minutes (valeurMinutes) seront incrémentées de 1 (valeurMinutes + 1), et 40 sera utilisé pour les secondes.

    +Si un paramètre est en dehors des limites attendues, `setUTCMinutes()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 100 pour `valeurSecondes`, les minutes (`valeurMinutes`) seront incrémentées de 1 (`valeurMinutes` + 1), et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setUTCMinutes()

    +### Utiliser `setUTCMinutes()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCMinutes(43);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.33', 'Date.prototype.setUTCMinutes')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCMinutes")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMinutes()")}}
    • -
    • {{jsxref("Date.prototype.setMinutes()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.33', 'Date.prototype.setUTCMinutes')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCMinutes")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMinutes()")}} +- {{jsxref("Date.prototype.setMinutes()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcmonth/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcmonth/index.md index 7fff322429..580acfb674 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcmonth/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcmonth/index.md @@ -10,82 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCMonth --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCMonth() définit le mois de la date, selon UTC.

    +La méthode **`setUTCMonth()`** définit le mois de la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcmonth.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcmonth.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCMonth(valeurMois[, valeurJour]) 
    + dateObj.setUTCMonth(valeurMois[, valeurJour]) -

    Paramètres

    +### Paramètres -
    -
    valeurMois
    -
    Un entier entre 0 et 11, représentant les mois de Janvier à Décembre.
    -
    valeurJour
    -
    Paramètre optionnel, un entier entre 1 et 31, représentant le jour du mois.
    -
    +- `valeurMois` + - : Un entier entre 0 et 11, représentant les mois de Janvier à Décembre. +- `valeurJour` + - : Paramètre optionnel, un entier entre 1 et 31, représentant le jour du mois. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre valeurJour n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.prototype.getUTCDate", "getUTCDate()")}} sera utilisée.

    +Si le paramètre `valeurJour` n'est pas utilisé, la valeur renvoyée par la méthode {{jsxref("Date.prototype.getUTCDate", "getUTCDate()")}} sera utilisée. -

    Si un paramètre renseigné n'est pas dans l'intervalle attendues, setUTCMonth() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 15 pour valeurMois, l'année sera incrémentée de 1 (année + 1), et 3 sera utilisé pour le mois.

    +Si un paramètre renseigné n'est pas dans l'intervalle attendues, `setUTCMonth()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 15 pour `valeurMois`, l'année sera incrémentée de 1 (année + 1), et 3 sera utilisé pour le mois. -

    Exemples

    +## Exemples -

    Utiliser setUTCMonth()

    +### Utiliser `setUTCMonth()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCMonth(11);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.39', 'Date.prototype.setUTCMonth')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCMonth")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCMonth()")}}
    • -
    • {{jsxref("Date.prototype.setMonth()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.39', 'Date.prototype.setUTCMonth')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCMonth")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCMonth()")}} +- {{jsxref("Date.prototype.setMonth()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setutcseconds/index.md b/files/fr/web/javascript/reference/global_objects/date/setutcseconds/index.md index 38bbc89cad..ffb683924a 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setutcseconds/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setutcseconds/index.md @@ -10,82 +10,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setUTCSeconds --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode setUTCSeconds() définit les secondes pour la date, selon UTC.

    +La méthode **`setUTCSeconds()`** définit les secondes pour la date, selon UTC. -
    {{EmbedInteractiveExample("pages/js/date-setutcseconds.html")}}
    +{{EmbedInteractiveExample("pages/js/date-setutcseconds.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.setUTCSeconds(valeurSecondes[, valeurMs]) 
    + dateObj.setUTCSeconds(valeurSecondes[, valeurMs]) -

    Paramètres

    +### Paramètres -
    -
    valeurSecondes
    -
    Un entier entre 0 et 59.
    -
    valeurMs
    -
    Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes.
    -
    +- `valeurSecondes` + - : Un entier entre 0 et 59. +- `valeurMs` + - : Paramètre optionnel, un nombre entre 0 et 999, représentant les millièmes de secondes. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si le paramètre valeurMs n'est pas utilisée, la valeur renvoyée par la méthode {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} sera utilisée.

    +Si le paramètre `valeurMs` n'est pas utilisée, la valeur renvoyée par la méthode {{jsxref("Date.prototype.getUTCMilliseconds", "getUTCMilliseconds()")}} sera utilisée. -

    Si un paramètre renseigné est en dehors de l'intervalle attendu, setUTCSeconds() tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 100 pour valeurSecondes, les minutes de la date seront incrémentées de 1, et 40 sera utilisé pour les secondes.

    +Si un paramètre renseigné est en dehors de l'intervalle attendu, `setUTCSeconds()` tentera de mettre à jour la date en conséquence. Par exemple, si on utilise 100 pour `valeurSecondes`, les minutes de la date seront incrémentées de 1, et 40 sera utilisé pour les secondes. -

    Exemples

    +## Exemples -

    Utiliser setUTCSeconds()

    +### Utiliser `setUTCSeconds()` -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     leGrandJour.setUTCSeconds(20);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.9.5.31', 'Date.prototype.setUTCSeconds')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setUTCSeconds")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getUTCSeconds()")}}
    • -
    • {{jsxref("Date.prototype.setSeconds()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.9.5.31', 'Date.prototype.setUTCSeconds')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setUTCSeconds")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getUTCSeconds()")}} +- {{jsxref("Date.prototype.setSeconds()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/setyear/index.md b/files/fr/web/javascript/reference/global_objects/date/setyear/index.md index 05e61e6700..34756135d3 100644 --- a/files/fr/web/javascript/reference/global_objects/date/setyear/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/setyear/index.md @@ -11,83 +11,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/setYear original_slug: Web/JavaScript/Reference/Objets_globaux/Date/setYear --- -
    {{JSRef}} {{deprecated_header}}
    +{{JSRef}} {{deprecated_header}} -

    La méthode setYear() définit l'année pour pour la date, selon l'heure locale. setYear() ne définissant pas des années complêtes ( « bug de l'an 2000 » ), elle n'est plus utilisée et a été remplacée par la méthode {{jsxref("Date.prototype.setFullYear", "setFullYear")}}.

    +La méthode **`setYear()`** définit l'année pour pour la date, selon l'heure locale. `setYear()` ne définissant pas des années complêtes ( « bug de l'an 2000 » ), elle n'est plus utilisée et a été remplacée par la méthode {{jsxref("Date.prototype.setFullYear", "setFullYear")}}. -

    Syntaxe

    +## Syntaxe -
    dateObj.setYear(valeurAnnée)
    + dateObj.setYear(valeurAnnée) -

    Paramètres

    +### Paramètres -
    -
    valeurAnnée
    -
    Un entier.
    -
    +- `valeurAnnée` + - : Un entier. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970 minuit, UTC et la date mise à jour. -

    Description

    +## Description -

    Si valeurAnnée est un nombre entre 0 et 99 (inclus), alors l'année de dateObj sera définie à 1900 + valeurAnnée. Sinon, l'année de dateObj sera définie à valeurAnnée.

    +Si `valeurAnnée` est un nombre entre 0 et 99 (inclus), alors l'année de `dateObj` sera définie à 1900 + `valeurAnnée`. Sinon, l'année de `dateObj` sera définie à `valeurAnnée`. -

    Exemples

    +## Exemples -

    Utiliser setYear()

    +### Utiliser `setYear()` -

    Les deux premières instructions définissent l'année 1996. La troisième définit l'année 2000.

    +Les deux premières instructions définissent l'année 1996. La troisième définit l'année 2000. -
    var leGrandJour = new Date();
    +```js
    +var leGrandJour = new Date();
     
     leGrandJour.setYear(96);
     leGrandJour.setYear(1996);
     leGrandJour.setYear(2000);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-B.2.5', 'Date.prototype.setYear')}}{{Spec2('ES5.1')}}Définie dans l'annexe informative sur la compatibilité.
    {{SpecName('ES6', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}}{{Spec2('ES6')}}Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web.
    {{SpecName('ESDraft', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}}{{Spec2('ESDraft')}}Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.setYear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.getFullYear()")}}
    • -
    • {{jsxref("Date.prototype.getUTCFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setFullYear()")}}
    • -
    • {{jsxref("Date.prototype.setUTCFullYear()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-B.2.5', 'Date.prototype.setYear')}} | {{Spec2('ES5.1')}} | Définie dans l'annexe informative sur la compatibilité. | +| {{SpecName('ES6', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}} | {{Spec2('ES6')}} | Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web. | +| {{SpecName('ESDraft', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}} | {{Spec2('ESDraft')}} | Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.setYear")}} + +## Voir aussi + +- {{jsxref("Date.prototype.getFullYear()")}} +- {{jsxref("Date.prototype.getUTCFullYear()")}} +- {{jsxref("Date.prototype.setFullYear()")}} +- {{jsxref("Date.prototype.setUTCFullYear()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/todatestring/index.md b/files/fr/web/javascript/reference/global_objects/date/todatestring/index.md index 0fa5df67f0..50dbe12d4b 100644 --- a/files/fr/web/javascript/reference/global_objects/date/todatestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/todatestring/index.md @@ -10,82 +10,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toDateString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toDateString() renvoie la date contenue dans un objet {{jsxref("Date")}} sous la forme d'une chaîne de caractères lisible par un humain, en anglais américain et au format suivant :

    +La méthode **`toDateString()`** renvoie la date contenue dans un objet {{jsxref("Date")}} sous la forme d'une chaîne de caractères lisible par un humain, en anglais américain et au format suivant : -
      -
    1. Les trois premières lettre indiquent le jour
    2. -
    3. Les trois lettres suivantes indiquent le mois
    4. -
    5. Les deux chiffres suivants indiquent le jour du mois (et sont complétés avec un 0 devant si besoin)
    6. -
    7. Les quatre chiffres restants indiquent l'année (si besoin complétées avec des 0 comme préfixe)
    8. -
    +1. Les trois premières lettre indiquent le jour +2. Les trois lettres suivantes indiquent le mois +3. Les deux chiffres suivants indiquent le jour du mois (et sont complétés avec un 0 devant si besoin) +4. Les quatre chiffres restants indiquent l'année (si besoin complétées avec des 0 comme préfixe) -
    {{EmbedInteractiveExample("pages/js/date-todatestring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-todatestring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toDateString()
    + dateObj.toDateString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente la date indiquée, dans un format anglais américain.

    +Une chaîne de caractères qui représente la date indiquée, dans un format anglais américain. -

    Description

    +## Description -

    Les instances de {{jsxref("Date")}} représentent un point précis dans le temps. Appeler {{jsxref("Date.prototype.toString", "toString")}} retournera la date formatée sous une forme lisible par un humain, en anglais américain. Pour le moteur JavaScript SpiderMonkey, ceci consiste en : la partie « date » (jour, mois et année) suivie de la partie « heure » (heures, minutes, secondes et fuseau horaire). Il est parfois préférable d'obtenir uniquement la partie « date » ; ceci est possible grâce à la méthode toDateString().

    +Les instances de {{jsxref("Date")}} représentent un point précis dans le temps. Appeler {{jsxref("Date.prototype.toString", "toString")}} retournera la date formatée sous une forme lisible par un humain, en anglais américain. Pour le moteur JavaScript [SpiderMonkey](/fr/docs/SpiderMonkey), ceci consiste en : la partie « date » (jour, mois et année) suivie de la partie « heure » (heures, minutes, secondes et fuseau horaire). Il est parfois préférable d'obtenir uniquement la partie « date » ; ceci est possible grâce à la méthode `toDateString()`. -

    La méthode toDateString() est particulièrement utile car, pour les moteurs implémentant fidèlement ECMA-262, il peut y avoir certaines différences dans la chaîne de caractères produite par toString() sur les objets Date. Le format dépend de l'implémentation et les techniques simples de découpage de texte peuvent ne pas produire un résultat cohérent à travers les différents moteurs.

    +La méthode `toDateString()` est particulièrement utile car, pour les moteurs implémentant fidèlement [ECMA-262](/fr/docs/JavaScript/Language_Resources), il peut y avoir certaines différences dans la chaîne de caractères produite par `toString()` sur les objets `Date`. Le format dépend de l'implémentation et les techniques simples de découpage de texte peuvent ne pas produire un résultat cohérent à travers les différents moteurs. -

    Exemples

    +## Exemples -

    Utiliser simplement toDateString()

    +### Utiliser simplement `toDateString()` -
    var d = new Date(1993, 6, 28, 14, 39, 7);
    +```js
    +var d = new Date(1993, 6, 28, 14, 39, 7);
     
     console.log(d.toString());     // écrit Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
    -console.log(d.toDateString()); // écrit Wed Jul 28 1993
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.9.5.3', 'Date.prototype.toDateString')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toDateString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toString()")}}
    • -
    +console.log(d.toDateString()); // écrit Wed Jul 28 1993 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.9.5.3', 'Date.prototype.toDateString')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toDateString")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} +- {{jsxref("Date.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/togmtstring/index.md b/files/fr/web/javascript/reference/global_objects/date/togmtstring/index.md index 701cc5c49a..6cabfdde5a 100644 --- a/files/fr/web/javascript/reference/global_objects/date/togmtstring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/togmtstring/index.md @@ -11,74 +11,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toGMTString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toGMTString --- -
    {{JSRef}} {{deprecated_header}}
    +{{JSRef}} {{deprecated_header}} -

    La méthode toGMTString() convertit une date en une chaîne de caractères, en utilisant les conventions Internet pour GMT. Le format exact de la valeur renvoyée par toGMTString() varie en fonction de la plateforme et du navigateur web. En général, le texte produit est formaté pour être lisible par un humain.

    +La méthode **`toGMTString()`** convertit une date en une chaîne de caractères, en utilisant les conventions Internet pour GMT. Le format exact de la valeur renvoyée par `toGMTString()` varie en fonction de la plateforme et du navigateur web. En général, le texte produit est formaté pour être lisible par un humain. -
    -

    Note : toGMTString() est obsolète et ne doit plus être utilisé. Il existe encore uniquementpour des questions de compatibilité. La méthode {{jsxref("Date.prototype.toUTCString", "toUTCString()")}} doit être utilisée à la place.

    -
    +> **Note :** `toGMTString()` est obsolète et ne doit plus être utilisé. Il existe encore uniquementpour des questions de compatibilité. La méthode {{jsxref("Date.prototype.toUTCString", "toUTCString()")}} doit être utilisée à la place. -

    Syntaxe

    +## Syntaxe -
    dateObj.toGMTString()
    + dateObj.toGMTString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée selon la convention internet pour GMT (Greenwich Mean Time).

    +Une chaîne de caractères représentant la date indiquée selon la convention internet pour GMT (_Greenwich Mean Time_). -

    Exemples

    +## Exemples -

    Utiliser toGMTString()

    +### Utiliser `toGMTString()` -

    Dans cet exemple, la méthode toGMTString() convertit la date vers GMT (UTC) en utilisant la différence avec le fuseau horaire du système d'exploitation. Elle renvoie une chaîne de caractères similaire à celle de l'exemple. La forme exacte de cette chaîne de caractères dépend de la plateforme.

    +Dans cet exemple, la méthode `toGMTString()` convertit la date vers GMT (UTC) en utilisant la différence avec le fuseau horaire du système d'exploitation. Elle renvoie une chaîne de caractères similaire à celle de l'exemple. La forme exacte de cette chaîne de caractères dépend de la plateforme. -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var str = aujourdhui.toGMTString();  // Obsolète ! Utilisez toUTCString()
     
     console.log(str);               // Mon, 18 Dec 1995 17:28:35 GMT
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale et déjà déclarée comme dépréciée. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-B.2.6', 'Date.prototype.toGMTString')}}{{Spec2('ES5.1')}}Définie dans l'annexe informative sur la compatibilité.
    {{SpecName('ES6', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}{{Spec2('ES6')}}Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web.
    {{SpecName('ESDraft', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}{{Spec2('ESDraft')}}Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toGMTString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toUTCString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale et déjà déclarée comme dépréciée. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-B.2.6', 'Date.prototype.toGMTString')}} | {{Spec2('ES5.1')}} | Définie dans l'annexe informative sur la compatibilité. | +| {{SpecName('ES6', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}} | {{Spec2('ES6')}} | Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web. | +| {{SpecName('ESDraft', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}} | {{Spec2('ESDraft')}} | Définie dans l'annexe normative sur les fonctionnalités additionnelles des navigateurs web. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toGMTString")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} +- {{jsxref("Date.prototype.toUTCString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/toisostring/index.md b/files/fr/web/javascript/reference/global_objects/date/toisostring/index.md index 102c8dfb19..04e1ce306e 100644 --- a/files/fr/web/javascript/reference/global_objects/date/toisostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/toisostring/index.md @@ -11,40 +11,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toISOString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toISOString() renvoie une chaîne de caractères au format ISO (ISO 8601 Extended Format), qui peut être décrite de cette façon : YYYY-MM-DDTHH:mm:ss.sssZ (toujours longue de 24 caractères) ou de cette façon ±YYYYYY-MM-DDTHH:mm:ss.sssZ (27 caractères). Le fuseau horaire est toujours UTC, comme l'indique le suffixe « Z » (pour zéro décalage avec UTC).

    +La méthode **`toISOString()`** renvoie une chaîne de caractères au format ISO ([ISO 8601 Extended Format](http://en.wikipedia.org/wiki/ISO_8601)), qui peut être décrite de cette façon : **`YYYY-MM-DDTHH:mm:ss.sssZ`** (toujours longue de 24 caractères) ou de cette façon **`±YYYYYY-MM-DDTHH:mm:ss.sssZ`** (27 caractères). Le fuseau horaire est toujours UTC, comme l'indique le suffixe « Z » (pour zéro décalage avec UTC). -
    {{EmbedInteractiveExample("pages/js/date-toisostring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-toisostring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toISOString()
    + dateObj.toISOString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée au format ISO 8601 selon le temps universel.

    +Une chaîne de caractères représentant la date indiquée au format [ISO 8601](https://fr.wikipedia.org/wiki/ISO_8601) selon le temps universel. -

    Exemples

    +## Exemples -

    Utiliser toISOString()

    +### Utiliser `toISOString()` -
    var aujourdhui = new Date("05 October 2011 14:48 UTC");
    +```js
    +var aujourdhui = new Date("05 October 2011 14:48 UTC");
     
     console.log(aujourdhui.toISOString()); // Renvoie "2011-10-05T14:48:00.000Z"
    -
    +``` -

    L'exemple ci-dessus analyse une chaîne de caractères non-standard, qui peut donc être incorrectement intérprété par des navigateurs n'utilisant pas Gecko.

    +L'exemple ci-dessus analyse une chaîne de caractères non-standard, qui peut donc être incorrectement intérprété par des navigateurs n'utilisant pas Gecko. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette méthode fut standardisée avec la cinquième édition d'ECMAScript. Afin d'utiliser cette méthode avec les moteurs qui n'en disposent pas nativement, on pourra utiliser ce fragment de code :

    +Cette méthode fut standardisée avec la cinquième édition d'ECMAScript. Afin d'utiliser cette méthode avec les moteurs qui n'en disposent pas nativement, on pourra utiliser ce fragment de code : -
    if ( !Date.prototype.toISOString ) {
    +```js
    +if ( !Date.prototype.toISOString ) {
       ( function() {
     
         function pad(number) {
    -      if ( number < 10 ) {
    +      if ( number < 10 ) {
             return '0' + number;
           }
           return number;
    @@ -62,43 +64,23 @@ console.log(aujourdhui.toISOString()); // Renvoie "2011-10-05T14:48:00.000Z"
         };
     
       }() );
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.8.
    {{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toISOString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toUTCString()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.8. | +| {{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toISOString")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} +- {{jsxref("Date.prototype.toUTCString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tojson/index.md b/files/fr/web/javascript/reference/global_objects/date/tojson/index.md index c05c5d8d13..7909061c35 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tojson/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tojson/index.md @@ -10,69 +10,49 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toJSON --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toJSON() renvoie une chaîne représentant l'objet {{jsxref("Date")}} sous forme {{Glossary("JSON")}}

    +La méthode **`toJSON()`** renvoie une chaîne représentant l'objet {{jsxref("Date")}} sous forme {{Glossary("JSON")}} -
    {{EmbedInteractiveExample("pages/js/date-tojson.html")}}
    +{{EmbedInteractiveExample("pages/js/date-tojson.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toJSON()
    + dateObj.toJSON() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée.

    +Une chaîne de caractères représentant la date indiquée. -

    Description

    +## Description -

    Les instances de {{jsxref("Date")}} identifient un instant précis dans le temps. Appeler toJSON() renvoie une chaîne de caractères formatée en JSON (en utilisant {{jsxref("Date.prototype.toISOString", "toISOString()")}}), représentant la valeur de l'objet Date. Cette méthode est généralement utilisée, par défaut, pour sérialiser les objets Date lors d'une sérialisation au format JSON.

    +Les instances de {{jsxref("Date")}} identifient un instant précis dans le temps. Appeler `toJSON()` renvoie une chaîne de caractères formatée en JSON (en utilisant {{jsxref("Date.prototype.toISOString", "toISOString()")}}), représentant la valeur de l'objet `Date`. Cette méthode est généralement utilisée, par défaut, pour sérialiser les objets `Date` lors d'une sérialisation au format JSON. -

    Exemple

    +## Exemple -

    Utiliser toJSON()

    +### Utiliser `toJSON()` -
    var jsonDate = (new Date()).toJSON();
    +```js
    +var jsonDate = (new Date()).toJSON();
     var retourVersDate = new Date(jsonDate);
     
     console.log(jsonDate); //2015-10-26T07:46:36.611Z
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.9.5.44', 'Date.prototype.toJSON')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.8.5.
    {{SpecName('ES6', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toJSON")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toUTCString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.9.5.44', 'Date.prototype.toJSON')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.8.5. | +| {{SpecName('ES6', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toJSON")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} +- {{jsxref("Date.prototype.toUTCString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tolocaledatestring/index.md b/files/fr/web/javascript/reference/global_objects/date/tolocaledatestring/index.md index e773e49be3..3d0c471682 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tolocaledatestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tolocaledatestring/index.md @@ -12,47 +12,50 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toLocaleDateString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleDateString() renvoie une chaine de caractères correspondant à la date (le fragment de l'objet qui correspond à la date : jour, mois, année) exprimée selon une locale. Les arguments locales et options permettent aux applications de définir le langage utilisé pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation.

    +La méthode **`toLocaleDateString()`** renvoie une chaine de caractères correspondant à la date (le fragment de l'objet qui correspond à la date : jour, mois, année) exprimée selon une locale. Les arguments `locales` et `options` permettent aux applications de définir le langage utilisé pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation. -
    {{EmbedInteractiveExample("pages/js/date-tolocaledatestring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-tolocaledatestring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toLocaleDateString([locales [, options]])
    + dateObj.toLocaleDateString([locales [, options]]) -

    Paramètres

    +### Paramètres -

    Voir le tableau de compatibilité des navigateurs afin de déterminer quels navigateurs respectent les arguments locales et options ainsi que l'exemple Vérifier le support des arguments locales et options qui permet de détecter cette fonctionnalité.

    +Voir le tableau de [compatibilité des navigateurs](#compat) afin de déterminer quels navigateurs respectent les arguments `locales` et `options` ainsi que l'exemple [Vérifier le support des arguments locales et options](#check) qui permet de détecter cette fonctionnalité. -

    {{page('fr/docs/JavaScript/Reference/Objets_globaux/DateTimeFormat','Paramètres')}}

    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/DateTimeFormat','Paramètres')}} -

    La valeur par défaut de chacun des composants de la date vaut {{jsxref("undefined")}}, si les propriétés weekday, year, month, day sont toutes undefined, on suppose alors que year, month, et day sont « numériques ».

    +La valeur par défaut de chacun des composants de la date vaut {{jsxref("undefined")}}, si les propriétés `weekday`, `year`, `month`, `day` sont toutes `undefined`, on suppose alors que `year`, `month`, et `day` sont « numériques ». -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente le jour de la date indiquée selon des options de locales.

    +Une chaîne de caractères qui représente le jour de la date indiquée selon des options de locales. -

    Exemples

    +## Exemples -

    Utiliser toLocaleDateString()

    +### Utiliser `toLocaleDateString()` -

    Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée.

    +Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée. -
    var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
     
     // toLocaleDateString() sans argument, on utilise donc
     // les valeurs par défaut (de l'implémentation)
     // pour la locale, et le fuseau horaire
     date.toLocaleDateString();
    -// → "12/12/2012" si exécuté dans une locale fr et le fuseau horaire CEST
    +// → "12/12/2012" si exécuté dans une locale fr et le fuseau horaire CEST +``` -

    Vérifier le support des arguments locales et options

    +### Vérifier le support des arguments `locales` et `options` -

    Les arguments locales et options ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception RangeError :

    +Les arguments `locales` et `options` ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception` RangeError` : -
    function toLocaleDateStringSupportsLocales() {
    +```js
    +function toLocaleDateStringSupportsLocales() {
         try {
             new Date().toLocaleDateString("i");
         } catch (e) {
    @@ -60,13 +63,14 @@ date.toLocaleDateString();
         }
         return false;
     }
    -
    +``` -

    Utiliser l'argument locales

    +### Utiliser l'argument `locales` -

    Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument locales :

    +Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument `locales` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // les formats qui suivent se basent sur le
     // fuseau horaire CEST
    @@ -85,7 +89,7 @@ alert(date.toLocaleDateString("ko-KR"));
     
     // l'arabe, dans la plupart des pays arabophones, utilise les chiffres arabes
     alert(date.toLocaleDateString("ar-EG"));
    -// → "٢٠‏/١٢‏/٢٠١٢"
    +// → "٢٠‏/١٢‏/٢٠١٢"
     
     // en ce qui concerne le japonais, les applications peuvent
     // souhaiter utiliser le calendrier japonais
    @@ -97,13 +101,14 @@ alert(date.toLocaleDateString("ja-JP-u-ca-japanese"));
     // il est possible de fournir un langage de recours (ici l'indonésien)
     alert(date.toLocaleDateString(["ban", "id"]));
     // → "20/12/2012"
    -
    +``` -

    Utiliser l'argument options

    +### Utiliser l'argument `options` -

    Les résultats fournis par toLocaleDateString() peuvent être personnalisés grâce à l'argument options :

    +Les résultats fournis par `toLocaleDateString()` peuvent être personnalisés grâce à l'argument `options` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // fournir le jour de la semaine avec une date longe
     var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
    @@ -116,68 +121,31 @@ options.timeZone = "UTC";
     options.timeZoneName = "short";
     alert(date.toLocaleDateString("en-US", options));
     // → "Thursday, December 20, 2012, GMT"
    -
    - -

    Performance

    - -

    Lorsque des grands nombres ou de grandes dates sont formatés, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie par sa propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', 'sec-15.9.5.6', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}{{Spec2('ESDraft')}} 
    {{SpecName('ES Int 1.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 1.0')}}Définition des arguments locales et options.
    {{SpecName('ES Int 2.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleDateString', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toLocaleDateString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toString()")}}
    • -
    +``` + +## Performance + +Lorsque des grands nombres ou de grandes dates sont formatés, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie par sa propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', 'sec-15.9.5.6', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ES Int 1.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ES Int 1.0')}} | Définition des arguments `locales` et `options`. | +| {{SpecName('ES Int 2.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleDateString', 'Date.prototype.toLocaleDateString')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toLocaleDateString")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} +- {{jsxref("Date.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toLocaleTimeString()")}} +- {{jsxref("Date.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tolocalestring/index.md b/files/fr/web/javascript/reference/global_objects/date/tolocalestring/index.md index 8eebb47913..22c2f30587 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tolocalestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tolocalestring/index.md @@ -12,47 +12,50 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toLocaleString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleString() renvoie une chaine de caractères représentant la date selon une locale. Les arguments locales et options permettent aux applications de définir le langage à utiliser pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation.

    +La méthode **`toLocaleString()`** renvoie une chaine de caractères représentant la date selon une locale. Les arguments `locales` et `options` permettent aux applications de définir le langage à utiliser pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation. -
    {{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toLocaleString([locales [, options]])
    + dateObj.toLocaleString([locales [, options]]) -

    Paramètres

    +### Paramètres -

    Voir le tableau de compatibilité des navigateurs afin de déterminer quels navigateurs respectent les arguments locales et options ainsi que l'exemple Vérifier le support des arguments locales et options qui permet de détecter cette fonctionnalité.

    +Voir le tableau de [compatibilité des navigateurs](#compat "#Compatibilit.C3.A9_des_navigateurs") afin de déterminer quels navigateurs respectent les arguments `locales` et `options` ainsi que l'exemple [Vérifier le support des arguments `locales` et `options`](#check) qui permet de détecter cette fonctionnalité. -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat','Paramètres')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat','Paramètres')}} -

    La valeur par défaut de chacun des composants de la date-heure vaut {{jsxref("undefined")}}, mais si les propriétés weekday, year, month, day, hour, minute, second sont toutes {{jsxref("undefined")}},  alors  weekday, year, month, day, hour, minute et second sont supposés être "numeric".

    +La valeur par défaut de chacun des composants de la date-heure vaut {{jsxref("undefined")}}, mais si les propriétés `weekday`, `year`, `month`, `day`, `hour`, `minute`, `second` sont toutes {{jsxref("undefined")}},  alors  `weekday`, `year`, `month`, `day`, `hour`, `minute` et `second` sont supposés être "numeric". -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée selon des conventions de locales spécifiques.

    +Une chaîne de caractères représentant la date indiquée selon des conventions de locales spécifiques. -

    Exemples

    +## Exemples -

    Utiliser toLocaleString()

    +### Utiliser `toLocaleString()` -

    Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée.

    +Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée. -
    var date = new Date(Date.UTC(2014, 11, 21, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2014, 11, 21, 3, 0, 0));
     
     // toLocaleString() sans argument, on utilise donc
     // les valeurs par défaut (de l'implémentation)
     // pour la locale, et le fuseau horaire
     date.toLocaleString();
    -// → "21/12/2014 04:00:00" si exécuté dans une locale fr et le fuseau horaire CEST
    +// → "21/12/2014 04:00:00" si exécuté dans une locale fr et le fuseau horaire CEST +``` -

    Vérifier le support des arguments locales et options

    +### Vérifier le support des arguments `locales` et `options` -

    Les arguments locales et options ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception {{jsxref("RangeError")}} :

    +Les arguments `locales` et `options` ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception {{jsxref("RangeError")}} : -
    function toLocaleStringSupportsLocales() {
    +```js
    +function toLocaleStringSupportsLocales() {
         try {
             new Date().toLocaleString("i");
         } catch (e) {
    @@ -60,13 +63,14 @@ date.toLocaleString();
         }
         return false;
     }
    -
    +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument locales :

    +Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument `locales` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // les formats qui suivent se basent sur le
     // fuseau horaire CEST
    @@ -97,13 +101,14 @@ console.log(date.toLocaleString("ja-JP-u-ca-japanese"));
     // il est possible de fournir un langage de recours (ici l'indonésien)
     console.log(date.toLocaleString(["ban", "id"]));
     // → "20/12/2012 04.00.00"
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les résultats fournis par toLocaleString() peuvent être personnalisés grâce à l'argument options :

    +Les résultats fournis par `toLocaleString()` peuvent être personnalisés grâce à l'argument `options` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // obtenir le jour de la semaine avec une date longue
     var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
    @@ -119,83 +124,45 @@ console.log(date.toLocaleString("en-US", options));
     // parfois, même les USA ont besoin d'avoir une heure sur 24h
     console.log(date.toLocaleString("en-US", {hour12: false}));
     // → "12/19/2012, 19:00:00"
    -
    +``` -

    Comparaison des dates formatées et des valeurs statiques

    +### Comparaison des dates formatées et des valeurs statiques -

    La plupart du temps, le format renvoyé par toLocaleString() est cohérent. Toutefois, cela peut évoluer à l'avenir et n'est pas garanti pour l'ensemble des langues (de telles variations sont souhaitables et permises par la spécification). Ainsi, IE et Edge ajoutent des caractères de contrôle bidirectionnels autour des dates afin que le texte produit ait une directionalité cohérente avec le texte avec lequel elles seront concaténées.

    +La plupart du temps, le format renvoyé par `toLocaleString()` est cohérent. Toutefois, cela peut évoluer à l'avenir et n'est pas garanti pour l'ensemble des langues (de telles variations sont souhaitables et permises par la spécification). Ainsi, IE et Edge ajoutent des caractères de contrôle bidirectionnels autour des dates afin que le texte produit ait une directionalité cohérente avec le texte avec lequel elles seront concaténées. -

    Aussi, mieux vaut ne pas comparer un résultat fourni par format() avec une valeur statique :

    +Aussi, mieux vaut ne pas comparer un résultat fourni par `format()` avec une valeur statique : -
    "1.1.2019, 01:00:00" === new Date("2019-01-01T00:00:00.000000Z").toLocaleString();
    +```js example-bad
    +"1.1.2019, 01:00:00" === new Date("2019-01-01T00:00:00.000000Z").toLocaleString();
     // true pour Firefox et les autres
     // false pour IE et Edge
    -
    - -
    -

    Note : Voir aussi ce fil StackOverflow pour plus de détails et d'exemples.

    -
    - -

    Performance

    - -

    Quand vous formatez d'importants volumes de dates, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie via la propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.5', 'Date.prototype.toLocaleString')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}{{Spec2('ESDraft')}}
    {{SpecName('ES Int 1.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int 1.0')}}Définition des arguments locales et options.
    {{SpecName('ES Int 2.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int 2.0')}}
    {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleString', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toLocaleString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toString()")}}
    • -
    +``` + +> **Note :** Voir aussi ce fil [StackOverflow](https://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results) pour plus de détails et d'exemples. + +## Performance + +Quand vous formatez d'importants volumes de dates, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie via la propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.5', 'Date.prototype.toLocaleString')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}} | {{Spec2('ESDraft')}} | | +| {{SpecName('ES Int 1.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}} | {{Spec2('ES Int 1.0')}} | Définition des arguments `locales` et `options`. | +| {{SpecName('ES Int 2.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}} | {{Spec2('ES Int 2.0')}} | | +| {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleString', 'Date.prototype.toLocaleString')}} | {{Spec2('ES Int Draft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toLocaleString")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toLocaleTimeString()")}} +- {{jsxref("Date.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tolocaletimestring/index.md b/files/fr/web/javascript/reference/global_objects/date/tolocaletimestring/index.md index 28764c098c..b6e4af66c9 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tolocaletimestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tolocaletimestring/index.md @@ -12,47 +12,50 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toLocaleTimeString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleTimeString() renvoie une chaine de caractères correspondant à l'heure dans la date, exprimée selon une locale. Les arguments locales et options permettent aux applications de définir le langage utilisé pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation.

    +La méthode **`toLocaleTimeString()`** renvoie une chaine de caractères correspondant à l'heure dans la date, exprimée selon une locale. Les arguments `locales` et `options` permettent aux applications de définir le langage utilisé pour les conventions de format et permettent de personnaliser le comportement de la fonction. Les anciennes implémentations ignorent ces arguments, la locale utilisée et le format de la chaine dépendent uniquement de l'implémentation. -
    {{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toLocaleTimeString([locales [, options]])
    + dateObj.toLocaleTimeString([locales [, options]]) -

    Paramètres

    +### Paramètres -

    Voir le tableau de compatibilité des navigateurs afin de déterminer quels navigateurs respectent les arguments locales et options ainsi que l'exemple Vérifier le support des arguments locales et options qui permet de détecter cette fonctionnalité.

    +Voir le tableau de [compatibilité des navigateurs](#compat "#Compatibilit.C3.A9_des_navigateurs") afin de déterminer quels navigateurs respectent les arguments `locales` et `options` ainsi que l'exemple [Vérifier le support des arguments `locales` et `options`](#check) qui permet de détecter cette fonctionnalité. -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat','Param.C3.A8tres')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat','Param.C3.A8tres')}} -

    La valeur par défaut de chacun des composants de la date vaut {{jsxref("undefined")}}, si les propriétés hour, minute, second sont toutes undefined, on suppose alors que hour, minute, et second sont "numeric".

    +La valeur par défaut de chacun des composants de la date vaut {{jsxref("undefined")}}, si les propriétés `hour`, `minute`, `second` sont toutes `undefined`, on suppose alors que `hour`, `minute`, et `second` sont "numeric". -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente l'heure de la date indiquée selon des conventions de locales spécifiques.

    +Une chaîne de caractères qui représente l'heure de la date indiquée selon des conventions de locales spécifiques. -

    Exemples

    +## Exemples -

    Utiliser toLocaleTimeString()

    +### Utiliser `toLocaleTimeString()` -

    Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée.

    +Voici un usage simple qui ne définit pas de locale : une chaine de caractères dans une locale et avec des options par défaut est renvoyée. -
    var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
     
     // toLocaleTimeString() sans argument, on utilise donc
     // les valeurs par défaut (de l'implémentation)
     // pour la locale, et le fuseau horaire
     console.log(date.toLocaleTimeString());
    -// → "04:00:00" si exécuté dans une locale fr et le fuseau horaire CEST
    +// → "04:00:00" si exécuté dans une locale fr et le fuseau horaire CEST +``` -

    Vérifier le support des arguments locales et options

    +### Vérifier le support des arguments `locales` et `options` -

    Les arguments locales et options ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception RangeError :

    +Les arguments `locales` et `options` ne sont pas encore supportés par tous les navigateurs. Afin de vérifier si l'implementation utilisée les supporte, vous pouvez utiliser le pré-requis suivant : les locales incorrectes sont rejetées avec une exception` RangeError` : -
    function toLocaleTimeStringSupportsLocales() {
    +```js
    +function toLocaleTimeStringSupportsLocales() {
         try {
             new Date().toLocaleTimeString("i");
         } catch (e) {
    @@ -60,13 +63,14 @@ console.log(date.toLocaleTimeString());
         }
         return false;
     }
    -
    +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument locales :

    +Cet exemple montre quelques variations dues aux formats de dates localisés. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument `locales` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // les formats qui suivent se basent sur le
     // fuseau horaire CEST
    @@ -91,13 +95,14 @@ console.log(date.toLocaleTimeString("ar-EG"));
     // il est possible de fournir un langage de recours (ici l'indonésien)
     console.log(date.toLocaleTimeString(["ban", "id"]));
     // → "4.00.00"
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les résultats fournis par toLocaleTimeString() peuvent être personnalisés grâce à l'argument options :

    +Les résultats fournis par `toLocaleTimeString()` peuvent être personnalisés grâce à l'argument `options` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // une application peut vouloir utiliser UTC et le montrer
     var options = {timeZone: "UTC", timeZoneName: "short"};
    @@ -107,69 +112,32 @@ console.log(date.toLocaleTimeString("en-US", options));
     // parfois, même les USA ont besoin du format sur 24h
     console.log(date.toLocaleTimeString("en-US", {hour12: false}));
     // → "19:00:00"
    -
    - -

    Performance

    - -

    Pour formater de nombreuses dates, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie par sa propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.7', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ESDraft')}} 
    {{SpecName('ES Int 1.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int 1.0')}}Définition des arguments locales et options.
    {{SpecName('ES Int 2.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleTimeString', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toLocaleTimeString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toString()")}}
    • -
    +``` + +## Performance + +Pour formater de nombreuses dates, il est préférable de créer un objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} et d'utiliser la fonction fournie par sa propriété {{jsxref("DateTimeFormat.prototype.format", "format")}}. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.7', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ESDraft')}} |   | +| {{SpecName('ES Int 1.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES Int 1.0')}} | Définition des arguments `locales` et `options`. | +| {{SpecName('ES Int 2.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleTimeString', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toLocaleTimeString")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} +- {{jsxref("Date.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tosource/index.md b/files/fr/web/javascript/reference/global_objects/date/tosource/index.md index 93d004781e..0564beedc8 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tosource/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tosource/index.md @@ -10,47 +10,43 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toSource original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toSource --- -
    {{JSRef}} {{Non-standard_header}}
    +{{JSRef}} {{Non-standard_header}} -

    La méthode toSource() renvoie une chaîne de caractères représentant le code source de l'objet.

    +La méthode **`toSource()`** renvoie une chaîne de caractères représentant le code source de l'objet. -

    Syntaxe

    +## Syntaxe -
    dateObj.toSource()
    -Date.toSource()
    + dateObj.toSource() + Date.toSource() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant le code source de l'objet date indiqué.

    +Une chaîne de caractères représentant le code source de l'objet date indiqué. -

    Description

    +## Description -

    La méthode toSource() renvoie les valeur suivantes :

    +La méthode `toSource()` renvoie les valeur suivantes : -
      -
    • Pour l'objet natif {{jsxref("Date")}}, toSource() renvoie la chaîne de caractères suivante, indiquant que le code source n'est pas disponible :
    • -
    +- Pour l'objet natif {{jsxref("Date")}}, `toSource()` renvoie la chaîne de caractères suivante, indiquant que le code source n'est pas disponible : -
    function Date() {
    +```js
    +function Date() {
         [native code]
    -}
    +} +``` -
      -
    • Pour les instances de {{jsxref("Date")}}, toSource() renvoie une chaîne de caractères représentant le code source.
    • -
    +- Pour les instances de {{jsxref("Date")}}, `toSource()` renvoie une chaîne de caractères représentant le code source. -

    Cette méthode est habituellement appelée en interne par le moteur JavaScript et non explicitement dans le code d'un script.

    +Cette méthode est habituellement appelée en interne par le moteur JavaScript et non explicitement dans le code d'un script. -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucune spécification. Implémentée dans JavaScript 1.3.

    +Ne fait partie d'aucune spécification. Implémentée dans JavaScript 1.3. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Date.toSource")}}

    +{{Compat("javascript.builtins.Date.toSource")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Object.prototype.toSource()")}}
    • -
    +- {{jsxref("Object.prototype.toSource()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/tostring/index.md b/files/fr/web/javascript/reference/global_objects/date/tostring/index.md index b548fb5d0c..f25b125d01 100644 --- a/files/fr/web/javascript/reference/global_objects/date/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/tostring/index.md @@ -10,123 +10,90 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toString() renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}}.

    +La méthode **`toString()`** renvoie une chaîne de caractères représentant l'objet {{jsxref("Date")}}. -
    {{EmbedInteractiveExample("pages/js/date-tostring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toString()
    + dateObj.toString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée.

    +Une chaîne de caractères représentant la date indiquée. -

    Description

    +## Description -

    L'objet {{jsxref("Date")}} remplace la méthode toString() de l'objet {{jsxref("Object")}} ; il n'hérite pas de {{jsxref("Object.prototype.toString()")}}. Pour les objets {{jsxref("Date")}}, la méthode toString() renvoie une représentation textuelle de l'objet.

    +L'objet {{jsxref("Date")}} remplace la méthode `toString()` de l'objet {{jsxref("Object")}} ; il n'hérite pas de {{jsxref("Object.prototype.toString()")}}. Pour les objets {{jsxref("Date")}}, la méthode `toString()` renvoie une représentation textuelle de l'objet. -

    La méthode toString() renvoie toujours une chaîne de caractères représentant une date en anglais américain. Ce format a été standardisé avec ES2018 et peut être décrit de la façon suivante :

    +La méthode `toString()` renvoie toujours une chaîne de caractères représentant une date en anglais américain. Ce format a été standardisé avec ES2018 et peut être décrit de la façon suivante : -
      -
    • Le jour de la semaine avec les trois premières lettres du jour en anglais (ex. « Sat »)
    • -
    • Un espace
    • -
    • Le mois avec les trois premières lettres du mois en anglais (ex. « Sep »)
    • -
    • Un espace
    • -
    • La date du jour dans le mois sur deux chiffres (ex. « 01 »)
    • -
    • Un espace
    • -
    • L'année sur 4 chiffres (ex. « 2018 »)
    • -
    • Un espace
    • -
    • L'heure sur deux chiffres (ex. « 14 »)
    • -
    • Un deux-points (:)
    • -
    • Les minutes sur deux chiffres (ex. « 53 »)
    • -
    • Un deux-points (:)
    • -
    • Les secondes sur deux chiffres (ex. « 26 »)
    • -
    • Un espace
    • -
    • La chaîne de caractères « GMT »
    • -
    • Le signe du décalage horaire par rapport à GMT : -
        -
      • La chaîne "+" pour les décalages positifs (0 ou plus)
      • -
      • La chaîne "-" pour les décalages strictement négatifs
      • -
      -
    • -
    • L'heure de décalage sur deux chiffres
    • -
    • Les minutes de décalage sur deux chiffres
    • -
    • Et, éventuellement, le nom du fuseau horaire avec -
        -
      • Un espace
      • -
      • Une parenthèse ouvrante (« ( »)
      • -
      • Une chaîne de caractères, pouvant varier selon l'implémentation, qui désigne le fuseau horaire. Ce peut être une abréviation ou un nom complet.
      • -
      • Une parenthèse fermante (« ) »)
      • -
      -
    • -
    +- Le jour de la semaine avec les trois premières lettres du jour en anglais (ex. « Sat ») +- Un espace +- Le mois avec les trois premières lettres du mois en anglais (ex. « Sep ») +- Un espace +- La date du jour dans le mois sur deux chiffres (ex. « 01 ») +- Un espace +- L'année sur 4 chiffres (ex. « 2018 ») +- Un espace +- L'heure sur deux chiffres (ex. « 14 ») +- Un deux-points (:) +- Les minutes sur deux chiffres (ex. « 53 ») +- Un deux-points (:) +- Les secondes sur deux chiffres (ex. « 26 ») +- Un espace +- La chaîne de caractères « GMT » +- Le signe du décalage horaire par rapport à GMT : -

    Avant ES2018, le format de la chaîne de caractères renvoyé pouvait varier selon l'implémentation.

    + - La chaîne "+" pour les décalages positifs (0 ou plus) + - La chaîne "-" pour les décalages strictement négatifs -

    JavaScript appelle la méthode toString() automatiquement quand une date doit être representée sous forme d'un texte ou quand une date est référencée lors d'une concatenation de chaînes de caractères.

    +- L'heure de décalage sur deux chiffres +- Les minutes de décalage sur deux chiffres +- Et, éventuellement, le nom du fuseau horaire avec -

    toString() est une méthode générique. Si this n'est pas une instance de {{jsxref("Date")}}, elle renverra "Invalid Date".

    + - Un espace + - Une parenthèse ouvrante (« ( ») + - Une chaîne de caractères, pouvant varier selon l'implémentation, qui désigne le fuseau horaire. Ce peut être une abréviation ou un nom complet. + - Une parenthèse fermante (« ) ») -

    Exemples

    +Avant ES2018, le format de la chaîne de caractères renvoyé pouvait varier selon l'implémentation. -

    Utiliser toString()

    +JavaScript appelle la méthode `toString()` automatiquement quand une date doit être representée sous forme d'un texte ou quand une date est référencée lors d'une concatenation de chaînes de caractères. -

    L'exemple suivant assigne la valeur de toString() de l'objet Date à maVar :

    +`toString()` est une méthode générique. Si `this` n'est pas une instance de {{jsxref("Date")}}, elle renverra "Invalid Date". -
    var x = new Date();
    +## Exemples
    +
    +### Utiliser `toString()`
    +
    +L'exemple suivant assigne la valeur de `toString()` de l'objet `Date` à `maVar` :
    +
    +```js
    +var x = new Date();
     var maVar = x.toString(); // assigne une valeur à maVar similaire à :
     // Mon Sep 28 1998 14:36:22 GMT-0700 (PDT)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.9.5.2', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}{{Spec2('ES6')}} 
    {{SpecName('ES2018', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}{{Spec2('ES2018')}}Standardisation du format produit par Date.prototype.toString()
    {{SpecName('ESDraft', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Object.prototype.toString()")}}
    • -
    • {{jsxref("Date.prototype.toDateString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toTimeString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.9.5.2', 'Date.prototype.toLocaleTimeString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.tostring', 'Date.prototype.toString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ES2018', '#sec-date.prototype.tostring', 'Date.prototype.toString')}} | {{Spec2('ES2018')}} | Standardisation du format produit par `Date.prototype.toString()` | +| {{SpecName('ESDraft', '#sec-date.prototype.tostring', 'Date.prototype.toString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toString")}} + +## Voir aussi + +- {{jsxref("Object.prototype.toString()")}} +- {{jsxref("Date.prototype.toDateString()")}} +- {{jsxref("Date.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toTimeString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/totimestring/index.md b/files/fr/web/javascript/reference/global_objects/date/totimestring/index.md index 8931f46e60..cabaa9ae84 100644 --- a/files/fr/web/javascript/reference/global_objects/date/totimestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/totimestring/index.md @@ -10,76 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toTimeString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toTimeString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toTimeString()renvoie la partie « heure » de l'objet Date dans un format lisible par un humain, en anglais américain.

    +La méthode **`toTimeString()`**renvoie la partie « heure » de l'objet `Date` dans un format lisible par un humain, en anglais américain. -
    {{EmbedInteractiveExample("pages/js/date-totimestring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-totimestring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toTimeString()
    + dateObj.toTimeString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente l'heure de la date indiquée dans un format anglais américain.

    +Une chaîne de caractères qui représente l'heure de la date indiquée dans un format anglais américain. -

    Description

    +## Description -

    Une instance de {{jsxref("Date")}} représente un instant précis dans le temps. Appeler {{jsxref("Date.toString", "toString()")}} renverra la date formatée de façon à être lisible par un humain, en anglais américain. Pour le moteur JavaScript SpiderMonkey, ceci consiste en la partie « date » (jour, mois, année) suivie de la partie « heure » (heures, minutes, secondes, et fuseau horaire). Parfois, il est préférable d'obtenir seulement la partie « heure » ; c'est ce que renvoie la méthode toTimeString().

    +Une instance de {{jsxref("Date")}} représente un instant précis dans le temps. Appeler {{jsxref("Date.toString", "toString()")}} renverra la date formatée de façon à être lisible par un humain, en anglais américain. Pour le moteur JavaScript [SpiderMonkey](/fr/docs/SpiderMonkey), ceci consiste en la partie « date » (jour, mois, année) suivie de la partie « heure » (heures, minutes, secondes, et fuseau horaire). Parfois, il est préférable d'obtenir seulement la partie « heure » ; c'est ce que renvoie la méthode `toTimeString().` -

    La méthode toTimeString() est particulièrement utile parce que les moteurs implémentant ECMA-262 peuvent obtenir des résultats différents avec la méthode {{jsxref("Date.prototype.toString()", "toString()")}} (en effet, le format dépend de l'implémentation). Ceci peut empêcher les manipulations de textes simples d'avoir des résultats cohérents au sein des différents moteurs/navigateurs.

    +La méthode `toTimeString()` est particulièrement utile parce que les moteurs implémentant [ECMA-262](/fr/docs/JavaScript/Language_Resources) peuvent obtenir des résultats différents avec la méthode {{jsxref("Date.prototype.toString()", "toString()")}} (en effet, le format dépend de l'implémentation). Ceci peut empêcher les manipulations de textes simples d'avoir des résultats cohérents au sein des différents moteurs/navigateurs. -

    Exemple

    +## Exemple -

    Utiliser toTimeString()

    +### Utiliser `toTimeString()` -
    var d = new Date(1993, 6, 28, 14, 39, 7);
    +```js
    +var d = new Date(1993, 6, 28, 14, 39, 7);
     
     console.log(d.toString());     // Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
     console.log(d.toTimeString()); // 14:39:07 GMT-0600 (PDT)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.9.5.4', 'Date.prototype.toTimeString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toTimeString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleTimeString()")}}
    • -
    • {{jsxref("Date.prototype.toDateString()")}}
    • -
    • {{jsxref("Date.prototype.toString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.9.5.4', 'Date.prototype.toTimeString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toTimeString")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleTimeString()")}} +- {{jsxref("Date.prototype.toDateString()")}} +- {{jsxref("Date.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/toutcstring/index.md b/files/fr/web/javascript/reference/global_objects/date/toutcstring/index.md index fb08c111a8..b7db523967 100644 --- a/files/fr/web/javascript/reference/global_objects/date/toutcstring/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/toutcstring/index.md @@ -10,80 +10,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString original_slug: Web/JavaScript/Reference/Objets_globaux/Date/toUTCString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toUTCString() convertit une date en une chaîne de caractères, selon le fuseau horaire UTC.

    +La méthode **`toUTCString()`** convertit une date en une chaîne de caractères, selon le fuseau horaire UTC. -
    {{EmbedInteractiveExample("pages/js/date-toutcstring.html")}}
    +{{EmbedInteractiveExample("pages/js/date-toutcstring.html")}} -

    Syntaxe

    +## Syntaxe -
    dateObj.toUTCString()
    + dateObj.toUTCString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant la date indiquée selon le fuseau horaire UTC.

    +Une chaîne de caractères représentant la date indiquée selon le fuseau horaire UTC. -

    Description

    +## Description -

    La valeur renvoyée par toUTCString() est un texte au même format que celui renvoyé {{jsxref("Date.prototype.toString()")}} mais sans décalage de fuseau horaire (en UTC).

    +La valeur renvoyée par `toUTCString()` est un texte au même format que celui renvoyé {{jsxref("Date.prototype.toString()")}} mais sans décalage de fuseau horaire (en UTC). -

    Avant ECMAScript 2018, le format de la valeur renvoyée pouvait varier selon les plateformes. La valeur la plus couramment renvoyée était une date formatée selon la RFC 1123, qui est une version mise à jour de la RFC 822.

    +Avant ECMAScript 2018, le format de la valeur renvoyée pouvait varier selon les plateformes. La valeur la plus couramment renvoyée était une date formatée selon la RFC 1123, qui est une version mise à jour de la RFC 822. -

    Exemples

    +## Exemples -

    Utiliser toUTCString()

    +### Utiliser `toUTCString()` -
    var aujourdhui = new Date();
    +```js
    +var aujourdhui = new Date();
     var UTCstring = aujourdhui.toUTCString();
     // Mon, 03 Jul 2006 21:44:38 GMT
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3. Le format dépend de l'implémentation.
    {{SpecName('ES5.1', '#sec-15.9.5.42', 'Date.prototype.toUTCString')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}{{Spec2('ES6')}} 
    {{SpecName('ES2018', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}{{Spec2('ES2018')}}Première standardisation du format
    {{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.toUTCString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toDateString()")}}
    • -
    • {{jsxref("Date.prototype.toISOString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3. Le format dépend de l'implémentation. | +| {{SpecName('ES5.1', '#sec-15.9.5.42', 'Date.prototype.toUTCString')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ES2018', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}} | {{Spec2('ES2018')}} | Première standardisation du format | +| {{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.toUTCString")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toDateString()")}} +- {{jsxref("Date.prototype.toISOString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/utc/index.md b/files/fr/web/javascript/reference/global_objects/date/utc/index.md index 8caed69035..6dbf12f938 100644 --- a/files/fr/web/javascript/reference/global_objects/date/utc/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/utc/index.md @@ -9,126 +9,99 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC original_slug: Web/JavaScript/Reference/Objets_globaux/Date/UTC --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Date.UTC() accepte des paramètres similaires à ceux du constructeur {{jsxref("Date")}} et renvoie le nombre de millièmes de seconde depuis le 1er janvier 1970, 00:00:00, temps universel. Autrement dit, elle renvoie la date en UTC.

    +La méthode **`Date.UTC()`** accepte des paramètres similaires à ceux du constructeur {{jsxref("Date")}} et renvoie le nombre de millièmes de seconde depuis le 1er janvier 1970, 00:00:00, temps universel. Autrement dit, elle renvoie la date en UTC. -
    {{EmbedInteractiveExample("pages/js/date-utc.html")}}
    +{{EmbedInteractiveExample("pages/js/date-utc.html")}} -

    Syntaxe

    +## Syntaxe -
    Date.UTC(année[,mois[,jour[,heures[,minutes[,secondes[,ms]]]]]])
    + Date.UTC(année[,mois[,jour[,heures[,minutes[,secondes[,ms]]]]]]) -

    Paramètres

    +## Paramètres -
    -
    année
    -
    Une année sur deux chiffres pour une année après 1900 (ex. 98 pour 1998) ou bien une année sur quatre chiffres (2018).
    -
    mois{{optional_inline}}
    -
    -

    Un entier entre 0 (janvier) et 11 (décembre) représentant le mois.

    +- `année` + - : Une année sur deux chiffres pour une année après 1900 (ex. 98 pour 1998) ou bien une année sur quatre chiffres (2018). +- `mois`{{optional_inline}} -

    Note : Cet argument est optionnel depuis ECMAScript 2017.

    -
    -
    jour{{optional_inline}}
    -
    Un entier entre 1 et 31 représentant le jour du mois. La valeur par défaut vaut 1.
    -
    heures{{optional_inline}}
    -
    Paramètre optionnel, un entier entre 0 et 23 représentant les heures. La valeur par défaut vaut 0.
    -
    minutes{{optional_inline}}
    -
    Paramètre optionnel, un entier entre 0 et 59 représentant les minutes. La valeur par défaut vaut 0.
    -
    secondes{{optional_inline}}
    -
    Paramètre optionnel, un entier entre 0 et 59 représentant les secondes. La valeur par défaut vaut 0.
    -
    ms{{optional_inline}}
    -
    Paramètre optionnel, un entier entre 0 et 999 représentant les millièmes de seconde. La valeur par défaut vaut 0.
    -
    + - : Un entier entre 0 (janvier) et 11 (décembre) représentant le mois. -

    Valeur de retour

    + > **Note :** Cet argument est optionnel depuis ECMAScript 2017. -

    Un nombre représentant le nombre de millisecondes écoulées entre la date indiquée et le premier janvier 1970 à minuit UTC.

    +- `jour`{{optional_inline}} + - : Un entier entre 1 et 31 représentant le jour du mois. La valeur par défaut vaut 1. +- `heures`{{optional_inline}} + - : Paramètre optionnel, un entier entre 0 et 23 représentant les heures. La valeur par défaut vaut 0. +- `minutes`{{optional_inline}} + - : Paramètre optionnel, un entier entre 0 et 59 représentant les minutes. La valeur par défaut vaut 0. +- `secondes`{{optional_inline}} + - : Paramètre optionnel, un entier entre 0 et 59 représentant les secondes. La valeur par défaut vaut 0. +- `ms`{{optional_inline}} + - : Paramètre optionnel, un entier entre 0 et 999 représentant les millièmes de seconde. La valeur par défaut vaut 0. -

    Description

    +### Valeur de retour -

    La méthode UTC prend des paramètres de date et d'heure séparés par des virgules et renvoie le nombre de millièmes de seconde entre le 1er janvier 1970, 00:00:00, temps universel et la date et l'heure spécifiées.

    +Un nombre représentant le nombre de millisecondes écoulées entre la date indiquée et le premier janvier 1970 à minuit UTC. -

    Il faut spécifier l'année entière pour le premier paramètre ; par exemple 1998. Si l'année spécifiée est entre 0 et 99, la méthode la convertira en une année du XXe siècle (1900 + année) ; par exemple si vous indiquez 95, l'année 1995 sera utilisée.

    +## Description -

    La méthode UTC diffère du constructeur {{jsxref("Date")}} pour deux raisons :

    +La méthode `UTC` prend des paramètres de date et d'heure séparés par des virgules et renvoie le nombre de millièmes de seconde entre le 1er janvier 1970, 00:00:00, temps universel et la date et l'heure spécifiées. -
      -
    • Date.UTC utilise le temps universel plutôt que l'heure locale.
    • -
    • Date.UTC renvoie une valeur temporelle sous la forme d'un nombre plutôt que de créer un objet Date.
    • -
    +Il faut spécifier l'année entière pour le premier paramètre ; par exemple 1998. Si l'année spécifiée est entre 0 et 99, la méthode la convertira en une année du XXe siècle (1900 + année) ; par exemple si vous indiquez 95, l'année 1995 sera utilisée. -

    Si un paramètre spécifié est en dehors des limites attendues, la méthode UTC met à jour les autres paramètres pour s'adapter à ce nombre. Par exemple, si vous utilisez 15 pour le mois, l'année sera incrémentée d'une unité (année + 1), et la valeur 3 (avril) sera utilisée pour le mois.

    +La méthode `UTC` diffère du constructeur {{jsxref("Date")}} pour deux raisons : -

    Comme UTC est une méthode statique de Date, on l'utilise toujours sous la forme Date.UTC() plutôt que comme une méthode d'un objet Date que vous auriez créé.

    +- `Date.UTC` utilise le temps universel plutôt que l'heure locale. +- `Date.UTC` renvoie une valeur temporelle sous la forme d'un nombre plutôt que de créer un objet `Date`. -

    Exemples

    +Si un paramètre spécifié est en dehors des limites attendues, la méthode `UTC` met à jour les autres paramètres pour s'adapter à ce nombre. Par exemple, si vous utilisez 15 pour le mois, l'année sera incrémentée d'une unité (année + 1), et la valeur 3 (avril) sera utilisée pour le mois. -

    Utiliser Date.UTC()

    +Comme `UTC` est une méthode statique de `Date`, on l'utilise toujours sous la forme `Date.UTC()` plutôt que comme une méthode d'un objet `Date` que vous auriez créé. -

    L'instruction qui suit crée un objet Date en utilisant l'heure UTC plutôt que l'heure locale :

    +## Exemples -
    var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
    -
    +### Utiliser `Date.UTC()` -

    Spécifications

    +L'instruction qui suit crée un objet `Date` en utilisant l'heure UTC plutôt que l'heure locale : - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-date.utc', 'Date.UTC')}}{{Spec2('ESDraft')}}Le paramètre pour le mois est devenu optionnel avec ES2017.
    {{SpecName('ES6', '#sec-date.utc', 'Date.UTC')}}{{Spec2('ES6')}}
    {{SpecName('ES5.1', '#sec-15.9.4.3', 'Date.UTC')}}{{Spec2('ES5.1')}}
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    +```js +var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0)); +``` -

    Compatibilité des navigateurs

    +## Spécifications -

    {{Compat("javascript.builtins.Date.UTC")}}

    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-date.utc', 'Date.UTC')}} | {{Spec2('ESDraft')}} | Le paramètre pour le mois est devenu optionnel avec ES2017. | +| {{SpecName('ES6', '#sec-date.utc', 'Date.UTC')}} | {{Spec2('ES6')}} | | +| {{SpecName('ES5.1', '#sec-15.9.4.3', 'Date.UTC')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | -

    Notes de compatibilité

    +## Compatibilité des navigateurs -

    Utiliser Date.UTC avec moins de deux arguments

    +{{Compat("javascript.builtins.Date.UTC")}} -

    Lorsqu'on fournit moins de deux arguments à Date.UTC, {{jsxref("NaN")}} sera renvoyé. Ce comportement a été spécifié dans ECMAScript 2017 et les moteurs qui n'obéissaient pas à cette règle on été mis à jour (cf. {{bug(1050755)}}, ecma-262 #642).

    +## Notes de compatibilité -
    Date.UTC();
    +### Utiliser `Date.UTC` avec moins de deux arguments
    +
    +Lorsqu'on fournit moins de deux arguments à `Date.UTC`, {{jsxref("NaN")}} sera renvoyé. Ce comportement a été spécifié dans ECMAScript 2017 et les moteurs qui n'obéissaient pas à cette règle on été mis à jour (cf. {{bug(1050755)}}, [ecma-262 #642](https://github.com/tc39/ecma262/pull/642)).
    +
    +```js
    +Date.UTC();
     Date.UTC(1);
     
     // Safari: NaN
     // Chrome/Opera/V8: NaN
     
    -// Firefox <54: non-NaN
    +// Firefox <54: non-NaN
     // Firefox 54+: NaN
     
     // IE: non-NaN
     // Edge: NaN
    -
    +``` -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Date.parse()")}}
    • -
    +- {{jsxref("Date.parse()")}} diff --git a/files/fr/web/javascript/reference/global_objects/date/valueof/index.md b/files/fr/web/javascript/reference/global_objects/date/valueof/index.md index fb835f4c3b..684d275338 100644 --- a/files/fr/web/javascript/reference/global_objects/date/valueof/index.md +++ b/files/fr/web/javascript/reference/global_objects/date/valueof/index.md @@ -10,75 +10,51 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Date/valueOf original_slug: Web/JavaScript/Reference/Objets_globaux/Date/valueOF --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode valueOf() renvoie la valeur primitive d'un objet {{jsxref("Date")}}.

    +La méthode **`valueOf()`** renvoie la valeur primitive d'un objet {{jsxref("Date")}}. -
    {{EmbedInteractiveExample("pages/js/date-valueof.html")}}
    +{{EmbedInteractiveExample("pages/js/date-valueof.html")}} -

    Syntaxe

    +## Syntaxe -
    date.valueOf()
    + date.valueOf() -

    Valeur de retour

    +### Valeur de retour -

    Le nombre de millisecondes écoulées entre le premier janvier 1970, minuit UTC et la date indiquée.

    +Le nombre de millisecondes écoulées entre le premier janvier 1970, minuit UTC et la date indiquée. -

    Description

    +## Description -

    La méthode valueOf() renvoie la valeur primitive d'un objet Date sous forme d'un nombre. Ce nombre correspond au nombre de millisecondes écoulées depuis le 1 janvier 1970 00h00 GMT.

    +La méthode `valueOf()` renvoie la valeur primitive d'un objet `Date` sous forme d'un nombre. Ce nombre correspond au nombre de millisecondes écoulées depuis le 1 janvier 1970 00h00 GMT. -

    D'un point de vue fonctionnel, cette méthode est équivalente à {{jsxref("Date.prototype.getTime()")}}.

    +D'un point de vue fonctionnel, cette méthode est équivalente à {{jsxref("Date.prototype.getTime()")}}. -

    Cette méthode est souvent appelée en interne par le moteur JavaScript et n'est pas utilisée de façon explicite dans des scripts.

    +Cette méthode est souvent appelée en interne par le moteur JavaScript et n'est pas utilisée de façon explicite dans des scripts. -

    Exemples

    +## Exemples -

    Utiliser valueOf()

    +### Utiliser `valueOf()` -
    var x = new Date(56, 6, 17);
    +```js
    +var x = new Date(56, 6, 17);
     var maVar = x.valueOf();      // maVar vaut -424713600000
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.9.5.8', 'Date.prototype.valueOf')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Date.valueOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Object.prototype.valueOf()")}}
    • -
    • {{jsxref("Date.prototype.getTime()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.9.5.8', 'Date.prototype.valueOf')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Date.valueOf")}} + +## Voir aussi + +- {{jsxref("Object.prototype.valueOf()")}} +- {{jsxref("Date.prototype.getTime()")}} diff --git a/files/fr/web/javascript/reference/global_objects/decodeuri/index.md b/files/fr/web/javascript/reference/global_objects/decodeuri/index.md index 07d7dd5a71..818de77595 100644 --- a/files/fr/web/javascript/reference/global_objects/decodeuri/index.md +++ b/files/fr/web/javascript/reference/global_objects/decodeuri/index.md @@ -7,94 +7,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI original_slug: Web/JavaScript/Reference/Objets_globaux/decodeURI --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La méthode decodeURI() permet de décoder un Uniform Resource Identifier (URI) créé par la méthode {{jsxref("encodeURI","encodeURI()")}} ou une méthode similaire.

    +La méthode **`decodeURI()`** permet de décoder un Uniform Resource Identifier (URI) créé par la méthode {{jsxref("encodeURI","encodeURI()")}} ou une méthode similaire. -
    {{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}} -

    Syntaxe

    +## Syntaxe -
    decodeURI(encodedURI)
    + decodeURI(encodedURI) -

    Paramètres

    +### Paramètres -
    -
    encodedURI
    -
    Un URI complet, encodé.
    -
    +- `encodedURI` + - : Un URI complet, encodé. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle chaîne de caractères dont certains caractères ont été décodés à partir de l'URI encodée passée en argument.

    +Une nouvelle chaîne de caractères dont certains caractères ont été décodés à partir de l'URI encodée passée en argument. -

    Exceptions

    +### Exceptions -

    Cette méthode lève une exception {{jsxref("URIError")}} ("malformed URI sequence") lorsque la chaîne passée en argument contient des séquences de caractères invalides.

    +Cette méthode lève une exception {{jsxref("URIError")}} ("_malformed URI sequence"_) lorsque la chaîne passée en argument contient des séquences de caractères invalides. -

    Description

    +## Description -

    Cette méthode remplace chaque séquence d'échappement présente dans l'URI encodée avec le caractère correspondant. Les séquences d'échappement qui n'auraient pas pu être introduites par {{jsxref("encodeURI", "encodeURI()")}} ne seront pas décodées. Le caractère « # » n'est pas décodé au sein des séquences d'échappement.

    +Cette méthode remplace chaque séquence d'échappement présente dans l'URI encodée avec le caractère correspondant. Les séquences d'échappement qui n'auraient pas pu être introduites par {{jsxref("encodeURI", "encodeURI()")}} ne seront pas décodées. Le caractère « `#` » n'est pas décodé au sein des séquences d'échappement. -

    Exemples

    +## Exemples -

    Décoder une URL cyrillique

    +### Décoder une URL cyrillique -
    decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
    +```js
    +decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
     // "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"
    -
    +``` -

    Gérer les exceptions

    +### Gérer les exceptions -
    try {
    +```js
    +try {
       var a = decodeURI('%E0%A4%A');
     } catch(e) {
       console.error(e);
     }
     
     // Cela produira "URIError: malformed URI sequence"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.3.1', 'decodeURI')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-decodeuri-encodeduri', 'decodeURI')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-decodeuri-encodeduri', 'decodeURI')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.decodeURI")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("decodeURIComponent","decodeURIComponent()")}}
    • -
    • {{jsxref("encodeURI","encodeURI()")}}
    • -
    • {{jsxref("encodeURIComponent","encodeURIComponent()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.3.1', 'decodeURI')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-decodeuri-encodeduri', 'decodeURI')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-decodeuri-encodeduri', 'decodeURI')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.decodeURI")}} + +## Voir aussi + +- {{jsxref("decodeURIComponent","decodeURIComponent()")}} +- {{jsxref("encodeURI","encodeURI()")}} +- {{jsxref("encodeURIComponent","encodeURIComponent()")}} diff --git a/files/fr/web/javascript/reference/global_objects/decodeuricomponent/index.md b/files/fr/web/javascript/reference/global_objects/decodeuricomponent/index.md index af978f1b90..e825bcbbc0 100644 --- a/files/fr/web/javascript/reference/global_objects/decodeuricomponent/index.md +++ b/files/fr/web/javascript/reference/global_objects/decodeuricomponent/index.md @@ -7,83 +7,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent original_slug: Web/JavaScript/Reference/Objets_globaux/decodeURIComponent --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction decodeURIComponent() permet de décoder un composant d'un Uniform Resource Identifier (URI) précédemment créé par {{jsxref("encodeURIComponent")}} ou par une méthode similaire.

    +La fonction **`decodeURIComponent()`** permet de décoder un composant d'un Uniform Resource Identifier (URI) précédemment créé par {{jsxref("encodeURIComponent")}} ou par une méthode similaire. -
    {{EmbedInteractiveExample("pages/js/globalprops-decodeuricomponent.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-decodeuricomponent.html")}} -

    Syntaxe

    +## Syntaxe -
    decodeURIComponent(encodedURI)
    + decodeURIComponent(encodedURI) -

    Paramètres

    +### Paramètres -
    -
    encodedURI
    -
    Un composant d'URI qui est encodé.
    -
    +- `encodedURI` + - : Un composant d'URI qui est encodé. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle chaîne de caractères qui représente la version décodée du composant d'URI encodé passé en argument.

    +Une nouvelle chaîne de caractères qui représente la version décodée du composant d'URI encodé passé en argument. -

    Exceptions levées

    +### Exceptions levées -

    Cette méthode lève une exception {{jsxref("URIError")}} ("malformed URI sequence") lorsqu'elle est utilisée de façon incorrecte.

    +Cette méthode lève une exception {{jsxref("URIError")}} ("_malformed URI sequence_") lorsqu'elle est utilisée de façon incorrecte. -

    Description

    +## Description -

    Cette méthode remplace chaque séquence d'échappement du composant d'URI encodé par le caractère que la séquence représente.

    +Cette méthode remplace chaque séquence d'échappement du composant d'URI encodé par le caractère que la séquence représente. -

    Exemples

    +## Exemples -

    Décoder un composant d'URL encodé

    +### Décoder un composant d'URL encodé -
    decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
    +```js
    +decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
     // "JavaScript_шеллы"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.3.2', 'decodeURIComponent')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.decodeURIComponent")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("decodeURI")}}
    • -
    • {{jsxref("encodeURI")}}
    • -
    • {{jsxref("encodeURIComponent")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.3.2', 'decodeURIComponent')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.decodeURIComponent")}} + +## Voir aussi + +- {{jsxref("decodeURI")}} +- {{jsxref("encodeURI")}} +- {{jsxref("encodeURIComponent")}} diff --git a/files/fr/web/javascript/reference/global_objects/encodeuri/index.md b/files/fr/web/javascript/reference/global_objects/encodeuri/index.md index 1020c28623..02eade980e 100644 --- a/files/fr/web/javascript/reference/global_objects/encodeuri/index.md +++ b/files/fr/web/javascript/reference/global_objects/encodeuri/index.md @@ -8,53 +8,51 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI original_slug: Web/JavaScript/Reference/Objets_globaux/encodeURI --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction encodeURI() encode un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant le caractère encodé en UTF-8 (les quatre séquences d'échappement ne seront utilisées que si le caractère est composé de deux caractères « surrogate »).

    +La fonction **`encodeURI()`** encode un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant le caractère encodé en UTF-8 (les quatre séquences d'échappement ne seront utilisées que si le caractère est composé de deux caractères « _surrogate_ »). -
    {{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}} -

    Syntaxe

    +## Syntaxe -
    encodeURI(URI)
    + encodeURI(URI) -

    Paramètres

    +### Paramètres -
    -
    URI
    -
    Un Uniform Resource Identifier complet.
    -
    +- `URI` + - : Un Uniform Resource Identifier complet. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle chaîne de caractères représentant un URI, encodé, à partir de la chaîne de caractères passée en argument.

    +Une nouvelle chaîne de caractères représentant un URI, encodé, à partir de la chaîne de caractères passée en argument. -

    Description

    +## Description -

    encodeURI() échappe tous les caractères sauf ceux-ci :

    +`encodeURI()` échappe tous les caractères sauf ceux-ci : -
    A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
    -
    + A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # -

    encodeURI() est différente de {{jsxref("encodeURIComponent")}}. Par exemple :

    +`encodeURI()` est différente de {{jsxref("encodeURIComponent")}}. Par exemple : -
    var set1 = ";,/?:@&=+$#";  // Caractères réservés
    +```js
    +var set1 = ";,/?:@&=+$#";  // Caractères réservés
     var set2 = "-_.!~*'()";   // Caractères non-réservés
     var set3 = "ABC abc 123"; // Caractères alphanumériques et espace
     
    -console.log(encodeURI(set1)); // ;,/?:@&=+$#
    +console.log(encodeURI(set1)); // ;,/?:@&=+$#
     console.log(encodeURI(set2)); // -_.!~*'()
     console.log(encodeURI(set3)); // ABC%20abc%20123 (l'espace est encodé en %20)
     
     console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24%23
     console.log(encodeURIComponent(set2)); // -_.!~*'()
     console.log(encodeURIComponent(set3)); // ABC%20abc%20123 (l'espace est encodé en %20)
    +```
     
    -
    +Une exception {{jsxref("URIError")}} sera levée si on tente d'encoder un caractère *surrogate* (demi-codet) qui ne fait pas partie d'une paire : -

    Une exception {{jsxref("URIError")}} sera levée si on tente d'encoder un caractère surrogate (demi-codet) qui ne fait pas partie d'une paire :

    - -
    // On a une paire de codets surrogate
    +```js
    +// On a une paire de codets surrogate
     console.log(encodeURI('\uD800\uDFFF'));
     
     // Ici, seul le caractère "haut"
    @@ -64,58 +62,33 @@ console.log(encodeURI('\uD800'));
     // Ici, seul le caractère "bas"
     // ce qui déclenche une "URIError: malformed URI sequence"
     console.log(encodeURI('\uDFFF'));
    -
    +``` -

    encodeURI() ne permet pas de former des requêtes HTTP GET ou POST (par exemple avec {{domxref("XMLHTTPRequest")}}) car "&", "+" et "=" ne sont pas encodés et sont traités comme des caractères spéciaux (toutefois, la méthode. {{jsxref("encodeURIComponent")}} pourra être utilisée pour encoder ces caractères).

    +`encodeURI()` ne permet pas de former des requêtes HTTP GET ou POST (par exemple avec {{domxref("XMLHTTPRequest")}}) car "&", "+" et "=" ne sont pas encodés et sont traités comme des caractères spéciaux (toutefois, la méthode. {{jsxref("encodeURIComponent")}} pourra être utilisée pour encoder ces caractères). -

    Si on souhaite suivre la RFC3986 qui concerne les URL et qui rend les crochets réservés (pour IPv6) (il ne faut donc plus encoder ces caractères lorsqu'ils font partie d'une URL (notamment pour la partie représentant l'hôte), on pourra utiliser le fragment de code suivant :

    +Si on souhaite suivre la [RFC3986](http://tools.ietf.org/html/rfc3986) qui concerne les URL et qui rend les crochets réservés (pour IPv6) (il ne faut donc plus encoder ces caractères lorsqu'ils font partie d'une URL (notamment pour la partie représentant l'hôte), on pourra utiliser le fragment de code suivant : -
    function fixedEncodeURI(str) {
    +```js
    +function fixedEncodeURI(str) {
       return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-encodeuri-uri', 'encodeURI')}}{{Spec2('ESDraft')}}
    {{SpecName('ES6', '#sec-encodeuri-uri', 'encodeURI')}}{{Spec2('ES6')}}
    {{SpecName('ES5.1', '#sec-15.1.3.3', 'encodeURI')}}{{Spec2('ES5.1')}}
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.encodeURI")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("decodeURI", "decodeURI()")}}
    • -
    • {{jsxref("encodeURIComponent", "encodeURIComponent()")}}
    • -
    • {{jsxref("decodeURIComponent", "decodeURIComponent()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ESDraft', '#sec-encodeuri-uri', 'encodeURI')}} | {{Spec2('ESDraft')}} | | +| {{SpecName('ES6', '#sec-encodeuri-uri', 'encodeURI')}} | {{Spec2('ES6')}} | | +| {{SpecName('ES5.1', '#sec-15.1.3.3', 'encodeURI')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.encodeURI")}} + +## Voir aussi + +- {{jsxref("decodeURI", "decodeURI()")}} +- {{jsxref("encodeURIComponent", "encodeURIComponent()")}} +- {{jsxref("decodeURIComponent", "decodeURIComponent()")}} diff --git a/files/fr/web/javascript/reference/global_objects/encodeuricomponent/index.md b/files/fr/web/javascript/reference/global_objects/encodeuricomponent/index.md index c3deeef114..fdb9bdb700 100644 --- a/files/fr/web/javascript/reference/global_objects/encodeuricomponent/index.md +++ b/files/fr/web/javascript/reference/global_objects/encodeuricomponent/index.md @@ -8,39 +8,38 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent original_slug: Web/JavaScript/Reference/Objets_globaux/encodeURIComponent --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction encodeURIComponent() permet d'encoder un composant d'un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par une, deux, trois ou quatres séquences d'échappement UTF-8 correspondantes (quatre séquences seront utilisées uniquement lorsque les caractères à encoder sont composés de deux caractères « surrogate »).

    +La fonction **`encodeURIComponent()`** permet d'encoder un composant d'un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par une, deux, trois ou quatres séquences d'échappement UTF-8 correspondantes (quatre séquences seront utilisées uniquement lorsque les caractères à encoder sont composés de deux caractères « _surrogate_ »). -
    {{EmbedInteractiveExample("pages/js/globalprops-encodeuricomponent.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-encodeuricomponent.html")}} -

    Syntaxe

    +## Syntaxe -
    encodeURIComponent(str);
    + encodeURIComponent(str); -

    Paramètres

    +### Paramètres -
    -
    str
    -
    Une chaîne de caractères qui correspond à un composant d'URI.
    -
    +- `str` + - : Une chaîne de caractères qui correspond à un composant d'URI. -

    Valeur de retour

    +### Valeur de retour -

    Une nouvelle chaîne de caractères qui représente un composant d'URI obtenu en encodant la chaîne passée en argument.

    +Une nouvelle chaîne de caractères qui représente un composant d'URI obtenu en encodant la chaîne passée en argument. -

    Description

    +## Description -

    encodeURIComponent() échappe tous les caractères sauf : les lettres de l'alphabet latin, les chiffres (arabes) et - _ . ! ~ * ' ( )

    +`encodeURIComponent()` échappe tous les caractères sauf : les lettres de l'alphabet latin, les chiffres (arabes) et `- _ . ! ~ * ' ( )` -

    La méthode encodeURIComponent() diffère de la méthode encodeURI() par rapport aux caractères qui sont encodés :

    +La méthode `encodeURIComponent()` diffère de la méthode `encodeURI()` par rapport aux caractères qui sont encodés : -
    var set1 = ";,/?:@&=+$";  // Caractères réservés
    +```js
    +var set1 = ";,/?:@&=+$";  // Caractères réservés
     var set2 = "-_.!~*'()";   // Caractères non-réservés
     var set3 = "#";           // Croisillon
     var set4 = "ABC abc 123"; // Caractères alphanumériques et espace
     
    -console.log(encodeURI(set1)); // ;,/?:@&=+$
    +console.log(encodeURI(set1)); // ;,/?:@&=+$
     console.log(encodeURI(set2)); // -_.!~*'()
     console.log(encodeURI(set3)); // #
     console.log(encodeURI(set4)); // ABC%20abc%20123 (l'espace est encodé en %20)
    @@ -49,12 +48,12 @@ console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
     console.log(encodeURIComponent(set2)); // -_.!~*'()
     console.log(encodeURIComponent(set3)); // #
     console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (l'espace est encodé en %20)
    +```
     
    -
    +Une exception {{jsxref("URIError")}} sera levée lorsqu'on utilise cette fonction sur un unique demi-codet qui est censé faire partie d'une paire de demi-codets : -

    Une exception {{jsxref("URIError")}} sera levée lorsqu'on utilise cette fonction sur un unique demi-codet qui est censé faire partie d'une paire de demi-codets :

    - -
    // la paire de demi-codets : OK
    +```js
    +// la paire de demi-codets : OK
     console.log(encodeURIComponent('\uD800\uDFFF'));
     
     // seul le demi-codet supérieur : "URIError: malformed URI sequence"
    @@ -62,26 +61,28 @@ console.log(encodeURIComponent('\uD800'));
     
     // seul le demi-codet inférieur : "URIError: malformed URI sequence"
     console.log(encodeURIComponent('\uDFFF'));
    -
    +``` -

    Afin d'éviter des requêtes inattendues vers le serveur, il est conseillé d'utiliser la fonction encodeURIComponent() pour n'importe quel paramètre qui aurait été saisi par l'utilisateur et qui ferait partie d'un URI. Ainsi, si un utilisateur peut saisir "Thym &access=admin" dans une variable commentaire et qu'on n'utilise pas encodeURIComponent(), on obtiendra la chaîne commentaire=Thym%20&access=admin. On voit ici que l'esperluette (&) et le signe égal forment une nouvelle paire clé/valeur. Au lieu d'avoir une clé POST commentaire égale à "Thym &access=admin", on aura deux clés POST, l'une égale à "Thym " et une seconde (access) égale à admin.

    +Afin d'éviter des requêtes inattendues vers le serveur, il est conseillé d'utiliser la fonction `encodeURIComponent()` pour n'importe quel paramètre qui aurait été saisi par l'utilisateur et qui ferait partie d'un URI. Ainsi, si un utilisateur peut saisir "`Thym &access=admin`" dans une variable `commentaire` et qu'on n'utilise pas `encodeURIComponent()`, on obtiendra la chaîne `commentaire=Thym%20&access=admin`. On voit ici que l'esperluette (&) et le signe égal forment une nouvelle paire clé/valeur. Au lieu d'avoir une clé POST `commentaire` égale à "`Thym &access=admin`", on aura deux clés POST, l'une égale à "`Thym `" et une seconde (`access`) égale à `admin`. -

    Pour application/x-www-form-urlencoded, les espaces sont remplacés par un '+', aussi, dans ce cas, on pourra ajouter un remplacement supplémentaire après encodeURIComponent() pour remplacer "%20" par "+".

    +Pour [`application/x-www-form-urlencoded`](https://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#application/x-www-form-urlencoded-encoding-algorithm), les espaces sont remplacés par un '+', aussi, dans ce cas, on pourra ajouter un remplacement supplémentaire après `encodeURIComponent()` pour remplacer "%20" par "+". -

    Pour utiliser une fonction qui respecte la RFC 3986, plus stricte (qui réserve les caractères !, ', (, ), et * même si ces caractères n'ont pas d'usage normalisé), on pourra utiliser la fonction suivante :

    +Pour utiliser une fonction qui respecte la [RFC 3986](https://tools.ietf.org/html/rfc3986), plus stricte (qui réserve les caractères !, ', (, ), et \* même si ces caractères n'ont pas d'usage normalisé), on pourra utiliser la fonction suivante : -
    function fixedEncodeURIComponent (str) {
    +```js
    +function fixedEncodeURIComponent (str) {
       return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
         return '%' + c.charCodeAt(0).toString(16);
       });
     }
    -
    +``` -

    Exemples

    +## Exemples -

    Dans l'exemple qui suit, on utilise une méthode spéciale pour l'encodage afin d'utiliser les paramètres d'en-tête de réponse Content-Disposition et Link (pour, par exemple, représenter des noms de fichiers en UTF-8) :

    +Dans l'exemple qui suit, on utilise une méthode spéciale pour l'encodage afin d'utiliser les paramètres d'en-tête de réponse `Content-Disposition` et `Link` (pour, par exemple, représenter des noms de fichiers en UTF-8) : -
    var nomFichier = 'mon fichier(2).txt';
    +```js
    +var nomFichier = 'mon fichier(2).txt';
     var header = "Content-Disposition: attachment; filename*=UTF-8''"
                  + encodeRFC5987ValueChars(nomFichier);
     
    @@ -105,56 +106,31 @@ function encodeRFC5987ValueChars2(str) {
       return encodeURIComponent(str).
         // Bien que la RFC 3986 réserve "!", RFC 5987 ne réserve pas ce caractère,
         // il n'est donc pas nécessaire l'échapper
    -    replace(/['()*]/g, c => '%' + c.charCodeAt(0).toString(16)). // i.e., %27 %28 %29 %2a
    +    replace(/['()*]/g, c => '%' + c.charCodeAt(0).toString(16)). // i.e., %27 %28 %29 %2a
         // on notera que l'encodage valide pour "*" est %2A et qui faut donc appeler toUpperCase()
         // pour encoder exactement.
     
         // Selon la RFC 5987 ce qui suit n'est pas nécessairement requis
         // on peut donc bénéficier d'un peu plus de lisibilité : |`^
    -    replace(/%(7C|60|5E)/g, (str, hex) => String.fromCharCode(parseInt(hex, 16)));
    +    replace(/%(7C|60|5E)/g, (str, hex) => String.fromCharCode(parseInt(hex, 16)));
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.encodeURIComponent")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("decodeURI")}}
    • -
    • {{jsxref("encodeURI")}}
    • -
    • {{jsxref("decodeURIComponent")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.encodeURIComponent")}} + +## Voir aussi + +- {{jsxref("decodeURI")}} +- {{jsxref("encodeURI")}} +- {{jsxref("decodeURIComponent")}} diff --git a/files/fr/web/javascript/reference/global_objects/error/columnnumber/index.md b/files/fr/web/javascript/reference/global_objects/error/columnnumber/index.md index b507d0b41f..2af2806a79 100644 --- a/files/fr/web/javascript/reference/global_objects/error/columnnumber/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/columnnumber/index.md @@ -10,31 +10,30 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber original_slug: Web/JavaScript/Reference/Objets_globaux/Error/columnNumber --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La propriété columnNumber contient le numéro de la colonne, dans la ligne du fichier qui a déclenché l'erreur.

    +La propriété **`columnNumber`** contient le numéro de la colonne, dans la ligne du fichier qui a déclenché l'erreur. -

    Exemples

    +## Exemples -

    Utiliser de columnNumber

    +### Utiliser de `columnNumber` -
    var e = new Error("Ne peut pas lire la donnée");
    +```js
    +var e = new Error("Ne peut pas lire la donnée");
     throw e;
     console.log(e.columnNumber) // 0
    -
    +``` -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucune spécification. Non standard.

    +Ne fait partie d'aucune spécification. Non standard. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.columnNumber")}}

    +{{Compat("javascript.builtins.Error.columnNumber")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.stack")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}
    • -
    +- {{jsxref("Error.prototype.stack")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/error/filename/index.md b/files/fr/web/javascript/reference/global_objects/error/filename/index.md index 2a2cda2422..ca5fbf3e64 100644 --- a/files/fr/web/javascript/reference/global_objects/error/filename/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/filename/index.md @@ -11,35 +11,34 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName original_slug: Web/JavaScript/Reference/Objets_globaux/Error/fileName --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La propriété fileName contient le chemin vers le fichier qui a déclenché l'erreur.

    +La propriété **`fileName`** contient le chemin vers le fichier qui a déclenché l'erreur. -

    Description

    +## Description -

    Cette propriété non-standard contient le chemin vers le fichier qui a déclenché cette erreur. Si elle est appelée depuis un débugger (les outils de développement de Firefox par exemple), "debugger eval code" sera renvoyé.

    +Cette propriété non-standard contient le chemin vers le fichier qui a déclenché cette erreur. Si elle est appelée depuis un débugger (les outils de développement de Firefox par exemple), "debugger eval code" sera renvoyé. -

    Exemples

    +## Exemples -

    Utiliser fileName

    +### Utiliser `fileName` -
    var e = new Error("Ne peut pas lire la donnée");
    +```js
    +var e = new Error("Ne peut pas lire la donnée");
     throw e;
     // e.fileName peut ressembler à "file:///C:/exemple.html"
    -
    +``` -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucune spécification. Non standard.

    +Ne fait partie d'aucune spécification. Non standard. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.fileName")}}

    +{{Compat("javascript.builtins.Error.fileName")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.stack")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}
    • -
    +- {{jsxref("Error.prototype.stack")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/error/index.md b/files/fr/web/javascript/reference/global_objects/error/index.md index 5675ff256a..037520b23f 100644 --- a/files/fr/web/javascript/reference/global_objects/error/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/index.md @@ -8,105 +8,103 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error original_slug: Web/JavaScript/Reference/Objets_globaux/Error --- -
    {{JSRef}}
    +{{JSRef}} -

    Le constructeur Error crée un objet d'erreur. Des instances d'objets Error sont déclenchées lorsque des erreurs d'exécution surviennent. L'objet Error peut aussi être utilisé comme objet de base pour des exceptions définies par l'utilisateur. Voir ci-dessous pour les types d'erreur natifs standard.

    +Le constructeur **`Error`** crée un objet d'erreur. Des instances d'objets `Error` sont déclenchées lorsque des erreurs d'exécution surviennent. L'objet `Error` peut aussi être utilisé comme objet de base pour des exceptions définies par l'utilisateur. Voir ci-dessous pour les types d'erreur natifs standard. -

    Syntaxe

    +## Syntaxe -
    new Error([message[, fileName[, lineNumber]]])
    + new Error([message[, fileName[, lineNumber]]]) -

    Paramètres

    +### Paramètres -
    -
    message {{optional_inline}}
    -
    Description de l'erreur sous une forme lisible par un humain.
    -
    fileName {{optional_inline}}{{Non-standard_inline}}
    -
    Argument qui sera utilisé pour la valeur de la propriété fileName dans l'objet Error créé. Par défaut, ce sera le nom du fichier contenant le code qui a appelé le constructeur Error().
    -
    lineNumber {{optional_inline}}{{Non-standard_inline}}
    -
    Argument qui sera utilisé pour la valeur de la propriété lineNumber dans l'objet Error créé. Par défaut, ce sera le numéro de la ligne contenant l'invocation du constructeur Error().
    -
    +- `message` {{optional_inline}} + - : Description de l'erreur sous une forme lisible par un humain. +- `fileName` {{optional_inline}}{{Non-standard_inline}} + - : Argument qui sera utilisé pour la valeur de la propriété `fileName` dans l'objet `Error` créé. Par défaut, ce sera le nom du fichier contenant le code qui a appelé le constructeur `Error()`. +- `lineNumber` {{optional_inline}}{{Non-standard_inline}} + - : Argument qui sera utilisé pour la valeur de la propriété `lineNumber` dans l'objet `Error` créé. Par défaut, ce sera le numéro de la ligne contenant l'invocation du constructeur `Error()`. -

    Description

    +## Description -

    Les erreurs d'exécution ont pour résultat la création et le déclenchement d'objets Error.

    +Les erreurs d'exécution ont pour résultat la création et le déclenchement d'objets `Error`. -

    Cette page documente l'utilisation de l'objet Error lui-même et son utilisation comme fonction constructeur. Pour une liste des propriétés et des méthodes héritées par les instances d'Error,  voir {{jsxref("Error.prototype")}}.

    +Cette page documente l'utilisation de l'objet `Error` lui-même et son utilisation comme fonction constructeur. Pour une liste des propriétés et des méthodes héritées par les instances d'`Error`,  voir {{jsxref("Error.prototype")}}. -

    Utilisation de Error comme fonction

    +### Utilisation de `Error` comme fonction -

    Lorsqu'Error est utilisée comme fonction sans utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}, cet appel renverra un objet Error. Aussi, un simple appel à Error produira le même résultat qu'une invocation avec new.

    +Lorsqu'`Error` est utilisée comme fonction sans utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}, cet appel renverra un objet `Error`. Aussi, un simple appel à `Error` produira le même résultat qu'une invocation avec `new`. -
    // Cette instruction :
    +```js
    +// Cette instruction :
     const x = Error("J'ai été créée sans new");
     
     // Aura le même effet que
    -const y = new Error("J'ai été créée avec new");
    +const y = new Error("J'ai été créée avec new"); +``` -

    Types d'erreur

    +### Types d'erreur -

    En plus du constructeur Error générique, il existe sept autres constructeurs d'erreur de base en JavaScript. Pour les exceptions côté client, voir Contrôle du flux d'instructions et gestion des erreurs.

    +En plus du constructeur `Error` générique, il existe sept autres constructeurs d'erreur de base en JavaScript. Pour les exceptions côté client, voir [Contrôle du flux d'instructions et gestion des erreurs](/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs). -
    -
    {{jsxref("EvalError")}}
    -
    Crée une instance représentant une erreur se produisant en relation avec la fonction globale {{jsxref("eval","eval()")}}.
    -
    {{jsxref("RangeError")}}
    -
    Crée une instance représentant une erreur se produisant quand une variable numérique ou un paramètre est en dehors de sa plage de validité.
    -
    {{jsxref("ReferenceError")}}
    -
    Crée une instance représentant une erreur se produisant lors du déréférencement d'une référence invalide.
    -
    {{jsxref("SyntaxError")}}
    -
    Crée une instance représentant une erreur de syntaxe se produisant lors d'une analyse de code dans {{jsxref("eval", "eval()")}}.
    -
    {{jsxref("TypeError")}}
    -
    Crée une instance représentant une erreur se produisant quand une variable ou un paramètre n'est pas d'un type valide.
    -
    {{jsxref("URIError")}}
    -
    Crée une instance représentant une erreur se produisant quand des paramètres invalides sont passés à {{jsxref("encodeURI", "encodeURI()")}} ou à {{jsxref("decodeURI", "decodeURI()")}}.
    -
    {{JSxRef("AggregateError")}}
    -
    Crée une instance représentant différentes erreurs agrégées en une seule lorsque plusieurs erreurs sont rapportées par une opération, par exemple avec {{JSxRef("Promise.any()")}}.
    -
    {{jsxref("InternalError")}} {{non-standard_inline}}
    -
    Crée une instance représentant une erreur se produisant quand une erreur interne dans le moteur JavaScript est déclenchée. Par ex., "too much recursion".
    -
    +- {{jsxref("EvalError")}} + - : Crée une instance représentant une erreur se produisant en relation avec la fonction globale {{jsxref("eval","eval()")}}. +- {{jsxref("RangeError")}} + - : Crée une instance représentant une erreur se produisant quand une variable numérique ou un paramètre est en dehors de sa plage de validité. +- {{jsxref("ReferenceError")}} + - : Crée une instance représentant une erreur se produisant lors du déréférencement d'une référence invalide. +- {{jsxref("SyntaxError")}} + - : Crée une instance représentant une erreur de syntaxe se produisant lors d'une analyse de code dans {{jsxref("eval", "eval()")}}. +- {{jsxref("TypeError")}} + - : Crée une instance représentant une erreur se produisant quand une variable ou un paramètre n'est pas d'un type valide. +- {{jsxref("URIError")}} + - : Crée une instance représentant une erreur se produisant quand des paramètres invalides sont passés à {{jsxref("encodeURI", "encodeURI()")}} ou à {{jsxref("decodeURI", "decodeURI()")}}. +- {{JSxRef("AggregateError")}} + - : Crée une instance représentant différentes erreurs agrégées en une seule lorsque plusieurs erreurs sont rapportées par une opération, par exemple avec {{JSxRef("Promise.any()")}}. +- {{jsxref("InternalError")}} {{non-standard_inline}} + - : Crée une instance représentant une erreur se produisant quand une erreur interne dans le moteur JavaScript est déclenchée. Par ex., "too much recursion". -

    Propriétés

    +## Propriétés -
    -
    {{jsxref("Error.prototype")}}
    -
    Permet l'ajout de propriétés aux instances Error.
    -
    +- {{jsxref("Error.prototype")}} + - : Permet l'ajout de propriétés aux instances `Error`. -

    Méthodes

    +## Méthodes -

    L'objet global Error ne contient pas de méthodes en propre, toutefois, il hérite de certaines méthodes via la chaine de prototype.

    +L'objet global `Error` ne contient pas de méthodes en propre, toutefois, il hérite de certaines méthodes via la chaine de prototype. -

    Instances d'Error

    +## Instances d'`Error` -
    {{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Description')}}
    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Description')}} -

    Propriétés

    +### Propriétés -

    {{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Propriétés')}}

    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Propriétés')}} -

    Méthodes

    +### Méthodes -

    {{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Méthodes')}}

    +{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Méthodes')}} -

    Exemples

    +## Exemples -

    Déclenchement d'une erreur générique

    +### Déclenchement d'une erreur générique -

    Vous créez habituellement un objet Error dans l'intention de le déclencher en utilisant le mot-clé {{jsxref("Instructions/throw", "throw")}}. Vous pouvez gérer l'erreur en utilisant la construction {{jsxref("Instructions/try...catch", "try...catch")}} :

    +Vous créez habituellement un objet `Error` dans l'intention de le déclencher en utilisant le mot-clé {{jsxref("Instructions/throw", "throw")}}. Vous pouvez gérer l'erreur en utilisant la construction {{jsxref("Instructions/try...catch", "try...catch")}} : -
    try {
    +```js
    +try {
         throw new Error("Ouups !");
     } catch (e) {
         console.log(e.name + ": " + e.message);
     }
    -
    +``` -

    Gestion d'une erreur spécifique

    +### Gestion d'une erreur spécifique -

    Vous pouvez choisir de ne gérer que des types d'erreur particuliers en testant le type de l'erreur via la propriété {{jsxref("Object.prototype.constructor", "constructor")}} de l'erreur ou, si vous écrivez pour des interpréteurs JavaScript modernes, le mot-clé {{jsxref("Opérateurs/instanceof", "instanceof")}} :

    +Vous pouvez choisir de ne gérer que des types d'erreur particuliers en testant le type de l'erreur via la propriété {{jsxref("Object.prototype.constructor", "constructor")}} de l'erreur ou, si vous écrivez pour des interpréteurs JavaScript modernes, le mot-clé {{jsxref("Opérateurs/instanceof", "instanceof")}} : -
    try {
    +```js
    +try {
         machin.truc();
     } catch (e) {
         if (e instanceof EvalError) {
    @@ -116,23 +114,20 @@ const y = new Error("J'ai été créée avec new");
    } // ... etc } - +``` -

    Types d'erreur personnalisés

    +### Types d'erreur personnalisés -

    Vous pouvez vouloir définir vos propres types d'erreur dérivants d'Error pour pouvoir écrire throw new MonErreur() et utiliser instanceof MonErreur afin de vérifier le type d'erreur dans le gestionnaire d'exceptions. Cela a pour résultat un code de gestion d'erreur plus propre et plus cohérent. Voir What's a good way to extend Error in JavaScript? sur StackOverflow pour une discussion en profondeur.

    +Vous pouvez vouloir définir vos propres types d'erreur dérivants d'`Error` pour pouvoir écrire `throw new MonErreur()` et utiliser `instanceof MonErreur` afin de vérifier le type d'erreur dans le gestionnaire d'exceptions. Cela a pour résultat un code de gestion d'erreur plus propre et plus cohérent. Voir [_What's a good way to extend Error in JavaScript?_](http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript) sur StackOverflow pour une discussion en profondeur. -

    Classes d'erreur personnalisées avec ECMAScript 2015 / ES6

    +#### Classes d'erreur personnalisées avec ECMAScript 2015 / ES6 -
    -

    Attention : Babel, dans les versions antérieures à Babel 7, ainsi que d'autres transpileurs ne géreront pas correctement le code suivant sans configuration supplémentaire. Les versions de Babel antérieures à la version 7 peuvent uniquement gérer les classes d'erreur personnalisées lorsque celles-ci sont créées avec Object.defineProperty().

    -
    +> **Attention :** Babel, dans les versions antérieures à Babel 7, ainsi que d'autres transpileurs ne géreront pas correctement le code suivant sans [configuration supplémentaire](https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend). Les versions de Babel antérieures à la version 7 peuvent uniquement gérer les classes d'erreur personnalisées lorsque celles-ci sont créées avec [`Object.defineProperty()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty). -
    -

    Note : Certains navigateurs incluent le constructeur CustomError (Erreur Personnalisée) dans la pile d'appels lors de l'utilisation de classes ES6.

    -
    +> **Note :** Certains navigateurs incluent le constructeur `CustomError` (Erreur Personnalisée) dans la pile d'appels lors de l'utilisation de classes ES6. -
    class CustomError extends Error {
    +```js
    +class CustomError extends Error {
       constructor(machin = 'truc', ...params) {
         // Passer les arguments restants (incluant ceux spécifiques au vendeur) au constructeur parent
         super(...params);
    @@ -155,15 +150,15 @@ try {
       console.log(e.machin);  // bidule
       console.log(e.message); // messageBidule
       console.log(e.stack);   // stacktrace
    -}
    +} +``` -

    Objet d'erreur personnalisé ES5

    +#### Objet d'erreur personnalisé ES5 -
    -

    Attention : Tous les navigateurs incluent le constructeur CustomError dans la pile  d'appel lorsqu'une déclaration prototypale est utilisée.

    -
    +> **Attention :** Tous les navigateurs incluent le constructeur `CustomError` dans la pile  d'appel lorsqu'une déclaration prototypale est utilisée. -
    function CustomError(machin, message, nomFichier, numeroLigne) {
    +```js
    +function CustomError(machin, message, nomFichier, numeroLigne) {
       var instance = new Error(message, nomFichier, numeroLigne);
       instance.name = 'CustomError';
       instance.machin = machin;
    @@ -197,50 +192,24 @@ try {
       console.log(e.toto);       // bidule
       console.log(e.message);    // messageBidule
       console.log(e.lineNumber); // 29
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ESDraft', '#sec-error-objects', 'Error')}}{{Spec2('ESDraft')}}
    {{SpecName('ES2015', '#sec-error-objects', 'Error')}}{{Spec2('ES2015')}}
    {{SpecName('ES5.1', '#sec-15.11', 'Error')}}{{Spec2('ES5.1')}}
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Error")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Error.prototype")}}
    • -
    • {{jsxref("Instructions/throw", "throw")}}
    • -
    • {{jsxref("Instructions/try...catch", "try...catch")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ESDraft', '#sec-error-objects', 'Error')}} | {{Spec2('ESDraft')}} | | +| {{SpecName('ES2015', '#sec-error-objects', 'Error')}} | {{Spec2('ES2015')}} | | +| {{SpecName('ES5.1', '#sec-15.11', 'Error')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Error")}} + +## Voir aussi + +- {{jsxref("Error.prototype")}} +- {{jsxref("Instructions/throw", "throw")}} +- {{jsxref("Instructions/try...catch", "try...catch")}} diff --git a/files/fr/web/javascript/reference/global_objects/error/linenumber/index.md b/files/fr/web/javascript/reference/global_objects/error/linenumber/index.md index d82a788e79..b2a2a1ff5a 100644 --- a/files/fr/web/javascript/reference/global_objects/error/linenumber/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/linenumber/index.md @@ -11,42 +11,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber original_slug: Web/JavaScript/Reference/Objets_globaux/Error/lineNumber --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La propriété lineNumber contient le numéro de la ligne qui a déclenché l'erreur dans le fichier.

    +La propriété **`lineNumber`** contient le numéro de la ligne qui a déclenché l'erreur dans le fichier. -

    Exemples

    +## Exemples -

    Utiliser lineNumber

    +### Utiliser `lineNumber` -
    var e = new Error("Ne peut pas lire la donnée");
    +```js
    +var e = new Error("Ne peut pas lire la donnée");
     throw e;
    -console.log(e.lineNumber) // 2
    +console.log(e.lineNumber) // 2 +``` -

    Alternative en utilisant l'événement error

    +### Alternative en utilisant l'événement `error` -
    window.addEventListener("error", function (e) {
    +```js
    +window.addEventListener("error", function (e) {
      console.log(e.lineNumber); //5
     });
     var e = new Error('Ne peut pas lire la donnée');
    -throw e;
    - -

    Spécifications

    - -

    Ne fait partie d'aucune spécification. Non standard.

    +throw e; +``` -

    Compatibilité des navigateurs

    +## Spécifications -
    +Ne fait partie d'aucune spécification. Non standard. +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.lineNumber")}}

    -
    +{{Compat("javascript.builtins.Error.lineNumber")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.stack")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}
    • -
    +- {{jsxref("Error.prototype.stack")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/error/message/index.md b/files/fr/web/javascript/reference/global_objects/error/message/index.md index 7ea12bb648..47c745abbe 100644 --- a/files/fr/web/javascript/reference/global_objects/error/message/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/message/index.md @@ -10,64 +10,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/message original_slug: Web/JavaScript/Reference/Objets_globaux/Error/message --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété message est une description de l'erreur, écrite pour être lue par un humain.

    +La propriété **`message`** est une description de l'erreur, écrite pour être lue par un humain. -

    Description

    +## Description -

    La propriété contient une brève description de l'erreur si elle est accessible, ou si elle a été définie. SpiderMonkey utilise intensivement la propriété message pour les erreurs d'exécution. La propriété message, combinée à la propriété {{jsxref("Error.name", "name")}}, est utilisée par la méthode {{jsxref("Error.prototype.toString()")}} pour créer une représentation de l'erreur sous la forme d'une chaine de caractères.

    +La propriété contient une brève description de l'erreur si elle est accessible, ou si elle a été définie. [SpiderMonkey](/fr/docs/SpiderMonkey) utilise intensivement la propriété `message` pour les erreurs d'exécution. La propriété `message`, combinée à la propriété {{jsxref("Error.name", "name")}}, est utilisée par la méthode {{jsxref("Error.prototype.toString()")}} pour créer une représentation de l'erreur sous la forme d'une chaine de caractères. -

    Par défaut, la propriété message est une chaine de caractères vide, mais ce comportement peut être remplacé pour une instance, en renseignant un message comme premier argument du constructeur {{jsxref("Error")}}.

    +Par défaut, la propriété `message` est une chaine de caractères vide, mais ce comportement peut être remplacé pour une instance, en renseignant un message comme premier argument du constructeur {{jsxref("Error")}}. -

    Exemples

    +## Exemples -

    Déclencher une erreur personnalisée

    +### Déclencher une erreur personnalisée -
    var e = new Error("Impossible de lire la donnée");
    +```js
    +var e = new Error("Impossible de lire la donnée");
     // e.message est "Impossible de lire la donnée"
     throw e;
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.message")}}

    +{{Compat("javascript.builtins.Error.message")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.name")}}
    • -
    • {{jsxref("Error.prototype.toString()")}}
    • -
    +- {{jsxref("Error.prototype.name")}} +- {{jsxref("Error.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/error/name/index.md b/files/fr/web/javascript/reference/global_objects/error/name/index.md index 7463cb7eff..9ef6dbf87e 100644 --- a/files/fr/web/javascript/reference/global_objects/error/name/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/name/index.md @@ -10,64 +10,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/name original_slug: Web/JavaScript/Reference/Objets_globaux/Error/name --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété name est une chaîne de caractères représentant le nom du type d'erreur. La valeur initiale est "Error".

    +La propriété **`name`** est une chaîne de caractères représentant le nom du type d'erreur. La valeur initiale est "Error". -

    Description

    +## Description -

    Par défaut, les instances d'{{jsxref("Error")}} reçoivent le nom "Error". La propriété name, associée à la propriété {{jsxref("Error.message", "message")}}, est utilisée par la méthode {{jsxref("Error.prototype.toString()")}} pour créer une représentation de l'erreur sous la forme d'une chaine de caractères.

    +Par défaut, les instances d'{{jsxref("Error")}} reçoivent le nom "Error". La propriété `name`, associée à la propriété {{jsxref("Error.message", "message")}}, est utilisée par la méthode {{jsxref("Error.prototype.toString()")}} pour créer une représentation de l'erreur sous la forme d'une chaine de caractères. -

    Exemples

    +## Exemples -

    Déclencher une erreur personnalisée

    +### Déclencher une erreur personnalisée -
    var e = new Error("Donnée malformée"); // e.name est "Error"
    +```js
    +var e = new Error("Donnée malformée"); // e.name est "Error"
     
     e.name = "ParseError";
     throw e;
     // e.toString() renverra "ParseError: Donnée malformée"
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.11.4.2', 'Error.prototype.name')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-error.prototype.name', 'Error.prototype.name')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.11.4.2', 'Error.prototype.name')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-error.prototype.name', 'Error.prototype.name')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.name")}}

    +{{Compat("javascript.builtins.Error.name")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.message")}}
    • -
    • {{jsxref("Error.prototype.toString()")}}
    • -
    +- {{jsxref("Error.prototype.message")}} +- {{jsxref("Error.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/error/stack/index.md b/files/fr/web/javascript/reference/global_objects/error/stack/index.md index 133dfa454e..94bc830aeb 100644 --- a/files/fr/web/javascript/reference/global_objects/error/stack/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/stack/index.md @@ -11,29 +11,30 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack original_slug: Web/JavaScript/Reference/Objets_globaux/Error/Stack --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La propriété non-standard stack des objets {{jsxref("Error")}} fournit une trace des fonctions qui ont été appelées, dans quel ordre, depuis quelle ligne de quel fichier, et avec quels arguments. La chaine de pile remonte des appels les plus récents jusqu'aux plus anciens, ramenant à l'appel original de la portée globale.

    +La propriété non-standard **`stack`** des objets {{jsxref("Error")}} fournit une trace des fonctions qui ont été appelées, dans quel ordre, depuis quelle ligne de quel fichier, et avec quels arguments. La chaine de pile remonte des appels les plus récents jusqu'aux plus anciens, ramenant à l'appel original de la portée globale. -

    Description

    +## Description -

    Chaque étape sera séparée par une nouvelle ligne, la première partie de la ligne étant le nom de la fonction (si ce n'est pas un appel depuis la portée globale), suivi du signe arobase (@), de l'emplacement du fichier (sauf quand la fonction est le constructeur d'erreur lorsque l'erreur est déclenchée), de deux-points, et, s'il y a un emplacement de fichier, du numéro de ligne. (Notez que l'objet {{jsxref("Error")}} possède aussi les propriétés fileNamelineNumber et columnNumber pour leur récupération à partir de l'erreur déclenchée (mais seulement l'erreur, et pas sa trace)).

    +Chaque étape sera séparée par une nouvelle ligne, la première partie de la ligne étant le nom de la fonction (si ce n'est pas un appel depuis la portée globale), suivi du signe arobase (@), de l'emplacement du fichier (sauf quand la fonction est le constructeur d'erreur lorsque l'erreur est déclenchée), de deux-points, et, s'il y a un emplacement de fichier, du numéro de ligne. (Notez que l'objet {{jsxref("Error")}} possède aussi les propriétés `fileName`, `lineNumber` et `columnNumber` pour leur récupération à partir de l'erreur déclenchée (mais seulement l'erreur, et pas sa trace)). -

    Notez que ceci est le format utilisé par Firefox. Il n'y a aucun formatage standard. Cependant Safari 6+ et Opera 12- utilisent un format très similaire. Les navigateurs utilisant le moteur JavaScript V8 (tel que Chrome, Opera 15+, Navigateur Android) et IE10+, utilisent un format différent (voir la documentation MSDN error.stack).

    +Notez que ceci est le format utilisé par Firefox. Il n'y a aucun formatage standard. Cependant Safari 6+ et Opera 12- utilisent un format très similaire. Les navigateurs utilisant le moteur JavaScript V8 (tel que Chrome, Opera 15+, Navigateur Android) et IE10+, utilisent un format différent (voir la documentation MSDN [error.stack](https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx)). -

    Valeurs des arguments dans la pile : avant Firefox 14 ({{bug("744842")}}), le nom d'une fonction étaient suivis par les valeurs des arguments converties en une chaine de caractères entre parenthèses, immédiatement avant le signe arobase (@). Tandis qu'un objet (ou un tableau, etc.) apparaissait sous la forme convertie "[object Object]", et en tant que tel, ne pouvait pas être réévalué en les objets réels, les valeurs scalaires pouvaient être récupérées (bien qu'il soit plus facile — c'est toujours possible dans Firefox 14 — d'utiliser arguments.callee.caller.arguments, tout comme le nom de la fonction pouvait être récupéré avec arguments.callee.caller.name). "undefined" est listé comme "(void 0)". Notez que si des arguments chaines de caractères étaient passés avec des valeurs comme "@", "(", ")" (ou si dans les noms de fichier), vous ne pouviez pas vous reposez facilement sur ceux-ci pour découper la ligne en les parties qui la composent. Par conséquent, dans Firefox 14 et ultérieur, ceci est moins un problème.

    +**Valeurs des arguments dans la pile :** avant Firefox 14 ({{bug("744842")}}), le nom d'une fonction étaient suivis par les valeurs des arguments converties en une chaine de caractères entre parenthèses, immédiatement avant le signe arobase (@). Tandis qu'un objet (ou un tableau, etc.) apparaissait sous la forme convertie `"[object Object]"`, et en tant que tel, ne pouvait pas être réévalué en les objets réels, les valeurs scalaires pouvaient être récupérées (bien qu'il soit plus facile — c'est toujours possible dans Firefox 14 — d'utiliser `arguments.callee.caller.arguments`, tout comme le nom de la fonction pouvait être récupéré avec `arguments.callee.caller.name`). `"undefined"` est listé comme `"(void 0)"`. Notez que si des arguments chaines de caractères étaient passés avec des valeurs comme `"@"`, `"("`, `")"` (ou si dans les noms de fichier), vous ne pouviez pas vous reposez facilement sur ceux-ci pour découper la ligne en les parties qui la composent. Par conséquent, dans Firefox 14 et ultérieur, ceci est moins un problème. -

    Les différents navigateurs définissent cette valeur à différents instants. Par exemple, Firefox la définit lors de la création d'un objet {{jsxref("Error")}}, tandis que PhantomJS ne la définit que lors du déclenchement de l'{{jsxref("Error")}}, et la documentation MSDN semble correspondre à l'implémentation PhantomJS.

    +Les différents navigateurs définissent cette valeur à différents instants. Par exemple, Firefox la définit lors de la création d'un objet {{jsxref("Error")}}, tandis que PhantomJS ne la définit que lors du déclenchement de l'{{jsxref("Error")}}, et la [documentation MSDN](https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx) semble correspondre à l'implémentation PhantomJS. -

    Exemples

    +## Exemples -

    Le code HTML suivant démontre l'utilisation de la propriété stack.

    +Le code HTML suivant démontre l'utilisation de la propriété `stack`. -
    <!DOCTYPE HTML>
    -<meta charset="UTF-8">
    -<title>Exemple de Trace de Pile</title>
    -<body>
    -    <script>
    +```html
    +
    +
    +Exemple de Trace de Pile
    +
    +    
    +```
     
    -

    En supposant que ce code a été enregistré comme C:\exemple.html sur un système de fichier Windows, il produira un message d'alerte dans une nouvelle fenêtre avec le texte suivant :

    +En supposant que ce code a été enregistré comme `C:\exemple.html` sur un système de fichier Windows, il produira un message d'alerte dans une nouvelle fenêtre avec le texte suivant : -

    À partir de Firefox 30 et ultérieur, ce message contiendra le numéro de colonne  ({{bug(762556)}}) :

    +À partir de Firefox 30 et ultérieur, ce message contiendra le numéro de colonne  ({{bug(762556)}}) : -
    trace@file:///C:/exemple.html:9:17
    +```html
    +trace@file:///C:/exemple.html:9:17
     b@file:///C:/exemple.html:16:13
     a@file:///C:/exemple.html:19:13
    -@file:///C:/exemple.html:21:9
    +@file:///C:/exemple.html:21:9 +``` -

    De Firefox 14 à Firefox 29 :

    +De Firefox 14 à Firefox 29 : -
    trace@file:///C:/exemple.html:9
    -b@file:///C:/exemple.html:16
    -a@file:///C:/exemple.html:19
    -@file:///C:/exemple.html:21
    -
    + trace@file:///C:/exemple.html:9 + b@file:///C:/exemple.html:16 + a@file:///C:/exemple.html:19 + @file:///C:/exemple.html:21 -

    Firefox 13 et antérieur aurait produit à la place le texte suivant :

    +Firefox 13 et antérieur aurait produit à la place le texte suivant : -
    Error("monError")@:0
    -trace()@file:///C:/exemple.html:9
    -b(3,4,"\n\n",(void 0),[object Object])@file:///C:/exemple.html:16
    -a("premier appel, premierarg")@file:///C:/exemple.html:19
    -@file:///C:/exemple.html:21
    -
    + Error("monError")@:0 + trace()@file:///C:/exemple.html:9 + b(3,4,"\n\n",(void 0),[object Object])@file:///C:/exemple.html:16 + a("premier appel, premierarg")@file:///C:/exemple.html:19 + @file:///C:/exemple.html:21 -

    Pile d'un code evalué

    +### Pile d'un code evalué -

    À partir de Firefox 30 {{geckoRelease("30")}}, la pile d'erreur du code dans les appels à Function() et eval() produit désormais des piles avec des informations plus détaillées sur les numéros de lignes et de colonnes dans ces appels. Les appels de fonction sont indiqués par "> Function" et les appels d'eval par "> eval". Voir {{bug("332176")}}.

    +À partir de Firefox 30 {{geckoRelease("30")}}, la pile d'erreur du code dans les appels à `Function()` et `eval()` produit désormais des piles avec des informations plus détaillées sur les numéros de lignes et de colonnes dans ces appels. Les appels de fonction sont indiqués par `"> Function"` et les appels d'`eval` par `"> eval"`. Voir {{bug("332176")}}. -
    try {
    +```js
    +try {
       new Function('throw new Error()')();
     } catch (e) {
       console.log(e.stack);
     }
     
    -// anonymous@file:///C:/exemple.html line 7 > Function:1:1
    +// anonymous@file:///C:/exemple.html line 7 > Function:1:1
     // @file:///C:/exemple.html:7:6
     
     try {
    @@ -97,25 +99,24 @@ try {
       console.log(x.stack);
     }
     
    -// @file:///C:/exemple.html line 7 > eval line 1 > eval:1:1
    -// @file:///C:/exemple.html line 7 > eval:1:1
    -// @file:///C:/exemple.html:7:6
    +// @file:///C:/exemple.html line 7 > eval line 1 > eval:1:1 +// @file:///C:/exemple.html line 7 > eval:1:1 +// @file:///C:/exemple.html:7:6 +``` -

    Vous pouvez aussi utiliser la directive //# sourceURL pour nommer une source eval. Voir aussi Déboguer des sources évaluées dans les docs Débogueur, ainsi que ce blog post.

    +Vous pouvez aussi utiliser la directive `//# sourceURL` pour nommer une source eval. Voir aussi [Déboguer des sources évaluées](https://developer.mozilla.org/fr-FR/docs/Tools/Debugger/How_to/Debug_eval_sources) dans les docs [Débogueur](https://developer.mozilla.org/fr-FR/docs/Tools/Debugger), ainsi que ce [blog post](http://fitzgeraldnick.com/weblog/59/). -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucune spécification. Non-standard.

    +Ne fait partie d'aucune spécification. Non-standard. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.stack")}}

    +{{Compat("javascript.builtins.Error.stack")}} -

    Voir aussi

    +## Voir aussi - +- [Components.stack](/fr-FR/docs/Components.stack) +- Projets externes : [TraceKit](https://github.com/csnover/TraceKit/) et [javascript-stacktrace](https://github.com/eriwen/javascript-stacktrace) +- MSDN : docs [error.stack](https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx) +- [Overview of the V8 JavaScript stack trace API](https://github.com/v8/v8/wiki/Stack%20Trace%20API) diff --git a/files/fr/web/javascript/reference/global_objects/error/tosource/index.md b/files/fr/web/javascript/reference/global_objects/error/tosource/index.md index 5c84fe9b75..9876514034 100644 --- a/files/fr/web/javascript/reference/global_objects/error/tosource/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/tosource/index.md @@ -11,42 +11,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource original_slug: Web/JavaScript/Reference/Objets_globaux/Error/toSource --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La méthode toSource() renvoie le code source qui peut générer la même erreur.

    +La méthode **`toSource()`** renvoie le code source qui peut générer la même erreur. -

    Syntaxe

    +## Syntaxe -
    e.toSource()
    + e.toSource() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui contient le code source de l'erreur.

    +Une chaîne de caractères qui contient le code source de l'erreur. -

    Description

    +## Description -

    Appeler la méthode toSource() d'une instance {{jsxref("Error")}} (Erreurs natives incluses) renverra le code source de l'erreur. Cette chaine de caractères peut être évaluée afin de créer un objet similaire. La chaine de caractères contenant le code source suit la structure du constructeur Error. Par exemple :

    +Appeler la méthode `toSource()` d'une instance {{jsxref("Error")}} ([Erreurs natives](/fr/docs/JavaScript/Reference/Objets_globaux/Error#Error_types) incluses) renverra le code source de l'erreur. Cette chaine de caractères peut être évaluée afin de créer un objet similaire. La chaine de caractères contenant le code source suit la structure du constructeur `Error`. Par exemple : -
    (new name(message ,fileName, lineNumber))
    +```js +(new name(message ,fileName, lineNumber)) +``` -

    où ces attributs correspondent aux propriétés respectives de l'instance Error.

    +où ces attributs correspondent aux propriétés respectives de l'instance `Error`. -

    Note : Les propriétés utilisées par la méthode toSource() dans la création de cette chaine de caractères sont mutables et peuvent ne pas refléter correctement la fonction utilisée pour créer une instance d'erreur ou le nom du fichier ou la ligne à laquelle s'est produite l'erreur originale.

    +> **Note :** Les propriétés utilisées par la méthode `toSource()` dans la création de cette chaine de caractères sont mutables et peuvent ne pas refléter correctement la fonction utilisée pour créer une instance d'erreur ou le nom du fichier ou la ligne à laquelle s'est produite l'erreur originale. -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucun standard. Implémentée dans JavaScript 1.3.

    +Ne fait partie d'aucun standard. Implémentée dans JavaScript 1.3. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Error.toSource")}}

    +{{Compat("javascript.builtins.Error.toSource")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}
    • -
    • {{jsxref("Error.prototype.message")}}
    • -
    • {{jsxref("Error.prototype.name")}}
    • -
    • {{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
    • -
    +- {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}} +- {{jsxref("Error.prototype.message")}} +- {{jsxref("Error.prototype.name")}} +- {{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/error/tostring/index.md b/files/fr/web/javascript/reference/global_objects/error/tostring/index.md index cd67175fff..97119fcb6e 100644 --- a/files/fr/web/javascript/reference/global_objects/error/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/error/tostring/index.md @@ -10,23 +10,24 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Error/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toString() renvoie une représentation de l'objet {{jsxref("Error")}} sous la forme d'une chaine de caractères.

    +La méthode **`toString()`** renvoie une représentation de l'objet {{jsxref("Error")}} sous la forme d'une chaine de caractères. -

    Syntaxe

    +## Syntaxe -
    e.toString()
    + e.toString() -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant l'objet {{jsxref("Error")}}.

    +Une chaîne de caractères représentant l'objet {{jsxref("Error")}}. -

    Description

    +## Description -

    L'objet {{jsxref("Error")}} surcharge la méthode {{jsxref("Object.prototype.toString()")}} héritée par tous les objets. Sa sémantique est la suivante (en partant du principe que {{jsxref("Object")}} et {{jsxref("String")}} ont leurs valeurs originales) :

    +L'objet {{jsxref("Error")}} surcharge la méthode {{jsxref("Object.prototype.toString()")}} héritée par tous les objets. Sa sémantique est la suivante (en partant du principe que {{jsxref("Object")}} et {{jsxref("String")}} ont leurs valeurs originales) : -
    Error.prototype.toString = function () {
    +```js
    +Error.prototype.toString = function () {
       "use strict";
     
       var obj = Object(this);
    @@ -46,11 +47,12 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/Error/toString
     
       return name + ": " + msg;
     };
    -
    +``` -

    Exemples

    +## Exemples -
    var e = new Error("Erreur fatale");
    +```js
    +var e = new Error("Erreur fatale");
     console.log(e.toString()); // "Error: Erreur fatale"
     
     e.name = undefined;
    @@ -64,46 +66,21 @@ console.log(e.toString()); // ""
     
     e.name = "salut";
     console.log(e.toString()); // "salut"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.11.4.4', 'Error.prototype.toString')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Error.toString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.11.4.4', 'Error.prototype.toString')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-error.prototype.tostring', 'Error.prototype.toString')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Error.toString")}} + +## Voir aussi + +- {{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/escape/index.md b/files/fr/web/javascript/reference/global_objects/escape/index.md index e1b23297b0..f3222c3d56 100644 --- a/files/fr/web/javascript/reference/global_objects/escape/index.md +++ b/files/fr/web/javascript/reference/global_objects/escape/index.md @@ -7,90 +7,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/escape original_slug: Web/JavaScript/Reference/Objets_globaux/escape --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    Attention : Bien que escape(…) ne soit pas strictement obsolète (au sens où elle n'a pas été retirée des standards), elle est définie au sein de l'Annexe B du standard ECMA-262 qui commence par : +> **Attention :** Bien que `escape(…)` ne soit pas strictement obsolète (au sens où elle n'a pas été retirée des standards), elle est définie au sein de [l'Annexe B](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-additional-ecmascript-features-for-web-browsers) du standard ECMA-262 qui commence par : +> +> > … L'ensemble des fonctionnalités et comportements définis dans cette annexe possède une ou plusieurs caractéristiques indésirables. En l'absence d'une utilisation historique, ces fonctionnalités seraient retirés de la spécification. … +> > … Les développeurs ne devraient pas utiliser ces fonctionnalités et comportements ou présupposer qu'elles existent lors de l'écriture de nouveau code ECMAScript. … -

    … L'ensemble des fonctionnalités et comportements définis dans cette annexe possède une ou plusieurs caractéristiques indésirables. En l'absence d'une utilisation historique, ces fonctionnalités seraient retirés de la spécification. …
    -… Les développeurs ne devraient pas utiliser ces fonctionnalités et comportements ou présupposer qu'elles existent lors de l'écriture de nouveau code ECMAScript. …

    -
    +La fonction **`escape()`** permet de renvoyer une nouvelle chaîne de caractères dont certains caractères ont été remplacés par leur séquence d'échappement hexadécimale. Cette méthode est obsolète et il est donc conseillé d'utiliser {{jsxref("encodeURI")}} ou {{jsxref("encodeURIComponent")}} à la place. -

    La fonction escape() permet de renvoyer une nouvelle chaîne de caractères dont certains caractères ont été remplacés par leur séquence d'échappement hexadécimale. Cette méthode est obsolète et il est donc conseillé d'utiliser {{jsxref("encodeURI")}} ou {{jsxref("encodeURIComponent")}} à la place.

    +> **Note :** Cette fonction pouvait être utilisée pour l'encodage de fragment de requêtes d'URL. Si on souhaite remplacer des caractères par leur séquence d'échappement correcte (avec `%20` par exemple), on pourra utiliser [`decodeURIComponent`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/decodeURIComponent). -
    -

    Note : Cette fonction pouvait être utilisée pour l'encodage de fragment de requêtes d'URL. Si on souhaite remplacer des caractères par leur séquence d'échappement correcte (avec %20 par exemple), on pourra utiliser decodeURIComponent.

    -
    +## Syntaxe -

    Syntaxe

    + escape(str) -
    escape(str)
    +### Paramètres -

    Paramètres

    +- `str` + - : Une chaîne de caractères à encoder. -
    -
    str
    -
    Une chaîne de caractères à encoder.
    -
    +### Valeur de retour -

    Valeur de retour

    +Une nouvelle chaîne de caractères dont certains caractères ont été échappés. -

    Une nouvelle chaîne de caractères dont certains caractères ont été échappés.

    +## Description -

    Description

    +La fonction `escape` est une propriété de l'_objet global_. Les caractères spéciaux, sauf @\*\_+-./, seront encodés. -

    La fonction escape est une propriété de l'objet global. Les caractères spéciaux, sauf @*_+-./, seront encodés.

    +La forme hexadécimale des caractères dont la valeur du codet est inférieure à 0xFF sera représentée sur deux chiffres : %xx. Pour les caractères avec un code supérieur, quatre chiffres seront utilisés avec le format suivant %**u**xxxx. -

    La forme hexadécimale des caractères dont la valeur du codet est inférieure à 0xFF sera représentée sur deux chiffres : %xx. Pour les caractères avec un code supérieur, quatre chiffres seront utilisés avec le format suivant %uxxxx.

    +## Exemples -

    Exemples

    - -
    escape("abc123");     // "abc123"
    +```js
    +escape("abc123");     // "abc123"
     escape("äöü");        // "%E4%F6%FC"
     escape("ć");          // "%u0107"
     
     // caractères spéciaux
    -escape("@*_+-./");    // "@*_+-./"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}{{Spec2('ES5.1')}}Définie dans l'annexe B (informative) sur la compatibilité.
    {{SpecName('ES6', '#sec-escape-string', 'escape')}}{{Spec2('ES6')}}Définie dans l'annexe B (normative) pour les fonctionnalités additionnelles d'ECMAScript pour les navigateurs Web.
    {{SpecName('ESDraft', '#sec-escape-string', 'escape')}}{{Spec2('ESDraft')}}Définie dans l'annexe B (normative) pour les fonctionnalités additionnelles d'ECMAScript pour les navigateurs Web.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.escape")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("encodeURI")}}
    • -
    • {{jsxref("encodeURIComponent")}}
    • -
    • {{jsxref("unescape")}}
    • -
    +escape("@*_+-./"); // "@*_+-./" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-B.2.1', 'escape')}} | {{Spec2('ES5.1')}} | Définie dans l'annexe B (informative) sur la compatibilité. | +| {{SpecName('ES6', '#sec-escape-string', 'escape')}} | {{Spec2('ES6')}} | Définie dans l'annexe B (normative) pour les fonctionnalités additionnelles d'ECMAScript pour les navigateurs Web. | +| {{SpecName('ESDraft', '#sec-escape-string', 'escape')}} | {{Spec2('ESDraft')}} | Définie dans l'annexe B (normative) pour les fonctionnalités additionnelles d'ECMAScript pour les navigateurs Web. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.escape")}} + +## Voir aussi + +- {{jsxref("encodeURI")}} +- {{jsxref("encodeURIComponent")}} +- {{jsxref("unescape")}} diff --git a/files/fr/web/javascript/reference/global_objects/eval/index.md b/files/fr/web/javascript/reference/global_objects/eval/index.md index d52bd140e3..e28f94f20e 100644 --- a/files/fr/web/javascript/reference/global_objects/eval/index.md +++ b/files/fr/web/javascript/reference/global_objects/eval/index.md @@ -10,96 +10,99 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/eval original_slug: Web/JavaScript/Reference/Objets_globaux/eval --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction eval() permet d'évaluer du code JavaScript représenté sous forme d'une chaîne de caractères.

    +La fonction **`eval()`** permet d'évaluer du code JavaScript représenté sous forme d'une chaîne de caractères. -
    -

    Attention : L'exécution de JavaScript à partir d'une chaîne de caractères constitue un risque de sécurité énorme. Il est beaucoup trop facile pour un mauvais acteur d'exécuter du code arbitraire lorsque vous utilisez eval(). Voir la section N'utilisez eval() qu'en dernier recours ! ci-dessous.

    -
    +> **Attention :** L'exécution de JavaScript à partir d'une chaîne de caractères constitue un risque de sécurité énorme. Il est beaucoup trop facile pour un mauvais acteur d'exécuter du code arbitraire lorsque vous utilisez `eval()`. Voir la section [N'utilisez eval() qu'en dernier recours !](#Nutiliser_eval_quen_dernier_recours_!) ci-dessous. -
    {{EmbedInteractiveExample("pages/js/globalprops-eval.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-eval.html")}} -

    Syntaxe

    +## Syntaxe -
    eval(str)
    + eval(str) -

    Paramètres

    +### Paramètres -
    -
    str
    -
    Une chaîne de caractères qui représente une expression JavaScript ou une instruction ou une suite d'instructions JavaScript. L'expression utilisée peut contenir des variables et des propriétés d'objets existants.
    -
    +- `str` + - : Une chaîne de caractères qui représente une expression JavaScript ou une instruction ou une suite d'instructions JavaScript. L'expression utilisée peut contenir des variables et des propriétés d'objets existants. -

    Valeur de retour

    +### Valeur de retour -

    La valeur de terminaison du code fourni en argument. Si la valeur de terminaison est vide, c'est la valeur {{jsxref("undefined")}} qui est renvoyée.

    +La valeur de terminaison du code fourni en argument. Si la valeur de terminaison est vide, c'est la valeur {{jsxref("undefined")}} qui est renvoyée. -

    Description

    +## Description -

    eval() est une fonction rattachée à l'objet global.

    +`eval()` est une fonction rattachée à l'objet global. -

    eval() prend en compte un argument qui est une chaîne de caractères. Si cette chaîne représente une expression, eval() évaluera l'expression. Si l'argument utilisé représente une ou plusieurs instructions JavaScript, eval() évaluera les instructions. eval() ne doit pas être utilisé pour évaluer une expression arithmétique. En effet, JavaScript évalue automatiquement les expressions arithmétiques.

    +`eval()` prend en compte un argument qui est une chaîne de caractères. Si cette chaîne représente une expression, `eval()` évaluera l'expression. Si l'argument utilisé représente une ou plusieurs instructions JavaScript, `eval()` évaluera les instructions. `eval()` ne doit pas être utilisé pour évaluer une expression arithmétique. En effet, JavaScript évalue automatiquement les expressions arithmétiques. -

    Si on construit une expression arithmétique sous la forme d'une chaîne de caractères, on peut utiliser eval() pour évaluer cette expression par la suite. Ainsi, si on a une variable x, on peut préparer une expression à utiliser plus tard en construisant la chaîne "3 * x + 2" par exemple. Au moment où on souhaite procéder à l'évaluation, on appellera eval() avec cette chaîne de caractères.

    +Si on construit une expression arithmétique sous la forme d'une chaîne de caractères, on peut utiliser `eval()` pour évaluer cette expression par la suite. Ainsi, si on a une variable `x`, on peut préparer une expression à utiliser plus tard en construisant la chaîne "`3 * x + 2`" par exemple. Au moment où on souhaite procéder à l'évaluation, on appellera `eval()` avec cette chaîne de caractères. -

    Si l'argument passé à eval() n'est pas une chaîne de caractères, eval() renverra l'argument inchangé. Dans l'exemple qui suit, on utilise le constructeur String, eval() renvoie donc un objet String au lieu d'évaluer la chaîne de caractères correspondante.

    +Si l'argument passé à `eval()` n'est pas une chaîne de caractères, `eval()` renverra l'argument inchangé. Dans l'exemple qui suit, on utilise le constructeur `String`, `eval()` renvoie donc un objet `String` au lieu d'évaluer la chaîne de caractères correspondante. -
    eval(new String("2 + 2")); // renvoie un objet String contenant "2 + 2"
    +```js
    +eval(new String("2 + 2")); // renvoie un objet String contenant "2 + 2"
     eval("2 + 2");             // renvoie 4
    -
    +``` -

    Ce comportement peut être résolu de façon générique en utilisant la méthode toString().

    +Ce comportement peut être résolu de façon générique en utilisant la méthode `toString()`. -
    var expression = new String("2 + 2");
    +```js
    +var expression = new String("2 + 2");
     eval(expression.toString());
    -
    +``` -

    Si la fonction  eval est utilisée de manière indirecte, en l'invoquant par une référence autre que eval, cela fonctionnera avec une portée globale plutôt que locale (d'après ECMASCript 5). Par exemple, les déclarations de fonctions vont créer des fonctions globales et le code en cours d'évaluation n'aura pas accès aux variables locales déclarées avec la même portée que là où la fonction eval est appelée.

    +Si la fonction  `eval` est utilisée de manière indirecte, en l'invoquant par une référence autre que `eval`, cela fonctionnera avec une portée globale plutôt que locale (d'après ECMASCript 5). Par exemple, les déclarations de fonctions vont créer des fonctions globales et le code en cours d'évaluation n'aura pas accès aux variables locales déclarées avec la même portée que là où la fonction `eval` est appelée. -
    function test() {
    +```js
    +function test() {
       var x = 2, y = 4;
       console.log(eval("x + y"));  // Appel direct, portée locale, résultat de 6
       var geval = eval;
       console.log(geval("x + y")); // Appel indirect, portée globale, lance une exception ReferenceError car `x` n'est pas défini
       (0, eval)('x + y'); // un autre exemple d'appel indirect.
    -}
    +} +``` -

    N'utiliser eval() qu'en dernier recours !

    +## N'utiliser `eval()` qu'en dernier recours ! -

    eval() est une fonction dangereuse qui exécute le code passé en argument avec les privilèges de l'environnement appelant. Si eval() est utilisée avec une chaîne construite de façon mal intentionnée, cela pourra entraîner l'exécution d'un code malveillant sur la machine de l'utilisateur avec les permissions données au site ou au module complémentaire. À un niveau encore plus critique, du code tiers pourrait ainsi consulter la portée dans laquelle eval() a été invoquée. Cela peut permettre des attaques qui n'auraient pas été rendues possible en utilisant un objet {{jsxref("Function")}}.

    +`eval()` est une fonction dangereuse qui exécute le code passé en argument avec les privilèges de l'environnement appelant. Si `eval()` est utilisée avec une chaîne construite de façon mal intentionnée, cela pourra entraîner l'exécution d'un code malveillant sur la machine de l'utilisateur avec les permissions données au site ou au module complémentaire. À un niveau encore plus critique, du code tiers pourrait ainsi consulter la portée dans laquelle `eval()` a été invoquée. Cela peut permettre des attaques qui n'auraient pas été rendues possible en utilisant un objet {{jsxref("Function")}}. -

    eval() est également plus lente que les méthodes alternatives. En effet, l'évaluation nécessite de faire appel à l'interpréteur JavaScript alors que de nombreuses structures sont optimisées par les moteurs JavaScript modernes.

    +`eval()` est également plus lente que les méthodes alternatives. En effet, l'évaluation nécessite de faire appel à l'interpréteur JavaScript alors que de nombreuses structures sont optimisées par les moteurs JavaScript modernes. -

    Dans de nombreux cas, il existe des alternatives plus sûres et plus performantes à eval().

    +Dans de nombreux cas, il existe des alternatives plus sûres et plus performantes à `eval()`. -

    De plus, les moteurs JavaScript modernes convertissent le code JavaScript en code machine. Les notions relatives aux noms des variables sont donc transformées. Utiliser eval() force le navigateur à enregistrer puis à rechercher parmi les noms existants afin de retrouver les variables. Si besoin, on peut utiliser le constructeur Function :

    +De plus, les moteurs JavaScript modernes convertissent le code JavaScript en code machine. Les notions relatives aux noms des variables sont donc transformées. Utiliser `eval()` force le navigateur à enregistrer puis à rechercher parmi les noms existants afin de retrouver les variables. Si besoin, on peut utiliser le constructeur [`Function`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function) : -

    Avec eval() :

    +Avec `eval()` : -
    function looseJsonParse(obj){
    +```js
    +function looseJsonParse(obj){
         return eval("(" + obj + ")");
     }
     console.log(looseJsonParse(
        "{a:(4-1), b:function(){}, c:new Date()}"
     ))
    -
    +``` -

    Avec Function :

    +Avec `Function` : -
    function looseJsonParse(obj){
    +```js
    +function looseJsonParse(obj){
         return Function('"use strict";return (' + obj + ')')();
     }
     console.log(looseJsonParse(
        "{a:(4-1), b:function(){}, c:new Date()}"
     ))
    -
    +``` -

    Dans le premier cas, l'évaluation de c: new Date() sera beaucoup plus lente car Date peut faire référence à une variable déclarée avant. Dans le second cas, la fonction est évaluée dans la portée globale et le moteur peut donc utiliser {{jsxref("Date")}} directement.

    +Dans le premier cas, l'évaluation de `c: new Date()` sera beaucoup plus lente car `Date` peut faire référence à une variable déclarée avant. Dans le second cas, la fonction est évaluée dans la portée globale et le moteur peut donc utiliser {{jsxref("Date")}} directement. -

    Autrement dit, dans le premier cas, on aurait pu avoir un code comme :

    +Autrement dit, dans le premier cas, on aurait pu avoir un code comme : -
    function Date(n){
    +```js
    +function Date(n){
         return ["Monday","Tuesday","Wednesday","Thursaday","Friday","Saturday","Sunday"][n%7 || 0];
     }
     function looseJsonParse(obj){
    @@ -108,13 +111,14 @@ function looseJsonParse(obj){
     console.log(looseJsonParse(
        "{a:(4-1), b:function(){}, c:new Date()}"
     ))
    -
    +``` -

    Auquel cas, le navigateur doit effectuer une recherche coûteuse afin de vérifier s'il y a des variables locales Date.

    +Auquel cas, le navigateur doit effectuer une recherche coûteuse afin de vérifier s'il y a des variables locales `Date`. -

    Pour obtenir un résultat identique, on peut tout à fait se passer d'eval() :

    +Pour obtenir un résultat identique, on peut tout à fait se passer d'`eval()` : -
    function Date(n){
    +```js
    +function Date(n){
         return ["Monday","Tuesday","Wednesday","Thursaday","Friday","Saturday","Sunday"][n%7 || 0];
     }
     function runCodeWithDateFunction(obj){
    @@ -125,88 +129,95 @@ function runCodeWithDateFunction(obj){
     console.log(runCodeWithDateFunction(
        "function(Date){ return Date(5) }"
     ))
    -
    +``` -

    1. Le code passé à runCodeWithDateFunction peut être minifié.

    +1\. Le code passé à `runCodeWithDateFunction` peut être minifié. -

    2. Le surcoût lié à un appel de fonction est léger

    +2\. Le surcoût lié à un appel de fonction est léger -

    3. Function() permet d'utiliser  "use strict"; (qui peut également aider à améliorer les performances).

    +3\. `Function()` permet d'utiliser  `"use strict";` (qui peut également aider à améliorer les performances). -

    Enfin, pour la plupart des cas, on doit pouvoir éviter de passer par

    +Enfin, pour la plupart des cas, on doit pouvoir éviter de passer par -

    eval() ou Function() !

    +`eval()` ou `Function()` ! -

    Accéder aux propriétés d'un objet

    +### Accéder aux propriétés d'un objet -

    eval() ne doit pas être utilisée pour convertir des noms de propriétés en propriétés. Par exemple, lorsqu'on ne sait pas quelle propriété va être consultée avant l'exécution, on pourrait utiliser :

    +`eval()` ne doit pas être utilisée pour convertir des noms de propriétés en propriétés. Par exemple, lorsqu'on ne sait pas quelle propriété va être consultée avant l'exécution, on pourrait utiliser : -
    var obj = { a: 20, b: 30 };
    +```js
    +var obj = { a: 20, b: 30 };
     var nomPropriété = getNomProp();  //une méthode qui renvoie "a" ou "b"
     
     eval( "var résultat = obj." + nomPropriété );
    -
    +``` -

    Cependant, eval() n'est pas du tout nécessaire. Il est beaucoup plus simple, plus sécurisé, plus rapide, d'utiliser les accesseurs de propriétés :

    +Cependant, `eval()` n'est pas du tout nécessaire. Il est beaucoup plus simple, plus sécurisé, plus rapide, d'utiliser les [accesseurs de propriétés](/fr/docs/Web/JavaScript/Reference/Opérateurs/Opérateurs_de_membres) : -
    var obj = { a: 20, b: 30 };
    +```js
    +var obj = { a: 20, b: 30 };
     var nomPropriété = getNomProp();  // une méthode qui renvoie  "a" or "b"
     var résultat = obj[nomPropriété]; //  obj[ "a" ] correspond à obj.a
    -
    +``` -

    Utiliser des fonctions au lieu de morceaux de code

    +### Utiliser des fonctions au lieu de morceaux de code -

    Les fonctions JavaScript sont des citoyens de premier rang du langage, cela signifie que les fonctions peuvent être passées comme arguments aux autres API, qu'elles peuvent être stockées dans des variables, dans des propriétés d'objets, etc. De nombreuses API pour le DOM fonctionnent en prenant en argument des fonctions :

    +Les fonctions JavaScript sont des [citoyens de premier rang du langage](https://en.wikipedia.org/wiki/First-class_function), cela signifie que les fonctions peuvent être passées comme arguments aux autres API, qu'elles peuvent être stockées dans des variables, dans des propriétés d'objets, etc. De nombreuses API pour le DOM fonctionnent en prenant en argument des fonctions : -
    // au lieu de setTimeout(" ... ", 1000) on utilisera :
    +```js
    +// au lieu de setTimeout(" ... ", 1000) on utilisera :
     setTimeout(function() { ... }, 1000);
     
     // au lieu de elt.setAttribute("onclick", "...") on utilisera :
    -elt.addEventListener("click", function() { ... } , false); 
    +elt.addEventListener("click", function() { ... } , false); +``` -

    Les fermetures (closures) sont utiles lorsqu'on souhaite obtenir des fonctions paramétrées sans avoir à concaténer des chaînes de caractères.

    +[Les fermetures (_closures_)](/fr/docs/Web/JavaScript/Guide/Closures) sont utiles lorsqu'on souhaite obtenir des fonctions paramétrées sans avoir à concaténer des chaînes de caractères. -

    Convertir des chaînes JSON en objets JavaScript (parsing)

    +### Convertir des chaînes JSON en objets JavaScript (_parsing_) -

    Si la chaîne utilisée avec eval() contient des données (par exemple, un tableau : "[1, 2, 3]") et non du code, il est conseillé d'utiliser du {{Glossary("JSON")}}, qui permet de représenter un sous-ensemble des données représentables en JavaScript.

    +Si la chaîne utilisée avec `eval()` contient des données (par exemple, un tableau : `"[1, 2, 3]"`) et non du code, il est conseillé d'utiliser du {{Glossary("JSON")}}, qui permet de représenter un sous-ensemble des données représentables en JavaScript. -

    On notera que la syntaxe JSON est limitée relativement à la syntaxe JavaScript. De nombreux littéraux JavaScript ne pourront être parsés en JSON (par exemple, les virgules à la fin des instructions ne seront pas autorisées et les noms de propriétés devront être compris entre simples quotes). Il est souvent préférable d'utiliser un outil de sérialisation JSON pour que les chaînes générées puissent être analysée en JSON.

    +On notera que la syntaxe JSON est limitée relativement à la syntaxe JavaScript. De nombreux littéraux JavaScript ne pourront être parsés en JSON (par exemple, les virgules à la fin des instructions ne seront pas autorisées et les noms de propriétés devront être compris entre simples quotes). Il est souvent préférable d'utiliser un outil de sérialisation JSON pour que les chaînes générées puissent être analysée en JSON. -

    Transmettre des données et non du code

    +### Transmettre des données et non du code -

    Si on a par exemple une extension conçue pour parcourir le code d'une page web, on pourra transmettre des données XPath au lieu d'un code JavaScript.

    +Si on a par exemple une extension conçue pour parcourir le code d'une page web, on pourra transmettre des données [XPath](/fr/docs/XPath) au lieu d'un code JavaScript. -

    Exécuter du code avec des privilèges restreints

    +### Exécuter du code avec des privilèges restreints -

    S'il faut nécessairement exécuter du code, il faut le faire avec des privilèges restreints. Cela s'applique généralement aux modules complémentaires ou aux applications XUL. Pour cela, on pourra utiliser Components.utils.evalInSandbox.

    +S'il faut nécessairement exécuter du code, il faut le faire avec des privilèges restreints. Cela s'applique généralement aux modules complémentaires ou aux applications XUL. Pour cela, on pourra utiliser [Components.utils.evalInSandbox](/fr/docs/Components.utils.evalInSandbox). -

    Exemples

    +## Exemples -

    Utiliser eval()

    +### Utiliser `eval()` -

    Dans le code suivant, les deux instructions passées à eval() sous la forme d'une chaîne renvoient 42. La première évaluation porte sur la chaîne "x + y + 1" ; la seconde évaluation porte sur la chaîne de caractères "42".

    +Dans le code suivant, les deux instructions passées à `eval()` sous la forme d'une chaîne renvoient 42. La première évaluation porte sur la chaîne "`x + y + 1`" ; la seconde évaluation porte sur la chaîne de caractères "`42`". -
    var x = 2;
    +```js
    +var x = 2;
     var y = 39;
     var z = "42";
     eval("x + y + 1"); // renvoie 42
     eval(z);           // renvoie 42
    -
    +``` -

    Utiliser eval() pour une chaîne d'instructions

    +### Utiliser `eval()` pour une chaîne d'instructions -

    Dans l'exemple qui suit, eval() est utilisée pour évaluer la chaîne de caractères str. Cette chaîne contient plusieurs instructions JavaScript qui affichent un message dans la console et qui affectent la valeur 42 à la variable z si x vaut cinq et 0 sinon. Lorsque la seconde instruction est exécutée, eval() entraînera l'exécution des instructions, les instructions seront évaluées et la valeur de z sera donc renvoyée.

    +Dans l'exemple qui suit, `eval()` est utilisée pour évaluer la chaîne de caractères `str`. Cette chaîne contient plusieurs instructions JavaScript qui affichent un message dans la console et qui affectent la valeur 42 à la variable `z` si `x` vaut cinq et 0 sinon. Lorsque la seconde instruction est exécutée, `eval()` entraînera l'exécution des instructions, les instructions seront évaluées et la valeur de `z` sera donc renvoyée. -
    var x = 5;
    +```js
    +var x = 5;
     var str = "if (x == 5) {console.log('z vaut 42'); z = 42;} else z = 0; ";
     console.log("z vaut "+eval(str));
    -
    +``` -

    Le résultat d'eval() est celui de la dernière expression

    +### Le résultat d'`eval()` est celui de la dernière expression -

    eval() renvoie la valeur de la dernière expression évaluée :

    +`eval()` renvoie la valeur de la dernière expression évaluée : -
    var str = "if ( a ) { 1+1; } else { 1+2; }";
    +```js
    +var str = "if ( a ) { 1+1; } else { 1+2; }";
     var a = true;
     var b = eval(str);  // renvoie 2
     
    @@ -215,64 +226,39 @@ console.log("b vaut : " + b);
     a = false;
     b = eval(str);      // renvoie 3
     
    -console.log("b vaut : " + b);
    +console.log("b vaut : " + b); +``` -

    eval() et les fonctions

    +### `eval()` et les fonctions -

    Pour qu'une fonction soit restituée lors de l'évaluation, il est nécessaire d'encadrer l'expression contenue dans la chaîne de caractères avec des parenthèses :

    +Pour qu'une fonction soit restituée lors de l'évaluation, il est nécessaire d'encadrer l'expression contenue dans la chaîne de caractères avec des parenthèses : -
    var fctStr1 = "function a() {}"
    +```js
    +var fctStr1 = "function a() {}"
     var fctStr2 = "(function a() {})"
     var fct1 = eval(fctStr1)  // renvoie undefined
     var fct2 = eval(fctStr2)  // renvoie une function
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-eval-x', 'eval')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-eval-x', 'eval')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.eval")}}

    - -

    Notes spécifiques à Firefox

    - -
      -
    • Historiquement, eval() utilisait un deuxième argument qui définissait l'objet qui était le contexte pour lequel effectuer l'évaluation. Cet argument était non-standard et a été retiré de SpiderMonkey avec Firefox 4 (cf. {{bug(531675)}}).
    • -
    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-eval-x', 'eval')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-eval-x', 'eval')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.eval")}} + +## Notes spécifiques à Firefox + +- Historiquement, `eval()` utilisait un deuxième argument qui définissait l'objet qui était le contexte pour lequel effectuer l'évaluation. Cet argument était non-standard et a été retiré de SpiderMonkey avec Firefox 4 (cf. {{bug(531675)}}). + +## Voir aussi + +- {{jsxref("Objets_globaux/uneval", "uneval()")}} +- {{jsxref("Opérateurs/Opérateurs_de_membres","Les accesseurs de propriétés","",1)}} +- [Utiliser `eval()` dans les scripts de contenu dans les WebExtensions]() diff --git a/files/fr/web/javascript/reference/global_objects/evalerror/index.md b/files/fr/web/javascript/reference/global_objects/evalerror/index.md index 402a26e026..7000c66f7c 100644 --- a/files/fr/web/javascript/reference/global_objects/evalerror/index.md +++ b/files/fr/web/javascript/reference/global_objects/evalerror/index.md @@ -9,53 +9,50 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/EvalError original_slug: Web/JavaScript/Reference/Objets_globaux/EvalError --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet EvalError indique une erreur concernant la fonction globale {{jsxref("Objets_globaux/eval","eval()")}}. Cette exception n'est plus levée par JavaScript mais l'objet EvalError est conservé pour des raisons de compatibilité.

    +L'objet **`EvalError`** indique une erreur concernant la fonction globale {{jsxref("Objets_globaux/eval","eval()")}}. Cette exception n'est plus levée par JavaScript mais l'objet `EvalError` est conservé pour des raisons de compatibilité. -

    Syntaxe

    +## Syntaxe -
    new EvalError([message[, nomFichier[, numeroLigne]]])
    + new EvalError([message[, nomFichier[, numeroLigne]]]) -

    Paramètres

    +### Paramètres -
    -
    message
    -
    Paramètre optionnel, une description compréhensible de l'erreur
    -
    nomFichier {{Non-standard_inline}}
    -
    Paramètre optionnel, le nom du fichier qui contient le code à l'origine de l'exception
    -
    numeroLigne {{Non-standard_inline}}
    -
    Paramètre optionnel, le numéro de la ligne du code qui a entrainé l'exception
    -
    +- `message` + - : Paramètre optionnel, une description compréhensible de l'erreur +- `nomFichier` {{Non-standard_inline}} + - : Paramètre optionnel, le nom du fichier qui contient le code à l'origine de l'exception +- `numeroLigne` {{Non-standard_inline}} + - : Paramètre optionnel, le numéro de la ligne du code qui a entrainé l'exception -

    Propriétés

    +## Propriétés -
    -
    {{jsxref("EvalError.prototype")}}
    -
    Cette propriété permet l'addition de propriétés à un objet EvalError.
    -
    +- {{jsxref("EvalError.prototype")}} + - : Cette propriété permet l'addition de propriétés à un objet `EvalError`. -

    Méthodes

    +## Méthodes -

    L'objet global EvalError ne contient pas de méthodes propres. En revanche, il hérite de certaines méthodes via sa chaîne de prototypes.

    +L'objet global `EvalError` ne contient pas de méthodes propres. En revanche, il hérite de certaines méthodes via sa chaîne de prototypes. -

    Instances de EvalError

    +## Instances de `EvalError` -

    Propriétés

    +### Propriétés -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/EvalError/prototype','Properties')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/EvalError/prototype','Properties')}} -

    Méthodes

    +### Méthodes -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/EvalError/prototype','Methods')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/EvalError/prototype','Methods')}} -

    Exemples

    +## Exemples -

    EvalError n'est pas utilisée par la spécification ECMAScript actuelle et ne sera donc pas levée lors de l'exécution. Cependant, l'objet reste disponible à des fins de compatibilité avec les versions antérieures de la spécification.

    +`EvalError` n'est pas utilisée par la spécification ECMAScript actuelle et ne sera donc pas levée lors de l'exécution. Cependant, l'objet reste disponible à des fins de compatibilité avec les versions antérieures de la spécification. -

    Créer une exception EvalError

    +### Créer une exception `EvalError` -
    try {
    +```js
    +try {
       throw new EvalError("Coucou", "unFichier.js", 10);
     } catch (e) {
       console.log(e instanceof EvalError); // true
    @@ -65,51 +62,24 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/EvalError
       console.log(e.lineNumber);           // 10
       console.log(e.columnNumber);         // 0
       console.log(e.stack);                // "@Scratchpad/2:2:9\n"
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale
    {{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}{{Spec2('ES5.1')}}Non utilisé dans cette spécificaition. Présent à des fins de rétrocompatibilité.
    {{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ES6')}}Non utilisé dans cette spécificaition. Présent à des fins de rétrocompatibilité.
    {{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -
    - -

    {{Compat("javascript.builtins.EvalError")}}

    -
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Error")}}
    • -
    • {{jsxref("EvalError.prototype")}}
    • -
    • {{jsxref("Objets_globaux/eval", "eval()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale | +| {{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}} | {{Spec2('ES5.1')}} | Non utilisé dans cette spécificaition. Présent à des fins de rétrocompatibilité. | +| {{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}} | {{Spec2('ES6')}} | Non utilisé dans cette spécificaition. Présent à des fins de rétrocompatibilité. | +| {{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.EvalError")}} + +## Voir aussi + +- {{jsxref("Error")}} +- {{jsxref("EvalError.prototype")}} +- {{jsxref("Objets_globaux/eval", "eval()")}} diff --git a/files/fr/web/javascript/reference/global_objects/float32array/index.md b/files/fr/web/javascript/reference/global_objects/float32array/index.md index a6e52bb590..0e20735fef 100644 --- a/files/fr/web/javascript/reference/global_objects/float32array/index.md +++ b/files/fr/web/javascript/reference/global_objects/float32array/index.md @@ -10,125 +10,118 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array original_slug: Web/JavaScript/Reference/Objets_globaux/Float32Array --- -
    {{JSRef}}
    - -

    Le tableau typé Float32Array représente un tableau de nombres flottants représentés sur 32 bits (ce qui correspond au type C float), l'ordre des octets utilisés étant celui de la plate-forme. Si on souhaite maîtriser le boutisme (endianness) utilisé, on pourra utiliser une {{jsxref("DataView")}}. Les éléments du tableau sont initialisés à 0. Une fois que le tableau est établi, on peut référencer des éléments dans le tableau en utilisant les méthodes de l'objet ou la syntaxe usuelle des crochets.

    - -

    Syntaxe

    - -
    new Float32Array(); // Apparu avec ES2017
    -new Float32Array(longueur);
    -new Float32Array(tableauTypé);
    -new Float32Array(objet);
    -new Float32Array(buffer [, décalageOctets [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe de ce constructeur et les paramètres utilisés, voir la page {{jsxref("Objets_globaux/TypedArray","TypedArray","#Syntaxe")}}.

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}
    -
    Renvoie le nombre d'octets par élément. 4 dans le cas de Float32Array.
    -
    Float32Array.length
    -
    Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "Float32Array.name")}}
    -
    Renvoie la chaîne de caractères correspondant au nom du constructeur, dans le cas de Float32Array, ce sera : "Float32Array".
    -
    {{jsxref("TypedArray.prototype", "Float32Array.prototype")}}
    -
    Le prototype des objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.from", "Float32Array.from()")}}
    -
    Crée un nouvel objet Float32Array à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    -
    {{jsxref("TypedArray.of", "Float32Array.of()")}}
    -
    Crée un nouvel objet Float32Array à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    -
    - -

    Prototype Float32Array

    - -

    Chacun des objets Float32Array hérite de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    Float32Array.prototype.constructor
    -
    Renvoie la fonction qui a crée le prototype de l'instance. Par défaut, ce sera le constructeur Float32Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}
    -
    Renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet Float32Array. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Renvoie la longueur, exprimée en octets, de l'objet Float32Array à partir du début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Renvoie le décalage, exprimé en octets, de l'objet Float32Array par rapport au début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}
    -
    Renvoie le nombre d'éléments contenus dans l'objet Float32Array. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    -
    Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet Float32Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet Float32Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`Float32Array`** représente un tableau de nombres flottants représentés sur 32 bits (ce qui correspond au type C `float`), l'ordre des octets utilisés étant celui de la plate-forme. Si on souhaite maîtriser le boutisme (_endianness_) utilisé, on pourra utiliser une {{jsxref("DataView")}}. Les éléments du tableau sont initialisés à `0`. Une fois que le tableau est établi, on peut référencer des éléments dans le tableau en utilisant les méthodes de l'objet ou la syntaxe usuelle des crochets.
    +
    +## Syntaxe
    +
    +    new Float32Array(); // Apparu avec ES2017
    +    new Float32Array(longueur);
    +    new Float32Array(tableauTypé);
    +    new Float32Array(objet);
    +    new Float32Array(buffer [, décalageOctets [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe de ce constructeur et les paramètres utilisés, voir la page {{jsxref("Objets_globaux/TypedArray","TypedArray","#Syntaxe")}}.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}
    +  - : Renvoie le nombre d'octets par élément. `4` dans le cas de `Float32Array`.
    +- Float32Array.length
    +  - : Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "Float32Array.name")}}
    +  - : Renvoie la chaîne de caractères correspondant au nom du constructeur, dans le cas de `Float32Array`, ce sera : "Float32Array".
    +- {{jsxref("TypedArray.prototype", "Float32Array.prototype")}}
    +  - : Le prototype des objets _TypedArray_.
    +
    +## Méthodes
    +
    +- {{jsxref("TypedArray.from", "Float32Array.from()")}}
    +  - : Crée un nouvel objet `Float32Array` à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    +- {{jsxref("TypedArray.of", "Float32Array.of()")}}
    +  - : Crée un nouvel objet `Float32Array` à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    +
    +## Prototype `Float32Array`
    +
    +Chacun des objets `Float32Array` hérite de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `Float32Array.prototype.constructor`
    +  - : Renvoie la fonction qui a crée le prototype de l'instance. Par défaut, ce sera le constructeur `Float32Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Renvoie l'objet {{jsxref("ArrayBuffer")}} référencé par l'objet `Float32Array`. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Renvoie la longueur, exprimée en octets, de l'objet `Float32Array` à partir du début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Renvoie le décalage, exprimé en octets, de l'objet `Float32Array` par rapport au début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}
    +  - : Renvoie le nombre d'éléments contenus dans l'objet `Float32Array`. Cette propriété est fixée lors de la construction et n'est donc disponible qu'en **lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    +  - : Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `Float32Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `Float32Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var float32 = new Float32Array(2);
     float32[0] = 42;
     console.log(float32[0]); // 42
    @@ -152,53 +145,36 @@ var z = new Float32Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1,2,3]; }();
     var float32 = new Float32Array(iterable);
     // Float32Array[1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{Spec2('Typed Array')}}Remplacée par ECMAScript 2015.
    {{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Défintion initiale au sein d'un standard ECMA. new est obligatoire.
    {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 a modifié le constructeur afin que celui-ci utilise l'opération interne ToIndex et puisse être utilisé sans argument.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Float32Array")}}

    - -

    Notes de compatibilité

    - -

    À partir d'ECMAScript 2015 (ES6), Float32Array doit être utilisée avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur Float32Array comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    - -
    var dv = Float32Array([1, 2, 3]);
    +```
    +
    +## Spécifications
    +
    +| Spécification                                                                        | État                         | Commentaires                                                                                                                            |
    +| ------------------------------------------------------------------------------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
    +| {{SpecName('Typed Array')}}                                                 | {Spec2('Typed Array')}}      | Remplacée par ECMAScript 2015.                                                                                                          |
    +| {{SpecName('ES6', '#table-49', 'TypedArray constructors')}}     | {{Spec2('ES6')}}         | Défintion initiale au sein d'un standard ECMA. `new` est obligatoire.                                                                   |
    +| {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}} | {{Spec2('ESDraft')}} | ECMAScript 2017 a modifié le constructeur afin que celui-ci utilise l'opération interne `ToIndex` et puisse être utilisé sans argument. |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Float32Array")}}
    +
    +## Notes de compatibilité
    +
    +À partir d'ECMAScript 2015 (ES6), `Float32Array` doit être utilisée avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `Float32Array` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}.
    +
    +```js example-bad
    +var dv = Float32Array([1, 2, 3]);
     // TypeError: calling a builtin Float32Array constructor
    -// without new is forbidden
    +// without new is forbidden +``` -
    var dv = new Float32Array([1, 2, 3]);
    +```js example-good +var dv = new Float32Array([1, 2, 3]); +``` -

    Voir aussi

    +## Voir aussi - +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- {{jsxref("ArrayBuffer")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/float64array/index.md b/files/fr/web/javascript/reference/global_objects/float64array/index.md index 9865674fff..daace3e093 100644 --- a/files/fr/web/javascript/reference/global_objects/float64array/index.md +++ b/files/fr/web/javascript/reference/global_objects/float64array/index.md @@ -10,125 +10,118 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array original_slug: Web/JavaScript/Reference/Objets_globaux/Float64Array --- -
    {{JSRef}}
    - -

    Le constructeur Floa64Array permet de représenter un tableau typé dont les éléments sont des nombres flottants représentés sur 64 bits (ce qui correspond à la représentation du type double en C) dans l'ordre des octets utilisé par la plate-forme. Si on souhaite maîtriser le boutisme (endianness), on pourra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0. Une fois construit, il est possible de faire référence aux éléments du tableau en utilisant les méthodes de l'objet ou la syntaxe usuelle pour l'accès aux éléments du tableau (les crochets).

    - -

    Syntaxe

    - -
    new Float64Array(); // apparu avec ES2017
    -new Float64Array(longueur);
    -new Float64Array(tableauTypé);
    -new Float64Array(objet);
    -new Float64Array(buffer [, positionOctet [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur et ses paramètres, voir TypedArray.

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}
    -
    Renvoie un nombre traduisant la taille de l'élément en octets, 8 dans le cas d'un Float64Array.
    -
    Float64Array.length
    -
    Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'éléments, voir {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "Float64Array.name")}}
    -
    Renvoie la chaîne de caractère correspondant au nom du constructeur, dans le cas de Float64Array, ce sera : "Float64Array".
    -
    {{jsxref("TypedArray.prototype", "Float64Array.prototype")}}
    -
    Prototype pour les objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.from", "Float64Array.from()")}}
    -
    Crée un nouvel objet Float64Array à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir aussi {{jsxref("Array.from()")}}.
    -
    {{jsxref("TypedArray.of", "Float64Array.of()")}}
    -
    Crée un nouvel objet Float64Array à partir d'un nombre variable d'arguments. Voir aussi {{jsxref("Array.of()")}}.
    -
    - -

    Prototype de Float64Array

    - -

    Tous les objets Float64Array héritent de {{jsxref("TypedArray.prototype", "Float64Array.prototype")}}.

    - -

    Propriétés

    - -
    -
    Float64Array.prototype.constructor
    -
    Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif Float64Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}} {{readonlyInline}}
    -
    Renvoie l'{{jsxref("ArrayBuffer")}} référencé par l'objet Float64Array. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Renvoie la longueur, exprimée en octets, de l'objet Float64Array depuis le début de son {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "Float64Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Renvoie le décalage, exprimé en octets, entre l'objet Float64Array et le début de son {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}}
    -
    Renvoie le nombre d'éléments contenus dans l'objet Float64Array. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "Float64Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "Float64Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "Float64Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "Float64Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.move", "Float64Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    -
    Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "Float64Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "Float64Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet Float64Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "Float64Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet Float64Array :

    - -
    // Construction avec une longueur de tableau
    +{{JSRef}}
    +
    +Le constructeur **`Floa64Array`** permet de représenter un tableau typé dont les éléments sont des nombres flottants représentés sur 64 bits (ce qui correspond à la représentation du type `double` en C) dans l'ordre des octets utilisé par la plate-forme. Si on souhaite maîtriser le boutisme (_endianness_), on pourra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à `0`. Une fois construit, il est possible de faire référence aux éléments du tableau en utilisant les méthodes de l'objet ou la syntaxe usuelle pour l'accès aux éléments du tableau (les crochets).
    +
    +## Syntaxe
    +
    +    new Float64Array(); // apparu avec ES2017
    +    new Float64Array(longueur);
    +    new Float64Array(tableauTypé);
    +    new Float64Array(objet);
    +    new Float64Array(buffer [, positionOctet [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur et ses paramètres, voir _[TypedArray](/fr/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntaxe)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}
    +  - : Renvoie un nombre traduisant la taille de l'élément en octets, `8` dans le cas d'un `Float64Array`.
    +- Float64Array.length
    +  - : Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'éléments, voir {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "Float64Array.name")}}
    +  - : Renvoie la chaîne de caractère correspondant au nom du constructeur, dans le cas de `Float64Array`, ce sera : "Float64Array".
    +- {{jsxref("TypedArray.prototype", "Float64Array.prototype")}}
    +  - : Prototype pour les objets _TypedArray_.
    +
    +## Méthodes
    +
    +- {{jsxref("TypedArray.from", "Float64Array.from()")}}
    +  - : Crée un nouvel objet `Float64Array` à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir aussi {{jsxref("Array.from()")}}.
    +- {{jsxref("TypedArray.of", "Float64Array.of()")}}
    +  - : Crée un nouvel objet `Float64Array` à partir d'un nombre variable d'arguments. Voir aussi {{jsxref("Array.of()")}}.
    +
    +## Prototype de `Float64Array`
    +
    +Tous les objets `Float64Array` héritent de {{jsxref("TypedArray.prototype", "Float64Array.prototype")}}.
    +
    +### Propriétés
    +
    +- `Float64Array.prototype.constructor`
    +  - : Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif `Float64Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Renvoie l'{{jsxref("ArrayBuffer")}} référencé par l'objet `Float64Array`. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'**en lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Renvoie la longueur, exprimée en octets, de l'objet `Float64Array` depuis le début de son {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'**en lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "Float64Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Renvoie le décalage, exprimé en octets, entre l'objet `Float64Array` et le début de son {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'**en lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}}
    +  - : Renvoie le nombre d'éléments contenus dans l'objet `Float64Array`. Cette valeur est fixée lors de la construction de l'objet et n'est accessible qu'**en lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "Float64Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "Float64Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "Float64Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "Float64Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.move", "Float64Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    +  - : Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "Float64Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "Float64Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `Float64Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "Float64Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `Float64Array` :
    +
    +```js
    +// Construction avec une longueur de tableau
     var float64 = new Float64Array(2);
     float64[0] = 42;
     console.log(float64[0]); // 42
    @@ -152,52 +145,35 @@ var z = new Float64Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1,2,3]; }();
     var float64 = new Float64Array(iterable);
     // Float64Array[1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Première définition au sein d'un standard ECMAScript. new est nécessaire pour utiliser le constructeur.
    {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 a modifié le constructeur afin qu'il utilise l'opération interne ToIndex ce qui permet de l'utiliser sans argument.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Float64Array")}}

    - -

    Notes de compatibilité

    - -

    À partir d'ECMAScript 2015 (ES6), les constructeurs TypedArray doivent être utilisés avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur TypedArray comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    - -
    var dv = Float64Array([1, 2, 3]);
    -// TypeError: calling a builtin Float64Array constructor without new is forbidden
    - -
    var dv = new Float64Array([1, 2, 3]);
    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015. | +| {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}} | {{Spec2('ES2015')}} | Première définition au sein d'un standard ECMAScript. `new` est nécessaire pour utiliser le constructeur. | +| {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}} | {{Spec2('ESDraft')}} | ECMAScript 2017 a modifié le constructeur afin qu'il utilise l'opération interne `ToIndex` ce qui permet de l'utiliser sans argument. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Float64Array")}} + +## Notes de compatibilité + +À partir d'ECMAScript 2015 (ES6), les constructeurs `TypedArray` doivent être utilisés avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `TypedArray` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}. + +```js example-bad +var dv = Float64Array([1, 2, 3]); +// TypeError: calling a builtin Float64Array constructor without new is forbidden +``` + +```js example-good +var dv = new Float64Array([1, 2, 3]); +``` + +## Voir aussi + +- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés) +- {{jsxref("ArrayBuffer")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/apply/index.md b/files/fr/web/javascript/reference/global_objects/function/apply/index.md index a8dcbf5fab..f4e6698445 100644 --- a/files/fr/web/javascript/reference/global_objects/function/apply/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/apply/index.md @@ -9,76 +9,74 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply original_slug: Web/JavaScript/Reference/Objets_globaux/Function/apply --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode apply() appelle une fonction en lui passant une valeur this et des arguments sous forme d'un tableau (ou d'un objet semblable à un tableau).

    +La méthode **`apply()`** appelle une fonction en lui passant une valeur `this` et des `arguments` sous forme d'un tableau (ou d'un objet [semblable à un tableau](/fr/docs/Web/JavaScript/Guide/Objets_élémentaires_JavaScript#Manipuler_des_objets_semblables_aux_tableaux)). -

    Note : Bien que la syntaxe de cette fonction ressemble à celle de {{jsxref("Function.call", "call()")}}, elle est différente car call() accepte une liste d'arguments, tandis que apply() accepte un tableau d'arguments.

    +> **Note :** Bien que la syntaxe de cette fonction ressemble à celle de {{jsxref("Function.call", "call()")}}, elle est différente car `call()` accepte **une liste d'arguments**, tandis que `apply()` accepte un **tableau d'arguments**. -

    Note : Quand on utilise {{jsxref("undefined")}} ou {{jsxref("null")}} comme premier argument pour cette fonction, on peut obtenir un résultat similaire avec la syntaxe de décomposition.

    +> **Note :** Quand on utilise {{jsxref("undefined")}} ou {{jsxref("null")}} comme premier argument pour cette fonction, on peut obtenir un résultat similaire avec la [syntaxe de décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Syntaxe_décomposition). -
    {{EmbedInteractiveExample("pages/js/function-apply.html")}}
    +{{EmbedInteractiveExample("pages/js/function-apply.html")}} -

    Syntaxe

    +## Syntaxe -
    fun.apply(thisArg, [argsArray])
    + fun.apply(thisArg, [argsArray]) -

    Paramètres

    +### Paramètres -
    -
    thisArg
    -
    La valeur de this fournie pour l'appel à la fonction fun. On notera que, sous certaines conditions, this peut ne pas être la valeur exacte vue par la méthode : si la méthode est une fonction utilisée en mode {{jsxref("Strict_mode", "mode non-strict", "", 1)}}, {{jsxref("null")}} et {{jsxref("undefined")}} seront remplacées par l'objet global, et les valeurs primitives seront encapsulées. Cet argument n'est pas optionnel.
    -
    argsArray
    -
    Un objet semblable à un tableau qui définit les arguments avec lesquel fun devrait être appelée, ou {{jsxref("null")}} ou {{jsxref("undefined")}} si aucun argument n'est passé à la fonction. Avec ECMAScript 5, ces arguments peuvent être représentés par un objet semblable un tableau. Voir ci-après pour plus d'informations sur la compatibilité des navigateurs.
    -
    +- `thisArg` + - : La valeur de `this` fournie pour l'appel à la fonction _`fun`_. On notera que, sous certaines conditions, `this` peut ne pas être la valeur exacte vue par la méthode : si la méthode est une fonction utilisée en mode {{jsxref("Strict_mode", "mode non-strict", "", 1)}}, {{jsxref("null")}} et {{jsxref("undefined")}} seront remplacées par l'objet global, et les valeurs primitives seront encapsulées. Cet argument n'est pas optionnel. +- `argsArray` + - : Un objet semblable à un tableau qui définit les arguments avec lesquel _`fun`_ devrait être appelée, ou {{jsxref("null")}} ou {{jsxref("undefined")}} si aucun argument n'est passé à la fonction. Avec ECMAScript 5, ces arguments peuvent être représentés par un objet semblable un tableau. Voir ci-après pour plus d'informations sur [la compatibilité des navigateurs](#compat). -

    Valeur de retour

    +### Valeur de retour -

    Le résultat obtenu en appelant la fonction avec la valeur this indiquée et les arguments fournis.

    +Le résultat obtenu en appelant la fonction avec la valeur `this` indiquée et les arguments fournis. -

    Description

    +## Description -

    Il est possible d'utiliser un objet this différent lors de l'appel à une fonction existante. this fait référence à l'objet courant, l'objet appelant. Avec apply, on peut écrire une méthode une seule fois et en hériter dans un autre objet, sans avoir à la réécrire dans le nouvel objet.

    +Il est possible d'utiliser un objet `this` différent lors de l'appel à une fonction existante. `this` fait référence à l'objet courant, l'objet appelant. Avec `apply`, on peut écrire une méthode une seule fois et en hériter dans un autre objet, sans avoir à la réécrire dans le nouvel objet. -

    apply est similaire à {{jsxref("Function.call", "call()")}}, hormis pour le type d'arguments supporté. Il est possible d'utiliser un tableau à la place d'un ensemble de paramètres. Avec apply, il est également possible d'utiliser un littéral de tableau, par exemple, fun.apply(this, ['manger', 'bananes']), ou un objet {{jsxref("Array")}}, par exemple, fun.apply(this, new Array('manger', 'bananes')).

    +`apply` est similaire à {{jsxref("Function.call", "call()")}}, hormis pour le type d'arguments supporté. Il est possible d'utiliser un tableau à la place d'un ensemble de paramètres. Avec `apply`, il est également possible d'utiliser un littéral de tableau, par exemple, `fun.apply(this, ['manger', 'bananes'])`, ou un objet {{jsxref("Array")}}, par exemple, `fun.apply(this, new Array('manger', 'bananes'))`. -

    On peut aussi passer {{jsxref("Fonctions/arguments", "arguments ")}} en tant que paramètre argsArray. arguments étant une variable locale à la fonction. Celle-ci peut également être utilisée pour tous les arguments non spécifiés de l'objet appelé. Ainsi, il n'est pas nécessaire de connaître les arguments de l'objet appelé lors d'un appel à la méthode apply. arguments peut être utilisé pour passer tous les arguments à l'objet appelé. L'objet appelé gèrera alors la manipulation des arguments.

    +On peut aussi passer {{jsxref("Fonctions/arguments", "arguments ")}} en tant que paramètre `argsArray`. `arguments` étant une variable locale à la fonction. Celle-ci peut également être utilisée pour tous les arguments non spécifiés de l'objet appelé. Ainsi, il n'est pas nécessaire de connaître les arguments de l'objet appelé lors d'un appel à la méthode `apply`. `arguments` peut être utilisé pour passer tous les arguments à l'objet appelé. L'objet appelé gèrera alors la manipulation des arguments. -

    Depuis la cinquième édition d'ECMAScript, il est possible d'utiliser des objet semblables à des tableaux à la place. En pratique tout objet possédant une propriété length et une propriété entière comprise entre [0..length[ est un objet semblable à un tableau. On peut ainsi, par exemple, utiliser un objet {{domxref("NodeList")}} ou un objet quelconque comme {'length': 2, '0': 'manger', '1': 'bananes'}.

    +Depuis la cinquième édition d'ECMAScript, il est possible d'utiliser des objet semblables à des tableaux à la place. En pratique tout objet possédant une propriété `length` et une propriété entière comprise entre `[0..length[` est un objet semblable à un tableau. On peut ainsi, par exemple, utiliser un objet {{domxref("NodeList")}} ou un objet quelconque comme `{'length': 2, '0': 'manger', '1': 'bananes'}`. -
    -

    Note : Beaucoup de navigateurs, y compris Chrome 14 et Internet Explorer 9 n'acceptent pas encore un objet semblable à un tableau, ils déclencheront un exception.

    -
    +> **Note :** Beaucoup de navigateurs, y compris Chrome 14 et Internet Explorer 9 n'acceptent pas encore un objet semblable à un tableau, ils déclencheront un exception. -

    Exemples

    +## Exemples -

    Utiliser apply pour chaîner des constructeurs

    +### Utiliser `apply` pour chaîner des constructeurs -

    Il est possible d'utiliser apply afin de chaîner les {{jsxref("Opérateurs/L_opérateur_new", "constructeurs","",1)}} d'un objet, de façon sembable au chaînage utilisé en java. Dans l'exemple suivant, on crée une {{jsxref("Function")}} globale appelée construct, qui permet d'utiliser un objet de type Array associé à un constructeur au lieu d'une liste d'arguments.

    +Il est possible d'utiliser `apply` afin de chaîner les {{jsxref("Opérateurs/L_opérateur_new", "constructeurs","",1)}} d'un objet, de façon sembable au chaînage utilisé en java. Dans l'exemple suivant, on crée une {{jsxref("Function")}} globale appelée `construct`, qui permet d'utiliser un objet de type `Array` associé à un constructeur au lieu d'une liste d'arguments. -
    Function.prototype.construct = function (aArgs) {
    +```js
    +Function.prototype.construct = function (aArgs) {
       var nouvelObjet = Object.create(this.prototype);
       this.apply(nouvelObjet, aArgs);
       return nouvelObjet;
     };
    -
    - -
    -

    Note : La méthode {{jsxref("Object.create()")}} utilisée ci-avant est relativement nouvelle. Pour une autre méthode qui utilise les closure, on pourra utiliser :

    - -
    Function.prototype.construct = function(aArgs) {
    -  var fConstructeur = this, fNouveauConstructeur = function() {
    -    fConstructeur.apply(this, aArgs);
    -  };
    -  fNouveauConstructeur.prototype = fConstructeur.prototype;
    -  return new fNouveauConstructeur();
    -};
    -
    - -

    Exemple d'utilisation :

    - -
    function MonConstructeur () {
    -    for (var nProp = 0; nProp < arguments.length; nProp++) {
    +```
    +
    +> **Note :** La méthode {{jsxref("Object.create()")}} utilisée ci-avant est relativement nouvelle. Pour une autre méthode qui utilise les `closure`, on pourra utiliser :
    +>
    +> ```js
    +> Function.prototype.construct = function(aArgs) {
    +>   var fConstructeur = this, fNouveauConstructeur = function() {
    +>     fConstructeur.apply(this, aArgs);
    +>   };
    +>   fNouveauConstructeur.prototype = fConstructeur.prototype;
    +>   return new fNouveauConstructeur();
    +> };
    +> ```
    +
    +Exemple d'utilisation :
    +
    +```js
    +function MonConstructeur () {
    +    for (var nProp = 0; nProp < arguments.length; nProp++) {
             this["propriété" + nProp] = arguments[nProp];
         }
     }
    @@ -89,38 +87,39 @@ var monInstance = MonConstructeur.construct(monTableau);
     console.log(monInstance.propriété1); // "Coucou monde !"
     console.log(monInstance instanceof MonConstructeur); // "true"
     console.log(monInstance.constructor); // "MonConstructeur"
    -
    - -
    -

    Note : On pourrait également utiliser {{jsxref("Object/__proto__", "Object.__proto__")}}

    - -
    Function.prototype.construct = function (aArgs) {
    -  var oNew = {};
    -  oNew.__proto__ = this.prototype;
    -  this.apply(oNew, aArgs);
    -  return oNew;
    -};
    -
    - -

    ou encore le constructeur {{jsxref("Function")}} :

    - -
    Function.prototype.construct = function (aArgs) {
    -  var fNewConstr = new Function("");
    -  fNewConstr.prototype = this.prototype;
    -  var oNew = new fNewConstr();
    -  this.apply(oNew, aArgs);
    -  return oNew;
    -};
    -
    -
    - -

    Note : Attention, cette méthode non-native Function.construct ne fonctionnera pas avec certains contructeurs natifs (tels que {{jsxref("Date", "Date")}}). Dans ce cas précis, on peut utiliser la méthode {{jsxref("Function.bind")}} (pour exemple, si on prend le tableau suivant [2012, 11, 4] utilisé sur le constructeur de l'objet Date : on peut écrire ceci : new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))() – cependant cela reste une pratique à éviter si possible et à ne pas utiliser en dans un environnement de production).

    - -

    Utiliser apply et des fonctions natives

    - -

    Un usage singulier de apply permet d'appeler des fonctions natives pour réaliser par exemple des tâches qui autrement auraient nécessité une boucle sur toutes les valeurs d'un tableau. Pour illustrer ce concept, on prend l'exemple de Math.max/Math.min qui permettent d'extraire la valeur maximum/minimale de notre tableau.

    - -
    /* min/max tableau de nombres */
    +```
    +
    +> **Note :** On pourrait également utiliser {{jsxref("Object/__proto__", "Object.__proto__")}}
    +>
    +> ```js
    +> Function.prototype.construct = function (aArgs) {
    +>   var oNew = {};
    +>   oNew.__proto__ = this.prototype;
    +>   this.apply(oNew, aArgs);
    +>   return oNew;
    +> };
    +> ```
    +>
    +> ou encore le constructeur {{jsxref("Function")}} :
    +>
    +> ```js
    +> Function.prototype.construct = function (aArgs) {
    +>   var fNewConstr = new Function("");
    +>   fNewConstr.prototype = this.prototype;
    +>   var oNew = new fNewConstr();
    +>   this.apply(oNew, aArgs);
    +>   return oNew;
    +> };
    +> ```
    +
    +> **Note :** Attention, cette méthode non-native `Function.construct` ne fonctionnera pas avec certains contructeurs natifs (tels que {{jsxref("Date", "Date")}}). Dans ce cas précis, on peut utiliser la méthode {{jsxref("Function.bind")}} (pour exemple, si on prend le tableau suivant `[2012, 11, 4]` utilisé sur le constructeur de l'objet `Date` : on peut écrire ceci : `new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))()` – cependant cela reste une pratique à éviter si possible et à ne pas utiliser en dans un environnement de production).
    +
    +### Utiliser `apply` et des fonctions natives
    +
    +Un usage singulier de `apply` permet d'appeler des fonctions natives pour réaliser par exemple des tâches qui autrement auraient nécessité une boucle sur toutes les valeurs d'un tableau. Pour illustrer ce concept, on prend l'exemple de `Math.max`/`Math.min` qui permettent d'extraire la valeur maximum/minimale de notre tableau.
    +
    +```js
    +/* min/max tableau de nombres */
     var nombres = [5, 6, 2, 3, 7];
     
     /* usage de Math.min/Math.max et de la méthode apply */
    @@ -133,20 +132,22 @@ var min = Math.min.apply(null, nombres);
     /* vs. algorithme trivial avec une boucle */
     max = -Infinity, min = +Infinity;
     
    -for (var i = 0; i < nombres.length; i++) {
    -  if (nombres[i] > max)
    +for (var i = 0; i < nombres.length; i++) {
    +  if (nombres[i] > max)
         max = nombres[i];
    -  if (nombres[i] < min)
    +  if (nombres[i] < min)
         min = nombres[i];
    -}
    +} +``` -

    Note : l'utilisation de apply peut provoquer l'atteinte du seuil limite du nombres d'arguments supporté par le moteur Javascript. Les conséquences de cette utilisation abusive (on évoque plus de 10000 arguments) peuvent varier selon les moteurs Javascript (JavaScript contient une limite en dur de 65536), car une liberté subsiste quant à l'implémentation du moteur. Des moteurs lèveront une exception si le seuil est atteint. Il est donc préférable d'apporter une attention toute particulière au nombre d'arguments passés. (Illustrerons ce cas dans l'exemple suivant avec un moteur factice capable de ne gérer que 4 arguments au maximum (les limites natives sont, bien sûr, plus élevées), et reprenons les arguments de l'exemple précédent 5, 6, 2, 3 passés à la méthode apply plutôt que notre tableau entier.) Imaginons que notre tableau soit progressivement peuplé de milliers d'éléments, une stratégie spécifique devra être appliquée, par exemple en appliquant la méthode apply sur des portions du tableau:

    +Note : l'utilisation de `apply` peut provoquer l'atteinte du seuil limite du nombres d'arguments supporté par le moteur Javascript. Les conséquences de cette utilisation abusive (on évoque plus de 10000 arguments) peuvent varier selon les moteurs Javascript (JavaScript contient une limite en dur de [65536](https://bugs.webkit.org/show_bug.cgi?id=80797)), car une liberté subsiste quant à l'implémentation du moteur. Des moteurs lèveront une exception si le seuil est atteint. Il est donc préférable d'apporter une attention toute particulière au nombre d'arguments passés. (Illustrerons ce cas dans l'exemple suivant avec un moteur factice capable de ne gérer que 4 arguments au maximum (les limites natives sont, bien sûr, plus élevées), et reprenons les arguments de l'exemple précédent `5, 6, 2, 3` passés à la méthode `apply` plutôt que notre tableau entier.) Imaginons que notre tableau soit progressivement peuplé de milliers d'éléments, une stratégie spécifique devra être appliquée, par exemple en appliquant la méthode apply sur des portions du tableau: -
    function minimumDuTableau(tab) {
    +```js
    +function minimumDuTableau(tab) {
       var min = Infinity;
       var QUANTUM = 32768;
     
    -  for (var i = 0, longueur = tab.length; i < len; i += QUANTUM) {
    +  for (var i = 0, longueur = tab.length; i < len; i += QUANTUM) {
         var submin = Math.min.apply(null,
                                     tab.slice(i, Math.min(i + QUANTUM, longueur)));
         min = Math.min(submin, min);
    @@ -156,53 +157,26 @@ for (var i = 0; i < nombres.length; i++) {
     }
     
     var min = minimumDuTableau([5, 6, 2, 3, 7]);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.3.4.3', 'Function.prototype.apply')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-function.prototype.apply', 'Function.prototype.apply')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-function.prototype.apply', 'Function.prototype.apply')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.apply")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Fonctions/arguments", "arguments")}}
    • -
    • {{jsxref("Function.prototype.bind()")}}
    • -
    • {{jsxref("Function.prototype.call()")}}
    • -
    • {{jsxref("Fonctions", "Les fonctions et portées de fonctions", "", 1)}}
    • -
    • {{jsxref("Reflect.apply()")}}
    • -
    • La syntaxe de décomposition permettant d'exploser un tableau
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.3.4.3', 'Function.prototype.apply')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-function.prototype.apply', 'Function.prototype.apply')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-function.prototype.apply', 'Function.prototype.apply')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.apply")}} + +## Voir aussi + +- L'objet {{jsxref("Fonctions/arguments", "arguments")}} +- {{jsxref("Function.prototype.bind()")}} +- {{jsxref("Function.prototype.call()")}} +- {{jsxref("Fonctions", "Les fonctions et portées de fonctions", "", 1)}} +- {{jsxref("Reflect.apply()")}} +- [La syntaxe de décomposition permettant d'exploser un tableau](/fr/docs/Web/JavaScript/Reference/Opérateurs/Syntaxe_décomposition) diff --git a/files/fr/web/javascript/reference/global_objects/function/arguments/index.md b/files/fr/web/javascript/reference/global_objects/function/arguments/index.md index 6723204679..a8272388ce 100644 --- a/files/fr/web/javascript/reference/global_objects/function/arguments/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/arguments/index.md @@ -11,25 +11,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments original_slug: Web/JavaScript/Reference/Objets_globaux/Function/arguments --- -
    {{JSRef}} {{Deprecated_header}}
    +{{JSRef}} {{Deprecated_header}} -

    La propriété function.arguments fait référence à un objet dont la structure est semblable à celle d'un tableau dont les éléments correspondent aux arguments passés à une fonction. En lieu et place, il faut désormais utiliser {{jsxref("Fonctions/arguments", "arguments")}}. Cette propriété est interdite en mode stricte à cause de l'optimisation de la queue des appels (tail call optimization).

    +La propriété **`function.arguments`** fait référence à un objet dont la structure est semblable à celle d'un tableau dont les éléments correspondent aux arguments passés à une fonction. En lieu et place, il faut désormais utiliser {{jsxref("Fonctions/arguments", "arguments")}}. Cette propriété est interdite en mode stricte à cause de [l'optimisation de la queue des appels (_tail call optimization_)](https://www.ecma-international.org/ecma-262/6.0/#sec-addrestrictedfunctionproperties). -

    Description

    +## Description -

    La syntaxe function.arguments est obsolète.  La méthode recommandée pour accéder à l'objet {{jsxref("Fonctions/arguments", "arguments")}} disponible au sein des fonctions est simplement de faire référence à la variable {{jsxref("Fonctions/arguments", "arguments")}}.

    +La syntaxe `function.arguments` est obsolète.  La méthode recommandée pour accéder à l'objet {{jsxref("Fonctions/arguments", "arguments")}} disponible au sein des fonctions est simplement de faire référence à la variable {{jsxref("Fonctions/arguments", "arguments")}}. -

    Si on utilise la récursivité (autrement dit si une fonction f apparaît plusieurs fois dans la pile d'appels ou encore qu'une fonction f s'appelle elle-même), la valeur de f.arguments représentera les arguments correspondant à l'appel le plus « récent » de la fonction.

    +Si on utilise la récursivité (autrement dit si une fonction `f` apparaît plusieurs fois dans la pile d'appels ou encore qu'une fonction `f` s'appelle elle-même), la valeur de `f.arguments` représentera les arguments correspondant à l'appel le plus « récent » de la fonction. -

    La valeur de la propriété arguments est normalement null si la fonction n'est pas « en cours » (au sens où elle aurait été appelée et qu'elle n'ait pas fini son exécution).

    +La valeur de la propriété `arguments` est normalement `null` si la fonction n'est pas « en cours » (au sens où elle aurait été appelée et qu'elle n'ait pas fini son exécution). -

    Exemples

    +## Exemples -
    function f(n) { g(n-1); }
    +```js
    +function f(n) { g(n-1); }
     
     function g(n) {
       console.log("avant : " + g.arguments[0]);
    -  if(n>0) f(n);
    +  if(n>0) f(n);
       console.log("après : " + g.arguments[0]);
     }
     
    @@ -44,47 +45,22 @@ console.log("fonction terminée : " + g.arguments);
     // après : 0
     // après : 1
     // fonction terminée : null
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0. Dépréciée pour être remplacée par {{jsxref("Fonctions/arguments", "arguments")}} décrit par ES3.
    {{SpecName('ES5.1', '#sec-10.6', 'arguments object')}}{{Spec2('ES5.1')}}Objet {{jsxref("Fonctions/arguments", "arguments")}}
    {{SpecName('ES6', '#sec-arguments-object', 'arguments object')}}{{Spec2('ES6')}}Objet {{jsxref("Fonctions/arguments", "arguments")}}
    {{SpecName('ESDraft', '#sec-arguments-object', 'arguments object')}}{{Spec2('ESDraft')}}Objet {{jsxref("Fonctions/arguments", "arguments")}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.arguments")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Fonctions/arguments", "arguments")}}
    • -
    • {{jsxref("Fonctions", "Les fonctions et les portées de fonctions", "", 1)}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. Dépréciée pour être remplacée par {{jsxref("Fonctions/arguments", "arguments")}} décrit par ES3. | +| {{SpecName('ES5.1', '#sec-10.6', 'arguments object')}} | {{Spec2('ES5.1')}} | Objet {{jsxref("Fonctions/arguments", "arguments")}} | +| {{SpecName('ES6', '#sec-arguments-object', 'arguments object')}} | {{Spec2('ES6')}} | Objet {{jsxref("Fonctions/arguments", "arguments")}} | +| {{SpecName('ESDraft', '#sec-arguments-object', 'arguments object')}} | {{Spec2('ESDraft')}} | Objet {{jsxref("Fonctions/arguments", "arguments")}} | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.arguments")}} + +## Voir aussi + +- L'objet {{jsxref("Fonctions/arguments", "arguments")}} +- {{jsxref("Fonctions", "Les fonctions et les portées de fonctions", "", 1)}} diff --git a/files/fr/web/javascript/reference/global_objects/function/bind/index.md b/files/fr/web/javascript/reference/global_objects/function/bind/index.md index 747fa29f94..a2484ba8da 100644 --- a/files/fr/web/javascript/reference/global_objects/function/bind/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/bind/index.md @@ -12,59 +12,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind original_slug: Web/JavaScript/Reference/Objets_globaux/Function/bind --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode bind() crée une nouvelle fonction qui, lorsqu'elle est appelée, a pour contexte this la valeur passée en paramètre et éventuellement une suite d'arguments qui précéderont ceux fournis à l'appel de la fonction créée.

    +La méthode **`bind()`** crée une nouvelle fonction qui, lorsqu'elle est appelée, a pour contexte [`this`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this) la valeur passée en paramètre et éventuellement une suite d'arguments qui précéderont ceux fournis à l'appel de la fonction créée. -
    {{EmbedInteractiveExample("pages/js/function-bind.html", "taller")}}
    +{{EmbedInteractiveExample("pages/js/function-bind.html", "taller")}} -

    Syntaxe

    +## Syntaxe -
    let boundFunc = func.bind(thisArg[, arg1[, arg2[, ...]]])
    + let boundFunc = func.bind(thisArg[, arg1[, arg2[, ...]]]) -

    Paramètres

    +### Paramètres -
    -
    thisArg
    -
    La valeur que l'on doit passer est le paramètre this de la fonction cible func quand la fonction est appelée. La valeur est ignorée si la fonction liée est construite en utilisant l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Lorsque vous utilisez bind pour créer une fonction (fournie comme un rappel) dans un setTimeout, toute valeur primitive passée comme thisArg est convertie en objet. Si aucun argument n'est fourni dans bind, le this de cette fonction est traité comme le thisArg de la nouvelle fonction.
    -
    arg1, arg2, ... {{optional_inline}}
    -
    Arguments à faire précéder aux arguments fournis à la fonction liée lors de l'invocation de func.
    -
    +- `thisArg` + - : La valeur que l'on doit passer est le paramètre `this` de la fonction cible _`func`_ quand la fonction est appelée. La valeur est ignorée si la fonction liée est construite en utilisant l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Lorsque vous utilisez `bind` pour créer une fonction (fournie comme un rappel) dans un `setTimeout`, toute valeur primitive passée comme `thisArg` est convertie en objet. Si aucun argument n'est fourni dans `bind`, le `this` de cette fonction est traité comme le `thisArg` de la nouvelle fonction. +- `arg1, arg2, ...` {{optional_inline}} + - : Arguments à faire précéder aux arguments fournis à la fonction liée lors de l'invocation de _`func`_. -

    Valeur de retour

    +### Valeur de retour -

    Une copie de la fonction fournie avec la valeur this indiquée et les arguments initiaux fournis.

    +Une copie de la fonction fournie avec la valeur `this` indiquée et les arguments initiaux fournis. -

    Description

    +## Description -

    La fonction bind() crée une nouvelle fonction liée, qui est un objet de fonction exotique (un terme de l'ECMAScript 2015) qui enveloppe l'objet de fonction original. L'appel de la fonction liée entraîne généralement l'exécution de sa fonction enveloppée.

    +La fonction `bind()` crée une nouvelle **fonction liée**, qui est un _objet de fonction exotique_ (un terme de l'ECMAScript 2015) qui enveloppe l'objet de fonction original. L'appel de la fonction liée entraîne généralement l'exécution de sa fonction enveloppée. -

    Une fonction liée possède les propriétés internes suivantes :

    +Une fonction liée possède les propriétés internes suivantes : -
    -
    [[BoundTargetFunction]]
    -
    L'objet de fonction enveloppé
    -
    [[BoundThis]]
    -
    La valeur qui est toujours transmise est la valeur this lors de l'appel de la fonction enveloppée.
    -
    [[BoundArguments]]
    -
    Une liste de valeurs dont les éléments sont utilisés comme premiers arguments pour tout appel à la fonction enveloppée.
    -
    [[Call]]
    -
    Exécute le code associé à cet objet. Invoqué par une expression d'appel de fonction. Les arguments de la méthode interne sont constitués d'une valeur this et d'une liste contenant les arguments passés à la fonction par une expression d'appel.
    -
    +- **`[[BoundTargetFunction]]`** + - : L'objet de fonction enveloppé +- **`[[BoundThis]]`** + - : La valeur qui est toujours transmise est la valeur `this` lors de l'appel de la fonction enveloppée. +- **`[[BoundArguments]]`** + - : Une liste de valeurs dont les éléments sont utilisés comme premiers arguments pour tout appel à la fonction enveloppée. +- **`[[Call]]`** + - : Exécute le code associé à cet objet. Invoqué par une expression d'appel de fonction. Les arguments de la méthode interne sont constitués d'une valeur `this` et d'une liste contenant les arguments passés à la fonction par une expression d'appel. -

    Lorsqu'une fonction liée est appelée, elle appelle la méthode interne [[Call]] dans [[BoundTargetFunction]], avec les arguments suivants Call(boundThis, ...args). Là où boundThis est [[BoundThis]], args est [[BoundArguments]], suivi des arguments passés par l'appel de fonction.

    +Lorsqu'une fonction liée est appelée, elle appelle la méthode interne `[[Call]]` dans `[[BoundTargetFunction]]`, avec les arguments suivants `Call(boundThis, ...args)`. _Là où _`boundThis` est `[[BoundThis]]`, `args` est `[[BoundArguments]]`, suivi des arguments passés par l'appel de fonction. -

    Une fonction liée peut également être construite à l'aide de l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Ce faisant, on agit comme si la fonction cible avait été construite. La valeur fournie this est ignorée, tandis que des arguments préparés sont fournis à la fonction émulée.

    +Une fonction liée peut également être construite à l'aide de l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Ce faisant, on agit comme si la fonction cible avait été construite. La valeur fournie `this` est ignorée, tandis que des arguments préparés sont fournis à la fonction émulée. -

    Exemples

    +## Exemples -

    Créer une fonction liée

    +### Créer une fonction liée -

    La façon la plus simple d'utiliser bind()est de faire une fonction qui, peu importe la façon dont elle est appellée, le sera avec une certaine valeur this donnée.

    +La façon la plus simple d'utiliser `bind()`est de faire une fonction qui, peu importe la façon dont elle est appellée, le sera avec une certaine valeur `this` donnée. -

    Une erreur courante lorsqu'on débute en JavaScript est d'extraire une méthode d'un objet, puis plus tard d'appeler cette méthode depuis un objet et de s'attendre à utiliser l'objet original en tant que valeur de this (par exemple en utilisant cette méthode dans un callback). Sans précaution, cependant, l'objet original est perdu. Créer une fonction liée depuis la méthode, en utilisant l'objet original, résout simplement le problème :

    +Une erreur courante lorsqu'on débute en JavaScript est d'extraire une méthode d'un objet, puis plus tard d'appeler cette méthode depuis un objet et de s'attendre à utiliser l'objet original en tant que valeur de `this` (par exemple en utilisant cette méthode dans un _callback_). Sans précaution, cependant, l'objet original est perdu. Créer une fonction liée depuis la méthode, en utilisant l'objet original, résout simplement le problème : -
    this.x = 9; // en dehors de tout contexte,
    +```js
    +this.x = 9; // en dehors de tout contexte,
                 // pour un navigateur, this est
                 // l'objet window
     var module = {
    @@ -81,13 +78,14 @@ getX(); // 9, car ici, this fait référence à l'objet global
     // tant que 'this'
     var boundGetX = getX.bind(module);
     boundGetX(); // 81
    -
    +``` -

    Fonctions partiellement appliquées

    +### Fonctions partiellement appliquées -

    Dans l'exemple suivant, on utilise bind() afin de créer une fonction avec des arguments initiaux prédéfinis. Ces arguments, s'il y en a, suivent le this fourni et sont ensuite insérés au début des arguments passés à la fonction cible, suivis par les arguments passés à la fonction liée au moment où celle-ci est appelée.

    +Dans l'exemple suivant, on utilise `bind()` afin de créer une fonction avec des arguments initiaux prédéfinis. Ces arguments, s'il y en a, suivent le `this` fourni et sont ensuite insérés au début des arguments passés à la fonction cible, suivis par les arguments passés à la fonction liée au moment où celle-ci est appelée. -
    function list() {
    +```js
    +function list() {
       return Array.prototype.slice.call(arguments);
     }
     
    @@ -107,13 +105,14 @@ function sommeArguments(arg1, arg2){
     var ajouter37 = sommeArguments.bind(null, 37);
     
     var resultat = ajouter37(5); // 37 + 5 = 42
    -
    +``` -

    Utiliser bind avec setTimeout

    +### Utiliser `bind` avec `setTimeout` -

    Par défaut à l'intérieur de {{domxref("window.setTimeout()")}}, le mot-clé this sera attribué à l'objet {{domxref("window")}} (ou l'objet global). Lorsqu'on travaille avec des méthodes de classe utilisant this qui se réfère à l'instance, on peut lier this de façon explicite afin d'être certain de manipuler l'instance.

    +Par défaut à l'intérieur de {{domxref("window.setTimeout()")}}, le mot-clé `this` sera attribué à l'objet {{domxref("window")}} (ou l'objet `global`). Lorsqu'on travaille avec des méthodes de classe utilisant `this` qui se réfère à l'instance, on peut lier `this` de façon explicite afin d'être certain de manipuler l'instance. -
    function Fleur() {
    +```js
    +function Fleur() {
       this.nbPétales = Math.floor( Math.random() * 12 ) + 1;
     }
     
    @@ -130,17 +129,16 @@ Fleur.prototype.declare = function() {
     var fleur = new Fleur();
     fleur.floraison();
     // Après environ 1 seconde, on déclenche la méthode declare
    -
    +``` -

    Les fonctions liées utilisées en tant que constructeurs

    +### Les fonctions liées utilisées en tant que constructeurs -
    -

    Attention : Cette section illustre des capacités marginales et des cas aux limites concernant l'usage de la méthode bind(). Les méthodes montrées ci-après ne sont pas les façons les plus propres de faire les choses et ne devraient pas être utilisées en production.

    -
    +> **Attention :** Cette section illustre des capacités marginales et des cas aux limites concernant l'usage de la méthode bind(). Les méthodes montrées ci-après ne sont pas les façons les plus propres de faire les choses et ne devraient pas être utilisées en production. -

    Les fonctions liées sont automatiquement disponibles à l'usage pour toutes les instances initialisées avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}} sur la fonction cible. Quand une fonction liée est utilisée pour construire une valeur, le this fourni est ignoré. Cependant, les arguments fournis sont toujours préremplis lors de l'appel au constructeur :

    +Les fonctions liées sont automatiquement disponibles à l'usage pour toutes les instances initialisées avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}} sur la fonction cible. Quand une fonction liée est utilisée pour construire une valeur, le `this` fourni est ignoré. Cependant, les arguments fournis sont toujours préremplis lors de l'appel au constructeur : -
    function Point(x, y) {
    +```js
    +function Point(x, y) {
       this.x = x;
       this.y = y;
     }
    @@ -165,11 +163,12 @@ axisPoint.toString(); //  "0,5"
     axisPoint instanceof Point; // true
     axisPoint instanceof YAxisPoint; // true
     new Point(17, 42) instanceof YAxisPoint; // false
    -
    +``` -

    On notera qu'il n'y a rien à faire de particulier pour pouvoir utiliser {{jsxref("Opérateurs/L_opérateur_new", "new")}} sur votre fonction liée. Le corollaire est qu'il n'y a rien à faire de plus pour créer une fonction liée qui soit appelée sans préfixe, même s'il est préférable d'appeler une fonction liée uniquement avec le mot-clé {{jsxref("Opérateurs/L_opérateur_new", "new")}}.

    +On notera qu'il n'y a rien à faire de particulier pour pouvoir utiliser {{jsxref("Opérateurs/L_opérateur_new", "new")}} sur votre fonction liée. Le corollaire est qu'il n'y a rien à faire de plus pour créer une fonction liée qui soit appelée sans préfixe, même s'il est préférable d'appeler une fonction liée uniquement avec le mot-clé {{jsxref("Opérateurs/L_opérateur_new", "new")}}. -
    // Cet exemple fonctionne dans votre console JavaScript
    +```js
    +// Cet exemple fonctionne dans votre console JavaScript
     // ...(sous réserve d'avoir utilisé le code précédent)
     
     // Peut toujours être appelé comme une fonction normale
    @@ -177,71 +176,50 @@ new Point(17, 42) instanceof YAxisPoint; // false
     YAxisPoint(13);
     
     emptyObj.x + "," + emptyObj.y; // "0,13"
    -
    +``` -

    Si on souhaite supporter le cas où la fonction liée  d'une fonction liée en utilisant seulement new, ou juste en l'appellant, la fonction cible doit outrepasser cette restriction.

    +Si on souhaite supporter le cas où la fonction liée  d'une fonction liée en utilisant seulement `new`, ou juste en l'appellant, la fonction cible doit outrepasser cette restriction. -

    Créer des raccourcis

    +### Créer des raccourcis -
    -

    bind() est également utile dans les cas où on souhaite créer un raccourci vers une fonction qui requiert un this ayant une certaine valeur.

    +`bind()` est également utile dans les cas où on souhaite créer un raccourci vers une fonction qui requiert un `this` ayant une certaine valeur. -

    Si, par exemple, on considère la fonction {{jsxref("Array.prototype.slice")}} et qu'on souhaite l'utiliser pour convertir un objet semblable à un tableau en un objet array, on peut créer un raccourci de cette façon :

    +Si, par exemple, on considère la fonction {{jsxref("Array.prototype.slice")}} et qu'on souhaite l'utiliser pour convertir un objet semblable à un tableau en un objet `array`, on peut créer un raccourci de cette façon : -
    var slice = Array.prototype.slice;
    +```js
    +var slice = Array.prototype.slice;
     
     // ... un peu plus loin
     
    -slice.apply(arguments);
    +slice.apply(arguments); +``` -

    Avec bind(), il est possible de simplifier cela. Dans l'exemple qui suit slice est une fonction liée à la fonction {{jsxref("Function.prototype.apply()", "apply()")}} de Function.prototype, et this défini en tant que fonction {{jsxref("Array.prototype.slice()", "slice()")}} de {{jsxref("Array.prototype")}}. Cela signifie que les appels à la méthode apply() peuvent être éliminés :

    +Avec `bind()`, il est possible de simplifier cela. Dans l'exemple qui suit `slice` est une fonction liée à la fonction {{jsxref("Function.prototype.apply()", "apply()")}} de `Function.prototype`, et `this` défini en tant que fonction {{jsxref("Array.prototype.slice()", "slice()")}} de {{jsxref("Array.prototype")}}. Cela signifie que les appels à la méthode `apply()` peuvent être éliminés : -
    // pareil que "slice" dans l'exemple précédent
    +```js
    +// pareil que "slice" dans l'exemple précédent
     var unboundSlice = Array.prototype.slice;
     var slice = Function.prototype.apply.bind(unboundSlice);
     
     // ...
     
     slice(arguments);
    -
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}{{Spec2('ES5.1')}}Définition initiale.
    - Implémentée avec JavaScript 1.8.5
    {{SpecName('ES2015', '#sec-function.prototype.apply', 'Function.prototype.bind')}}{{Spec2('ES2015')}}
    {{SpecName('ESDraft', '#sec-function.prototype.bind', 'Function.prototype.bind')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.bind")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Function.prototype.apply()")}}
    • -
    • {{jsxref("Function.prototype.call()")}}
    • -
    • {{jsxref("Fonctions", "Fonctions et portées de fonctions", "", 1)}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ | +| {{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.8.5 | +| {{SpecName('ES2015', '#sec-function.prototype.apply', 'Function.prototype.bind')}} | {{Spec2('ES2015')}} | | +| {{SpecName('ESDraft', '#sec-function.prototype.bind', 'Function.prototype.bind')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.bind")}} + +## Voir aussi + +- {{jsxref("Function.prototype.apply()")}} +- {{jsxref("Function.prototype.call()")}} +- {{jsxref("Fonctions", "Fonctions et portées de fonctions", "", 1)}} diff --git a/files/fr/web/javascript/reference/global_objects/function/call/index.md b/files/fr/web/javascript/reference/global_objects/function/call/index.md index 5cc70709d0..5226e7b387 100644 --- a/files/fr/web/javascript/reference/global_objects/function/call/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/call/index.md @@ -9,44 +9,43 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/call original_slug: Web/JavaScript/Reference/Objets_globaux/Function/call --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode call() réalise un appel à une fonction avec une valeur this donnée et des arguments fournis individuellement.

    +La méthode **`call()`** réalise un appel à une fonction avec une valeur `this` donnée et des arguments fournis individuellement. -

    Note : Bien que la syntaxe de cette fonction ressemble à celle de {{jsxref("Function.apply", "apply()")}}, la différence fondamentale réside dans le fait que call() accepte une liste d'arguments, tandis que la méthode apply() accepte un unique tableau d'arguments.

    +> **Note :** Bien que la syntaxe de cette fonction ressemble à celle de {{jsxref("Function.apply", "apply()")}}, la différence fondamentale réside dans le fait que `call()` accepte **une liste d'arguments**, tandis que la méthode `apply()` accepte **un unique tableau d'arguments**. -
    {{EmbedInteractiveExample("pages/js/function-call.html")}}
    +{{EmbedInteractiveExample("pages/js/function-call.html")}} -

    Syntaxe

    +## Syntaxe -
    fun.call(thisArg[, arg1[, arg2[, ...]]])
    + fun.call(thisArg[, arg1[, arg2[, ...]]]) -

    Paramètres

    +### Paramètres -
    -
    thisArg
    -
    La valeur this fournie pour l'appel de la fonction fun. La valeur peut être différente de celle normalement perçue par la méthode : si la méthode est une fonction utilisée dans un code en {{jsxref("Fonctions/Strict_mode", "mode non-strict", "", 1)}}, {{jsxref("null")}} and {{jsxref("undefined")}} seront remplacés par l'objet global et les valeurs primitives seront encapsulées en objets.
    -
    arg1, arg2, ...
    -
    Les arguments pour la fonction.
    -
    +- `thisArg` + - : La valeur `this` fournie pour l'appel de la fonction _`fun`_. La valeur peut être différente de celle normalement perçue par la méthode : si la méthode est une fonction utilisée dans un code en {{jsxref("Fonctions/Strict_mode", "mode non-strict", "", 1)}}, {{jsxref("null")}} and {{jsxref("undefined")}} seront remplacés par l'objet global et les valeurs primitives seront encapsulées en objets. +- `arg1, arg2, ...` + - : Les arguments pour la fonction. -

    Valeur de retour

    +### Valeur de retour -

    Le résultat de l'appel de la fonction invoquée avec la valeur this indiquée et les arguments fournis.

    +Le résultat de l'appel de la fonction invoquée avec la valeur `this` indiquée et les arguments fournis. -

    Description

    +## Description -

    La méthode call() permet d'appeler une fonction rattachée à un objet donné sur un autre objet.

    +La méthode `call()` permet d'appeler une fonction rattachée à un objet donné sur un autre objet. -

    Il est possible d'affecter un objet this différent lors de l'appel à une fonction existante. En général, this fait référence à l'objet courant, celui sur lequel est appelée la méthode. Avec call, on peut écrire une méthode une seule fois et ensuite en hériter dans un autre objet, sans avoir à réécrire cette méthode pour ce nouvel objet.

    +Il est possible d'affecter un objet `this` différent lors de l'appel à une fonction existante. En général, `this` fait référence à l'objet courant, celui sur lequel est appelée la méthode. Avec `call`, on peut écrire une méthode une seule fois et ensuite en hériter dans un autre objet, sans avoir à réécrire cette méthode pour ce nouvel objet. -

    Exemples

    +## Exemples -

    Utiliser call() pour chaîner le constructeur d'un objet.

    +### Utiliser `call()` pour chaîner le constructeur d'un objet. -

    Il est possible d'utiliser call pour chaîner le constructeur d'un objet, de façon similaire à Java. Dans l'exemple suivant, le constructeur de l'objet Product est défini avec deux paramètres, name et price. Deux autres fonctions, Food et Toy invoquent Product en passant this, name et price. Product initialise les propriétés name et price, tandis que les fonctions spécialisées définissent la propriété category.

    +Il est possible d'utiliser `call` pour chaîner le constructeur d'un objet, de façon similaire à Java. Dans l'exemple suivant, le constructeur de l'objet `Product` est défini avec deux paramètres, `name` et `price`. Deux autres fonctions, `Food` et `Toy` invoquent `Product` en passant `this,` `name` et `price`. `Product` initialise les propriétés `name` et `price`, tandis que les fonctions spécialisées définissent la propriété `category`. -
    function Product(name, price) {
    +```js
    +function Product(name, price) {
       this.name = name;
       this.price = price;
     }
    @@ -63,18 +62,19 @@ function Toy(name, price) {
     
     var cheese = new Food('feta', 5);
     var fun = new Toy('robot', 40);
    -
    +``` -

    Utiliser call() pour invoquer une fonction anonyme

    +### Utiliser `call()` pour invoquer une fonction anonyme -

    Dans cet exemple (purement inventé), on crée une fonction anonyme et on utilise call pour l'invoquer sur chaque objet d'un tableau. Le principal but de cette fonction anonyme est d'ajouter une fonction print sur chaque élément qui permet d'afficher l'index de l'objet. Le passage de l'objet en tant que valeur this n'était pas nécessaire, mais il permet d'expliquer le sujet.

    +Dans cet exemple (purement inventé), on crée une fonction anonyme et on utilise `call` pour l'invoquer sur chaque objet d'un tableau. Le principal but de cette fonction anonyme est d'ajouter une fonction `print` sur chaque élément qui permet d'afficher l'index de l'objet. Le passage de l'objet en tant que valeur `this` n'était pas nécessaire, mais il permet d'expliquer le sujet. -
    var animaux = [
    +```js
    +var animaux = [
       {espece: 'Lion', nom: 'Roi'},
       {espece: 'Éléphant', nom: 'Dumbo'}
     ];
     
    -for (var i = 0; i < animaux.length; i++) {
    +for (var i = 0; i < animaux.length; i++) {
       (function (i) {
         this.print = function () {
           console.log('#' + i  + ' ' + this.espece + ' : ' + this.nom);
    @@ -82,13 +82,14 @@ for (var i = 0; i < animaux.length; i++) {
         this.print();
       }).call(animaux[i], i);
     }
    -
    +``` -

    Utiliser call() pour appeler une fonction avec un objet pour this

    +### Utiliser `call()` pour appeler une fonction avec un objet pour `this` -

    Dans l'exemple qui suit, on utilise la méthode call() sur la fonction saluer() afin de l'appliquer à l'objet personne1 :

    +Dans l'exemple qui suit, on utilise la méthode `call()` sur la fonction `saluer()` afin de l'appliquer à l'objet `personne1` : -
    function saluer() {
    +```js
    +function saluer() {
       var reponse = [this.nom, "est un", this.role, "."].join(" ");
       console.log(reponse);
     }
    @@ -99,76 +100,51 @@ var personne1 = {
     };
     
     saluer.call(personne1); // Sénèque est un philosophe.
    -
    +``` -

    Utiliser call() pour appeler une fonction sans indiquer de premier argument

    +### Utiliser `call()` pour appeler une fonction sans indiquer de premier argument -

    Dans l'exemple qui suit, on appelle la fonction afficher() sans lui passer d'argument. C'est donc l'objet global qui est utilisé comme contexte :

    - -
    var prenom = 'Archibald';
    -
    -function afficher() {
    -  console.log('prenom vaut ' + this.prenom);
    -}
    -
    -afficher.call(); // prenom est Archibald
    - -
    -

    Note : La valeur de this sera {{jsxref("undefined")}} en mode strict.

    - -
    'use strict';
    +Dans l'exemple qui suit, on appelle la fonction `afficher()` sans lui passer d'argument. C'est donc l'objet global qui est utilisé comme contexte :
     
    +```js
     var prenom = 'Archibald';
     
     function afficher() {
       console.log('prenom vaut ' + this.prenom);
     }
     
    -afficher.call(); // Cannot read the property prenom' of undefined
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.3.
    {{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-function.prototype.call', 'Function.prototype.call')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.call")}}

    - -

    Voir aussi

    - - +afficher.call(); // prenom est Archibald +``` + +> **Note :** La valeur de `this` sera {{jsxref("undefined")}} en mode strict. +> +> ```js +> 'use strict'; +> +> var prenom = 'Archibald'; +> +> function afficher() { +> console.log('prenom vaut ' + this.prenom); +> } +> +> afficher.call(); // Cannot read the property prenom' of undefined +> ``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.3. | +| {{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-function.prototype.call', 'Function.prototype.call')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.call")}} + +## Voir aussi + +- {{jsxref("Function.prototype.bind()")}} +- {{jsxref("Function.prototype.apply()")}} +- [Introduction à JavaScript orienté objet](/fr/docs/Web/JavaScript/Introduction_à_JavaScript_orienté_objet) diff --git a/files/fr/web/javascript/reference/global_objects/function/caller/index.md b/files/fr/web/javascript/reference/global_objects/function/caller/index.md index 92f4a60f1a..c7736a0831 100644 --- a/files/fr/web/javascript/reference/global_objects/function/caller/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/caller/index.md @@ -9,74 +9,73 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller original_slug: Web/JavaScript/Reference/Objets_globaux/Function/caller --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    La propriété function.caller renvoie la fonction qui a appelé la fonction donnée. Cette propriété est interdite en mode strict.

    +La propriété **`function.caller`** renvoie la fonction qui a appelé la fonction donnée. Cette propriété est interdite en mode strict. -

    Description

    +## Description -

    Si la fonction f a été invoquée par du code situé au plus haut niveau, la valeur de f.caller sera {{jsxref("null")}}, sinon, ce sera la fonction qui a appelé f.

    +Si la fonction `f` a été invoquée par du code situé au plus haut niveau, la valeur de `f.caller` sera {{jsxref("null")}}, sinon, ce sera la fonction qui a appelé `f`. -

    Cette propriété remplace la propriété obsolète {{jsxref("Fonctions/arguments/caller", "arguments.caller")}} de l'objet {{jsxref("Fonctions/arguments", "arguments")}}.

    +Cette propriété remplace la propriété obsolète {{jsxref("Fonctions/arguments/caller", "arguments.caller")}} de l'objet {{jsxref("Fonctions/arguments", "arguments")}}. -

    La propriété spéciale __caller__ qui renvoyait l'objet qui dans lequel était fait l'appel a été supprimée pour des raisons de sécurités.

    +La propriété spéciale `__caller__` qui renvoyait l'objet qui dans lequel était fait l'appel a été supprimée pour des raisons de sécurités. -

    Notes

    +### Notes -

    Dans une fonction récursive, cette propriété ne peut pas être utilisée pour reconstituer la pile d'appels (call stack). Par exemple, si on a :

    +Dans une fonction récursive, cette propriété ne peut pas être utilisée pour reconstituer la pile d'appels (_call stack_). Par exemple, si on a : -
    function f(n) { g(n - 1); }
    -function g(n) { if (n > 0) { f(n); } else { stop(); } }
    +```js
    +function f(n) { g(n - 1); }
    +function g(n) { if (n > 0) { f(n); } else { stop(); } }
     f(2);
    -
    +``` -

    Au moment où stop() est appelé, la pile sera :

    +Au moment où `stop()` est appelé, la pile sera : -
    f(2) -> g(1) -> f(1) -> g(0) -> stop()
    -
    + f(2) -> g(1) -> f(1) -> g(0) -> stop() -

    Et ceci est vrai :

    +Et ceci est vrai : -
    stop.caller === g && f.caller === g && g.caller === f
    -
    + stop.caller === g && f.caller === g && g.caller === f -

    Donc si on essaie d'obtenir la pile de cette façon :

    +Donc si on essaie d'obtenir la pile de cette façon : -
    var f = stop;
    +```js
    +var f = stop;
     var stack = 'Stack trace:';
     while (f) {
       stack += '\n' + f.name;
       f = f.caller;
     }
    -
    +``` -

    la boucle ne s'arrêterait jamais.

    +la boucle ne s'arrêterait jamais. -

    Exemples

    +## Exemples -

    Vérifier la valeur de la propriété caller

    +### Vérifier la valeur de la propriété `caller` -

    Dans l'exemple suivant, on verifie la propriété caller de la fonction.

    +Dans l'exemple suivant, on verifie la propriété `caller` de la fonction. -
    function maFonction() {
    +```js
    +function maFonction() {
       if (maFonction.caller == null) {
         return 'Fonction appelée au plus haut niveau !';
       } else {
         return 'Fonction appelée par ' + maFonction.caller;
       }
     }
    -
    +``` -

    Spécifications

    +## Spécifications -

    Ne fait partie d'aucune spécification. Implémentée avec JavaScript 1.5.

    +Ne fait partie d'aucune spécification. Implémentée avec JavaScript 1.5. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Function.caller")}}

    +{{Compat("javascript.builtins.Function.caller")}} -

    Voir aussi

    +## Voir aussi -
      -
    • Le bug d'implémentation pour SpiderMonkey {{bug(65683)}}
    • -
    +- Le bug d'implémentation pour SpiderMonkey {{bug(65683)}} diff --git a/files/fr/web/javascript/reference/global_objects/function/displayname/index.md b/files/fr/web/javascript/reference/global_objects/function/displayname/index.md index 41224d8f33..374722f47c 100644 --- a/files/fr/web/javascript/reference/global_objects/function/displayname/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/displayname/index.md @@ -10,15 +10,16 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName original_slug: Web/JavaScript/Reference/Objets_globaux/Function/displayName --- -
    {{JSRef}} {{Non-standard_header}}
    +{{JSRef}} {{Non-standard_header}} -

    La propriété function.displayName renvoie le nom affiché de la fonction.

    +La propriété **`function.displayName`** renvoie le nom affiché de la fonction. -

    Description

    +## Description -

    Lorsque la propriété displayName est définie, elle renvoie le nom affiché de la fonction :

    +Lorsque la propriété `displayName` est définie, elle renvoie le nom affiché de la fonction : -
    function faireTruc() { }
    +```js
    +function faireTruc() { }
     
     console.log(faireTruc.displayName); // "undefined"
     
    @@ -27,11 +28,12 @@ var logMessage = function(contenu) { console.log(contenu) };
     logMessage.displayName = 'Afficher les messages dans le journal';
     
     console.log(logMessage.displayName); // "Afficher les messages dans le journal"
    -
    +``` -

    Il est possible de définir une fonction avec un nom d'affichage grâce à une {{jsxref("Fonctions", "expression de fonctions","",1)}}:

    +Il est possible de définir une fonction avec un nom d'affichage grâce à une {{jsxref("Fonctions", "expression de fonctions","",1)}}: -
    var objet = {
    +```js
    +var objet = {
       uneMéthode: function () {}
     };
     
    @@ -42,11 +44,12 @@ console.log(objet.uneMéthode.displayName);
     
     try { uneMéthode } catch(e) { console.log(e); }
     // ReferenceError: uneMéthode is not defined
    -
    +``` -

    La propriété displayName peut être changée dynamiquement :

    +La propriété `displayName` peut être changée dynamiquement : -
    var objet = {
    +```js
    +var objet = {
       // anonyme
       uneMéthode: function(valeur) {
         this.displayName = "uneMéthode (" + valeur + ")";
    @@ -57,24 +60,25 @@ console.log(objet.uneMéthode.displayName); // "undefined"
     
     objet.uneMéthode("123")
     console.log(objet.uneMéthode.displayName); // "uneMéthode (123)"
    -
    +``` -

    Exemples

    +## Exemples -

    On souhaite généralement utiliser cette propriété dans les consoles et profileurs plutôt que {{jsxref("Function.name", "func.name")}}

    +On souhaite généralement utiliser cette propriété dans les consoles et profileurs plutôt que {{jsxref("Function.name", "func.name")}} -

    Le code suivant devrait afficher quelque chose comme "function Ma Fonction()":

    +Le code suivant devrait afficher quelque chose comme "function Ma Fonction()": -
    var a = function () { };
    +```js
    +var a = function () { };
     a.displayName = 'Ma Fonction';
     
     a;
    -
    +``` -

    Spécifications

    +## Spécifications -

    N'appartient à aucune spécification.

    +N'appartient à aucune spécification. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Function.displayName")}}

    +{{Compat("javascript.builtins.Function.displayName")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/index.md b/files/fr/web/javascript/reference/global_objects/function/index.md index cbac58bc3c..4db2a14baa 100644 --- a/files/fr/web/javascript/reference/global_objects/function/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/index.md @@ -9,60 +9,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function original_slug: Web/JavaScript/Reference/Objets_globaux/Function --- -
    {{JSRef}}
    +{{JSRef}} -

    Le constructeur Function crée un nouvel objet Function. En JavaScript, chaque fonction est un objet Function.

    +Le constructeur **`Function`** crée un nouvel _objet_ `Function`. En JavaScript, chaque fonction est un objet `Function`. -

    Appeler ce constructeur permet de créer des fonctions dynamiquement mais cette méthode souffre de défauts équivalents à {{jsxref("eval")}} en termes de sécurité et de performance. Toutefois, à la différence d'eval, le constructeur Function permet d'exécuter du code dans la portée globale.

    +Appeler ce constructeur permet de créer des fonctions dynamiquement mais cette méthode souffre de défauts équivalents à {{jsxref("eval")}} en termes de sécurité et de performance. Toutefois, à la différence d'`eval`, le constructeur `Function` permet d'exécuter du code dans la portée globale. -
    {{EmbedInteractiveExample("pages/js/function-constructor.html")}}
    +{{EmbedInteractiveExample("pages/js/function-constructor.html")}} -

    Syntaxe

    +## Syntaxe -
    new Function ([arg1[, arg2[, ...argN]],] corpsFonction)
    + new Function ([arg1[, arg2[, ...argN]],] corpsFonction) -

    Paramètres

    +### Paramètres -
    -
    arg1, arg2, ... argN
    -
    Les noms utilisés par la fonction pour les arguments formellement déclarés. Chacun doit être une chaîne de caractères correspondant à un identifiant JavaScript valide (ou une liste de telles chaînes séparées par des virgules). Par exemple : "x", "uneValeur", ou "a,b".
    -
    corpsFonction
    -
    Une chaîne de caractères qui contient les instructions JavaScript définissant la fonction.
    -
    +- `arg1, arg2, ... argN` + - : Les noms utilisés par la fonction pour les arguments formellement déclarés. Chacun doit être une chaîne de caractères correspondant à un identifiant JavaScript valide (ou une liste de telles chaînes séparées par des virgules). Par exemple : "`x`", "`uneValeur`", ou "`a,b`". +- `corpsFonction` + - : Une chaîne de caractères qui contient les instructions JavaScript définissant la fonction. -

    Description

    +## Description -

    Les objets Function créés avec le constructeur Function sont analysés quand la fonction est créée. Ceci est moins efficace que de déclarer une fonction grâce à une {{jsxref("Opérateurs/L_opérateur_function","expression de fonction","",1)}} ou à une instruction {{jsxref("Instructions/function","function")}} car celles crées de cette façon sont analysées avec le reste du code.

    +Les objets `Function` créés avec le constructeur `Function` sont analysés quand la fonction est créée. Ceci est moins efficace que de déclarer une fonction grâce à une {{jsxref("Opérateurs/L_opérateur_function","expression de fonction","",1)}} ou à une instruction {{jsxref("Instructions/function","function")}} car celles crées de cette façon sont analysées avec le reste du code. -

    Tous les arguments passés à la fonction seront traités avec les noms des identifiants des paramètres de la fonction à créer, dans le même ordre dans lequel ils ont été passés. Si un argument n'est pas passé, la valeur du paramètre dans la fonction sera {{jsxref("undefined")}}.

    +Tous les arguments passés à la fonction seront traités avec les noms des identifiants des paramètres de la fonction à créer, dans le même ordre dans lequel ils ont été passés. Si un argument n'est pas passé, la valeur du paramètre dans la fonction sera {{jsxref("undefined")}}. -

    Appeler le constructeur Function comme une fonction (c'est-à-dire sans utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_new","new")}}) a le même effet que quand il est appelé comme constructeur.

    +Appeler le constructeur `Function` comme une fonction (c'est-à-dire sans utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_new","new")}}) a le même effet que quand il est appelé comme constructeur. -

    Propriétés et méthodes de Function

    +## Propriétés et méthodes de `Function` -

    L'objet global Function ne possède pas de méthodes ou de propriétés propres. Cependant, il est lui-même une fonction et hérite de certaines méthodes et propriétés depuis {{jsxref("Function.prototype")}} grâce à la chaîne de prototype.

    +L'objet global `Function` ne possède pas de méthodes ou de propriétés propres. Cependant, il est lui-même une fonction et hérite de certaines méthodes et propriétés depuis {{jsxref("Function.prototype")}} grâce à la chaîne de prototype. -

    Le prototype de Function

    +## Le prototype de `Function` -

    Propriétés

    +### Propriétés -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/prototype', 'Propri.C3.A9t.C3.A9s')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/prototype', 'Propri.C3.A9t.C3.A9s')}} -

    Méthodes

    +### Méthodes -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/prototype', 'M.C3.A9thodes')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/prototype', 'M.C3.A9thodes')}} -

    Les instances de Function

    +## Les instances de `Function` -

    Les instances de Function héritent des méthodes et propriétés de {{jsxref("Function.prototype")}}. Comme pour les autres constructeurs, il est possible de modifier le prototype du constructeur afin d'apporter des modifications à toutes les instances de Function.

    +Les instances de `Function` héritent des méthodes et propriétés de {{jsxref("Function.prototype")}}. Comme pour les autres constructeurs, il est possible de modifier le prototype du constructeur afin d'apporter des modifications à toutes les instances de `Function`. -

    Exemple

    +## Exemple -

    Définir des arguments avec le constructeur Function

    +### Définir des arguments avec le constructeur `Function` -

    Le code suivant permet de créer un objet Function qui utilise deux arguments :

    +Le code suivant permet de créer un objet `Function` qui utilise deux arguments : -
    // Cet exemple peut être lancé dans votre console JavaScript
    +```js
    +// Cet exemple peut être lancé dans votre console JavaScript
     
     // On crée un fonction qui prend deux arguments
     // et qui en renvoie la somme
    @@ -70,16 +69,17 @@ var ajoute = new Function('a', 'b', 'return a + b');
     
     // On appelle la fonction
     ajoute(2, 6);
    -// > 8
    -
    +// > 8 +``` -

    Les arguments "a" et "b" sont les noms des arguments formellement déclarés utilisés dans le corps de la fonction : "return a + b".

    +Les arguments "`a`" et "`b`" sont les noms des arguments formellement déclarés utilisés dans le corps de la fonction : "`return a + b`". -

    Différence entre le constructeur Function et les déclarations de fonction

    +### Différence entre le constructeur `Function` et les déclarations de fonction -

    Les fonctions créées avec le constructeur {{jsxref("Function()")}} ne créent pas de fermetures liées au contexte de leur création. Ainsi, lorsqu'elles sont exécutées, elles ne peuvent accéder qu'aux variables globales et à leurs propres valeurs locales. Elles ne peuvent pas accéder aux variables de la portée dans laquelle le constructeur Function a été invoqué. Le comportement est différent de celui qu'on obtient avec {{jsxref("eval")}} avec du code contenant une expression de fonction.

    +Les fonctions créées avec le constructeur {{jsxref("Function()")}} ne créent pas de fermetures liées au contexte de leur création. Ainsi, lorsqu'elles sont exécutées, elles ne peuvent accéder qu'aux variables globales et à leurs propres valeurs locales. Elles ne peuvent pas accéder aux variables de la portée dans laquelle le constructeur `Function` a été invoqué. Le comportement est différent de celui qu'on obtient avec {{jsxref("eval")}} avec du code contenant une expression de fonction. -
    var x = 10;
    +```js
    +var x = 10;
     
     function créerFonction1() {
       var x = 20;
    @@ -97,54 +97,30 @@ function créerFonction2() {
     var f1 = créerFonction1();
     console.log(f1());          // 10
     var f2 = créerFonction2();
    -console.log(f2());          // 20
    - -

    Bien que ce code fonctionne dans un navigateur web, l'appel à f1() provoquera une {{jsxref("ReferenceError")}} dans Node.js car x ne sera pas trouvé. En effet, pour Node, la portée de plus haut niveau n'est pas la portée globale et x est ici local à la fonction.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.3', 'Function')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-function-objects', 'Function')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-function-objects', 'Function')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Fonctions", "Les fonctions","",1)}}
    • -
    • L'instruction {{jsxref("Instructions/function", "function")}}
    • -
    • L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}}
    • -
    • L'instruction {{jsxref("Instructions/function*", "function*")}}
    • -
    • L'expression {{jsxref("Opérateurs/function*", "function*")}}
    • -
    • {{jsxref("AsyncFunction")}}
    • -
    • {{jsxref("GeneratorFunction")}}
    • -
    +console.log(f2()); // 20 +``` + +Bien que ce code fonctionne dans un navigateur web, l'appel à `f1()` provoquera une {{jsxref("ReferenceError")}} dans Node.js car `x` ne sera pas trouvé. En effet, pour Node, la portée de plus haut niveau n'est pas la portée globale et `x` est ici local à la fonction. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.3', 'Function')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-function-objects', 'Function')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-function-objects', 'Function')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function")}} + +## Voir aussi + +- {{jsxref("Fonctions", "Les fonctions","",1)}} +- L'instruction {{jsxref("Instructions/function", "function")}} +- L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}} +- L'instruction {{jsxref("Instructions/function*", "function*")}} +- L'expression {{jsxref("Opérateurs/function*", "function*")}} +- {{jsxref("AsyncFunction")}} +- {{jsxref("GeneratorFunction")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/length/index.md b/files/fr/web/javascript/reference/global_objects/function/length/index.md index 7493f7d759..359031b990 100644 --- a/files/fr/web/javascript/reference/global_objects/function/length/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/length/index.md @@ -9,31 +9,28 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/length original_slug: Web/JavaScript/Reference/Objets_globaux/Function/length --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété length définit le nombre de paramètres attendus par la fonction.

    +La propriété **`length`** définit le nombre de paramètres attendus par la fonction. -
    {{EmbedInteractiveExample("pages/js/function-length.html")}}
    +{{EmbedInteractiveExample("pages/js/function-length.html")}}{{js_property_attributes(0,0,1)}} +## Description +`length` est une propriété des fonctions qui indique le nombre d'arguments attendus par la fonction (ce qui correspond au nombre d'arguments formellement déclarés). Cette quantité n'inclue pas les {{jsxref("Fonctions/paramètres_du_reste", "paramètres du reste", "", 1)}} et ne compte que les paramètres situés avant le premier paramètre avec une valeur par défaut. Cette propriété est différente de {{jsxref("Fonctions/arguments/length", "arguments.length")}} qui est locale à la fonction et qui décrit le nombre d'arguments réellement passés à la fonction. -
    {{js_property_attributes(0,0,1)}}
    +### Propriété du constructeur `Function` -

    Description

    +Le constructeur {{jsxref("Function")}} est lui-même un objet {{jsxref("Function")}}. Sa propriété` length` vaut 1. Les attributs de cette propriété sont : Écrivable : `false`, Énumérable : `false`, Configurable : `true`. -

    length est une propriété des fonctions qui indique le nombre d'arguments attendus par la fonction (ce qui correspond au nombre d'arguments formellement déclarés). Cette quantité n'inclue pas les {{jsxref("Fonctions/paramètres_du_reste", "paramètres du reste", "", 1)}} et ne compte que les paramètres situés avant le premier paramètre avec une valeur par défaut. Cette propriété est différente de {{jsxref("Fonctions/arguments/length", "arguments.length")}} qui est locale à la fonction et qui décrit le nombre d'arguments réellement passés à la fonction.

    +### Propriété du prototype de `Function` -

    Propriété du constructeur Function

    +La propriété `length` du prototype de {{jsxref("Function")}} vaut 0. -

    Le constructeur {{jsxref("Function")}} est lui-même un objet {{jsxref("Function")}}. Sa propriété length vaut 1. Les attributs de cette propriété sont : Écrivable : false, Énumérable : false, Configurable : true.

    +## Exemples -

    Propriété du prototype de Function

    - -

    La propriété length du prototype de {{jsxref("Function")}} vaut 0.

    - -

    Exemples

    - -
    console.log(Function.length); /* 1 */
    +```js
    +console.log(Function.length); /* 1 */
     
     console.log((function()        {}).length); /* 0 */
     console.log((function(a)       {}).length); /* 1 */
    @@ -43,46 +40,21 @@ console.log((function(...args) {}).length);
     console.log((function(a, b = 1, c) {}).length);
     // 1, seuls les paramètres avant les valeurs par
     // défaut sont comptés
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}{{Spec2('ES6')}}L'attribut configurable de cette propriété vaut true désormais.
    {{SpecName('ESDraft', '#sec-function-instances-length', 'Function.length')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.length")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Function", "Function")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}} | {{Spec2('ES6')}} | L'attribut `configurable` de cette propriété vaut `true` désormais. | +| {{SpecName('ESDraft', '#sec-function-instances-length', 'Function.length')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.length")}} + +## Voir aussi + +- {{jsxref("Function", "Function")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/name/index.md b/files/fr/web/javascript/reference/global_objects/function/name/index.md index 0f8df52d94..2d1fe90437 100644 --- a/files/fr/web/javascript/reference/global_objects/function/name/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/name/index.md @@ -10,133 +10,142 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/name original_slug: Web/JavaScript/Reference/Objets_globaux/Function/name --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété function.name est une propriété en lecture seule qui renvoie le nom de la fonction courante ou "anonymous" si celle-ci a été créée de façon anonyme.

    +La propriété **`function.name`** est une propriété en lecture seule qui renvoie le nom de la fonction courante ou `"anonymous"` si celle-ci a été créée de façon anonyme. -
    {{EmbedInteractiveExample("pages/js/function-name.html")}}
    +{{EmbedInteractiveExample("pages/js/function-name.html")}}{{js_property_attributes(0,0,1)}} +> **Note :** Dans les implémentations non-standards antérieures à ES2015, l'attribut `configurable` valait `false`. +## Exemples -
    {{js_property_attributes(0,0,1)}}
    +### Instruction de fonction -
    -

    Note : Dans les implémentations non-standards antérieures à ES2015, l'attribut configurable valait false.

    -
    +La propriété `name` renvoie le nom de la fonction lorsque celle-ci est utilisée dans une instruction de fonction. -

    Exemples

    - -

    Instruction de fonction

    - -

    La propriété name renvoie le nom de la fonction lorsque celle-ci est utilisée dans une instruction de fonction.

    - -
    function faireUnTruc() {}
    +```js
    +function faireUnTruc() {}
     faireUnTruc.name; // "faireUnTruc"
    -
    +``` -

    Fonctions créées avec un constructeur

    +### Fonctions créées avec un constructeur -

    Lorsqu'on crée une fonction avec new Function(...) ou simplement Function(...), on crée uniquement des objets dont le nom est "anonymous".

    +Lorsqu'on crée une fonction avec `new Function(...)` ou simplement `Function(...)`, on crée uniquement des objets dont le nom est "anonymous". -
    (new Function).name; // "anonymous"
    +```js +(new Function).name; // "anonymous" +``` -

    Inférence des noms de fonction

    +### Inférence des noms de fonction -

    Les variables et les méthodes permettent d'inférer (c'est-à-dire de « deviner ») le nom des fonctions anonymes en fonction de leur position syntaxique (cette fonctionnalité est apparue avec ECMAScript 2015).

    +Les variables et les méthodes permettent d'inférer (c'est-à-dire de « deviner ») le nom des fonctions anonymes en fonction de leur position syntaxique (cette fonctionnalité est apparue avec ECMAScript 2015). -
    var f = function() {};
    +```js
    +var f = function() {};
     var objet = {
       uneMéthode: function() {}
     };
     
     console.log(f.name); // "f"
     console.log(objet.uneMéthode.name); // "uneMéthode"
    -
    +``` -

    On peut définir une fonction avec un nom grâce à une {{jsxref("Opérateurs/L_opérateur_function", "expression de fonction", "", 1)}}:

    +On peut définir une fonction avec un nom grâce à une {{jsxref("Opérateurs/L_opérateur_function", "expression de fonction", "", 1)}}: -
    var objet = {
    +```js
    +var objet = {
       uneMéthode: function objet_maMéthode() {}
     };
     console.log(objet.uneMéthode.name); // logs "objet_maMéthode"
     
     try { objet_maMéthode } catch(e) { console.log(e); }
     // ReferenceError: objet_maMéthode is not defined
    -
    +``` -

    On ne peut pas changer le nom d'une fonction, cette propriété est uniquement en lecture :

    +On ne peut pas changer le nom d'une fonction, cette propriété est uniquement en lecture : -
    var objet = {
    +```js
    +var objet = {
       // anonyme
       uneMéthode: function() {}
     };
     
     objet.uneMéthode.name = 'uneMéthode';
     console.log(object.uneMéthode.name); // une chaîne vide, uneMéthode est anonyme
    -
    +``` -

    Pour modifier le nom, on pourrait cependant utiliser la méthode {{jsxref("Object.defineProperty()")}}.

    +Pour modifier le nom, on pourrait cependant utiliser la méthode {{jsxref("Object.defineProperty()")}}. -

    Notation raccourcie pour les méthodes

    +### Notation raccourcie pour les méthodes -
    var o = {
    +```js
    +var o = {
       toto(){}
     };
    -o.toto.name; // "toto";
    +o.toto.name; // "toto"; +``` -

    Noms des fonctions liées

    +### Noms des fonctions liées -

    {{jsxref("Function.bind()")}} produit une fonction dont le nom sera la chaîne "bound " suivi du nom de la fonction.

    +{{jsxref("Function.bind()")}} produit une fonction dont le nom sera la chaîne "bound " suivi du nom de la fonction. -
    function toto() {};
    +```js
    +function toto() {};
     toto.bind({}).name; // "bound toto"
    -
    +``` -

    Noms de fonction pour les accesseurs et les mutateurs

    +### Noms de fonction pour les accesseurs et les mutateurs -

    Lorsqu'on utilise les propriétés d'accesseur get / set, "get" ou "set" apparaîtra avant le nom de la fonction.

    +Lorsqu'on utilise les propriétés d'accesseur [`get`](/fr/docs/Web/JavaScript/Reference/Fonctions/get) / [`set`](/fr/docs/Web/JavaScript/Reference/Fonctions/set), "get" ou "set" apparaîtra avant le nom de la fonction. -
    var o = {
    +```js
    +var o = {
       get toto(){},
       set toto(x){}
     };
     
     var descripteur = Object.getOwnPropertyDescriptor(o, "toto");
     descripteur.get.name; // "get toto"
    -descripteur.set.name; // "set toto";
    +descripteur.set.name; // "set toto"; +``` -

    Noms des fonctions utilisées dans les classes

    +### Noms des fonctions utilisées dans les classes -

    On peut utiliser la notation obj.constructor.name pour vérifier la « classe » d'un objet (attention aux avertissements ci-après) :

    +On peut utiliser la notation `obj.constructor.name` pour vérifier la « classe » d'un objet (attention aux avertissements ci-après) : -
    function Toto() {}  // Syntaxe ES2015 : class Toto {}
    +```js
    +function Toto() {}  // Syntaxe ES2015 : class Toto {}
     
     var instanceDeToto = new Toto();
     console.log(instanceDeToto.constructor.name); // affiche "Toto" dans la console
    -
    +``` -

    Attention : l'interpréteur utilisera la propriété native Function.name uniquement si la fonction ne possède pas une propriété en propre intitulée name (cf section 9.2.11 de la spécification ECMAScript2015). Cependant, ES2015 indique que les propriétés définies avec mot-clé static seront des propriétés propres de la fonction constructrice (cf. ECMAScript2015, 14.5.14.21.b + 12.2.6.9). Ainsi, il n'est plus possible d'obtenir le nom de la classe si celle-ci possède une méthode statique intitulée name() :

    +**Attention :** l'interpréteur utilisera la propriété native `Function.name` uniquement si la fonction ne possède pas une propriété en propre intitulée _name_ (cf section [9.2.11 de la spécification ECMAScript2015](https://www.ecma-international.org/ecma-262/6.0/#sec-setfunctionname)). Cependant, ES2015 indique que les propriétés définies avec mot-clé _static_ seront des propriétés propres de la fonction constructrice (cf. ECMAScript2015, [14.5.14.21.b](https://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-classdefinitionevaluation) + [12.2.6.9](https://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer-runtime-semantics-propertydefinitionevaluation)). Ainsi, il n'est plus possible d'obtenir le nom de la classe si celle-ci possède une méthode statique intitulée `name()` : -
    class Toto {
    +```js
    +class Toto {
       constructor() {}
       static name() {}
     }
    -
    +``` -

    Avec static name(), Toto.name ne contient plus le nom de la classe mais une référence à l'objet name(). La définition utilisée ci-avant se comporte de façon semblable à ce fragment de code ES5 :

    +Avec `static name()`, `Toto.name` ne contient plus le nom de la classe mais une référence à l'objet `name()`. La définition utilisée ci-avant se comporte de façon semblable à ce fragment de code ES5 : -
    function Toto() {}
    +```js
    +function Toto() {}
     Object.defineProperty(Toto, 'name', { writable: true });
     Toto.name = function() {};
    -
    +``` -

    Il est donc parfois erroné de penser que Function.name pointe toujours vers le nom de la classe.

    +Il est donc parfois erroné de penser que `Function.name` pointe toujours vers le nom de la classe. -

    Noms de fonction sous la forme de symboles

    +### Noms de fonction sous la forme de symboles -

    Si un symbole ({{jsxref("Symbol")}}) est utilisé comme nom d'une fonction et que celui-ci dispose d'une description, c'est cette dernière qui sera utilisée comme nom de la méthode, entre crochets :

    +Si un symbole ({{jsxref("Symbol")}}) est utilisé comme nom d'une fonction et que celui-ci dispose d'une description, c'est cette dernière qui sera utilisée comme nom de la méthode, entre crochets : -
    var sym1 = Symbol("Toto");
    +```js
    +var sym1 = Symbol("Toto");
     var sym2 = Symbol();
     var o = {
       [sym1]: function(){},
    @@ -144,13 +153,15 @@ var o = {
     };
     
     o[sym1].name; // "[Toto]"
    -o[sym2].name; // ""
    +o[sym2].name; // "" +``` -

    Compresseurs et outils de minification JavaScript

    +## Compresseurs et outils de minification JavaScript -

    Attention à l'utilisation de Function.name lorsque le code source est transformé par certains outils. En effet, ceux-ci réduisent généralement la taille d'un programme en compressant les espaces et en modifiant parfois les noms de variables. Ainsi, un fragment de code comme :

    +Attention à l'utilisation de `Function.name` lorsque le code source est transformé par certains outils. En effet, ceux-ci réduisent généralement la taille d'un programme en compressant les espaces et en modifiant parfois les noms de variables. Ainsi, un fragment de code comme : -
    function Toto() {};
    +```js
    +function Toto() {};
     var toto = new Toto();
     
     if (Toto.constructor.name === 'Toto') {
    @@ -158,43 +169,29 @@ if (Toto.constructor.name === 'Toto') {
     } else {
       console.log('Oups !');
     }
    -
    +``` -

    pourrait être compressé en :

    +pourrait être compressé en : -
    function a() {};
    +```js
    +function a() {};
     var b = new a();
     if (b.constructor.name === 'Toto') {
       console.log("'toto' est une instance de 'Toto'");
     } else {
       console.log('Oups !');
     }
    -
    - -

    Dans la version non-compressée, la condition du test est remplie et on affiche 'toto' est une instance de 'Toto' dans la console. Mais dans la version compressée, la condition n'est pas vérifiée. Lorsqu'on utilise name, il faut s'assurer que les outils utilisés ne modifient pas le nom des fonctions.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-name', 'name')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-function-instances-name', 'name')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.name")}}

    +``` + +Dans la version non-compressée, la condition du test est remplie et on affiche _'toto' est une instance de 'Toto'_ dans la console. Mais dans la version compressée, la condition n'est pas vérifiée. Lorsqu'on utilise `name`, il faut s'assurer que les outils utilisés ne modifient pas le nom des fonctions. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-name', 'name')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-function-instances-name', 'name')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.name")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/tosource/index.md b/files/fr/web/javascript/reference/global_objects/function/tosource/index.md index cfc1e8f26a..ad358e7be6 100644 --- a/files/fr/web/javascript/reference/global_objects/function/tosource/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/tosource/index.md @@ -9,58 +9,55 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource original_slug: Web/JavaScript/Reference/Objets_globaux/Function/toSource --- -
    {{JSRef}}{{non-standard_header}}
    +{{JSRef}}{{non-standard_header}} -

    La méthode toSource() renvoie une chaîne de caractères représentant le code source de l'objet.

    +La méthode **`toSource()`** renvoie une chaîne de caractères représentant le code source de l'objet. -

    Syntaxe

    +## Syntaxe -
    function.toSource();
    -Function.toSource();
    -
    + function.toSource(); + Function.toSource(); -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant le code source de l'objet.

    +Une chaîne de caractères représentant le code source de l'objet. -

    Description

    +## Description -

    La méthode toSource() renvoie les valeurs suivantes :

    +La méthode `toSource()` renvoie les valeurs suivantes : -
      -
    • Pour l'objet natif {{jsxref("Function")}}, toSource() renvoie la chaîne suivante qui indique que le code source n'est pas disponible : +- Pour l'objet natif {{jsxref("Function")}}, `toSource()` renvoie la chaîne suivante qui indique que le code source n'est pas disponible : -
      function Function() {
      -    [native code]
      -}
      -
      -
    • -
    • Pour les fonctions définies dans les scripts, toSource() renverra la chaîne correspondant au code source JavaScript de l'objet. -
      function coucou() {
      -  console.log("Coucou le monde");
      -}
      +  ```js
      +    function Function() {
      +        [native code]
      +    }
      +    ```
       
      -coucou.toSource();
      -// produira la chaîne de caractères
      -// "function coucou() {
      -//   console.log(\"Coucou le monde\");
      -// }"
      -
      -
    • -
    +- Pour les fonctions définies dans les scripts, `toSource()` renverra la chaîne correspondant au code source JavaScript de l'objet. -

    De façon générale, cette méthode est utilisée en interne par le moteur JavaScript et n'est pas utilisée dans les scripts tiers. Il est possible d'utiliser cette méthode pour une aide au débogage et pouvoir examiner le contenu d'un objet.

    + ```js + function coucou() { + console.log("Coucou le monde"); + } -

    Spécifications

    + coucou.toSource(); + // produira la chaîne de caractères + // "function coucou() { + // console.log(\"Coucou le monde\"); + // }" + ``` -

    Ne fait partie d'aucune spécification. Implémentée avec JavaScript 1.3.

    +De façon générale, cette méthode est utilisée en interne par le moteur JavaScript et n'est pas utilisée dans les scripts tiers. Il est possible d'utiliser cette méthode pour une aide au débogage et pouvoir examiner le contenu d'un objet. -

    Compatibilité des navigateurs

    +## Spécifications -

    {{Compat("javascript.builtins.Function.toSource")}}

    +Ne fait partie d'aucune spécification. Implémentée avec JavaScript 1.3. -

    Voir aussi

    +## Compatibilité des navigateurs -
      -
    • {{jsxref("Object.prototype.toSource()")}}
    • -
    +{{Compat("javascript.builtins.Function.toSource")}} + +## Voir aussi + +- {{jsxref("Object.prototype.toSource()")}} diff --git a/files/fr/web/javascript/reference/global_objects/function/tostring/index.md b/files/fr/web/javascript/reference/global_objects/function/tostring/index.md index 625eb83203..0eac5c45c6 100644 --- a/files/fr/web/javascript/reference/global_objects/function/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/function/tostring/index.md @@ -10,86 +10,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Function/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toString() renvoie une chaîne de caractères représentant le code source de la fonction.

    +La méthode **`toString()`** renvoie une chaîne de caractères représentant le code source de la fonction. -
    {{EmbedInteractiveExample("pages/js/function-tostring.html")}}
    +{{EmbedInteractiveExample("pages/js/function-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    function.toString(indentation)
    + function.toString(indentation) -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente le code source de la fonction.

    +Une chaîne de caractères qui représente le code source de la fonction. -

    Description

    +## Description -

    L'objet {{jsxref("Function")}} redéfinit la méthode {{jsxref("Object.prototype.toString", "toString")}} de l'objet {{jsxref("Object")}} ; il n'hérite donc pas de {{jsxref("Object.prototype.toString")}}. Pour les objets {{jsxref("Function")}}, la méthode toString renvoie une chaîne de caractères représentant l'objet sous la forme d'une déclaration de fonction. Pour ce faire, toString décompile la fonction pour renvoyer une chaîne qui contient le mot-clé function, la liste des arguments, les accolades et la source correspondant au corps de la fonction.

    +L'objet {{jsxref("Function")}} redéfinit la méthode {{jsxref("Object.prototype.toString", "toString")}} de l'objet {{jsxref("Object")}} ; il n'hérite donc pas de {{jsxref("Object.prototype.toString")}}. Pour les objets {{jsxref("Function")}}, la méthode `toString` renvoie une chaîne de caractères représentant l'objet sous la forme d'une déclaration de fonction. Pour ce faire, `toString` décompile la fonction pour renvoyer une chaîne qui contient le mot-clé `function`, la liste des arguments, les accolades et la source correspondant au corps de la fonction. -

    Le moteur JavaScript appelle la méthode toString automatiquement lorsqu'un objet {{jsxref("Function")}} doit être représenté textuellement (par exemple lorsqu'une fonction doit être concaténée avec une chaîne de caractères).

    +Le moteur JavaScript appelle la méthode `toString` automatiquement lorsqu'un objet {{jsxref("Function")}} doit être représenté textuellement (par exemple lorsqu'une fonction doit être concaténée avec une chaîne de caractères). -

    La méthode toString() lèvera une exception {{jsxref("TypeError")}} (« Function.prototype.toString called on incompatible object ») si la valeur this n'est pas un objet Function.

    +La méthode `toString()` lèvera une exception {{jsxref("TypeError")}} (« Function.prototype.toString called on incompatible object ») si la valeur this n'est pas un objet `Function`. -
    Function.prototype.toString.call("toto"); // TypeError
    -
    +```js example-bad +Function.prototype.toString.call("toto"); // TypeError +``` -

    Si la méthode toString() est appelée sur des fonctions natives qui ne sont pas définies dans le script, toString() renvoie une chaîne de caractères indiquant le caractère natif :

    +Si la méthode `toString()` est appelée sur des fonctions natives qui ne sont pas définies dans le script, `toString()` renvoie une chaîne de caractères indiquant le caractère natif : -
    Math.abs.toString();
    +```js
    +Math.abs.toString();
     
     "function abs() {
         [native code]
    -}"
    - -

    Si la méthode toString() est appelée sur une fonction créée avec le constructeur Function, toString() renverra le code source d'une fonction intitulée anonymous et utilisera les paramètres et le corps de la fonction fournis.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    Function.prototype.toString()BrouillonStandardise la chaîne de caractères utilisée pour les fonctions natives ainsi que la gestion des fins de ligne.
    {{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ES6')}}Critères supplémentaires ajoutés sur la représentation de la chaîne.
    {{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Function.toString")}}

    - -

    Notes spécifiques à Firefox

    - -
      -
    • À partir de Firefox 17.0, Function.prototype.toString() a été implémenté en sauvegardant le code source de la fonction. La méthode utilisant la décompilation a été retirée et le paramètre indentation n'est donc plus nécessaire. Pour plus d'informations, voir {{bug("761723")}}.
    • -
    • À partir de Firefox 38 et jusqu'à Firefox 63, Function.prototype.toString() levait une exception pour les {{jsxref("Proxy")}} (cf. {{bug(1100936)}} et {{bug(1440468)}}).
    • -
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Object.prototype.toString()")}}
    • -
    +}" +``` + +Si la méthode `toString()` est appelée sur une fonction créée avec le constructeur `Function`, `toString()` renverra le code source d'une fonction intitulée `anonymous` et utilisera les paramètres et le corps de la fonction fournis. + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| [`Function.prototype.toString()`](https://tc39.github.io/Function-prototype-toString-revision/#sec-introduction) | Brouillon | Standardise la chaîne de caractères utilisée pour les fonctions natives ainsi que la gestion des fins de ligne. | +| {{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}} | {{Spec2('ES6')}} | Critères supplémentaires ajoutés sur la représentation de la chaîne. | +| {{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Function.toString")}} + +## Notes spécifiques à Firefox + +- À partir de Firefox 17.0, `Function.prototype.toString()` a été implémenté en sauvegardant le code source de la fonction. La méthode utilisant la décompilation a été retirée et le paramètre `indentation` n'est donc plus nécessaire. Pour plus d'informations, voir {{bug("761723")}}. +- À partir de Firefox 38 et jusqu'à Firefox 63, `Function.prototype.toString()` levait une exception pour les {{jsxref("Proxy")}} (cf. {{bug(1100936)}} et {{bug(1440468)}}). + +## Voir aussi + +- {{jsxref("Object.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/generator/index.md b/files/fr/web/javascript/reference/global_objects/generator/index.md index 646ecd415a..7540ca763f 100644 --- a/files/fr/web/javascript/reference/global_objects/generator/index.md +++ b/files/fr/web/javascript/reference/global_objects/generator/index.md @@ -9,36 +9,35 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Generator original_slug: Web/JavaScript/Reference/Objets_globaux/Generator --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Generator est renvoyé par une {{jsxref("Instructions/function*","fonction génératrice","",1)}}, c'est à la fois un itérateur et un itérable.

    +L'objet **`Generator`** est renvoyé par une {{jsxref("Instructions/function*","fonction génératrice","",1)}}, c'est à la fois [un itérateur](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_%C2%AB_it%C3%A9rateur_%C2%BB) et [un itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_%C2%AB_it%C3%A9rable_%C2%BB). -

    Syntaxe

    +## Syntaxe -
    function* gen() {
    -  yield 1;
    -  yield 2;
    -  yield 3;
    -}
    +    function* gen() {
    +      yield 1;
    +      yield 2;
    +      yield 3;
    +    }
     
    -var g = gen(); // "Generator { }"
    + var g = gen(); // "Generator { }" -

    Méthodes

    +## Méthodes -
    -
    {{jsxref("Generator.prototype.next()")}}
    -
    Renvoie une valeur générée par l'expression {{jsxref("Opérateurs/yield", "yield")}}.
    -
    {{jsxref("Generator.prototype.return()")}}
    -
    Renvoie la valeur donnée et termine le générateur.
    -
    {{jsxref("Generator.prototype.throw()")}}
    -
    Lève une exception dans un générateur. Cette opération termine le générateur, sauf si l'exception est interceptée dans le générateur.
    -
    +- {{jsxref("Generator.prototype.next()")}} + - : Renvoie une valeur générée par l'expression {{jsxref("Opérateurs/yield", "yield")}}. +- {{jsxref("Generator.prototype.return()")}} + - : Renvoie la valeur donnée et termine le générateur. +- {{jsxref("Generator.prototype.throw()")}} + - : Lève une exception dans un générateur. Cette opération termine le générateur, sauf si l'exception est interceptée dans le générateur. -

    Exemple

    +## Exemple -

    Un itérateur infini

    +### Un itérateur infini -
    function* idMaker(){
    +```js
    +function* idMaker(){
         var index = 0;
         while(true)
             yield index++;
    @@ -49,28 +48,28 @@ var gen = idMaker(); // "Generator { }"
     console.log(gen.next().value); // 0
     console.log(gen.next().value); // 1
     console.log(gen.next().value); // 2
    -// ...
    +// ... +``` -

    Générateurs historiques

    +## Générateurs historiques -

    Firefox (SpiderMonkey) implémente également une version antérieure pour les générateurs avec JavaScript 1.7. Pour cette syntaxe, il n'y a pas besoin d'utiliser l'astérisque dans la déclaration de la fonction, il suffit d'utiliser le mot-clé yield dans le corps de la fonction. Les générateurs historiques sont une fonctionnalité dépréciée et seront supprimés à l'avenir ({{bug(1083482)}}), il est fortement déconseillé de les utiliser.

    +Firefox (SpiderMonkey) implémente également une version antérieure pour les générateurs avec [JavaScript 1.7](/fr/docs/Web/JavaScript/New_in_JavaScript/1.7). Pour cette syntaxe, il n'y a pas besoin d'utiliser l'astérisque dans la déclaration de la fonction, il suffit d'utiliser le mot-clé `yield` dans le corps de la fonction. Les générateurs historiques sont une fonctionnalité dépréciée et seront supprimés à l'avenir ({{bug(1083482)}}), il est fortement déconseillé de les utiliser. -

    Méthodes pour les générateurs historiques

    +### Méthodes pour les générateurs historiques -
    -
    Generator.prototype.next() {{non-standard_inline}}
    -
    Renvoie une valeur générée par l'expression {{jsxref("Opérateurs/yield", "yield")}}. Cette méthode correspond à next() pour les générateurs ES2015.
    -
    Generator.prototype.close() {{non-standard_inline}}
    -
    Clôture le générateur, tout appel ultérieur à next() renverra une exception {{jsxref("StopIteration")}}. Cela correspond à la méthode return() pour les générateurs ES2015.
    -
    Generator.prototype.send() {{non-standard_inline}}
    -
    Utilisée pour envoyer une valeur à un générateur. La valeur est renvoyée avec une expression {{jsxref("Opérateurs/yield", "yield")}} et renvoie une valeur générée par la prochaine expression {{jsxref("Opérateurs/yield", "yield")}}. send(x) correspond à next(x) pour les générateurs ES2015.
    -
    Generator.prototype.throw() {{non-standard_inline}}
    -
    Lève une exception au sein d'un générateur. Cela correspond à la méthode throw() pour les générateurs ES2015.
    -
    +- `Generator.prototype.next() `{{non-standard_inline}} + - : Renvoie une valeur générée par l'expression {{jsxref("Opérateurs/yield", "yield")}}. Cette méthode correspond à `next()` pour les générateurs ES2015. +- `Generator.prototype.close()` {{non-standard_inline}} + - : Clôture le générateur, tout appel ultérieur à `next()` renverra une exception {{jsxref("StopIteration")}}. Cela correspond à la méthode `return()` pour les générateurs ES2015. +- `Generator.prototype.send()` {{non-standard_inline}} + - : Utilisée pour envoyer une valeur à un générateur. La valeur est renvoyée avec une expression {{jsxref("Opérateurs/yield", "yield")}} et renvoie une valeur générée par la prochaine expression {{jsxref("Opérateurs/yield", "yield")}}. `send(x)` correspond à `next(x)` pour les générateurs ES2015. +- **`Generator.`**`prototype.`**`throw()` **{{non-standard_inline}} + - : Lève une exception au sein d'un générateur. Cela correspond à la méthode `throw()` pour les générateurs ES2015. -

    Exemple utilisant un générateur historique

    +### Exemple utilisant un générateur historique -
    function* fibonacci() {
    +```js
    +function* fibonacci() {
       var a = yield 1;
       yield a * 2;
     }
    @@ -81,54 +80,35 @@ console.log(it.next());   // 1
     console.log(it.send(10)); // 20
     console.log(it.close());  // undefined
     console.log(it.next());   // throws StopIteration (le générateur est clôturé)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Generator")}}

    - -

    Voir aussi

    - -

    Générateurs historiques

    - -
      -
    • {{jsxref("Instructions/Fonction_génératrice_historique", "Fonction génératrice historique", "", 1)}}
    • -
    • {{jsxref("Opérateurs/function*", "L'expression d'un générateur historique", "", 1)}}
    • -
    • {{jsxref("StopIteration")}}
    • -
    • Le protocole itérateur historique
    • -
    - -

    Générateurs ES2015

    - -
      -
    • {{jsxref("Fonctions", "Fonctions", "", 1)}}
    • -
    • {{jsxref("Instructions/function", "function")}}
    • -
    • L'expression {{jsxref("L_opérateur_function", "function")}}
    • -
    • {{jsxref("Function")}}
    • -
    • {{jsxref("Instructions/function*", "function*")}}
    • -
    • L'expression {{jsxref("Opérateurs/function*", "function*")}}
    • -
    • {{jsxref("GeneratorFunction")}}
    • -
    • Le protocole Iterator
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Generator")}} + +## Voir aussi + +### Générateurs historiques + +- {{jsxref("Instructions/Fonction_génératrice_historique", "Fonction génératrice historique", "", 1)}} +- {{jsxref("Opérateurs/function*", "L'expression d'un générateur historique", "", 1)}} +- {{jsxref("StopIteration")}} +- [Le protocole itérateur historique](/fr/docs/Web/JavaScript/Guide/Le_protocole_itérateur_historique) + +### Générateurs ES2015 + +- {{jsxref("Fonctions", "Fonctions", "", 1)}} +- {{jsxref("Instructions/function", "function")}} +- L'expression {{jsxref("L_opérateur_function", "function")}} +- {{jsxref("Function")}} +- {{jsxref("Instructions/function*", "function*")}} +- L'expression {{jsxref("Opérateurs/function*", "function*")}} +- {{jsxref("GeneratorFunction")}} +- [Le protocole Iterator](/fr/docs/Web/JavaScript/Guide/Le_protocole_iterator) diff --git a/files/fr/web/javascript/reference/global_objects/generator/next/index.md b/files/fr/web/javascript/reference/global_objects/generator/next/index.md index f88fc2d356..098448211a 100644 --- a/files/fr/web/javascript/reference/global_objects/generator/next/index.md +++ b/files/fr/web/javascript/reference/global_objects/generator/next/index.md @@ -11,43 +11,38 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next original_slug: Web/JavaScript/Reference/Objets_globaux/Generator/next --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode next() renvoie un objet possédant deux propriétés done et value. Cette méthode peut également recevoir un paramètre pour envoyer une valeur au générateur.

    +La méthode **`next`\*\***`()`\*\* renvoie un objet possédant deux propriétés `done` et `value`. Cette méthode peut également recevoir un paramètre pour envoyer une valeur au générateur. -

    Syntaxe

    +## Syntaxe -
    gen.next(valeur)
    + gen.next(valeur) -

    Paramètres

    +### Paramètres -
    -
    valeur
    -
    La valeur à envoyer au générateur. La valeur sera affectée comme résultat d'une expression yield. Autrement dit, lorsque le générateur contient une expression de la forme variable = yield expression, c'est l'argument valeur qui sera affecté à variable.
    -
    +- `valeur` + - : La valeur à envoyer au générateur. La valeur sera affectée comme résultat d'une expression `yield`. Autrement dit, lorsque le générateur contient une expression de la forme `variable = yield expression`, c'est l'argument `valeur` qui sera affecté à `variable`_._ -

    Valeur de retour

    +### Valeur de retour -

    Un {{jsxref("Object")}} possédant deux propriétés :

    +Un {{jsxref("Object")}} possédant deux propriétés : -
      -
    • done (un booléen) +- `done` (un booléen) -
        -
      • vaut true si l'itérateur a atteint la fin de la série sur laquelle il itère. Dans ce cas, la propriété value définit la valeur de retour pour l'itérateur.
      • -
      • vaut false si l'itérateur a pu fournir la prochaine valeur de la série. C'est la valeur par défaut si la propriété done n'est pas définie.
      • -
      -
    • -
    • value - n'importe quelle valeur JavaScript renvoyée par l'itérateur. Cette propriété peut être absente lorsque done vaut true.
    • -
    + - vaut `true` si l'itérateur a atteint la fin de la série sur laquelle il itère. Dans ce cas, la propriété `value` définit la valeur de retour pour l'itérateur. + - vaut `false` si l'itérateur a pu fournir la prochaine valeur de la série. C'est la valeur par défaut si la propriété `done` n'est pas définie. -

    Exemples

    +- `value` - n'importe quelle valeur JavaScript renvoyée par l'itérateur. Cette propriété peut être absente lorsque `done` vaut `true`. -

    Utiliser next()

    +## Exemples -

    L'exemple suivant illustre comment utiliser un générateur simple et les objets renvoyés par la méthode next :

    +### Utiliser `next()` -
    function* gen() {
    +L'exemple suivant illustre comment utiliser un générateur simple et les objets renvoyés par la méthode `next` :
    +
    +```js
    +function* gen() {
       yield 1;
       yield 2;
       yield 3;
    @@ -58,13 +53,14 @@ g.next();      // "Object { value: 1, done: false }"
     g.next();      // "Object { value: 2, done: false }"
     g.next();      // "Object { value: 3, done: false }"
     g.next();      // "Object { value: undefined, done: true }"
    -
    +``` -

    Envoyer des valeurs à un générateur

    +### Envoyer des valeurs à un générateur -

    Ici, next est appelé avec une valeur. On notera ici que le premier appel n'affiche rien car le générateur n'a encore rien généré.

    +Ici, `next` est appelé avec une valeur. On notera ici que le premier appel n'affiche rien car le générateur n'a encore rien généré. -
    function* gen() {
    +```js
    +function* gen() {
       while(true) {
         var value = yield null;
         console.log(value);
    @@ -77,37 +73,20 @@ g.next(1);
     g.next(2);
     // 2
     // "{ value: null, done: false }"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Generator.next")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Generator.next")}} + +## Voir aussi + +- {{jsxref("Instructions/function*","function*")}} +- [Les itérateurs et générateurs](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs) diff --git a/files/fr/web/javascript/reference/global_objects/generator/return/index.md b/files/fr/web/javascript/reference/global_objects/generator/return/index.md index 3ddfa7f463..6beafe949c 100644 --- a/files/fr/web/javascript/reference/global_objects/generator/return/index.md +++ b/files/fr/web/javascript/reference/global_objects/generator/return/index.md @@ -11,32 +11,31 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return original_slug: Web/JavaScript/Reference/Objets_globaux/Generator/return --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode return() renvoie la valeur fournie et termine le générateur.

    +La méthode **`return`\*\***`()`\*\* renvoie la valeur fournie et termine le générateur. -

    Syntaxe

    +## Syntaxe -
    gen.return(valeur)
    + gen.return(valeur) -

    Paramètres

    +### Paramètres -
    -
    valeur
    -
    La valeur à renvoyer
    -
    +- `valeur` + - : La valeur à renvoyer -

    Valeur de retour

    +### Valeur de retour -

    La valeur fournie comme argument.

    +La valeur fournie comme argument. -

    Exemples

    +## Exemples -

    Utiliser return()

    +### Utiliser `return()` -

    L'exemple suivant illustre une utilisation simple d'un générateur et de la méthode return().

    +L'exemple suivant illustre une utilisation simple d'un générateur et de la méthode `return()`. -
    function* gen() {
    +```js
    +function* gen() {
       yield 1;
       yield 2;
       yield 3;
    @@ -47,55 +46,36 @@ var g = gen();
     g.next();         // { value: 1, done: false }
     g.return("toto"); // { value: "toto", done: true }
     g.next();         // { value: undefined, done: true }
    -
    - -
    -

    Note : Si done vaut true, return(valeur) renverra la même chose que next() : undefined. Si aucun argument n'est fourni, la propriété value de l'objet renvoyé sera la même qu'avec un appel à .next(). Si un argument est fourni, c'est lui qui sera utilisé comme valeur pour l'attribut value du résultat.

    - -
    function* gen() {
    -  yield 1;
    -  yield 2;
    -  yield 3;
    -}
    -var g = gen();
    -console.log(g.next()); // { value: 1; done: false}
    -console.log(g.next()); // { value: 2; done: false}
    -console.log(g.next()); // { value: 3; done: false}
    -console.log(g.next()); // { value: undefined; done: true}
    -console.log(g.return()); // { value: undefined; done: true}
    -console.log(g.return(1)); // { value: 1; done: true}
    -
    -
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Generator.return")}}

    - -

    Voir aussi

    - - +``` + +> **Note :** Si `done` vaut `true`, `return(valeur)` renverra la même chose que `next()` : `undefined`. Si aucun argument n'est fourni, la propriété `value` de l'objet renvoyé sera la même qu'avec un appel à `.next()`. Si un argument est fourni, c'est lui qui sera utilisé comme valeur pour l'attribut `value` du résultat. +> +> ```js +> function* gen() { +> yield 1; +> yield 2; +> yield 3; +> } +> var g = gen(); +> console.log(g.next()); // { value: 1; done: false} +> console.log(g.next()); // { value: 2; done: false} +> console.log(g.next()); // { value: 3; done: false} +> console.log(g.next()); // { value: undefined; done: true} +> console.log(g.return()); // { value: undefined; done: true} +> console.log(g.return(1)); // { value: 1; done: true} +> ``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Generator.return")}} + +## Voir aussi + +- [`function*`](/fr/docs/Web/JavaScript/Reference/Instructions/function*) diff --git a/files/fr/web/javascript/reference/global_objects/generator/throw/index.md b/files/fr/web/javascript/reference/global_objects/generator/throw/index.md index 547c877869..42d63db17b 100644 --- a/files/fr/web/javascript/reference/global_objects/generator/throw/index.md +++ b/files/fr/web/javascript/reference/global_objects/generator/throw/index.md @@ -11,43 +11,38 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw original_slug: Web/JavaScript/Reference/Objets_globaux/Generator/throw --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode throw() lève une erreur dans un générateur.

    +La méthode **`throw`\*\***`()`\*\* lève une erreur dans un générateur. -

    Syntaxe

    +## Syntaxe -
    gen.throw(exception)
    + gen.throw(exception) -

    Paramètres

    +### Paramètres -
    -
    exception
    -
    L'exception à lever. On préfèrera généralement utiliser un objet qui est une instance d'{{jsxref("Error")}}.
    -
    +- `exception` + - : L'exception à lever. On préfèrera généralement utiliser un objet qui est une instance d'{{jsxref("Error")}}. -

    Valeur de retour

    +### Valeur de retour -

    Un {{jsxref("Object")}} avec deux propriétés :

    +Un {{jsxref("Object")}} avec deux propriétés : -
      -
    • done (un booléen) +- `done` (un booléen) -
        -
      • Qui vaut true lorsque l'itérateur a fini de parcourir la suite. Dans ce cas, value correspondra éventuellement à la valeur de retour de l'itérateur.
      • -
      • Qui vaut false si l'itérateur a pu produire la prochaine valeur de la série.
      • -
      -
    • -
    • value : une valeur renvoyée par l'itérateur. Lorsque done vaut true, cette valeur peut être absente ou valoir undefined.
    • -
    + - Qui vaut `true` lorsque l'itérateur a fini de parcourir la suite. Dans ce cas, `value` correspondra éventuellement à la valeur de retour de l'itérateur. + - Qui vaut `false` si l'itérateur a pu produire la prochaine valeur de la série. -

    Exemples

    +- `value` : une valeur renvoyée par l'itérateur. Lorsque `done` vaut `true`, cette valeur peut être absente ou valoir `undefined`. -

    Utiliser throw()

    +## Exemples -

    Dans l'exemple suivant, on utilise un générateur simple et on génère une exception grâce à la méthode throw(). Une exception peut être interceptée avec un bloc {{jsxref("Instructions/try...catch","try...catch")}} usuel.

    +### Utiliser `throw()` -
    function* gen() {
    +Dans l'exemple suivant, on utilise un générateur simple et on génère une exception grâce à la méthode `throw()`. Une exception peut être interceptée avec un bloc {{jsxref("Instructions/try...catch","try...catch")}} usuel.
    +
    +```js
    +function* gen() {
       while(true) {
         try {
            yield 42;
    @@ -63,36 +58,19 @@ g.next();
     g.throw(new Error("Quelque chose s'est mal passé"));
     // "Erreur interceptée !"
     // { value: 42, done: false }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Generator.throw")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Instructions/function*","function*")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Generator.throw")}} + +## Voir aussi + +- {{jsxref("Instructions/function*","function*")}} diff --git a/files/fr/web/javascript/reference/global_objects/generatorfunction/index.md b/files/fr/web/javascript/reference/global_objects/generatorfunction/index.md index 8f92be2961..f9faec0967 100644 --- a/files/fr/web/javascript/reference/global_objects/generatorfunction/index.md +++ b/files/fr/web/javascript/reference/global_objects/generatorfunction/index.md @@ -11,102 +11,81 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction original_slug: Web/JavaScript/Reference/Objets_globaux/GeneratorFunction --- -
    {{JSRef}}
    +{{JSRef}} -

    Le constructeur GeneratorFunction permet de créer un nouvel objet qui est une {{jsxref("Instructions/function*", "fonction génératrice","",1)}}. En JavaScript, chaque générateur (ou fonction génératrice) est un objet GeneratorFunction.

    +Le constructeur **`GeneratorFunction`** permet de créer un nouvel objet qui est une {{jsxref("Instructions/function*", "fonction génératrice","",1)}}. En JavaScript, chaque générateur (ou fonction génératrice) est un objet `GeneratorFunction`. -

    L'objet GeneratorFunction n'est pas un objet global. Il peut être obtenu en exécutant le code suivant :

    +L'objet `GeneratorFunction` n'est pas un objet global. Il peut être obtenu en exécutant le code suivant : -
    Object.getPrototypeOf(function*(){}).constructor
    -
    +```js +Object.getPrototypeOf(function*(){}).constructor +``` -

    Syntaxe

    +## Syntaxe -
    new GeneratorFunction ([arg1[, arg2[, ...argN]],] corpsFonction)
    + new GeneratorFunction ([arg1[, arg2[, ...argN]],] corpsFonction) -

    Paramètres

    +### Paramètres -
    -
    arg1, arg2, ... argN
    -
    Les noms à utiliser pour les arguments formellement déclarés. Chacun doit être une chaîne de caractères correspondant à un identifiant JavaScript valide ou une liste de telles chaînes séparées par des virgules. Par exemple, on peut avoir "x", "maValeur", ou "a,b".
    -
    corpsFonction
    -
    Une chaîne qui contient les instructions JavaScript qui composent la définition de la fonction.
    -
    +- `arg1, arg2, ... argN` + - : Les noms à utiliser pour les arguments formellement déclarés. Chacun doit être une chaîne de caractères correspondant à un identifiant JavaScript valide ou une liste de telles chaînes séparées par des virgules. Par exemple, on peut avoir "`x`", "`maValeur`", ou "`a,b`". +- `corpsFonction` + - : Une chaîne qui contient les instructions JavaScript qui composent la définition de la fonction. -

    Description

    +## Description -

    Les {{jsxref("Instructions/function*", "fonctions génératrices","",1)}} créées avec le constructeur GeneratorFunction sont analysés lorsque la fonction est crée. Cela est moins efficace que de déclarer un générateur avec une expression {{jsxref("Statements/function*", "function*")}} puis de l'appeler car ces fonctions sont analysées avec le reste du code (ce qui permet au moteur JavaScript d'effectuer certaines optimisations).

    +Les {{jsxref("Instructions/function*", "fonctions génératrices","",1)}} créées avec le constructeur `GeneratorFunction` sont analysés lorsque la fonction est crée. Cela est moins efficace que de déclarer un générateur avec une expression {{jsxref("Statements/function*", "function*")}} puis de l'appeler car ces fonctions sont analysées avec le reste du code (ce qui permet au moteur JavaScript d'effectuer certaines optimisations). -

    Tous les arguments passés à la fonction sont traités par la suite avec les noms des identifiants utilisés pour les noms des paramètres lors de la création de la fonction et avec cet ordre là.

    +Tous les arguments passés à la fonction sont traités par la suite avec les noms des identifiants utilisés pour les noms des paramètres lors de la création de la fonction et avec cet ordre là. -
    -

    Note : Les {{jsxref("Instructions/function*", "générateurs","",1)}} créés avec le constructeur GeneratorFunction ne créent pas de fermetures avec leurs contextes de création. Ils sont toujours créés dans la portée globale. Lorsqu'ils sont exécutés, ils n'ont accès qu'à leurs variables locales et aux variables globales et ils n'ont pas accès aux variables de la portée où a eu lieu l'appel à GeneratorFunction. Ce comportement est différent de celui obtenu lorsqu'on appelle {{jsxref("Objets_globaux/eval", "eval")}} avec du code correspondant à une expression de générateur.

    -
    +> **Note :** Les {{jsxref("Instructions/function*", "générateurs","",1)}} créés avec le constructeur `GeneratorFunction` ne créent pas de fermetures avec leurs contextes de création. Ils sont toujours créés dans la portée globale. Lorsqu'ils sont exécutés, ils n'ont accès qu'à leurs variables locales et aux variables globales et ils n'ont pas accès aux variables de la portée où a eu lieu l'appel à `GeneratorFunction`. Ce comportement est différent de celui obtenu lorsqu'on appelle {{jsxref("Objets_globaux/eval", "eval")}} avec du code correspondant à une expression de générateur. -

    L'appel du constructeur GeneratorFunction comme fonction (c'est-à-dire sans utiliser l'opérateur new) aura le même effet que si celui-ci est invoqué comme constructeur.

    +L'appel du constructeur `GeneratorFunction` comme fonction (c'est-à-dire sans utiliser l'opérateur `new`) aura le même effet que si celui-ci est invoqué comme constructeur. -

    Propriétés

    +## Propriétés -
    -
    GeneratorFunction.length
    -
    La propriété de longueur du constructeur GeneratorFunction qui vaut 1.
    -
    {{jsxref("GeneratorFunction.prototype")}}
    -
    Le prototype du constructeur qui permet d'ajouter des propriétés à tous les générateurs.
    -
    +- **`GeneratorFunction.length`** + - : La propriété de longueur du constructeur `GeneratorFunction` qui vaut 1. +- {{jsxref("GeneratorFunction.prototype")}} + - : Le prototype du constructeur qui permet d'ajouter des propriétés à tous les générateurs. -

    Le prototype de GeneratorFunction

    +## Le prototype de `GeneratorFunction` -

    Propriétés

    +### Propriétés -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/GeneratorFunction/prototype', 'Properties')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/GeneratorFunction/prototype', 'Properties')}} -

    Les instances de GeneratorFunction

    +## Les instances de `GeneratorFunction` -

    Les instances de GeneratorFunction héritent des méthodes et propriétés de {{jsxref("GeneratorFunction.prototype")}}. Comme pour tous les constructeurs, il est possible de modifier le prototype afin d'apporter des modifications à toutes les instances de GeneratorFunction.

    +Les instances de `GeneratorFunction` héritent des méthodes et propriétés de {{jsxref("GeneratorFunction.prototype")}}. Comme pour tous les constructeurs, il est possible de modifier le prototype afin d'apporter des modifications à toutes les instances de `GeneratorFunction`. -

    Exemples

    +## Exemples -

    Créer un générateur en utilisant le constructeur GeneratorFunction

    +### Créer un générateur en utilisant le constructeur `GeneratorFunction` -
    var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
    +```js
    +var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
     var g = new GeneratorFunction("a", "yield a * 2");
     var itérateur = g(10);
     console.log(itérateur.next().value); // 20
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.GeneratorFunction")}}

    - -

    Voir aussi

    - -
      -
    • L'instruction {{jsxref("Instructions/function*", "function*")}}
    • -
    • L'expression {{jsxref("Opérateurs/function*", "function*")}}
    • -
    • {{jsxref("Function")}}
    • -
    • L'instruction {{jsxref("Instructions/function", "function")}}
    • -
    • L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}}
    • -
    • {{jsxref("Fonctions", "Les fonctions et portées de fonctions", "", 1)}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.GeneratorFunction")}} + +## Voir aussi + +- L'instruction {{jsxref("Instructions/function*", "function*")}} +- L'expression {{jsxref("Opérateurs/function*", "function*")}} +- {{jsxref("Function")}} +- L'instruction {{jsxref("Instructions/function", "function")}} +- L'expression {{jsxref("Opérateurs/L_opérateur_function", "function")}} +- {{jsxref("Fonctions", "Les fonctions et portées de fonctions", "", 1)}} diff --git a/files/fr/web/javascript/reference/global_objects/globalthis/index.md b/files/fr/web/javascript/reference/global_objects/globalthis/index.md index 428d089b96..4a6721b390 100644 --- a/files/fr/web/javascript/reference/global_objects/globalthis/index.md +++ b/files/fr/web/javascript/reference/global_objects/globalthis/index.md @@ -8,39 +8,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/globalThis original_slug: Web/JavaScript/Reference/Objets_globaux/globalThis --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La propriété globale globalThis renvoie l'objet global de plus haut niveau.

    +La propriété globale **`globalThis`** renvoie l'objet global de plus haut niveau. -
    {{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}} -

    Syntaxe

    +## Syntaxe -
    globalThis
    -
    + globalThis -

    Description

    +## Description -

    Par le passé, il était nécessaire d'utiliser différentes syntaxes pour différents environnements afin d'accéder à la portée globale. Sur le Web, on peut utiliser {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} ou {{domxref("Window.frames", "frames")}} ; pour les web workers, seul self peut être employé ; pour Node.js aucun de ces mots-clés ne fonctionne et il faut utiliser global.
    - Le mot-clé this pouvait être utilisé à l'intérieur des fonctions en mode non-strict mais vaudra sinon undefined dans les modules et dans les fonctions utilisant le mode strict.

    +Par le passé, il était nécessaire d'utiliser différentes syntaxes pour différents environnements afin d'accéder à la portée globale. Sur le Web, on peut utiliser {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} ou {{domxref("Window.frames", "frames")}} ; pour les [web workers](/en-US/docs/Web/API/Worker), seul `self` peut être employé ; pour Node.js aucun de ces mots-clés ne fonctionne et il faut utiliser `global`. +Le mot-clé `this` pouvait être utilisé à l'intérieur des fonctions en [mode non-strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) mais vaudra sinon `undefined` dans les modules et dans les fonctions utilisant le [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). -

    La propriété globalThis fournit une méthode standard d'accès à l'objet this global, quel que soit l'environnement. Contrairement aux propriétés window et self, ce mot-clé fonctionnera quel que soit le contexte (que celui-ci soit doté de fenêtres ou non). Ainsi, on peut accéder à l'objet global de façon homogène, quel que soit l'environnement dans lequel le code est utilisé.

    +La propriété `globalThis` fournit une méthode standard d'accès à l'objet `this` global, quel que soit l'environnement. Contrairement aux propriétés `window` et `self`, ce mot-clé fonctionnera quel que soit le contexte (que celui-ci soit doté de fenêtres ou non). Ainsi, on peut accéder à l'objet global de façon homogène, quel que soit l'environnement dans lequel le code est utilisé. -

    Pour mieux mémoriser ce nom, on se rappellera que la valeur de this dans la portée globale est globalThis.

    +Pour mieux mémoriser ce nom, on se rappellera que la valeur de `this` dans la portée globale est `globalThis`. -

    Accès indirect à la variable globale dans un contexte web

    +### Accès indirect à la variable globale dans un contexte web -

    Dans la plupart des environnements, globalThis sera une référence directe à l'objet global. Cependant, dans les navigateurs web, avec les principes de sécurité relatifs aux iframes et aux liens entre les fenêtres, globalThis fournira un {{jsxref("Proxy")}} sur l'objet global (auquel on n'aura donc pas accès directement).

    +Dans la plupart des environnements, `globalThis` sera une référence directe à l'objet global. Cependant, dans les navigateurs web, avec les principes de sécurité relatifs aux _iframes_ et aux liens entre les fenêtres, `globalThis` fournira un {{jsxref("Proxy")}} sur l'objet global (auquel on n'aura donc pas accès directement). -

    Nommage

    +### Nommage -

    D'autres noms furent proposés pour cette fonctionnalité (tels que self et global) mais ils furent écartés car ils pouvaient entraîner des problèmes de compatibilité avec du code existant. Pour plus de détails, voir le document de la proposition pour le nommage.

    +D'autres noms furent proposés pour cette fonctionnalité (tels que `self` et `global`) mais ils furent écartés car ils pouvaient entraîner des problèmes de compatibilité avec du code existant. Pour plus de détails, voir [le document de la proposition pour le nommage](https://github.com/tc39/proposal-global/blob/master/NAMING.md). -

    Exemples

    +## Exemples -

    Avant l'introduction de globalThis, la seule façon qui permettait d'obtenir l'objet global de l'environnement de façon homogène était Function('return this')(). Toutefois, cela enfreignait certaines règles CSP avec certains réglages et es6-shim, par exemple, devait utiliser une logique conditionnelle :

    +Avant l'introduction de `globalThis`, la seule façon qui permettait d'obtenir l'objet global de l'environnement de façon homogène était `Function('return this')()`. Toutefois, cela enfreignait certaines règles [CSP](/fr/docs/Web/HTTP/CSP) avec certains réglages et [es6-shim](https://github.com/paulmillr/es6-shim), par exemple, devait utiliser une logique conditionnelle : -
    var getGlobal = function () {
    +```js
    +var getGlobal = function () {
       if (typeof self !== 'undefined') { return self; }
       if (typeof window !== 'undefined') { return window; }
       if (typeof global !== 'undefined') { return global; }
    @@ -52,33 +52,22 @@ var globals = getGlobal();
     if (typeof globals.setTimeout !== 'function') {
       // pas de setTimeout pour cet environnement
     }
    -
    +``` -

    Avec globalThis, il n'est plus nécessaire de parcourir les différents mots-clés des différents environnements :

    +Avec `globalThis`, il n'est plus nécessaire de parcourir les différents mots-clés des différents environnements : -
    if (typeof globalThis.setTimeout !== 'function') {
    +```js
    +if (typeof globalThis.setTimeout !== 'function') {
       // pas de setTimeout pour cet environnement
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour globalThisProposition de niveau 3 (stage 3)
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.globalThis")}}

    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------ | +| [Proposition pour `globalThis`](https://tc39.github.io/proposal-global/#sec-other-properties-of-the-global-object-global) | Proposition de niveau 3 (_stage 3_) | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.globalThis")}} diff --git a/files/fr/web/javascript/reference/global_objects/index.md b/files/fr/web/javascript/reference/global_objects/index.md index b8eb0beaa1..0c2020b20d 100644 --- a/files/fr/web/javascript/reference/global_objects/index.md +++ b/files/fr/web/javascript/reference/global_objects/index.md @@ -8,179 +8,151 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects original_slug: Web/JavaScript/Reference/Objets_globaux --- -
    {{jsSidebar("Objects")}}
    - -

    Cette partie référence tous les objets natifs standards JavaScript, avec leurs propriétés et méthodes.

    - -

    Le terme « objets globaux » (ou objets natifs standards) ne doit pas ici être confondu avec l'objet global. Ici, « objets globaux » se réfère aux objets de portée globale. L'objet global lui-même peut être accédé en utilisant {{jsxref("Opérateurs/L_opérateur_this", "this")}} dans la portée globale (uniquement lorsque le mode strict n'est pas utilisé, sinon, il renvoie {{jsxref("undefined")}}). En réalité, la portée globale consiste des propriétés de l'objet global (avec ses propriétés héritées, s'il en a).

    - -
    -

    Note : En mode strict, la portée globale représentée par this sera {{jsxref("undefined")}}.

    -
    - -

    Les autres objets de la portée globale sont créés par les scripts utilisateurs ou fournis par l'application hôte dans laquelle s'exécute JavaScript. Les objets mis à disposition par les navigateurs web sont documentés dans la référence API. Pour plus d'informations sur la distinction entre le DOM et JavaScript, voir l'aperçu des technologies JavaScript.

    - -

    Objets globaux standards (par catégorie)

    - -

    Propriétés - valeurs

    - -

    Les propriétés globales renvoient une valeur simple, elles ne possèdent aucune propriété ou méthode :

    - -
      -
    • {{jsxref("Infinity")}}
    • -
    • {{jsxref("NaN")}}
    • -
    • {{jsxref("undefined")}}
    • -
    • le littéral {{jsxref("null")}}
    • -
    • {{JSxRef("globalThis")}}
    • -
    - -

    Propriétés - fonctions

    - -

    Les fonctions globales, appelées globalement (et non par rapport à un objet), renvoient directement leur résultat à l'objet appelant.

    - -
      -
    • {{jsxref("Objets_globaux/eval", "eval()")}}
    • -
    • {{jsxref("Objets_globaux/uneval", "uneval()")}} {{non-standard_inline()}}
    • -
    • {{jsxref("Objets_globaux/isFinite", "isFinite()")}}
    • -
    • {{jsxref("Objets_globaux/isNaN", "isNaN()")}}
    • -
    • {{jsxref("Objets_globaux/parseFloat", "parseFloat()")}}
    • -
    • {{jsxref("Objets_globaux/parseInt", "parseInt()")}}
    • -
    • {{jsxref("Objets_globaux/decodeURI", "decodeURI()")}}
    • -
    • {{jsxref("Objets_globaux/decodeURIComponent", "decodeURIComponent()")}}
    • -
    • {{jsxref("Objets_globaux/encodeURI", "encodeURI()")}}
    • -
    • {{jsxref("Objets_globaux/encodeURIComponent", "encodeURIComponent()")}}
    • -
    • {{jsxref("Objets_globaux/escape", "escape()")}} {{deprecated_inline()}}
    • -
    • {{jsxref("Objets_globaux/unescape", "unescape()")}} {{deprecated_inline()}}
    • -
    - -

    Objets fondamentaux

    +{{jsSidebar("Objects")}} -

    Ces objets sont les objets fondamentaux de JavaScript. Parmi ces objets, on retrouve les objets génériques, les fonctions et les erreurs.

    - -
      -
    • {{jsxref("Object")}}
    • -
    • {{jsxref("Function")}}
    • -
    • {{jsxref("Boolean")}}
    • -
    • {{jsxref("Symbol")}}
    • -
    • {{jsxref("Error")}}
    • -
    • {{jsxref("EvalError")}}
    • -
    • {{jsxref("InternalError")}} {{Non-standard_Inline}}
    • -
    • {{jsxref("RangeError")}}
    • -
    • {{jsxref("ReferenceError")}}
    • -
    • {{jsxref("StopIteration")}}
    • -
    • {{jsxref("SyntaxError")}}
    • -
    • {{jsxref("TypeError")}}
    • -
    • {{jsxref("URIError")}}
    • -
    - -

    Nombres et dates

    - -

    Ces objets permettent de manipuler les nombres, dates et calculs mathématiques.

    - -
      -
    • {{jsxref("Number")}}
    • -
    • {{JSxRef("BigInt")}}
    • -
    • {{jsxref("Math")}}
    • -
    • {{jsxref("Date")}}
    • -
    - -

    Manipulation de textes

    - -

    Ces objets permettent de manipuler des chaînes de caractères.

    - -
      -
    • {{jsxref("String")}}
    • -
    • {{jsxref("RegExp")}}
    • -
    - -

    Collections indexées

    - -

    Ces objets sont des collections ordonnées par un index. Cela inclut les tableaux (typés) et les objets semblables aux tableaux.

    - -
      -
    • {{jsxref("Array")}}
    • -
    • {{jsxref("Int8Array")}}
    • -
    • {{jsxref("Uint8Array")}}
    • -
    • {{jsxref("Uint8ClampedArray")}}
    • -
    • {{jsxref("Int16Array")}}
    • -
    • {{jsxref("Uint16Array")}}
    • -
    • {{jsxref("Int32Array")}}
    • -
    • {{jsxref("Uint32Array")}}
    • -
    • {{jsxref("Float32Array")}}
    • -
    • {{jsxref("Float64Array")}}
    • -
    • {{jsxref("BigInt64Array")}}
    • -
    • {{jsxref("BigUint64Array")}}
    • -
    - -

    Collections avec clefs

    - -

    Ces objets représentent des collections d'objets avec clefs. Ils contiennent des éléments itérables, dans leur ordre d'insertion.

    - -
      -
    • {{jsxref("Map")}}
    • -
    • {{jsxref("Set")}}
    • -
    • {{jsxref("WeakMap")}}
    • -
    • {{jsxref("WeakSet")}}
    • -
    - -

    Données structurées

    - -

    Ces objets permettent de représenter et de manipuler des tampons de données (buffers) et des données utilisant la notation JSON (JavaScript Object Notation).

    - -
      -
    • {{jsxref("ArrayBuffer")}}
    • -
    • {{jsxref("SharedArrayBuffer")}} {{experimental_inline}}
    • -
    • {{jsxref("Atomics")}} {{experimental_inline}}
    • -
    • {{jsxref("DataView")}}
    • -
    • {{jsxref("JSON")}}
    • -
    - -

    Objets de contrôle d'abstraction

    - -
      -
    • {{jsxref("Promise")}}
    • -
    • {{jsxref("Generator")}}
    • -
    • {{jsxref("GeneratorFunction")}}
    • -
    • {{jsxref("AsyncFunction")}}{{experimental_inline}}
    • -
    - -

    Introspection

    - -
      -
    • {{jsxref("Reflect")}}
    • -
    • {{jsxref("Proxy")}}
    • -
    - -

    Internationalisation

    - -

    Ces objets ont été ajoutés à ECMAScript pour des traitements dépendants de particularités linguistiques. Ils possèdent leur propre spécification.

    - -
      -
    • {{jsxref("Intl")}}
    • -
    • {{jsxref("Objets_globaux/Collator", "Intl.Collator")}}
    • -
    • {{jsxref("Objets_globaux/DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{JSxRef("Global_Objects/ListFormat", "Intl.ListFormat")}}
    • -
    • {{jsxref("Objets_globaux/NumberFormat", "Intl.NumberFormat")}}
    • -
    • {{JSxRef("Global_Objects/PluralRules", "Intl.PluralRules")}}
    • -
    • {{jsxref("Objets_globaux/RelativeTimeFormat", "Intl.RelativeTimeFormat")}}
    • -
    • {{jsxref("Objets_globaux/Locale", "Intl.Locale")}}
    • -
    - -

    WebAssembly

    - -
      -
    • {{jsxref("WebAssembly")}}
    • -
    • {{jsxref("WebAssembly.Module")}}
    • -
    • {{jsxref("WebAssembly.Instance")}}
    • -
    • {{jsxref("WebAssembly.Memory")}}
    • -
    • {{jsxref("WebAssembly.Table")}}
    • -
    • {{jsxref("WebAssembly.CompileError")}}
    • -
    • {{jsxref("WebAssembly.LinkError")}}
    • -
    • {{jsxref("WebAssembly.RuntimeError")}}
    • -
    - -

    Autres

    - -
      -
    • {{JSxRef("Fonctions/arguments", "arguments")}}
    • -
    +Cette partie référence tous les objets natifs standards JavaScript, avec leurs propriétés et méthodes. + +Le terme « objets globaux » (ou objets natifs standards) ne doit pas ici être confondu avec l*'objet global*. Ici, « objets globaux » se réfère aux _objets de portée globale_. L'objet global lui-même peut être accédé en utilisant {{jsxref("Opérateurs/L_opérateur_this", "this")}} dans la portée globale (uniquement lorsque [le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode) n'est pas utilisé, sinon, il renvoie {{jsxref("undefined")}}). En réalité, la portée globale _consiste des_ propriétés de l'objet global (avec ses propriétés héritées, s'il en a). + +> **Note :** En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), la portée globale représentée par `this` sera {{jsxref("undefined")}}. + +Les autres objets de la portée globale sont [créés par les scripts utilisateurs](/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets#Cr.C3.A9er_de_nouveaux_objets) ou fournis par l'application hôte dans laquelle s'exécute JavaScript. Les objets mis à disposition par les navigateurs web sont documentés dans la [référence API](/fr/docs/Web/API). Pour plus d'informations sur la distinction entre le [DOM](/fr/docs/Web/API/R%C3%A9f%C3%A9rence_du_DOM_Gecko) et JavaScript, voir [l'aperçu des technologies JavaScript](/fr/docs/Web/JavaScript/JavaScript_technologies_overview). + +## Objets globaux standards (par catégorie) + +### Propriétés - valeurs + +Les propriétés globales renvoient une valeur simple, elles ne possèdent aucune propriété ou méthode : + +- {{jsxref("Infinity")}} +- {{jsxref("NaN")}} +- {{jsxref("undefined")}} +- le littéral {{jsxref("null")}} +- {{JSxRef("globalThis")}} + +### Propriétés - fonctions + +Les fonctions globales, appelées globalement (et non par rapport à un objet), renvoient directement leur résultat à l'objet appelant. + +- {{jsxref("Objets_globaux/eval", "eval()")}} +- {{jsxref("Objets_globaux/uneval", "uneval()")}} {{non-standard_inline()}} +- {{jsxref("Objets_globaux/isFinite", "isFinite()")}} +- {{jsxref("Objets_globaux/isNaN", "isNaN()")}} +- {{jsxref("Objets_globaux/parseFloat", "parseFloat()")}} +- {{jsxref("Objets_globaux/parseInt", "parseInt()")}} +- {{jsxref("Objets_globaux/decodeURI", "decodeURI()")}} +- {{jsxref("Objets_globaux/decodeURIComponent", "decodeURIComponent()")}} +- {{jsxref("Objets_globaux/encodeURI", "encodeURI()")}} +- {{jsxref("Objets_globaux/encodeURIComponent", "encodeURIComponent()")}} +- {{jsxref("Objets_globaux/escape", "escape()")}} {{deprecated_inline()}} +- {{jsxref("Objets_globaux/unescape", "unescape()")}} {{deprecated_inline()}} + +### Objets fondamentaux + +Ces objets sont les objets fondamentaux de JavaScript. Parmi ces objets, on retrouve les objets génériques, les fonctions et les erreurs. + +- {{jsxref("Object")}} +- {{jsxref("Function")}} +- {{jsxref("Boolean")}} +- {{jsxref("Symbol")}} +- {{jsxref("Error")}} +- {{jsxref("EvalError")}} +- {{jsxref("InternalError")}} {{Non-standard_Inline}} +- {{jsxref("RangeError")}} +- {{jsxref("ReferenceError")}} +- {{jsxref("StopIteration")}} +- {{jsxref("SyntaxError")}} +- {{jsxref("TypeError")}} +- {{jsxref("URIError")}} + +### Nombres et dates + +Ces objets permettent de manipuler les nombres, dates et calculs mathématiques. + +- {{jsxref("Number")}} +- {{JSxRef("BigInt")}} +- {{jsxref("Math")}} +- {{jsxref("Date")}} + +### Manipulation de textes + +Ces objets permettent de manipuler des chaînes de caractères. + +- {{jsxref("String")}} +- {{jsxref("RegExp")}} + +### Collections indexées + +Ces objets sont des collections ordonnées par un index. Cela inclut les tableaux (typés) et les objets semblables aux tableaux. + +- {{jsxref("Array")}} +- {{jsxref("Int8Array")}} +- {{jsxref("Uint8Array")}} +- {{jsxref("Uint8ClampedArray")}} +- {{jsxref("Int16Array")}} +- {{jsxref("Uint16Array")}} +- {{jsxref("Int32Array")}} +- {{jsxref("Uint32Array")}} +- {{jsxref("Float32Array")}} +- {{jsxref("Float64Array")}} +- {{jsxref("BigInt64Array")}} +- {{jsxref("BigUint64Array")}} + +### Collections avec clefs + +Ces objets représentent des collections d'objets avec clefs. Ils contiennent des éléments itérables, dans leur ordre d'insertion. + +- {{jsxref("Map")}} +- {{jsxref("Set")}} +- {{jsxref("WeakMap")}} +- {{jsxref("WeakSet")}} + +### Données structurées + +Ces objets permettent de représenter et de manipuler des tampons de données (_buffers_) et des données utilisant la notation JSON (**J**ava**S**cript **O**bject **N**otation). + +- {{jsxref("ArrayBuffer")}} +- {{jsxref("SharedArrayBuffer")}} {{experimental_inline}} +- {{jsxref("Atomics")}} {{experimental_inline}} +- {{jsxref("DataView")}} +- {{jsxref("JSON")}} + +### Objets de contrôle d'abstraction + +- {{jsxref("Promise")}} +- {{jsxref("Generator")}} +- {{jsxref("GeneratorFunction")}} +- {{jsxref("AsyncFunction")}}{{experimental_inline}} + +### Introspection + +- {{jsxref("Reflect")}} +- {{jsxref("Proxy")}} + +### Internationalisation + +Ces objets ont été ajoutés à ECMAScript pour des traitements dépendants de particularités linguistiques. Ils possèdent leur propre spécification. + +- {{jsxref("Intl")}} +- {{jsxref("Objets_globaux/Collator", "Intl.Collator")}} +- {{jsxref("Objets_globaux/DateTimeFormat", "Intl.DateTimeFormat")}} +- {{JSxRef("Global_Objects/ListFormat", "Intl.ListFormat")}} +- {{jsxref("Objets_globaux/NumberFormat", "Intl.NumberFormat")}} +- {{JSxRef("Global_Objects/PluralRules", "Intl.PluralRules")}} +- {{jsxref("Objets_globaux/RelativeTimeFormat", "Intl.RelativeTimeFormat")}} +- {{jsxref("Objets_globaux/Locale", "Intl.Locale")}} + +### WebAssembly + +- {{jsxref("WebAssembly")}} +- {{jsxref("WebAssembly.Module")}} +- {{jsxref("WebAssembly.Instance")}} +- {{jsxref("WebAssembly.Memory")}} +- {{jsxref("WebAssembly.Table")}} +- {{jsxref("WebAssembly.CompileError")}} +- {{jsxref("WebAssembly.LinkError")}} +- {{jsxref("WebAssembly.RuntimeError")}} + +### Autres + +- {{JSxRef("Fonctions/arguments", "arguments")}} diff --git a/files/fr/web/javascript/reference/global_objects/infinity/index.md b/files/fr/web/javascript/reference/global_objects/infinity/index.md index 7188beb806..0be346bb70 100644 --- a/files/fr/web/javascript/reference/global_objects/infinity/index.md +++ b/files/fr/web/javascript/reference/global_objects/infinity/index.md @@ -7,74 +7,51 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Infinity original_slug: Web/JavaScript/Reference/Objets_globaux/Infinity --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La propriété globale Infinity est une valeur numérique représentant l'infini.

    +La propriété globale **`Infinity`** est une valeur numérique représentant l'infini. -

    {{js_property_attributes(0,0,0)}}

    +{{js_property_attributes(0,0,0)}} -
    {{EmbedInteractiveExample("pages/js/globalprops-infinity.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-infinity.html")}} -

    Syntaxe

    +## Syntaxe -
    Infinity
    + Infinity -

    Description

    +## Description -

    Infinity est une propriété de l'objet global , c'est-à-dire qu'elle est accessible globalement.

    +`Infinity` est une propriété de _l'objet global_ , c'est-à-dire qu'elle est accessible globalement. -

    La valeur initiale d'Infinity est {{jsxref("Number.POSITIVE_INFINITY")}}. La valeur Infinity (infinité positive) est une valeur plus grande que n'importe quel nombre. Cette valeur se comporte comme l'infini mathématique ; par exemple, tout ce qui est multiplié par Infinity vaut Infinity, et tout ce qui est divisé par Infinity vaut 0.

    +La valeur initiale d'`Infinity` est {{jsxref("Number.POSITIVE_INFINITY")}}. La valeur `Infinity` (infinité positive) est une valeur plus grande que n'importe quel nombre. Cette valeur se comporte comme l'infini mathématique ; par exemple, tout ce qui est multiplié par `Infinity` vaut `Infinity`, et tout ce qui est divisé par `Infinity` vaut 0. -

    D'après la spécification ECMAScript 5, Infinity est en lecture seule.

    +D'après la spécification ECMAScript 5, `Infinity` est en lecture seule. -

    Exemples

    +## Exemples -
    console.log(Infinity);          // Infinity
    +```js
    +console.log(Infinity);          // Infinity
     console.log(Infinity + 1);      // Infinity
     console.log(Math.pow(10, 1000)); // Infinity
     console.log(Math.log(0));       // -Infinity
    -console.log(1 / Infinity);      // 0
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3
    {{SpecName('ES5.1', '#sec-15.1.1.2', 'Infinity')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Infinity")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.NEGATIVE_INFINITY")}}
    • -
    • {{jsxref("Number.POSITIVE_INFINITY")}}
    • -
    • {{jsxref("Number.isFinite")}}
    • -
    +console.log(1 / Infinity); // 0 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ---------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3 | +| {{SpecName('ES5.1', '#sec-15.1.1.2', 'Infinity')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Infinity")}} + +## Voir aussi + +- {{jsxref("Number.NEGATIVE_INFINITY")}} +- {{jsxref("Number.POSITIVE_INFINITY")}} +- {{jsxref("Number.isFinite")}} diff --git a/files/fr/web/javascript/reference/global_objects/int16array/index.md b/files/fr/web/javascript/reference/global_objects/int16array/index.md index c23c5289a6..ecd15ddbf3 100644 --- a/files/fr/web/javascript/reference/global_objects/int16array/index.md +++ b/files/fr/web/javascript/reference/global_objects/int16array/index.md @@ -10,125 +10,118 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array original_slug: Web/JavaScript/Reference/Objets_globaux/Int16Array --- -
    {{JSRef}}
    - -

    Le tableau typé Int16Array permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 16 bits et dans l'ordre des octets de la plate-forme. Pour avoir un contrôle sur le boutisme utilisé, il faudra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).

    - -

    Syntaxe

    - -
    new Int16Array(); // apparu avec ES2017
    -new Int16Array(longueur);
    -new Int16Array(tableauTypé);
    -new Int16Array(objet);
    -new Int16Array(buffer [, positionOctet [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les tableaux typés (TypedArray).

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}
    -
    Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de Int16Array, la propriété vaudra 2.
    -
    Int16Array.length
    -
    Une propriété de longueur qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "Int16Array.name")}}
    -
    Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de Int16Array, la propriété vaudra "Int16Array".
    -
    {{jsxref("TypedArray.prototype", "Int16Array.prototype")}}
    -
    Prototype pour les objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.from", "Int16Array.from()")}}
    -
    Crée un nouvel objet Int16Array à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    -
    {{jsxref("TypedArray.of", "Int16Array.of()")}}
    -
    Crée un nouvel objet Int16Array à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    -
    - -

    Prototype de Int16Array

    - -

    Tous les objets Int16Array héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    Int16Array.prototype.constructor
    -
    Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif Int16Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}} {{readonlyInline}}
    -
    Renvoie l'{{jsxref("ArrayBuffer")}} référencée par l'objet Int16Array. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Renvoie la longueur, exprimée en octets, de l'objet Int16Array depuis le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Renvoie le décalage, exprimé en octets, entre l'objet Int16Array et le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}} {{readonlyInline}}
    -
    Renvoie le nombre d'éléments contenus dans l'objet Int16Array. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.move", "Int16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    -
    Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet Int16Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un Int16Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`Int16Array`** permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 16 bits et dans l'ordre des octets de la plate-forme. Pour avoir un contrôle sur le boutisme utilisé, il faudra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).
    +
    +## Syntaxe
    +
    +    new Int16Array(); // apparu avec ES2017
    +    new Int16Array(longueur);
    +    new Int16Array(tableauTypé);
    +    new Int16Array(objet);
    +    new Int16Array(buffer [, positionOctet [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les [tableaux typés](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray#Syntaxe) _(TypedArray)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}
    +  - : Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de `Int16Array`, la propriété vaudra 2.
    +- `Int16Array.length`
    +  - : Une propriété de longueur qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "Int16Array.name")}}
    +  - : Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de `Int16Array`, la propriété vaudra "Int16Array".
    +- {{jsxref("TypedArray.prototype", "Int16Array.prototype")}}
    +  - : Prototype pour les objets _TypedArray_.
    +
    +## Méthodes
    +
    +- {{jsxref("TypedArray.from", "Int16Array.from()")}}
    +  - : Crée un nouvel objet `Int16Array` à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    +- {{jsxref("TypedArray.of", "Int16Array.of()")}}
    +  - : Crée un nouvel objet `Int16Array` à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    +
    +## Prototype de `Int16Array`
    +
    +Tous les objets `Int16Array` héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `Int16Array.prototype.constructor`
    +  - : Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif` Int16Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Renvoie l'{{jsxref("ArrayBuffer")}} référencée par l'objet `Int16Array`. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Renvoie la longueur, exprimée en octets, de l'objet `Int16Array` depuis le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Renvoie le décalage, exprimé en octets, entre l'objet `Int16Array` et le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}} {{readonlyInline}}
    +  - : Renvoie le nombre d'éléments contenus dans l'objet `Int16Array`. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.move", "Int16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    +  - : Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `Int16Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un `Int16Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var int16 = new Int16Array(2);
     int16[0] = 42;
     console.log(int16[0]); // 42
    @@ -152,53 +145,36 @@ var z = new Int16Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1,2,3]; }();
     var int16 = new Int16Array(iterable);
     // Int16Array[1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA. new est obligatoire.
    {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 a modifié le constructeur Int16Array afin d'utiliser l'opération interne ToIndex pour permettre de l'utiliser sans argument.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Int16Array")}}

    - -

    Notes de compatibilité

    - -

    À partir d'ECMAScript 2015 (ES6), Int16Array doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur Int16Array comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    - -
    var dv = Int16Array([1, 2, 3]);
    +```
    +
    +## Spécifications
    +
    +| Spécification                                                                        | État                             | Commentaires                                                                                                                                     |
    +| ------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
    +| {{SpecName('Typed Array')}}                                                 | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015.                                                                                                                  |
    +| {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}} | {{Spec2('ES2015')}}         | Définition initiale au sein d'un standard ECMA. `new` est obligatoire.                                                                           |
    +| {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}} | {{Spec2('ESDraft')}}     | ECMAScript 2017 a modifié le constructeur `Int16Array` afin d'utiliser l'opération interne `ToIndex` pour permettre de l'utiliser sans argument. |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Int16Array")}}
    +
    +## Notes de compatibilité
    +
    +À partir d'ECMAScript 2015 (ES6), `Int16Array` doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `Int16Array` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}.
    +
    +```js example-bad
    +var dv = Int16Array([1, 2, 3]);
     // TypeError: calling a builtin Int16Array constructor
    -// without new is forbidden
    +// without new is forbidden +``` -
    var dv = new Int16Array([1, 2, 3]);
    +```js example-good +var dv = new Int16Array([1, 2, 3]); +``` -

    Voir aussi

    +## Voir aussi - +- [Les tableaux typés (_typed arrays_) en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés "en/JavaScript typed arrays") +- {{jsxref("ArrayBuffer")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/int32array/index.md b/files/fr/web/javascript/reference/global_objects/int32array/index.md index b2eac551a2..04ab728a41 100644 --- a/files/fr/web/javascript/reference/global_objects/int32array/index.md +++ b/files/fr/web/javascript/reference/global_objects/int32array/index.md @@ -10,125 +10,118 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Int32Array original_slug: Web/JavaScript/Reference/Objets_globaux/Int32Array --- -
    {{JSRef}}
    - -

    Le tableau typé Int32Array permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 32 bits et dans l'ordre des octets de la plate-forme. Pour avoir un contrôle sur le boutisme utilisé, il faudra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).

    - -

    Syntaxe

    - -
    new Int32Array(); // apparu avec ES2017
    -new Int32Array(longueur);
    -new Int32Array(tableauTypé);
    -new Int32Array(objet);
    -new Int32Array(buffer [, positionOctet [, longueur]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les tableaux typés (TypedArray).

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}}
    -
    Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de Int32Array, la propriété vaudra 4.
    -
    Int32Array.length
    -
    Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'éléments, voir {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "Int32Array.name")}}
    -
    Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de Int32Array, la propriété vaudra "Int32Array".
    -
    {{jsxref("TypedArray.prototype", "Int32Array.prototype")}}
    -
    Prototype pour les objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    Int32Array.from()
    -
    Crée un nouvel objet Int32Array à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    -
    Int32Array.of()
    -
    Crée un nouvel objet Int32Array à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}
    -
    - -

    Prototype de Int32Array

    - -

    Tous les objets Int32Array héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    Int32Array.prototype.constructor
    -
    Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif Int32Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "Int32Array.prototype.buffer")}} {{readonlyInline}}
    -
    Renvoie l'{{jsxref("ArrayBuffer")}} référencée par l'objet Int32Array. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteLength", "Int32Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Renvoie la longueur, exprimée en octets, de l'objet Int32Array depuis le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "Int32Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Renvoie le décalage, exprimé en octets, entre l'objet Int32Array et le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}} {{readonlyInline}}
    -
    Renvoie le nombre d'éléments contenus dans l'objet Int32Array. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en lecture seule.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "Int32Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "Int32Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "Int32Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "Int32Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.move", "Int32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    -
    Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "Int32Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "Int32Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet Int32Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "Int32Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet Int32Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`Int32Array`** permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 32 bits et dans l'ordre des octets de la plate-forme. Pour avoir un contrôle sur le boutisme utilisé, il faudra utiliser un objet {{jsxref("DataView")}} à la place. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).
    +
    +## Syntaxe
    +
    +    new Int32Array(); // apparu avec ES2017
    +    new Int32Array(longueur);
    +    new Int32Array(tableauTypé);
    +    new Int32Array(objet);
    +    new Int32Array(buffer [, positionOctet [, longueur]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les [tableaux typés](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray#Syntaxe) _(TypedArray)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}}
    +  - : Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de `Int32Array`, la propriété vaudra 4.
    +- `Int32Array.length`
    +  - : Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'éléments, voir {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "Int32Array.name")}}
    +  - : Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de `Int32Array`, la propriété vaudra "Int32Array".
    +- {{jsxref("TypedArray.prototype", "Int32Array.prototype")}}
    +  - : Prototype pour les objets _TypedArray_.
    +
    +## Méthodes
    +
    +- Int32Array.from()
    +  - : Crée un nouvel objet `Int32Array` à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    +- Int32Array.of()
    +  - : Crée un nouvel objet `Int32Array` à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}
    +
    +## Prototype de `Int32Array`
    +
    +Tous les objets `Int32Array` héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `Int32Array.prototype.constructor`
    +  - : Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera le constructeur natif` Int32Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "Int32Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Renvoie l'{{jsxref("ArrayBuffer")}} référencée par l'objet `Int32Array`. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteLength", "Int32Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Renvoie la longueur, exprimée en octets, de l'objet `Int32Array` depuis le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.byteOffset", "Int32Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Renvoie le décalage, exprimé en octets, entre l'objet `Int32Array` et le début de l'{{jsxref("ArrayBuffer")}} correspondant. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +- {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}} {{readonlyInline}}
    +  - : Renvoie le nombre d'éléments contenus dans l'objet `Int32Array`. Cette propriété est déterminée lors de la construction de l'objet et n'est accessible qu'en **lecture seule**.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "Int32Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "Int32Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "Int32Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "Int32Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.move", "Int32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    +  - : Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "Int32Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "Int32Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `Int32Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "Int32Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `Int32Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var int32 = new Int32Array(2);
     int32[0] = 42;
     console.log(int32[0]); // 42
    @@ -152,53 +145,36 @@ var z = new Int32Array(buffer, 0, 4);
     var iterable = function*(){ yield* [1,2,3]; }();
     var int32 = new Int32Array(iterable);
     // Int32Array[1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA. new est obligatoire.
    {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 a modifié le constructeur afin de pouvoir utiliser l'opération interne ToIndex et permettre de l'utiliser sans argument.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Int32Array")}}

    - -

    Notes de compatibilité

    - -

    À partir d'ECMAScript 2015 (ES6), Int32Array doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur Int32Array comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    - -
    var dv = Int32Array([1, 2, 3]);
    +```
    +
    +## Spécifications
    +
    +| Spécification                                                                        | État                             | Commentaires                                                                                                                               |
    +| ------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
    +| {{SpecName('Typed Array')}}                                                 | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015.                                                                                                            |
    +| {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}} | {{Spec2('ES2015')}}         | Définition initiale au sein d'un standard ECMA. `new` est obligatoire.                                                                     |
    +| {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}} | {{Spec2('ESDraft')}}     | ECMAScript 2017 a modifié le constructeur afin de pouvoir utiliser l'opération interne `ToIndex` et permettre de l'utiliser sans argument. |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Int32Array")}}
    +
    +## Notes de compatibilité
    +
    +À partir d'ECMAScript 2015 (ES6), `Int32Array` doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `Int32Array` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}.
    +
    +```js example-bad
    +var dv = Int32Array([1, 2, 3]);
     // TypeError: calling a builtin Int32Array constructor
    -// without new is forbidden
    +// without new is forbidden +``` -
    var dv = new Int32Array([1, 2, 3]);
    +```js example-good +var dv = new Int32Array([1, 2, 3]); +``` -

    Voir aussi

    +## Voir aussi - +- [Les tableaux typés (_typed arrays_) en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés "en/JavaScript typed arrays") +- {{jsxref("ArrayBuffer")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/int8array/index.md b/files/fr/web/javascript/reference/global_objects/int8array/index.md index b15a6f7ffd..9ba2e0b403 100644 --- a/files/fr/web/javascript/reference/global_objects/int8array/index.md +++ b/files/fr/web/javascript/reference/global_objects/int8array/index.md @@ -11,125 +11,118 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Int8Array original_slug: Web/JavaScript/Reference/Objets_globaux/Int8Array --- -
    {{JSRef}}
    - -

    Le tableau typé Int8Array permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 8 bits. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).

    - -

    Syntaxe

    - -
    new Int8Array(); // apparu avec ES2017
    -new Int8Array(length);
    -new Int8Array(typedArray);
    -new Int8Array(object);
    -new Int8Array(buffer [, byteOffset [, length]]);
    - -

    Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les tableaux typés (TypedArray).

    - -

    Propriétés

    - -
    -
    {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}}
    -
    Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de Int8Array, la propriété vaudra 1.
    -
    Int8Array.length
    -
    Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}}.
    -
    {{jsxref("TypedArray.name", "Int8Array.name")}}
    -
    Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de Int8Array, la propriété vaudra "Int8Array".
    -
    {{jsxref("TypedArray.prototype", "Int8Array.prototype")}}
    -
    Prototype pour les objets TypedArray.
    -
    - -

    Méthodes

    - -
    -
    Int8Array.from()
    -
    Crée un nouvel objet Int8Array à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    -
    Int8Array.of()
    -
    Crée un nouvel objet Int8Array à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    -
    - -

    Prototype de Int8Array

    - -

    Tous les objets Int8Array héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

    - -

    Propriétés

    - -
    -
    Int8Array.prototype.constructor
    -
    Renvoie la fonction qui a créé l'instance. Par défaut, c'est le constructeur Int8Array.
    -
    {{jsxref("TypedArray.prototype.buffer", "Int8Array.prototype.buffer")}} {{readonlyInline}}
    -
    Renvoie l'objet {{jsxref("ArrayBuffer")}} auquel fait référence le tableau Int8Array. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    -
    {{jsxref("TypedArray.prototype.byteLength", "Int8Array.prototype.byteLength")}} {{readonlyInline}}
    -
    Renvoie la longueur (exprimée en octet) du tableau Int8Array depuis le début du tampon {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    -
    {{jsxref("TypedArray.prototype.byteOffset", "Int8Array.prototype.byteOffset")}} {{readonlyInline}}
    -
    Renvoie le décalage (exprimé en octets) du tableau Int8Array par rapport au début du tampon {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    -
    {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}} {{readonlyInline}}
    -
    Renvoie le nombre d'éléments contenus dans le tableau Int8Array. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}
    -
    Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    -
    {{jsxref("TypedArray.every", "Int8Array.prototype.every()")}}
    -
    Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    -
    {{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}}
    -
    Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    -
    {{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}}
    -
    Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    -
    {{jsxref("TypedArray.find", "Int8Array.prototype.find()")}}
    -
    Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément undefined sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    -
    {{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}}
    -
    Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    -
    {{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}}
    -
    Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    -
    {{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}}
    -
    Détermine si le tableau typé contient un élément donné. Cette méthode renvoie true ou false selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    -
    {{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}}
    -
    Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    -
    {{jsxref("TypedArray.join", "Int8Array.prototype.join()")}}
    -
    Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    -
    {{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    -
    {{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}}
    -
    Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    -
    {{jsxref("TypedArray.map", "Int8Array.prototype.map()")}}
    -
    Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    -
    {{jsxref("TypedArray.move", "Int8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    -
    Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}.
    -
    {{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    -
    {{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}}
    -
    Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    -
    {{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}}
    -
    Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    -
    {{jsxref("TypedArray.set", "Int8Array.prototype.set()")}}
    -
    Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    -
    {{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}}
    -
    Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    -
    {{jsxref("TypedArray.some", "Int8Array.prototype.some()")}}
    -
    Renvoie true si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    -
    {{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}}
    -
    Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    -
    {{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}}
    -
    Renvoie un nouvel objet Int8Array qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    -
    {{jsxref("TypedArray.values", "Int8Array.prototype.values()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    -
    {{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}}
    -
    Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    -
    {{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}}
    -
    Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    -
    {{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}}
    -
    Renvoie un nouvel objet Array Iterator qui contient les valeurs correspondantes à chaque indice du tableau.
    -
    - -

    Exemples

    - -

    Différentes façons de créer un objet Int8Array :

    - -
    // Construction à partir d'une longueur
    +{{JSRef}}
    +
    +Le tableau typé **`Int8Array`** permet de représenter un tableau d'entiers signés (en complément à deux) représentés sur 8 bits. Les éléments du tableau sont initialisés à 0. Une fois le tableau construit, il est possible de faire référence aux éléments en utilisant les méthodes de l'objet ou en utilisant la notation usuelle de parcours d'un tableau (la syntaxe utilisant les crochets).
    +
    +## Syntaxe
    +
    +    new Int8Array(); // apparu avec ES2017
    +    new Int8Array(length);
    +    new Int8Array(typedArray);
    +    new Int8Array(object);
    +    new Int8Array(buffer [, byteOffset [, length]]);
    +
    +Pour plus d'informations sur la syntaxe du constructeur, voir la page sur les [tableaux typés](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray#Syntaxe) _(TypedArray)_.
    +
    +## Propriétés
    +
    +- {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}}
    +  - : Renvoie un nombre représentant la taille d'un élément du tableau en termes d'octets. Dans le cas de `Int8Array`, la propriété vaudra 1.
    +- `Int8Array.length`
    +  - : Une propriété de longueur statique qui vaut 3. Pour connaître le nombre d'élément, voir {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}}.
    +- {{jsxref("TypedArray.name", "Int8Array.name")}}
    +  - : Renvoie la chaîne de caractère représentant le nom du constructeur. Dans le cas de `Int8Array`, la propriété vaudra "Int8Array".
    +- {{jsxref("TypedArray.prototype", "Int8Array.prototype")}}
    +  - : Prototype pour les objets _TypedArray_.
    +
    +## Méthodes
    +
    +- Int8Array.from()
    +  - : Crée un nouvel objet `Int8Array` à partir d'un objet semblable à un tableau ou d'un objet itérable. Voir également la page {{jsxref("Array.from()")}}.
    +- Int8Array.of()
    +  - : Crée un nouvel objet `Int8Array` à partir d'un nombre variable d'arguments. Voir également la page {{jsxref("Array.of()")}}.
    +
    +## Prototype de `Int8Array`
    +
    +Tous les objets `Int8Array` héritent de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.
    +
    +### Propriétés
    +
    +- `Int8Array.prototype.constructor`
    +  - : Renvoie la fonction qui a créé l'instance. Par défaut, c'est le constructeur `Int8Array`.
    +- {{jsxref("TypedArray.prototype.buffer", "Int8Array.prototype.buffer")}} {{readonlyInline}}
    +  - : Renvoie l'objet {{jsxref("ArrayBuffer")}} auquel fait référence le tableau `Int8Array`. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    +- {{jsxref("TypedArray.prototype.byteLength", "Int8Array.prototype.byteLength")}} {{readonlyInline}}
    +  - : Renvoie la longueur (exprimée en octet) du tableau `Int8Array` depuis le début du tampon {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    +- {{jsxref("TypedArray.prototype.byteOffset", "Int8Array.prototype.byteOffset")}} {{readonlyInline}}
    +  - : Renvoie le décalage (exprimé en octets) du tableau `Int8Array` par rapport au début du tampon {{jsxref("ArrayBuffer")}}. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    +- {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}} {{readonlyInline}}
    +  - : Renvoie le nombre d'éléments contenus dans le tableau `Int8Array`. Cette valeur est fixée lors de la construction et est uniquement disponible en lecture.
    +
    +### Méthodes
    +
    +- {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}
    +  - : Copie une suite d'éléments d'un tableau dans le tableau. Voir également {{jsxref("Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les paires clé/valeur pour chaque indice du tableau. Voir également {{jsxref("Array.prototype.entries()")}}.
    +- {{jsxref("TypedArray.every", "Int8Array.prototype.every()")}}
    +  - : Teste si l'ensemble des éléments du tableau remplissent une certaine condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.every()")}}.
    +- {{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}}
    +  - : Remplit les éléments d'un tableau avec une certaine valeur pour les éléments compris entre un indice de début et un indice de fin. Voir également {{jsxref("Array.prototype.fill()")}}.
    +- {{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}}
    +  - : Crée un nouveau tableau dont tous les éléments proviennent de ce tableau et respectent une condition fournie par une fonction de test. Voir également {{jsxref("Array.prototype.filter()")}}.
    +- {{jsxref("TypedArray.find", "Int8Array.prototype.find()")}}
    +  - : Renvoie une valeur trouvée dans le tableau s'il existe un élément du tableau qui satisfait une condition fournie par une fonction de test, s'il n'y a pas de tel élément `undefined` sera renvoyé. Voir également {{jsxref("Array.prototype.find()")}}.
    +- {{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}}
    +  - : Renvoie l'indice d'un élément qui satisfait une condition fournie par une fonction de test, si aucun élément ne remplit la condition -1 sera renvoyé. Voir également {{jsxref("Array.prototype.findIndex()")}}.
    +- {{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}}
    +  - : Appelle une fonction pour chacun des élément du tableau. Voir également {{jsxref("Array.prototype.forEach()")}}.
    +- {{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}}
    +  - : Détermine si le tableau typé contient un élément donné. Cette méthode renvoie `true` ou `false` selon le cas de figure. Voir également {{jsxref("Array.prototype.includes()")}}.
    +- {{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}}
    +  - : Renvoie le premier indice (le plus petit) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.indexOf()")}}.
    +- {{jsxref("TypedArray.join", "Int8Array.prototype.join()")}}
    +  - : Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir également {{jsxref("Array.prototype.join()")}}.
    +- {{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les clés de chaque indice du tableau. Voir également {{jsxref("Array.prototype.keys()")}}.
    +- {{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}}
    +  - : Renvoie le dernier indice (le plus élevé) d'un élément du tableau qui est égal à la valeur fournie. Si aucun élément ne correspond, la valeur -1 sera renvoyée. Voir également {{jsxref("Array.prototype.lastIndexOf()")}}.
    +- {{jsxref("TypedArray.map", "Int8Array.prototype.map()")}}
    +  - : Crée un nouveau tableau dont les éléments sont les images des éléments du tableau courant par une fonction donnée. Voir également {{jsxref("Array.prototype.map()")}}.
    +- {{jsxref("TypedArray.move", "Int8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
    +  - : Ancienne version, non-standard, de {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}.
    +- {{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de gauche à droite) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduce()")}}.
    +- {{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}}
    +  - : Applique une fonction sur un accumulateur et chaque élément du tableau (de droite à gauche) afin de réduire le tableau en une seule valeur. Voir également {{jsxref("Array.prototype.reduceRight()")}}.
    +- {{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}}
    +  - : Inverse l'ordre des éléments d'un tableau. Le premier élément du tableau devient le dernier et le dernier devient le premier (et ainsi de suite). Voir également {{jsxref("Array.prototype.reverse()")}}.
    +- {{jsxref("TypedArray.set", "Int8Array.prototype.set()")}}
    +  - : Enregistre plusieurs valeurs dans le tableau typé à partir de valeurs d'un autre tableau.
    +- {{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}}
    +  - : Extrait un fragment d'un tableau et renvoie ce fragment. Voir également {{jsxref("Array.prototype.slice()")}}.
    +- {{jsxref("TypedArray.some", "Int8Array.prototype.some()")}}
    +  - : Renvoie `true` si au moins un des éléments remplit une condition donnée par une fonction de test. Voir également {{jsxref("Array.prototype.some()")}}.
    +- {{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}}
    +  - : Trie les éléments du tableau et renvoie ce tableau. Voir également {{jsxref("Array.prototype.sort()")}}.
    +- {{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}}
    +  - : Renvoie un nouvel objet `Int8Array` qui est le fragment du tableau courant, entre les indices de début et de fin donnés.
    +- {{jsxref("TypedArray.values", "Int8Array.prototype.values()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau. Voir également {{jsxref("Array.prototype.values()")}}.
    +- {{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}}
    +  - : Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toLocaleString()")}}.
    +- {{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}}
    +  - : Renvoie une chaîne de caractère qui représente le tableau et ses éléments. Voir également {{jsxref("Array.prototype.toString()")}}.
    +- {{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}}
    +  - : Renvoie un nouvel objet `Array Iterator` qui contient les valeurs correspondantes à chaque indice du tableau.
    +
    +## Exemples
    +
    +Différentes façons de créer un objet `Int8Array` :
    +
    +```js
    +// Construction à partir d'une longueur
     var int8 = new Int8Array(2);
     int8[0] = 42;
     console.log(int8[0]); // 42
    @@ -153,53 +146,36 @@ var z = new Int8Array(buffer, 1, 4);
     var iterable = function*(){ yield* [1,2,3]; }();
     var int8 = new Int8Array(iterable);
     // Int8Array[1, 2, 3]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Remplacée dans ECMAScript 2015.
    {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Définition initiale au sein d'un standard ECMA. new est obligatoire.
    {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 a modifié le constructeur afin d'utiliser l'opération interne ToIndex et permettre de l'utiliser sans constructeur.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Int8Array")}}

    - -

    Notes de compatibilité

    - -

    À partir d'ECMAScript 2015 (ES6), Int8Array doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur Int8Array comme une fonction, sans new, provoquera une exception {{jsxref("TypeError")}}.

    - -
    var dv = Int8Array([1, 2, 3]);
    +```
    +
    +## Spécifications
    +
    +| Spécification                                                                        | État                             | Commentaires                                                                                                                          |
    +| ------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
    +| {{SpecName('Typed Array')}}                                                 | {{Spec2('Typed Array')}} | Remplacée dans ECMAScript 2015.                                                                                                       |
    +| {{SpecName('ES2015', '#table-49', 'TypedArray constructors')}} | {{Spec2('ES2015')}}         | Définition initiale au sein d'un standard ECMA. `new` est obligatoire.                                                                |
    +| {{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}} | {{Spec2('ESDraft')}}     | ECMAScript 2017 a modifié le constructeur afin d'utiliser l'opération interne `ToIndex` et permettre de l'utiliser sans constructeur. |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Int8Array")}}
    +
    +## Notes de compatibilité
    +
    +À partir d'ECMAScript 2015 (ES6), `Int8Array` doit être utilisé avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `Int8Array` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}.
    +
    +```js example-bad
    +var dv = Int8Array([1, 2, 3]);
     // TypeError: calling a builtin Int8Array constructor
    -// without new is forbidden
    +// without new is forbidden +``` -
    var dv = new Int8Array([1, 2, 3]);
    +```js example-good +var dv = new Int8Array([1, 2, 3]); +``` -

    Voir aussi

    +## Voir aussi - +- [Les tableaux typés (_typed arrays_) en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés "en/JavaScript typed arrays") +- {{jsxref("ArrayBuffer")}} +- {{jsxref("DataView")}} diff --git a/files/fr/web/javascript/reference/global_objects/internalerror/index.md b/files/fr/web/javascript/reference/global_objects/internalerror/index.md index 02a1e3afdd..b29240ddb4 100644 --- a/files/fr/web/javascript/reference/global_objects/internalerror/index.md +++ b/files/fr/web/javascript/reference/global_objects/internalerror/index.md @@ -9,70 +9,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/InternalError original_slug: Web/JavaScript/Reference/Objets_globaux/InternalError --- -
    {{JSRef}} {{non-standard_header}}
    +{{JSRef}} {{non-standard_header}} -

    L'objet InternalError indique qu'une erreur liée au moteur JavaScript s'est produite. Par exemple "InternalError : Niveau de récursion trop important".

    +L'objet **`InternalError`** indique qu'une erreur liée au moteur JavaScript s'est produite. Par exemple **"InternalError** : Niveau de récursion trop important". -

    Syntaxe

    +## Syntaxe -
    new InternalError([message[, fileName[, lineNumber]]])
    + new InternalError([message[, fileName[, lineNumber]]]) -

    Paramètres

    +### Paramètres -
    -
    message
    -
    Paramètre optionnel. Une description de l'erreur compréhensible pour un être humain.
    -
    fileName {{Non-standard_inline}}
    -
    Paramètre optionnel. Le nom du fichier contenant le code à l'origine de l'erreur.
    -
    lineNumber {{Non-standard_inline}}
    -
    Paramètre optionnel. Le numéro de la ligne du code à l'origine de l'erreur.
    -
    +- `message` + - : Paramètre optionnel. Une description de l'erreur compréhensible pour un être humain. +- `fileName` {{Non-standard_inline}} + - : Paramètre optionnel. Le nom du fichier contenant le code à l'origine de l'erreur. +- `lineNumber` {{Non-standard_inline}} + - : Paramètre optionnel. Le numéro de la ligne du code à l'origine de l'erreur. -

    Description

    +## Description -

    Une exception InternalError est levée à chaque fois qu'il se produit une erreur interne au moteur JavaScript.

    +Une exception `InternalError` est levée à chaque fois qu'il se produit une erreur interne au moteur JavaScript. -

    Le plus souvent, cette exception se produit lorsque quelque chose atteint un niveau trop élévé. Par exemple :

    +Le plus souvent, cette exception se produit lorsque quelque chose atteint un niveau trop élévé. Par exemple : -
      -
    • trop de cas dans une construction switch,
    • -
    • trop de parenthèses au sein d'une expression rationnelle,
    • -
    • un tableau littéral trop grand,
    • -
    • trop de niveaux de récursion.
    • -
    +- trop de cas dans une construction switch, +- trop de parenthèses au sein d'une expression rationnelle, +- un tableau littéral trop grand, +- trop de niveaux de récursion. -

    Propriétés

    +## Propriétés -
    -
    {{jsxref("InternalError.prototype")}}
    -
    Permet l'ajout de nouvelles propriétés à un objet InternalError.
    -
    +- {{jsxref("InternalError.prototype")}} + - : Permet l'ajout de nouvelles propriétés à un objet `InternalError`. -

    Méthodes

    +## Méthodes -

    L'objet global InternalError ne contient pas de méthode propre. En revanche, il hérite de certaines méthodes via sa chaîne de prototypes.

    +L'objet global `InternalError` ne contient pas de méthode propre. En revanche, il hérite de certaines méthodes via sa chaîne de prototypes. -

    Instances de InternalError

    +## Instances de `InternalError` -

    Propriétés

    +### Propriétés -
    {{page("/fr/docs/JavaScript/Reference/Objets_globaux/InternalError/prototype","Properties")}}
    +{{page("/fr/docs/JavaScript/Reference/Objets_globaux/InternalError/prototype","Properties")}} -

    Méthodes

    +### Méthodes -
    {{page("/fr/docs/JavaScript/Reference/Objets_globaux/InternalError/prototype","Methods")}}
    +{{page("/fr/docs/JavaScript/Reference/Objets_globaux/InternalError/prototype","Methods")}} -

    Spécifications

    +## Spécifications -

    Cet objet ne fait partie d'aucune spécification.

    +Cet objet ne fait partie d'aucune spécification. -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.InternalError")}}

    +{{Compat("javascript.builtins.InternalError")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Error")}}
    • -
    • {{jsxref("InternalError.prototype")}}
    • -
    +- {{jsxref("Error")}} +- {{jsxref("InternalError.prototype")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/collator/compare/index.md b/files/fr/web/javascript/reference/global_objects/intl/collator/compare/index.md index 90931a110d..0c4e0f30e3 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/collator/compare/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/collator/compare/index.md @@ -13,86 +13,67 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Collator/compare --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Collator.prototype.compare() compare deux chaînes de caractères en tenant compte des options spécifiées pour la locale et l'ordre de tri dans l'objet {{jsxref("Collator")}}.

    +La méthode **`Intl.Collator.prototype.compare()`** compare deux chaînes de caractères en tenant compte des options spécifiées pour la locale et l'ordre de tri dans l'objet {{jsxref("Collator")}}. -
    {{EmbedInteractiveExample("pages/js/intl-collator-prototype-compare.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-collator-prototype-compare.html")}} -

    Syntaxe

    +## Syntaxe -
    collator.compare(chaine1, chaine2)
    + collator.compare(chaine1, chaine2) -

    Paramètres

    +### Paramètres -
    -
    chaine1, chaine2
    -
    Les chaînes de caractères à comparer.
    -
    +- `chaine1`, `chaine2` + - : Les chaînes de caractères à comparer. -

    Description

    +## Description -

    L'accesseur compare renvoie un nombre qui indique le résultat de la comparaison entre chaine1 et chaine2 selon l'ordre de tri de l'objet {{jsxref("Collator")}} : la valeur obtenue sera négative si chaine1 précède chaine2, positive si chaine1 succède à chaine2, nulle si les deux chaînes sont considérées égales.

    +L'accesseur `compare` renvoie un nombre qui indique le résultat de la comparaison entre `chaine1` et `chaine2` selon l'ordre de tri de l'objet {{jsxref("Collator")}} : la valeur obtenue sera négative si `chaine1` précède `chaine2`, positive si `chaine1` succède à `chaine2`, nulle si les deux chaînes sont considérées égales. -

    Exemples

    +## Exemples -

    Utiliser compare() pour trier un tableau

    +### Utiliser `compare()` pour trier un tableau -

    Dans cet exemple, on utilise la fonction de l'accesseur compare pour trier des tableaux. On observe que la fonction est liée à l'objet Collator, on peut donc directement la passer à la méthode {{jsxref("Array.prototype.sort()")}}.

    +Dans cet exemple, on utilise la fonction de l'accesseur `compare` pour trier des tableaux. On observe que la fonction est liée à l'objet `Collator`, on peut donc directement la passer à la méthode {{jsxref("Array.prototype.sort()")}}. -
    var a = ["Offenbach", "Österreich", "Odenwald"];
    +```js
    +var a = ["Offenbach", "Österreich", "Odenwald"];
     var collator = new Intl.Collator("de-u-co-phonebk");
     a.sort(collator.compare);
     console.log(a.join(", "));
    -// → "Odenwald, Österreich, Offenbach"
    +// → "Odenwald, Österreich, Offenbach" +``` -

    Utiliser compare() pour chercher dans un tableau

    +### Utiliser `compare()` pour chercher dans un tableau -

    Ici, on utilise la fonction de l'accesseur compare pour trouver les chaînes égales à une chaîne donnée parmi un tableau :

    +Ici, on utilise la fonction de l'accesseur `compare` pour trouver les chaînes égales à une chaîne donnée parmi un tableau : -
    var a = ["Congrès", "congres", "Assemblée", "poisson"];
    +```js
    +var a = ["Congrès", "congres", "Assemblée", "poisson"];
     var collator = new Intl.Collator("fr", {usage: "search", sensitivity: "base"});
     var s = "congres";
     var matches = a.filter(function (v) {
         return collator.compare(v, s) === 0;
     });
     console.log(matches.join(", "));
    -// → "Congrès, congres"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES Int 1.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.Collator.prototype.compare', 'Intl.Collator.prototype.compare')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Collator.compare")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Collator", "Intl.Collator")}}
    • -
    • {{jsxref("String.prototype.localeCompare()")}}
    • -
    +// → "Congrès, congres" +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.Collator.prototype.compare', 'Intl.Collator.prototype.compare')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Collator.compare")}} + +## Voir aussi + +- {{jsxref("Collator", "Intl.Collator")}} +- {{jsxref("String.prototype.localeCompare()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/collator/index.md b/files/fr/web/javascript/reference/global_objects/intl/collator/index.md index 32b32ac4ef..497d476044 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/collator/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/collator/index.md @@ -12,164 +12,137 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Collator --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.Collator est un constructeur de « collecteurs », des objets permettant de comparer des chaînes de caractères en tenant compte de la locale.

    +L'objet **`Intl.Collator`** est un constructeur de « collecteurs », des objets permettant de comparer des chaînes de caractères en tenant compte de la locale. -
    {{EmbedInteractiveExample("pages/js/intl-collator.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-collator.html")}} -

    Syntaxe

    +## Syntaxe -
    new Intl.Collator([locales [, options]])
    + new Intl.Collator([locales [, options]]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    -

    Une chaîne de caractères avec une balise de langue BCP 47 ou un tableau qui contient des chaînes dans ce format. Pour plus d'informations sur le format et l'interprétation de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}. Pour ce constructeur, les clés d'extensions Unicode suivantes sont acceptées :

    +- `locales` -
    -
    co
    -
    Les variantes dans les méthodes de regroupement (« collation ») des chaînes de caractères. Les valeurs autorisées pour cette clé sont : "big5han", "dict", "direct", "ducet", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad", "unihan". Les valeurs "standard" et "search" sont ignorées. Elles sont remplacées par la propriété usage de l'argument options (voir ci-après).
    -
    kn
    -
    Indique si on ordonne les nombres (par exemple : "1" < "2" < "10"). Les valeurs possibles sont "true" et "false". Cette option est également disponible via une propriété de l'objet options. Si l'extension Unicode et la propriété de l'objet options sont définies, ce sera cette dernière qui sera prise en compte.
    -
    kf
    -
    Indique si on ordonne les majuscules avant les minuscules ou l'inverse. Les valeurs possibles sont "upper", "lower", ou "false" (on utilise alors l'ordre par défaut de la locale). Cette option est également disponible via une propriété de l'objet options. Si l'extension Unicode et la propriété de l'objet options sont définies, ce sera cette dernière qui sera prise en compte.
    -
    -
    -
    options
    -
    -

    Un objet qui disposent des propriétés suivantes :

    + - : Une chaîne de caractères avec une balise de langue BCP 47 ou un tableau qui contient des chaînes dans ce format. Pour plus d'informations sur le format et l'interprétation de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}. Pour ce constructeur, les clés d'extensions Unicode suivantes sont acceptées : -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour les locales. Les valeurs possibles sont "lookup" et "best fit". La valeur par défaut est "best fit". Voir la {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}} pour plus d'informations à ce sujet.
    -
    usage
    -
    Indique l'usage de le comparaison : le tri ou la recherche de chaînes correspondantes. Les valeurs possibles sont "sort" pour le tri et "search" pour la recherche. La valeur par défaut est "sort".
    -
    sensitivity
    -
    Indique les différences entre les chaînes de caractères qui font qu'une chaîne est considérée différente d'une autre. Les valeurs possibles sont : -
      -
    • "base" : Seules les chaînes dont les lettres de base sont différentes sont considérées inégales. Par exemple : a ≠ b, a = á, a = A.
    • -
    • "accent" : Seules les chaînes de caractères dont les lettres de bases ou les accents ou les autres marques diacritiques diffèrent sont considérées inégales. Par exemple : a ≠ b, a ≠ á, a = A.
    • -
    • "case" : Seules les chaines dont les lettres de base ou la casse sont diffèrent sont considérées comme inégales. Par exemple : a ≠ b, a = á, a ≠ A.
    • -
    • "variant" : Les chaînes qui diffèrent par leurs caractères de base, leurs accents et autres marques diacritiques, la casse sont considérées comme inégales. D'autres différences peuvent également être prises en compte. Par exemple : a ≠ b, a ≠ á, a ≠ A.
    • -
    + - `co` + - : Les variantes dans les méthodes de regroupement (« collation ») des chaînes de caractères. Les valeurs autorisées pour cette clé sont : `"big5han", "dict", "direct", "ducet", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad", "unihan"`. Les valeurs `"standard"` et `"search"` sont ignorées. Elles sont remplacées par la propriété `usage` de l'argument `options` (voir ci-après). + - `kn` + - : Indique si on ordonne les nombres (par exemple : "1" < "2" < "10"). Les valeurs possibles sont `"true"` et `"false"`. Cette option est également disponible via une propriété de l'objet `options`. Si l'extension Unicode et la propriété de l'objet `options` sont définies, ce sera cette dernière qui sera prise en compte. + - `kf` + - : Indique si on ordonne les majuscules avant les minuscules ou l'inverse. Les valeurs possibles sont `"upper"`, `"lower"`, ou `"false"` (on utilise alors l'ordre par défaut de la locale). Cette option est également disponible via une propriété de l'objet `options`. Si l'extension Unicode et la propriété de l'objet `options` sont définies, ce sera cette dernière qui sera prise en compte. -

    La valeur par défaut est "variant" si on utilise la comparaison pour du tri (usage="sort"). Pour l'utilisation "search" (recherche), la valeur par défaut dépend de la locale.

    -
    -
    ignorePunctuation
    -
    Indique si la ponctuation doit être ignorée. Les valeurs possibles sont true et false. La valeur par défaut est false.
    -
    numeric
    -
    Indique si on ordonne les nombres (par exemple : "1" < "2" < "10"). Les valeurs possibles sont true et false. La valeur par défaut est false. Si l'extension Unicode correspondante et la propriété de l'objet options sont définies, ce sera cette dernière qui sera prise en compte.
    -
    caseFirst
    -
    Indique si on ordonne les majuscules avant les minuscules ou l'inverse. Les valeurs possibles sont "upper", "lower", ou "false" (on utilise alors l'ordre par défaut de la locale), la valeur par défaut est "false". Si l'extension Unicode correspondante et la propriété de l'objet options sont définies, ce sera cette dernière qui sera prise en compte.
    -
    -
    -
    +- `options` -

    Description

    + - : Un objet qui disposent des propriétés suivantes : -

    L'objet Intl.Collator possède les propriétés et méthodes suivantes :

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour les locales. Les valeurs possibles sont `"lookup"` et `"best fit"`. La valeur par défaut est "best fit". Voir la {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}} pour plus d'informations à ce sujet. + - `usage` + - : Indique l'usage de le comparaison : le tri ou la recherche de chaînes correspondantes. Les valeurs possibles sont "sort" pour le tri et "search" pour la recherche. La valeur par défaut est "sort". + - `sensitivity` -

    Propriétés

    + - : Indique les différences entre les chaînes de caractères qui font qu'une chaîne est considérée différente d'une autre. Les valeurs possibles sont : -
    -
    {{jsxref("Collator.prototype", "Intl.Collator.prototype")}}
    -
    Permet d'ajouter des propriétés à toutes les instances.
    -
    + - `"base"` : Seules les chaînes dont les lettres de base sont différentes sont considérées inégales. Par exemple : a ≠ b, a = á, a = A. + - `"accent"` : Seules les chaînes de caractères dont les lettres de bases ou les accents ou les autres marques diacritiques diffèrent sont considérées inégales. Par exemple : a ≠ b, a ≠ á, a = A. + - `"case"` : Seules les chaines dont les lettres de base ou la casse sont diffèrent sont considérées comme inégales. Par exemple : a ≠ b, a = á, a ≠ A. + - `"variant"` : Les chaînes qui diffèrent par leurs caractères de base, leurs accents et autres marques diacritiques, la casse sont considérées comme inégales. D'autres différences peuvent également être prises en compte. Par exemple : a ≠ b, a ≠ á, a ≠ A. -

    Méthodes

    + La valeur par défaut est `"variant"` si on utilise la comparaison pour du tri (usage=`"sort"`). Pour l'utilisation `"search"` (recherche), la valeur par défaut dépend de la locale. -
    -
    {{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
    -
    Renvoie un tableau qui contient les locales supportées pour lesquelles il n'est pas nécessaire de revenir à la locale par défaut de l'environnement.
    -
    + - `ignorePunctuation` + - : Indique si la ponctuation doit être ignorée. Les valeurs possibles sont `true` et `false`. La valeur par défaut est `false`. + - `numeric` + - : Indique si on ordonne les nombres (par exemple : "1" < "2" < "10"). Les valeurs possibles sont `true` et `false`. La valeur par défaut est `false`. Si l'extension Unicode correspondante et la propriété de l'objet `options` sont définies, ce sera cette dernière qui sera prise en compte. + - `caseFirst` + - : Indique si on ordonne les majuscules avant les minuscules ou l'inverse. Les valeurs possibles sont `"upper"`, `"lower"`, ou `"false"` (on utilise alors l'ordre par défaut de la locale), la valeur par défaut est `"false"`. Si l'extension Unicode correspondante et la propriété de l'objet `options` sont définies, ce sera cette dernière qui sera prise en compte. -

    Instances de Collator

    +## Description -

    Propriétés

    +L'objet `Intl.Collator` possède les propriétés et méthodes suivantes : -

    Les instances de Collator héritent des propriétés suivantes grâce à leur prototype :

    +### Propriétés -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Collator/prototype','Propriétés')}}
    +- {{jsxref("Collator.prototype", "Intl.Collator.prototype")}} + - : Permet d'ajouter des propriétés à toutes les instances. -

    Méthodes

    +### Méthodes -
    -

    Les instances de Collator héritent des méthodes suivantes grâce à leur prototype :

    -{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Collator/prototype','Méthodes')}}
    +- {{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}} + - : Renvoie un tableau qui contient les locales supportées pour lesquelles il n'est pas nécessaire de revenir à la locale par défaut de l'environnement. -

    Exemples

    +## Instances de `Collator` -

    Utiliser Collator

    +### Propriétés -

    L'exemple qui suit illustre les différents résultats qu'on peut obtenir :

    +Les instances de `Collator` héritent des propriétés suivantes grâce à leur prototype : -
    console.log(new Intl.Collator().compare('a', 'c')); // → une valeur négative
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Collator/prototype','Propriétés')}}
    +
    +### Méthodes
    +
    +Les instances de `Collator` héritent des méthodes suivantes grâce à leur prototype :
    +
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Collator/prototype','Méthodes')}}
    +
    +## Exemples
    +
    +### Utiliser `Collator`
    +
    +L'exemple qui suit illustre les différents résultats qu'on peut obtenir :
    +
    +```js
    +console.log(new Intl.Collator().compare('a', 'c')); // → une valeur négative
     console.log(new Intl.Collator().compare('c', 'a')); // → une valeur positive
     console.log(new Intl.Collator().compare('a', 'a')); // → 0
    -
    +``` -

    Les résultats indiqués sont génériques et en pratique peuvent varier entre les navigateurs et les versions des navigateurs. En effet les valeurs obtenues dépendent de l'implémentation. Les spécifications indiquent uniquement le signe (positif ou négatif) du résultat.

    +Les résultats indiqués sont génériques et en pratique peuvent varier entre les navigateurs et les versions des navigateurs. En effet les valeurs obtenues dépendent de l'implémentation. Les spécifications indiquent uniquement le signe (positif ou négatif) du résultat. -

    Utiliser locales

    +### Utiliser `locales` -

    Les résultats fournis par {{jsxref("Collator.prototype.compare()")}} varient selon les locales. Afin d'obtenir le bon ordre lexicographique dans votre application, il est nécessaire de spécifier la locale de l'utilisateur (et éventuellement des locales pour des cas de replis) en utilisant l'argument locales :

    +Les résultats fournis par {{jsxref("Collator.prototype.compare()")}} varient selon les locales. Afin d'obtenir le bon ordre lexicographique dans votre application, il est nécessaire de spécifier la locale de l'utilisateur (et éventuellement des locales pour des cas de replis) en utilisant l'argument `locales` : -
    // en allemand, 'ä' est équivalent à 'a' pour le tri
    +```js
    +// en allemand, 'ä' est équivalent à 'a' pour le tri
     console.log(new Intl.Collator("de").compare("ä", "z"));
     // → une valeur négative
     
     // en suédois, 'ä' arrive après 'z'
     console.log(new Intl.Collator("sv").compare("ä", "z"));
     // → une valeur positive
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les résultats fournis par {{jsxref("Collator.prototype.compare()")}} peuvent être adaptés grâce à l'argument options :

    +Les résultats fournis par {{jsxref("Collator.prototype.compare()")}} peuvent être adaptés grâce à l'argument `options` : -
    // en allemand, 'ä' est composé de la lettre de base 'a'
    +```js
    +// en allemand, 'ä' est composé de la lettre de base 'a'
     console.log(new Intl.Collator("de", {sensitivity: "base"}).compare("ä", "a"));
     // → 0
     
     // en suédois, 'ä' et 'a' sont distincts en termes de base
     console.log(new Intl.Collator("sv", {sensitivity: "base"}).compare("ä", "a"));
     // → une valeur positive
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-10.1', 'Intl.Collator')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#collator-objects', 'Intl.Collator')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Collator")}}

    - -

    Voir aussi

    - -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl','Voir_aussi')}}

    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-10.1', 'Intl.Collator')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#collator-objects', 'Intl.Collator')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Collator")}} + +## Voir aussi + +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl','Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.md index 5a82466c9f..bad17cd5e5 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.md @@ -13,38 +13,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Collator/resolvedOptions --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Collator.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés reflètent les options de locale et de collation calculées à l'initialisation de l'objet {{jsxref("Collator")}}.

    +La méthode **`Intl.Collator.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés reflètent les options de locale et de collation calculées à l'initialisation de l'objet {{jsxref("Collator")}}. -
    {{EmbedInteractiveExample("pages/js/intl-collator-prototype-resolvedoptions.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-collator-prototype-resolvedoptions.html")}} -

    Syntaxe

    +## Syntaxe -
    collator.resolvedOptions()
    + collator.resolvedOptions() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet dont les propriétés reflètent les options de locale et de collations calculées lors de l'initialisation de l'objet {{jsxref("Collator")}}.

    +Un nouvel objet dont les propriétés reflètent les options de locale et de collations calculées lors de l'initialisation de l'objet {{jsxref("Collator")}}. -

    Description

    +## Description -

    L'objet renvoyé par cette méthode contient les propriétés suivantes :

    +L'objet renvoyé par cette méthode contient les propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans locale.
    -
    usage,sensitivity, ignorePunctuation
    -
    Les valeurs demandées pour ces propriétés via l'argument options ou celles utilisées par défaut.
    -
    collation
    -
    La valeur demandée pour l'extension Unicode "co" si elle est supportée par la locale utilisée, sinon "default".
    -
    numeric, caseFirst
    -
    Les valeurs demandées pour ces propriétés via l'argument options ou l'utilisation des extensions Unicode "kn" et "kf" ou les valeurs par défaut. Si l'implémentation utilisée ne supporte pas ces propriétés, elles sont omises.
    -
    +- `locale` + - : La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans `locale`. +- `usage`,`sensitivity`, `ignorePunctuation` + - : Les valeurs demandées pour ces propriétés via l'argument `options` ou celles utilisées par défaut. +- `collation` + - : La valeur demandée pour l'extension Unicode `"co"` si elle est supportée par la locale utilisée, sinon `"default"`. +- `numeric`, `caseFirst` + - : Les valeurs demandées pour ces propriétés via l'argument `options` ou l'utilisation des extensions Unicode `"kn"` et `"kf"` ou les valeurs par défaut. Si l'implémentation utilisée ne supporte pas ces propriétés, elles sont omises. -

    Exemples

    +## Exemples -
    var de = new Intl.Collator('de', { sensitivity: 'base' })
    +```js
    +var de = new Intl.Collator('de', { sensitivity: 'base' })
     var usedOptions = de.resolvedOptions();
     
     usedOptions.locale;            // "de"
    @@ -52,41 +51,21 @@ usedOptions.usage;             // "sort"
     usedOptions.sensitivity;        // "base"
     usedOptions.ignorePunctuation; // false
     usedOptions.collation;         // "default"
    -usedOptions.numeric;           // false
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}}{{Spec2('ES Int 2.0')}}
    {{SpecName('ES Int Draft', '#sec-Intl.Collator.prototype.resolvedOptions', 'Intl.Collator.prototype.resolvedOptions')}}{{Spec2('ES Int Draft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Collator.resolvedOptions")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Collator", "Intl.Collator")}}
    • -
    +usedOptions.numeric; // false +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}} | {{Spec2('ES Int 2.0')}} | | +| {{SpecName('ES Int Draft', '#sec-Intl.Collator.prototype.resolvedOptions', 'Intl.Collator.prototype.resolvedOptions')}} | {{Spec2('ES Int Draft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Collator.resolvedOptions")}} + +## Voir aussi + +- {{jsxref("Collator", "Intl.Collator")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.md index 763a01dd1c..665b0ff858 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.md @@ -12,84 +12,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Collator/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Collator.supportedLocalesOf() renvoie, parmi les locales fournies, un tableau contenant les locales supportées et qui ne nécessitent pas d'utiliser la locale par défaut de l'environnement.

    +La méthode **`Intl.Collator.supportedLocalesOf()`** renvoie, parmi les locales fournies, un tableau contenant les locales supportées et qui ne nécessitent pas d'utiliser la locale par défaut de l'environnement. -
    {{EmbedInteractiveExample("pages/js/intl-collator-prototype-supportedlocalesof.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-collator-prototype-supportedlocalesof.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.Collator.supportedLocalesOf(locales [, options])
    + Intl.Collator.supportedLocalesOf(locales [, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Une chaîne de caractères qui est une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations concernant la forme générale de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}.
    -
    options{{optional_inline}}
    -
    -

    Paramètre facultatif. Un objet qui peut posséder les propriétés suivantes :

    +- `locales` + - : Une chaîne de caractères qui est une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations concernant la forme générale de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}. +- `options`{{optional_inline}} -
    -
    localeMatcher
    -
    -

    L'algorithme utilisé pour la correspondance entre chaînes de caractères. Les valeurs possibles sont "lookup" et "best fit". La valeur par défaut est "best fit". Pour plus d'informations, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}.

    -
    -
    -
    -
    + - : Paramètre facultatif. Un objet qui peut posséder les propriétés suivantes : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme utilisé pour la correspondance entre chaînes de caractères. Les valeurs possibles sont `"lookup"` et `"best fit"`. La valeur par défaut est `"best fit"`. Pour plus d'informations, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langues qui sont prises en charge pour la collation sans qu'il faille utiliser la locale par défaut de l'environnement d'exécution.

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langues qui sont prises en charge pour la collation sans qu'il faille utiliser la locale par défaut de l'environnement d'exécution. -

    Cette méthode renvoie un tableau qui est un sous-ensemble des balises de locales fournies avec l'argument locales. Les balises renvoyées sont celles supportées par l'environnement navigateur en termes de collation (comparaison) et qui ne nécessitent pas d'utiliser la locale par défaut.

    +## Description -

    Exemples

    +Cette méthode renvoie un tableau qui est un sous-ensemble des balises de locales fournies avec l'argument `locales`. Les balises renvoyées sont celles supportées par l'environnement navigateur en termes de collation (comparaison) et qui ne nécessitent pas d'utiliser la locale par défaut. -

    Si on dispose d'un environnement (un navigateur par exemple) qui supporte la comparaison de chaînes dans les locales indonésienne, allemande mais pas balinaise,  supportedLocalesOf renvoie les balises pour l'indonésien et l'allemand quand bien même la collation avec pinyin n'est pas utilisée avec l'indonésien et qu'il n'existe pas une version spécifique de l'allemand pour l'Indonésie. On illustre ici l'algorithme "lookup". SI on utilisait "best fit" pour trouver les locales correspondantes, on aurait pu avoir une balise supplémentaire pour le balinais en plus car la plupart des balinais comprennent l'indonésien.

    +## Exemples -
    var locales = ["ban", "id-u-co-pinyin", "de-ID"];
    +Si on dispose d'un environnement (un navigateur par exemple) qui supporte la comparaison de chaînes dans les locales indonésienne, allemande mais pas balinaise,  `supportedLocalesOf` renvoie les balises pour l'indonésien et l'allemand quand bien même la collation avec pinyin n'est pas utilisée avec l'indonésien et qu'il n'existe pas une version spécifique de l'allemand pour l'Indonésie. On illustre ici l'algorithme `"lookup"`. SI on utilisait `"best fit"` pour trouver les locales correspondantes, on aurait pu avoir une balise supplémentaire pour le balinais en plus car la plupart des balinais comprennent l'indonésien.
    +
    +```js
    +var locales = ["ban", "id-u-co-pinyin", "de-ID"];
     var options = {localeMatcher: "lookup"};
     console.log(Intl.Collator.supportedLocalesOf(locales, options).join(", "));
    -// → "id-u-co-pinyin, de-ID"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.Collator.supportedLocalesOf', 'Intl.Collator.supportedLocalesOf')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Collator.supportedLocalesOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Collator", "Intl.Collator")}}
    • -
    +// → "id-u-co-pinyin, de-ID" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.Collator.supportedLocalesOf', 'Intl.Collator.supportedLocalesOf')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Collator.supportedLocalesOf")}} + +## Voir aussi + +- {{jsxref("Collator", "Intl.Collator")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/format/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/format/index.md index b04b345861..1fb93f7064 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/format/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/format/index.md @@ -12,56 +12,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/format --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.DateTimeFormat.prototype.format() est un accesseur formate une date selon les options de locale et de format de l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}.

    +La méthode **`Intl.DateTimeFormat.prototype.format()`** est un accesseur formate une date selon les options de locale et de format de l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}. -
    {{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-format.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-format.html")}} -

    Syntaxe

    +## Syntaxe -
    dateTimeFormat.format(date)
    + dateTimeFormat.format(date) -

    Paramètres

    +### Paramètres -
    -
    date
    -
    La date à formater.
    -
    +- `date` + - : La date à formater. -

    Description

    +## Description -

    L'accesseur format permet de formater une date en une chaîne de caractères en fonction des options de locale et de format définies pour l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}.

    +L'accesseur `format` permet de formater une date en une chaîne de caractères en fonction des options de locale et de format définies pour l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}. -

    Exemples

    +## Exemples -

    Utiliser format

    +### Utiliser `format` -

    On peut utiliser la fonction renvoyée par l'accesseur format pour formater une date. Par exemple selon la locale serbe :

    +On peut utiliser la fonction renvoyée par l'accesseur `format` pour formater une date. Par exemple selon la locale serbe : -
    var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
    +```js
    +var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
     var dateTimeFormat = new Intl.DateTimeFormat("sr-RS", options);
     console.log(dateTimeFormat.format(new Date()));
    -// → "недеља, 7. април 2013."
    +// → "недеља, 7. април 2013." +``` -

    Utiliser format avec map()

    +### Utiliser `format` avec `map()` -

    On peut également utiliser la fonction renvoyée par l'accesseur format pour formater toutes les dates d'un tableau. On observe que la fonction est liée à l'objet DateTimeFormat dont elle provient, on peut donc la passer directement à {{jsxref("Array.prototype.map()")}}.

    +On peut également utiliser la fonction renvoyée par l'accesseur `format` pour formater toutes les dates d'un tableau. On observe que la fonction est liée à l'objet `DateTimeFormat` dont elle provient, on peut donc la passer directement à {{jsxref("Array.prototype.map()")}}. -
    var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
    +```js
    +var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
     var options = {year: "numeric", month: "long"};
     var dateTimeFormat = new Intl.DateTimeFormat("pt-BR", options);
     var formatted = a.map(dateTimeFormat.format);
     console.log(formatted.join("; "));
    -// → "setembro de 2012; dezembro de 2012; abril de 2012"
    +// → "setembro de 2012; dezembro de 2012; abril de 2012" +``` -

    Comparaison des dates formatées et des valeurs statiques

    +### Comparaison des dates formatées et des valeurs statiques -

    La plupart du temps, le format renvoyé par format() est cohérent. Toutefois, cela peut évoluer à l'avenir et n'est pas garanti pour l'ensemble des langues (de telles variations sont souhaitables et permises par la spécification). Ainsi, IE et Edge ajoutent des caractères de contrôle bidirectionnels autour des dates afin que le texte produit ait une directionalité cohérente avec le texte avec lequel elles seront concaténées.

    +La plupart du temps, le format renvoyé par `format()` est cohérent. Toutefois, cela peut évoluer à l'avenir et n'est pas garanti pour l'ensemble des langues (de telles variations sont souhaitables et permises par la spécification). Ainsi, IE et Edge ajoutent des caractères de contrôle bidirectionnels autour des dates afin que le texte produit ait une directionalité cohérente avec le texte avec lequel elles seront concaténées. -

    Aussi, mieux vaut ne pas comparer un résultat fourni par format() avec une valeur statique :

    +Aussi, mieux vaut ne pas comparer un résultat fourni par `format()` avec une valeur statique : -
    let d = new Date("2019-01-01T00:00:00.000000Z");
    +```js example-bad
    +let d = new Date("2019-01-01T00:00:00.000000Z");
     let formattedDate = Intl.DateTimeFormat(undefined, {
       year: 'numeric',
       month: 'numeric',
    @@ -74,50 +77,25 @@ let formattedDate = Intl.DateTimeFormat(undefined, {
     "1.1.2019, 01:00:00" === formattedDate;
     // true pour Firefox et les autres
     // false pour IE et Edge
    -
    - -
    -

    Note : Voir aussi ce fil StackOverflow pour plus de détails et d'exemples.

    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.format', 'Intl.DateTimeFormat.format')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.DateTimeFormat.format")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString")}}
    • -
    • {{jsxref("Date.prototype.toLocaleDateString")}}
    • -
    • {{jsxref("Date.prototype.toLocaleTimeString")}}
    • -
    +``` + +> **Note :** Voir aussi ce fil [StackOverflow](https://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results) pour plus de détails et d'exemples. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.format', 'Intl.DateTimeFormat.format')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.DateTimeFormat.format")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} +- {{jsxref("Date.prototype.toLocaleString")}} +- {{jsxref("Date.prototype.toLocaleDateString")}} +- {{jsxref("Date.prototype.toLocaleTimeString")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.md index c618202292..28b72a5645 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.md @@ -9,28 +9,29 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRange original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/formatRange --- -

    {{JSRef}}

    +{{JSRef}} -

    La méthode Intl.DateTimeFormat.prototype.formatRange() permet de formater un intervalle de dates de la façon la plus concise en fonction de la locale et des options fournies lors de l'initialisation de l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}.

    +La méthode **`Intl.DateTimeFormat.prototype.formatRange()`** permet de formater un intervalle de dates de la façon la plus concise en fonction de la **`locale`** et des **`options`** fournies lors de l'initialisation de l'objet {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}. -
    {{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-formatrange.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-formatrange.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.DateTimeFormat.prototype.formatRange(dateDébut, dateFin)
    + Intl.DateTimeFormat.prototype.formatRange(dateDébut, dateFin) -

    Exemples

    +## Exemples -

    Utilisation simple de formatRange()

    +### Utilisation simple de `formatRange()` -

    Cette méthode reçoit comme arguments deux objets {{jsxref("Date")}} et renvoie l'intervalle de la façon la plus concise possible (selon les options fournies lors de l'instanciation du formateur Intl.DateTimeFormat).

    +Cette méthode reçoit comme arguments deux objets {{jsxref("Date")}} et renvoie l'intervalle de la façon la plus concise possible (selon les options fournies lors de l'instanciation du formateur [`Intl.DateTimeFormat`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)). -
    let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
    +```js
    +let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
     let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0));
     let date3 = new Date(Date.UTC(2007, 0, 20, 10, 0, 0));
    -// > 'Wed, 10 Jan 2007 10:00:00 GMT'
    -// > 'Wed, 10 Jan 2007 11:00:00 GMT'
    -// > 'Sat, 20 Jan 2007 10:00:00 GMT'
    +// > 'Wed, 10 Jan 2007 10:00:00 GMT'
    +// > 'Wed, 10 Jan 2007 11:00:00 GMT'
    +// > 'Sat, 20 Jan 2007 10:00:00 GMT'
     
     let fmt1 = new Intl.DateTimeFormat("en", {
         year: '2-digit',
    @@ -42,9 +43,9 @@ let fmt1 = new Intl.DateTimeFormat("en", {
     console.log(fmt1.format(date1));
     console.log(fmt1.formatRange(date1, date2));
     console.log(fmt1.formatRange(date1, date3));
    -// > '1/10/07, 10:00 AM'
    -// > '1/10/07, 10:00 – 11:00 AM'
    -// > '1/10/07, 10:00 AM – 1/20/07, 10:00 AM'
    +// > '1/10/07, 10:00 AM'
    +// > '1/10/07, 10:00 – 11:00 AM'
    +// > '1/10/07, 10:00 AM – 1/20/07, 10:00 AM'
     
     let fmt2 = new Intl.DateTimeFormat("en", {
         year: 'numeric',
    @@ -54,28 +55,17 @@ let fmt2 = new Intl.DateTimeFormat("en", {
     console.log(fmt2.format(date1));
     console.log(fmt2.formatRange(date1, date2));
     console.log(fmt2.formatRange(date1, date3));
    -// > 'Jan 10, 2007'
    -// > 'Jan 10, 2007'
    -// > 'Jan 10 – 20, 2007'
    -
    +// > 'Jan 10, 2007' +// > 'Jan 10, 2007' +// > 'Jan 10 – 20, 2007' +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Intl.DateTimeFormat.prototype.formatRangeBrouillon de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------- | ------------ | +| [`Intl.DateTimeFormat.prototype.formatRange`](https://rawgit.com/fabalbon/proposal-intl-DateTimeFormat-formatRange/master/out/#datetimeformat-objects) | Brouillon de niveau 3 | | -

    Voir aussi

    +## Voir aussi -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}}

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.md index 1bc99d14f8..10f3db9b19 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.md @@ -9,24 +9,25 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRangeToParts original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/formatRangeToParts --- -

    {{JSRef}}

    +{{JSRef}} -

    La fonction Intl.DateTimeFormat.prototype.formatRangeToParts() permet, selon la locale utilisée, de représenter chaque élément de l'intervalle de dates via DateTimeFormat.

    +La fonction **`Intl.DateTimeFormat.prototype.formatRangeToParts()`** permet, selon la locale utilisée, de représenter chaque élément de l'intervalle de dates via [`DateTimeFormat`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype). -

    Syntaxe

    +## Syntaxe -
    Intl.DateTimeFormat.prototype.formatRangeToParts(dateDebut, dateFin)
    + Intl.DateTimeFormat.prototype.formatRangeToParts(dateDebut, dateFin) -

    Exemples

    +## Exemples -

    Usage basique de formatRangeToParts

    +### Usage basique de `formatRangeToParts` -

    Cette fonction reçoit deux Dates et retourne un Array d'objets contenant les élements qui représentent chaque partie de l'intervalle de date formatée, selon la locale utilisée.

    +Cette fonction reçoit deux [Dates](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) et retourne un [Array](/en-US/docs/Glossary/array) d'objets contenant les élements qui représentent chaque partie de l'intervalle de date formatée, selon la locale utilisée. -
    let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
    +```js
    +let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
     let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0));
    -// > 'Wed, 10 Jan 2007 10:00:00 GMT'
    -// > 'Wed, 10 Jan 2007 11:00:00 GMT'
    +// > 'Wed, 10 Jan 2007 10:00:00 GMT'
    +// > 'Wed, 10 Jan 2007 11:00:00 GMT'
     
     let fmt = new Intl.DateTimeFormat("en", {
         hour: 'numeric',
    @@ -34,7 +35,7 @@ let fmt = new Intl.DateTimeFormat("en", {
     });
     
     console.log(fmt.formatRange(date1, date2));
    -// > '10:00 – 11:00 AM'
    +// > '10:00 – 11:00 AM'
     
     fmt.formatRangeToParts(date1, date2);
     // retourne la valeur:
    @@ -48,27 +49,15 @@ fmt.formatRangeToParts(date1, date2);
     //   { type: 'minute',    value: '00',  source: "endRange"   },
     //   { type: 'literal',   value: ' ',   source: "shared"     },
     //   { type: 'dayPeriod', value: 'AM',  source: "shared"     }
    -// ]
    +// ] +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpecificationStatusComment
    Intl.DateTimeFormat.prototype.formatRangeStage 3
    +| Specification | Status | Comment | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------- | +| [Intl.DateTimeFormat.prototype.formatRange](https://rawgit.com/fabalbon/proposal-intl-DateTimeFormat-formatRange/master/out/#datetimeformat-objects) | Stage 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs - - -

    {{Compat("javascript.builtins.Intl.DateTimeFormat.formatRangeToParts")}}

    +{{Compat("javascript.builtins.Intl.DateTimeFormat.formatRangeToParts")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.md index 4293903628..079ae0d33a 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.md @@ -13,66 +13,65 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/formatToParts --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.DateTimeFormat.prototype.formatToParts() permet de mettre en forme des chaînes de caractères avec des informations temporelles selon la locale utilisée.

    +La méthode **`Intl.DateTimeFormat.prototype.formatToParts()`** permet de mettre en forme des chaînes de caractères avec des informations temporelles selon la locale utilisée. -

    Syntaxe

    +## Syntaxe -
    Intl.DateTimeFormat.prototype.formatToParts(date)
    + Intl.DateTimeFormat.prototype.formatToParts(date) -

    Paramètres

    +### Paramètres -
    -
    date {{optional_inline}}
    -
    La date qu'on souhaite mettre en forme.
    -
    +- `date` {{optional_inline}} + - : La date qu'on souhaite mettre en forme. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau ({{jsxref("Array")}}) d'objets qui contiennent les composants de la date mis en forme.

    +Un tableau ({{jsxref("Array")}}) d'objets qui contiennent les composants de la date mis en forme. -

    Description

    +## Description -

    La méthode formatToParts() est utile lorsqu'on souhaite mettre en forme des dates de façon personnalisée. Elle renvoie un tableau d'objets qui contiennent les fragments spécifiques à la locale, à partir desquels on peut construire des chaînes tout en conservant les parties spécifique à la locale. La structure de l'objet renvoyé par la méthode est semblable à celle-ci :

    +La méthode `formatToParts()` est utile lorsqu'on souhaite mettre en forme des dates de façon personnalisée. Elle renvoie un tableau d'objets qui contiennent les fragments spécifiques à la locale, à partir desquels on peut construire des chaînes tout en conservant les parties spécifique à la locale. La structure de l'objet renvoyé par la méthode est semblable à celle-ci : -
    [
    +```js
    +[
       { type: "day", value: "17" },
       { type: "weekday", value "Monday" }
    -]
    - -

    Les types possibles sont :

    - -
    -
    day
    -
    La chaîne utilisée pour désigner le jour, par exemple "17".
    -
    dayPeriod
    -
    La chaîne utilisée pour désigner le moment de la journée, par exemple "AM" (qui désigne la matinée, avant midi) ou "PM" (qui désigne l'après-midi).
    -
    era
    -
    La chaîne utilisée pour l'ère (par exemple "BC" ou "AD").
    -
    hour
    -
    La chaîne utilisée pour l'heure (par exemple "3" or "03").
    -
    literal
    -
    La chaîne utilisée pour séparée le jour de l'heure (par exemple " : , / ").
    -
    minute
    -
    La chaîne utilisée pour les minutes (par exemple "00").
    -
    month
    -
    La chaîne utilisée pour le mois (par exemple "12").
    -
    second
    -
    La chaîne utilisée pour les secondes (par exemple "02").
    -
    timeZoneName
    -
    La chaîne utilisée pour désigner le fuseau horaire (par exemple "UTC").
    -
    weekday
    -
    La chaîne de caractères utilisée pour le jour de la semaine, par exemple "M", "Monday" ou "Montag".
    -
    year
    -
    La chaîne utilisée pour désigner l'année (par exemple "2012" ou "96").
    -
    - -

    Exemples

    - -

    DateTimeFormat produit des chaînes localisées opaques qui ne peuvent pas être manipulées directement :

    - -
    var date = Date.UTC(2012, 11, 17, 3, 0, 42);
    +]
    +```
    +
    +Les types possibles sont :
    +
    +- `day`
    +  - : La chaîne utilisée pour désigner le jour, par exemple `"17"`.
    +- `dayPeriod`
    +  - : La chaîne utilisée pour désigner le moment de la journée, par exemple `"AM"` (qui désigne la matinée, avant midi) ou `"PM"` (qui désigne l'après-midi).
    +- `era`
    +  - : La chaîne utilisée pour l'ère (par exemple `"BC"` ou `"AD"`).
    +- `hour`
    +  - : La chaîne utilisée pour l'heure (par exemple `"3"` or `"03"`).
    +- `literal`
    +  - : La chaîne utilisée pour séparée le jour de l'heure (par exemple `"` `:` `,` `/` `"`).
    +- `minute`
    +  - : La chaîne utilisée pour les minutes (par exemple `"00"`).
    +- `month`
    +  - : La chaîne utilisée pour le mois (par exemple `"12"`).
    +- `second`
    +  - : La chaîne utilisée pour les secondes (par exemple `"02"`).
    +- `timeZoneName`
    +  - : La chaîne utilisée pour désigner le fuseau horaire (par exemple `"UTC"`).
    +- `weekday`
    +  - : La chaîne de caractères utilisée pour le jour de la semaine, par exemple `"M"`, `"Monday"` ou `"Montag"`.
    +- `year`
    +  - : La chaîne utilisée pour désigner l'année (par exemple `"2012"` ou `"96"`).
    +
    +## Exemples
    +
    +`DateTimeFormat` produit des chaînes localisées opaques qui ne peuvent pas être manipulées directement :
    +
    +```js
    +var date = Date.UTC(2012, 11, 17, 3, 0, 42);
     
     var formatter = new Intl.DateTimeFormat("en-us", {
       weekday: 'long',
    @@ -88,11 +87,12 @@ var formatter = new Intl.DateTimeFormat("en-us", {
     
     formatter.format(date);
     // "Monday, 12/17/2012, 3:00:42 AM"
    -
    +``` -

    Cependant, pour de nombreuses interfaces utilisateur, on peut vouloir personnaliser la mise en forme de cette chaîne de caractères. La méthode formatToParts permet une mise en forme dans le souci de la locale en manipulant les différentes composantes :

    +Cependant, pour de nombreuses interfaces utilisateur, on peut vouloir personnaliser la mise en forme de cette chaîne de caractères. La méthode `formatToParts` permet une mise en forme dans le souci de la locale en manipulant les différentes composantes : -
    formatter.formatToParts(date);
    +```js
    +formatter.formatToParts(date);
     
     // return value:
     [
    @@ -112,54 +112,43 @@ formatter.format(date);
       { type: 'literal', value: ' '      },
       { type: 'dayPeriod', value: 'AM'     }
     ]
    -
    +``` -

    L'information étant décomposée, on peut alors la mettre en forme et la recomposée de façon adaptée :

    +L'information étant décomposée, on peut alors la mettre en forme et la recomposée de façon adaptée : -
    var dateString = formatter.formatToParts(date).map(({type, value}) => {
    +```js
    +var dateString = formatter.formatToParts(date).map(({type, value}) => {
       switch (type) {
    -    case 'dayPeriod': return `<strong>${value}</strong>`;
    +    case 'dayPeriod': return `${value}`;
         default : return value;
       }
    -}).reduce((string, part) => string + part);
    +}).reduce((string, part) => string + part);
     
     console.log(formatter.format(date));
     // "Monday, 12/17/2012, 3:00:42 AM"
     
     console.log(dateString);
    -// "Monday, 12/17/2012, 3:00:42 <strong>AM</strong>"
    - -

    Prothèse d'émulation (polyfill)

    - -

    Une prothèse de cette fonctionnalité est disponible sur le dépôt décrivant la proposition de fonctionnalité.

    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.formatToParts', 'Intl.DateTimeFormat.prototype.formatToParts')}}{{Spec2('ES Int Draft')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.DateTimeFormat.formatToParts")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    • {{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}}
    • -
    • {{jsxref("Date.prototype.toLocaleString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleDateString()")}}
    • -
    • {{jsxref("Date.prototype.toLocaleTimeString()")}}
    • -
    +// "Monday, 12/17/2012, 3:00:42 AM" +``` + +## Prothèse d'émulation (_polyfill_) + +Une prothèse de cette fonctionnalité est disponible sur le dépôt décrivant [la proposition de fonctionnalité](https://github.com/zbraniecki/proposal-intl-formatToParts). + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | -------------------- | +| {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.formatToParts', 'Intl.DateTimeFormat.prototype.formatToParts')}} | {{Spec2('ES Int Draft')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.DateTimeFormat.formatToParts")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} +- {{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}} +- {{jsxref("Date.prototype.toLocaleString()")}} +- {{jsxref("Date.prototype.toLocaleDateString()")}} +- {{jsxref("Date.prototype.toLocaleTimeString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/index.md index d8cc5bc6fd..8c1bc5333b 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/index.md @@ -10,187 +10,174 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat --- -
    {{JSRef}}
    - -

    L'objet Intl.DateTimeFormat est un constructeur d'objets permettant de formatter des dates et des heures selon une langue.

    - -
    {{EmbedInteractiveExample("pages/js/intl-datetimeformat.html")}}
    - -

    Syntaxe

    - -
    new Intl.DateTimeFormat([locales[, options]])
    -Intl.DateTimeFormat.call(this[, locales[, options]])
    - -

    Paramètres

    - -
    -
    locales{{optional_inline}}
    -
    -

    Ce paramètre optionnel est une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour utiliser la locale par défaut du navigateur, on pourra omettre cet argument (ou passer la valeur undefined). Pour le format général et l'interprétation de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. Les clefs d'extensions Unicode suivantes sont autorisées :

    - -
    -
    nu
    -
    Système de numérotation. Les valeurs possibles incluent : "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
    -
    ca
    -
    Calendrier. Les valeurs possibles incluent : "buddhist", "chinese", "coptic", "ethiopia", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
    -
    hc
    -
    Le type de cycle horaire à utiliser. Les valeurs possibles sont "h11", "h12", "h23", "h24".
    -
    -
    -
    options
    -
    -

    Un objet avec certaines ou toutes les propriétés suivantes :

    - -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}
    -
    timeZone
    -
    Le fuseau horaire à utiliser. La seule valeur que doivent reconnaitre les implémentations est "UTC" ; la valeur par défaut est le fuseau horaire du moteur JavaScript. Les implémentations peuvent aussi reconnaitre les noms de fuseau horaire de la base de données IANA de fuseaux horaires, tel que "Asia/Shanghai", "Asia/Kolkata", "America/New_York".
    -
    hour12
    -
    S'il faut utiliser le format horaire sur 12 heures (au lieu de celui-ci sur 24 heures). Les valeurs possibles sont true et false ; la valeur par défaut dépend de la locale. Cette option surcharge l'étiquette hc et/ou l'option hourCycle.
    -
    hourCycle
    -
    Le cycle horaire à utiliser. Les valeurs possibles sont "h11", "h12", "h23", "h24". Cette option surcharge l'étiquette hc mais sera remplacée par hour12 si cette dernière est présente.
    -
    formatMatcher
    -
    L'algorithme de correspondance à utiliser pour le formattage. Les valeurs possibles sont "basic" et "best fit" ; par défaut "best fit". Voir les paragraphes suivants pour des informations concernant l'usage de cette propriété.
    -
    - -

    Les propriétés suivantes décrivent les composants date-heure à utiliser pour le formattage de la sortie.  Les implémentations ont pour obligation de supporter au minimum les ensembles suivants :

    - -
      -
    • weekday, year, month, day, hour, minute, second
    • -
    • weekday, year, month, day
    • -
    • year, month, day
    • -
    • year, month
    • -
    • month, day
    • -
    • hour, minute, second
    • -
    • hour, minute
    • -
    - -

    Les implémentations peuvent supporter d'autres sous-ensembles, et les demandes seront évaluées face à toutes les combinaisons de sous-ensembles disponibles pour trouver la meilleure correspondance. Deux algorithmes sont disponibles pour cette évaluation et choisis par la propriété formatMatcher : un algorithme "basic" complètement spécifié et un algorithme "best fit" dépendant de l'implémentation.

    - -
    -
    weekday
    -
    La représentation du jour de la semaine. Les valeurs possibles sont : -
      -
    • "long" (par exemple Thursday)
    • -
    • "short" (par exemple Thu)
    • -
    • "narrow" (par exemple T). Deux jours de la semaines pourront partager la même représentation dans certaines locales (par exemple, en anglais Tuesday sera également représenté avec T en notation étroite).
    • -
    -
    -
    era
    -
    La représentation de l'ère. Les valeurs possibles sont : -
      -
    • "long" (par exemple Anno Domini)
    • -
    • "short" (par exemple AD)
    • -
    • "narrow" (par exemple A)
    • -
    -
    -
    year
    -
    La représentation de l'année. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 2012)
    • -
    • "2-digit" (par exemple 12)
    • -
    -
    -
    month
    -
    La représentation du mois. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 2)
    • -
    • "2-digit" (par exemple 02)
    • -
    • "long" (par exemple March)
    • -
    • "short" (par exemple Mar)
    • -
    • "narrow" (par exemple M). Dans certaines locales, deux mois pourront partager la même représentation avec le style étroit (par exemple, May en anglais, sera également représenté avec M).
    • -
    -
    -
    day
    -
    La représentation du jour. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 1)
    • -
    • "2-digit" (par exemple 01)
    • -
    -
    -
    hour
    -
    La représentation de l'heure. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 1)
    • -
    • "2-digit" (par exemple 01)
    • -
    -
    -
    minute
    -
    La représentation des minutes. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 1)
    • -
    • "2-digit" (par exemple 01)
    • -
    -
    -
    second
    -
    La représentation des secondes. Les valeurs possibles sont : -
      -
    • "numeric" (par exemple 1)
    • -
    • "2-digit" (par exemple 01)
    • -
    -
    -
    timeZoneName
    -
    La représentation du fuseau horaire. Les valeurs possibles sont : -
      -
    • "long" (par exemple British Summer Time)
    • -
    • "short" (par exemple GMT+1)
    • -
    -
    -
    - -

    La valeur par défaut pour chaque composante est {{jsxref("undefined")}}, mais si toutes les composantes valent undefined, alors year, month, et day seront considérés comme "numeric".

    -
    -
    - -

    Description

    - -

    Propriétés

    - -
    -
    {{jsxref("DateTimeFormat.prototype", "Intl.DateTimeFormat.prototype")}}
    -
    Permet l'ajout de propriétés à tous les objets.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}
    -
    Renvoie un tableau contenant les locales supportées parmis les locales fournies, sans qu'il soit nécessaire de recourir à la locale par défaut de l'implémentation.
    -
    - -

    Instances de DateTimeFormat

    - -

    Propriétés

    - -

    Les instances de DateTimeFormat() héritent des propriétés suivantes depuis leur prototype :

    - -
    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat/prototype','Properties')}}
    - -

    Méthodes

    - -
    -

    Les instances de DateTimeFormat() héritent des propriétés suivantes depuis leur prototype :

    -{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat/prototype','Méthodes')}}
    - -

    Exemples

    - -

    Utiliser DateTimeFormat()

    - -

    Dans une utilisation basique sans préciser de locale, DateTimeFormat() utilise la locale et les options par défaut

    - -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +{{JSRef}}
    +
    +L'objet **`Intl.DateTimeFormat`** est un constructeur d'objets permettant de formatter des dates et des heures selon une langue.
    +
    +{{EmbedInteractiveExample("pages/js/intl-datetimeformat.html")}}
    +
    +## Syntaxe
    +
    +    new Intl.DateTimeFormat([locales[, options]])
    +    Intl.DateTimeFormat.call(this[, locales[, options]])
    +
    +### Paramètres
    +
    +- `locales`{{optional_inline}}
    +
    +  - : Ce paramètre optionnel est une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour utiliser la locale par défaut du navigateur, on pourra omettre cet argument (ou passer la valeur `undefined`). Pour le format général et l'interprétation de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. Les clefs d'extensions Unicode suivantes sont autorisées :
    +
    +    - nu
    +      - : Système de numérotation. Les valeurs possibles incluent : `"arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt"`.
    +    - ca
    +      - : Calendrier. Les valeurs possibles incluent : `"buddhist", "chinese", "coptic", "ethiopia", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc"`.
    +    - `hc`
    +      - : Le type de cycle horaire à utiliser. Les valeurs possibles sont `"h11"`, `"h12"`, `"h23"`, `"h24"`.
    +
    +- `options`
    +
    +  - : Un objet avec certaines ou toutes les propriétés suivantes :
    +
    +    - `localeMatcher`
    +      - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}
    +    - `timeZone`
    +      - : Le fuseau horaire à utiliser. La seule valeur que doivent reconnaitre les implémentations est "UTC" ; la valeur par défaut est le fuseau horaire du moteur JavaScript. Les implémentations peuvent aussi reconnaitre les noms de fuseau horaire de la [base de données IANA de fuseaux horaires](https://www.iana.org/time-zones), tel que `"Asia/Shanghai"`, `"Asia/Kolkata"`, `"America/New_York"`.
    +    - `hour12`
    +      - : S'il faut utiliser le format horaire sur 12 heures (au lieu de celui-ci sur 24 heures). Les valeurs possibles sont `true` et `false` ; la valeur par défaut dépend de la locale. Cette option surcharge l'étiquette `hc` et/ou l'option `hourCycle`.
    +    - `hourCycle`
    +      - : Le cycle horaire à utiliser. Les valeurs possibles sont `"h11"`, `"h12"`, `"h23"`, `"h24"`. Cette option surcharge l'étiquette `hc` mais sera remplacée par `hour12` si cette dernière est présente.
    +    - `formatMatcher`
    +      - : L'algorithme de correspondance à utiliser pour le formattage. Les valeurs possibles sont `"basic"` et `"best fit"` ; par défaut `"best fit"`. Voir les paragraphes suivants pour des informations concernant l'usage de cette propriété.
    +
    +    Les propriétés suivantes décrivent les composants date-heure à utiliser pour le formattage de la sortie.  Les implémentations ont pour obligation de supporter au minimum les ensembles suivants :
    +
    +    - `weekday, year, month, day, hour, minute, second`
    +    - `weekday, year, month, day`
    +    - `year, month, day`
    +    - `year, month`
    +    - `month, day`
    +    - `hour, minute, second`
    +    - `hour, minute`
    +
    +    Les implémentations peuvent supporter d'autres sous-ensembles, et les demandes seront évaluées face à toutes les combinaisons de sous-ensembles disponibles pour trouver la meilleure correspondance. Deux algorithmes sont disponibles pour cette évaluation et choisis par la propriété `formatMatcher` : un [algorithme "basic" complètement spécifié](https://www.ecma-international.org/ecma-402/1.0/#BasicFormatMatcher) et un algorithme `"best fit"` dépendant de l'implémentation.
    +
    +    - `weekday`
    +
    +      - : La représentation du jour de la semaine. Les valeurs possibles sont :
    +
    +        - `"long"` (par exemple `Thursday`)
    +        - `"short"` (par exemple `Thu`)
    +        - `"narrow"` (par exemple `T`). Deux jours de la semaines pourront partager la même représentation dans certaines locales (par exemple, en anglais `Tuesday` sera également représenté avec `T` en notation étroite).
    +
    +    - `era`
    +
    +      - : La représentation de l'ère. Les valeurs possibles sont :
    +
    +        - `"long"` (par exemple `Anno Domini`)
    +        - `"short"` (par exemple `AD`)
    +        - `"narrow"` (par exemple `A`)
    +
    +    - `year`
    +
    +      - : La représentation de l'année. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `2012`)
    +        - `"2-digit"` (par exemple `12`)
    +
    +    - `month`
    +
    +      - : La représentation du mois. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `2`)
    +        - `"2-digit"` (par exemple `02`)
    +        - `"long"` (par exemple `March`)
    +        - `"short"` (par exemple `Mar`)
    +        - `"narrow"` (par exemple `M`). Dans certaines locales, deux mois pourront partager la même représentation avec le style étroit (par exemple, `May` en anglais, sera également représenté avec `M`).
    +
    +    - `day`
    +
    +      - : La représentation du jour. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `1`)
    +        - `"2-digit"` (par exemple `01`)
    +
    +    - `hour`
    +
    +      - : La représentation de l'heure. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `1`)
    +        - `"2-digit"` (par exemple `01`)
    +
    +    - `minute`
    +
    +      - : La représentation des minutes. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `1`)
    +        - `"2-digit"` (par exemple `01`)
    +
    +    - `second`
    +
    +      - : La représentation des secondes. Les valeurs possibles sont :
    +
    +        - `"numeric"` (par exemple `1`)
    +        - `"2-digit"` (par exemple `01`)
    +
    +    - `timeZoneName`
    +
    +      - : La représentation du fuseau horaire. Les valeurs possibles sont :
    +
    +        - `"long"` (par exemple `British Summer Time`)
    +        - `"short"` (par exemple `GMT+1`)
    +
    +    La valeur par défaut pour chaque composante est {{jsxref("undefined")}}, mais si toutes les composantes valent `undefined`, alors `year`, `month`, et `day` seront considérés comme `"numeric"`.
    +
    +## Description
    +
    +### Propriétés
    +
    +- {{jsxref("DateTimeFormat.prototype", "Intl.DateTimeFormat.prototype")}}
    +  - : Permet l'ajout de propriétés à tous les objets.
    +
    +### Méthodes
    +
    +- {{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}
    +  - : Renvoie un tableau contenant les locales supportées parmis les locales fournies, sans qu'il soit nécessaire de recourir à la locale par défaut de l'implémentation.
    +
    +## Instances de` DateTimeFormat`
    +
    +### Propriétés
    +
    +Les instances de` DateTimeFormat()` héritent des propriétés suivantes depuis leur prototype :
    +
    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat/prototype','Properties')}}
    +
    +### Méthodes
    +
    +Les instances de` DateTimeFormat()` héritent des propriétés suivantes depuis leur prototype :
    +
    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat/prototype','Méthodes')}}
    +
    +## Exemples
    +
    +### Utiliser `DateTimeFormat()`
    +
    +Dans une utilisation basique sans préciser de locale, `DateTimeFormat()` utilise la locale et les options par défaut
    +
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // DateTimeFormat sans arguments dépend de l'implémentation,
     // la locale par défaut, et le fuseau horaire par défaut
     console.log(new Intl.DateTimeFormat().format(date));
    -// → "20/12/2012" avec une locale fr-Fr et un fuseau horaire CEST
    +// → "20/12/2012" avec une locale fr-Fr et un fuseau horaire CEST +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Cet exemple montre quelques variations de formattage pour les dates et les heures localisées. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument locales :

    +Cet exemple montre quelques variations de formattage pour les dates et les heures localisées. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument `locales` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // les formats qui suivent se basent sur le
     // fuseau horaire CEST
    @@ -209,7 +196,7 @@ console.log(new Intl.DateTimeFormat("ko-KR").format(date));
     
     // l'arabe, dans la plupart des pays arabophones, utilise les chiffres arabes
     console.log(new Intl.DateTimeFormat("ar-EG").format(date));
    -// → "٢٠‏/١٢‏/٢٠١٢"
    +// → "٢٠‏/١٢‏/٢٠١٢"
     
     // en ce qui concerne le japonais, les applications peuvent
     // souhaiter utiliser le calendrier japonais
    @@ -221,13 +208,14 @@ console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));
     // il est possible de fournir un langage de recours (ici l'indonésien)
     console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
     // → "20/12/2012"
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les formats de la date et de l'heure peuvent être personnalisés en utilisant l'argument options :

    +Les formats de la date et de l'heure peuvent être personnalisés en utilisant l'argument `options` : -
    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    +```js
    +var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
     
     // fournir le jour de la semaine avec une date longue
     var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
    @@ -256,39 +244,20 @@ console.log(new Intl.DateTimeFormat("en-US", options));
     // pour utiliser la locale par défaut du navigateur :
     console.log(new Intl.DateTimeFormat('default', options).format(date));
     // → "12/19/2012, 19:00:00" (peut varier selon la locale du navigateur)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-12.1', 'Intl.DateTimeFormat')}}{{Spec2('ES Int 1.0')}}Première définition.
    {{SpecName('ES Int 2.0', '#sec-12.1', 'Intl.DateTimeFormat')}}{{Spec2('ES Int 2.0')}}
    {{SpecName('ES Int Draft', '#datetimeformat-objects', 'Intl.DateTimeFormat')}}{{Spec2('ES Int Draft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.DateTimeFormat")}}

    - -

    Voir aussi

    - -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}}
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-12.1', 'Intl.DateTimeFormat')}} | {{Spec2('ES Int 1.0')}} | Première définition. | +| {{SpecName('ES Int 2.0', '#sec-12.1', 'Intl.DateTimeFormat')}} | {{Spec2('ES Int 2.0')}} | | +| {{SpecName('ES Int Draft', '#datetimeformat-objects', 'Intl.DateTimeFormat')}} | {{Spec2('ES Int Draft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.DateTimeFormat")}} + +## Voir aussi + +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.md index e00599b987..26e4253671 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.md @@ -13,61 +13,62 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/resolvedOptions --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.DateTimeFormat.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés reflètent les options de format et de locale pour les heures et dates, calculées pendant l'initialisation de l'objet Intl.DateTimeFormat.

    +La méthode **`Intl.DateTimeFormat.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés reflètent les options de format et de locale pour les heures et dates, calculées pendant l'initialisation de l'objet [`Intl.DateTimeFormat`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat). -
    {{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-resolvedoptions.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-resolvedoptions.html")}} -

    Syntaxe

    +## Syntaxe -
    resolvedOptions()
    +```js +resolvedOptions() +``` -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet dont les propriétés reflètent les options de format et de locale pour les heures et dates, calculées pendant l'initialisation de l'objet Intl.DateTimeFormat.

    +Un nouvel objet dont les propriétés reflètent les options de format et de locale pour les heures et dates, calculées pendant l'initialisation de l'objet [`Intl.DateTimeFormat`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat). -

    Description

    +## Description -

    La valeur renvoyée par cette méthode contient les propriétés suivantes :

    +La valeur renvoyée par cette méthode contient les propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans locale.
    -
    calendar
    -
    Le calendrier utilisé (ex. "gregory" pour le calendrier grégorien).
    -
    numberingSystem
    -
    Les valeurs demandées pour les extensions Unicode "ca" et "nu" ou leurs valeurs par défaut.
    -
    timeZone
    -
    La valeur fournie par l'argument options pour cette propriété ou undefined (qui représente le fuseau horaire de l'environnement) si aucune valeur n'a été fournie. Les applications ne doivent pas s'appuyer sur ce dernier cas. En effet, de futures versions pourraient renvoyer une chaîne de caractères représentant le fuseau horaire de l'environnement et non pas undefined.
    -
    hour12
    -
    La valeur fournie pour cette propriété dans l'argument options.
    -
    weekday, era, year, month, day, hour, minute, second, timeZoneName
    -
    Les valeurs qui correspondent entre les propriétés de l'argument options et les combinaisons disponibles dans l'environnement pour les formats de date et d'heure pour la locale. Certaines de ces propriétés peuvent ne pas être présentes, cela indique que les composants indiqués ne seront pas représentés.
    -
    +- `locale` + - : La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans `locale`. +- `calendar` + - : Le calendrier utilisé (ex. `"gregory"` pour le calendrier grégorien). +- `numberingSystem` + - : Les valeurs demandées pour les extensions Unicode `"ca"` et `"nu"` ou leurs valeurs par défaut. +- `timeZone` + - : La valeur fournie par l'argument `options` pour cette propriété ou [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) (qui représente le fuseau horaire de l'environnement) si aucune valeur n'a été fournie. Les applications ne doivent pas s'appuyer sur ce dernier cas. En effet, de futures versions pourraient renvoyer une chaîne de caractères représentant le fuseau horaire de l'environnement et non pas `undefined`. +- `hour12` + - : La valeur fournie pour cette propriété dans l'argument `options`. +- `weekday`, `era`, `year`, `month`, `day`, `hour`, `minute`, `second`, `timeZoneName` + - : Les valeurs qui correspondent entre les propriétés de l'argument `options` et les combinaisons disponibles dans l'environnement pour les formats de date et d'heure pour la locale. Certaines de ces propriétés peuvent ne pas être présentes, cela indique que les composants indiqués ne seront pas représentés. -

    Exemples

    +## Exemples -

    Utiliser la méthode resolvedOptions()

    -
    var germanFakeRegion = new Intl.DateTimeFormat("de-XX", { timeZone: "UTC" });
    +### Utiliser la méthode resolvedOptions()
    +
    +```js
    +var germanFakeRegion = new Intl.DateTimeFormat("de-XX", { timeZone: "UTC" });
     var usedOptions = germanFakeRegion.resolvedOptions();
     
     usedOptions.locale;          // "de"
     usedOptions.calendar;        // "gregory"
     usedOptions.numberingSystem; // "latn"
     usedOptions.timeZone;        // "UTC"
    -usedOptions.month;           // "numeric"
    +usedOptions.month; // "numeric" +``` -

    Spécifications

    +## Spécifications {{Specifications}} -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat}}
    +{{Compat}} -

    Voir aussi

    +## Voir aussi - +- [`Intl.DateTimeFormat`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) diff --git a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.md index 73aecce3f5..13f5517dce 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.md @@ -12,84 +12,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/DateTimeFormat/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    À partir d'une locale ou d'un tableau de locales Intl.DateTimeFormat.supportedLocalesOf() renvoie un tableau qui contient les locales supportées pour le formatage des dates et des heures qui ne nécessitent pas d'avoir recours à la locale par défaut de l'environnement.

    +À partir d'une locale ou d'un tableau de locales **`Intl.DateTimeFormat.supportedLocalesOf()`** renvoie un tableau qui contient les locales supportées pour le formatage des dates et des heures qui ne nécessitent pas d'avoir recours à la locale par défaut de l'environnement. -
    {{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-supportedlocalesof.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-supportedlocalesof.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.DateTimeFormat.supportedLocalesOf(locales[, options])
    + Intl.DateTimeFormat.supportedLocalesOf(locales[, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Un chaîne de caractères au format d'une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations sur le format de l'argument locales, voir la page {{jsxref("Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}.
    -
    options
    -
    -

    Paramètre optionnel, un objet pouvant avoir la propriété suivante :

    +- `locales` + - : Un chaîne de caractères au format d'une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations sur le format de l'argument `locales`, voir la page {{jsxref("Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}. +- `options` -
    -
    localeMatcher
    -
    L'algorithme de correspondance entre locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". Pour plus d'informations sur ce sujet, voir la page {{jsxref("Intl", "Intl", "#Choix_de_la_locale")}}.
    -
    -
    -
    + - : Paramètre optionnel, un objet pouvant avoir la propriété suivante : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme de correspondance entre locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". Pour plus d'informations sur ce sujet, voir la page {{jsxref("Intl", "Intl", "#Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langue qui sont prises en charge pour la mise en forme de l'heure et de la date sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution.

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langue qui sont prises en charge pour la mise en forme de l'heure et de la date sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution. -

    Renvoie un tableau qui est un sous-ensemble de locales. Les balises de langues renvoyées sont celles supportées par l'environnement pour le formatage des heures et des dates. Ces balises sont déterminées en fonction de l'algorithme de correspondances de locale et des locales utilisées. Le tableau résultant fournit les locales qui permettent de ne pas avoir à utiliser la locale par défaut.

    +## Description -

    Exemple

    +Renvoie un tableau qui est un sous-ensemble de `locales`. Les balises de langues renvoyées sont celles supportées par l'environnement pour le formatage des heures et des dates. Ces balises sont déterminées en fonction de l'algorithme de correspondances de locale et des locales utilisées. Le tableau résultant fournit les locales qui permettent de ne pas avoir à utiliser la locale par défaut. -

    Utiliser supportedLocalesOf

    +## Exemple -

    Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des dates et des heures,  supportedLocalesOf renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les dates ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme "lookup". Si on utilisait "best fit", on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise.

    +### Utiliser `supportedLocalesOf` -
    var locales = ["ban", "id-u-co-pinyin", "de-ID"];
    +Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des dates et des heures,  `supportedLocalesOf` renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les dates ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme `"lookup"`. Si on utilisait `"best fit"`, on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise.
    +
    +```js
    +var locales = ["ban", "id-u-co-pinyin", "de-ID"];
     var options = {localeMatcher: "lookup"};
     console.log(Intl.DateTimeFormat.supportedLocalesOf(locales, options).join(", "));
    -// → "id-u-co-pinyin, de-ID"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.supportedLocalesOf', 'Intl.DateTimeFormat.supportedLocalesOf')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.DateTimeFormat.supportedLocalesOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
    • -
    +// → "id-u-co-pinyin, de-ID" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.supportedLocalesOf', 'Intl.DateTimeFormat.supportedLocalesOf')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.DateTimeFormat.supportedLocalesOf")}} + +## Voir aussi + +- {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/displaynames/displaynames/index.md b/files/fr/web/javascript/reference/global_objects/intl/displaynames/displaynames/index.md index ff150634f6..6ce729e68b 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/displaynames/displaynames/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/displaynames/displaynames/index.md @@ -8,97 +8,76 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames --- -
    {{JSRef}}
    - -

    Le constructeur Intl.DisplayNames() crée des objets qui permettent de fournir des traductions constantes des noms de langues, régions et systèmes d'écriture.

    - -
    {{EmbedInteractiveExample("pages/js/intl-displaynames.html")}}
    - -

    Syntaxe

    - -
    new Intl.DisplayNames([langues[, options]])
    -
    - -

    Paramètres

    - -
    -
    langues {{optional_inline}}
    -
    -

    Une chaine avec un code de langue BCP 47, ou un tableau de telles chaines. Pour comprendre la forme générale et l'interprétation de cet argument, voyez {{jsxref("Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}. Les clés d'extensions Unicode suivantes sont permises :

    - -
    -
    nu
    -
    Le système de numération à utiliser. Les valeurs possibles sont : "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
    -
    -
    -
    options {{optional_inline}}
    -
    -

    Un objet avec certaines des des propriétés suivantes :

    - -
    -
    localeMatcher
    -
    L'algorithme de correspondance régional à utiliser. Les valeurs possibles sont "lookup" et "best fit" ; celle par défaut étant "best fit". Pour plus d'informations à propos de cette option, voir {{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}.
    -
    style
    -
    Le style de mise en forme à utiliser, celui par défaut étant "long". -
      -
    • "narrow"
    • -
    • "short"
    • -
    • "long"
    • -
    -
    -
    type
    -
    Le type à utiliser, celui par défaut étant "language". -
      -
    • "language"
    • -
    • "region"
    • -
    • "script"
    • -
    • "currency"
    • -
    -
    -
    fallback
    -
    La valeur par défaut à utiliser, celle par défaut étant "code". -
      -
    • "code"
    • -
    • "none"
    • -
    -
    -
    -
    -
    - -

    Exemples

    - -

    Utilisation simple

    - -

    Dans son utilisation simple, sans spécifier de langue, une chaine dans la langue locale par défaut et avec les options par défaut sera retournée.

    - -
    console.log((new Intl.DisplayNames()).of('US'));
    -// Expected output: 'us'
    -
    +{{JSRef}} + +Le constructeur **`Intl.DisplayNames()`** crée des objets qui permettent de fournir des traductions constantes des noms de langues, régions et systèmes d'écriture. + +{{EmbedInteractiveExample("pages/js/intl-displaynames.html")}} + +## Syntaxe + + new Intl.DisplayNames([langues[, options]]) + +### Paramètres + +- `langues` {{optional_inline}} + + - : Une chaine avec un code de langue BCP 47, ou un tableau de telles chaines. Pour comprendre la forme générale et l'interprétation de cet argument, voyez {{jsxref("Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}. Les clés d'extensions Unicode suivantes sont permises : + + - `nu` + - : Le système de numération à utiliser. Les valeurs possibles sont : `"arab"`, `"arabext"`, `"bali"`, `"beng"`, `"deva"`, `"fullwide"`, `"gujr"`, `"guru"`, `"hanidec"`, `"khmr"`, `"knda"`, `"laoo"`, `"latn"`, `"limb"`, `"mlym"`, `"mong"`, `"mymr"`, `"orya"`, `"tamldec"`, `"telu"`, `"thai"`, `"tibt"`. + +- `options` {{optional_inline}} + + - : Un objet avec certaines des des propriétés suivantes : + + - `localeMatcher` + - : L'algorithme de correspondance régional à utiliser. Les valeurs possibles sont `"lookup"` et `"best fit"` ; celle par défaut étant `"best fit"`. Pour plus d'informations à propos de cette option, voir {{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}. + - `style` -

    Spécifications

    + - : Le style de mise en forme à utiliser, celui par défaut étant `"long"`. - - - - - - - - - -
    Spécification
    {{SpecName('Intl.DisplayNames', '#sec-intl-displaynames-constructor', 'the Intl.DisplayNames constructor')}}
    + - `"narrow"` + - `"short"` + - `"long"` + + - `type` + + - : Le type à utiliser, celui par défaut étant `"language"`. + + - `"language"` + - `"region"` + - `"script"` + - `"currency"` + + - `fallback` + + - : La valeur par défaut à utiliser, celle par défaut étant `"code"`. + + - `"code"` + - `"none"` + +## Exemples + +### Utilisation simple + +Dans son utilisation simple, sans spécifier de langue, une chaine dans la langue locale par défaut et avec les options par défaut sera retournée. + +```js +console.log((new Intl.DisplayNames()).of('US')); +// Expected output: 'us' +``` -

    Compatibilité des navigateurs

    +## Spécifications -
    +| Spécification | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | +| {{SpecName('Intl.DisplayNames', '#sec-intl-displaynames-constructor', 'the Intl.DisplayNames constructor')}} | +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.DisplayNames.DisplayNames")}}

    -
    +{{Compat("javascript.builtins.Intl.DisplayNames.DisplayNames")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Intl.DisplayNames")}}
    • -
    +- {{jsxref("Intl.DisplayNames")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/displaynames/index.md b/files/fr/web/javascript/reference/global_objects/intl/displaynames/index.md index 91ea840564..2b0a70c94b 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/displaynames/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/displaynames/index.md @@ -10,49 +10,42 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.DisplayNames est un constructeur d'objets qui permettent de fournir des traductions des noms de langues, régions et systèmes d'écriture.

    +L'objet **`Intl.DisplayNames`** est un constructeur d'objets qui permettent de fournir des traductions des noms de langues, régions et systèmes d'écriture. -
    {{EmbedInteractiveExample("pages/js/intl-displaynames.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-displaynames.html")}} +## Constructeur +- [`Intl.DisplayNames()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames) + - : Crée un nouvel objet `Intl.DisplayNames`. -

    Constructeur

    +## Méthodes statiques -
    -
    Intl.DisplayNames()
    -
    Crée un nouvel objet Intl.DisplayNames.
    -
    +- [`Intl.DisplayNames.supportedLocalesOf()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/supportedLocalesOf) + - : Retourne un tableau contenant les langues fournies qui sont supportées sans avoir à se rabattre sur la langue locale par défaut au moment de l'exécution. -

    Méthodes statiques

    +## Méthodes des instances -
    -
    Intl.DisplayNames.supportedLocalesOf()
    -
    Retourne un tableau contenant les langues fournies qui sont supportées sans avoir à se rabattre sur la langue locale par défaut au moment de l'exécution.
    -
    +- [`Intl.DisplayNames.prototype.of()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/of) + - : Cette méthodes reçoit un `code` et retourne une chaine à partir sur la langue et les options fournies lors de l'instanciation de [`Intl.DisplayNames`](#). +- [`Intl.DisplayNames.prototype.resolvedOptions()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/resolvedOptions) + - : Retourne un nouvel objet dont les propriété feflètent la langue et les options de formattage calculées lors de l'initialisation de l'objet. -

    Méthodes des instances

    +## Exemples -
    -
    Intl.DisplayNames.prototype.of()
    -
    Cette méthodes reçoit un code et retourne une chaine à partir sur la langue et les options fournies lors de l'instanciation de Intl.DisplayNames.
    -
    Intl.DisplayNames.prototype.resolvedOptions()
    -
    Retourne un nouvel objet dont les propriété feflètent la langue et les options de formattage calculées lors de l'initialisation de l'objet.
    -
    +### Affichage des noms de régions -

    Exemples

    +Pour créer un objet `Intl.DisplayNames` pour une langue et obtenir le nom correspondant à un code de région dans cette langue. -

    Affichage des noms de régions

    - -

    Pour créer un objet Intl.DisplayNames pour une langue et obtenir le nom correspondant à un code de région dans cette langue.

    - -
    // Obtenir le nom d'une région en anglais
    +```js
    +// Obtenir le nom d'une région en anglais
     let nomsRégions = new Intl.DisplayNames(['en'], {type: 'region'});
     nomsRégions.of('419'); // "Latin America"
     nomsRégions.of('BZ');  // "Belize"
     nomsRégions.of('US');  // "United States"
    -nomsRégions.of('BA');  // "Bosnia & Herzegovina"
    +nomsRégions.of('BA');  // "Bosnia & Herzegovina"
     nomsRégions.of('MM');  // "Myanmar (Burma)"
     
     // Obtenir le nom d'une région en chinois traditionnel
    @@ -61,13 +54,15 @@ nomsRégions.of('419'; // "拉丁美洲"
     nomsRégions.of('BZ'); // "貝里斯"
     nomsRégions.of('US'); // "美國"
     nomsRégions.of('BA'); // "波士尼亞與赫塞哥維納"
    -nomsRégions.of('MM'); // "緬甸"
    +nomsRégions.of('MM'); // "緬甸" +``` -

    Affichage des noms de langues

    +### Affichage des noms de langues -

    Pour créer un objet Intl.DisplayNames pour une langue et obtenir le nom correspondant à un code de langue (possiblement suivi d'un code de système d'écriture ou de région) dans cette langue.

    +Pour créer un objet `Intl.DisplayNames` pour une langue et obtenir le nom correspondant à un code de langue (possiblement suivi d'un code de système d'écriture ou de région) dans cette langue. -
    // Obtenir le nom d'une langue en anglais
    +```js
    +// Obtenir le nom d'une langue en anglais
     let nomsLangues= new Intl.DisplayNames(['en'], {type: 'language'});
     nomsLangues.of('fr');      // "French"
     nomsLangues.of('de');      // "German"
    @@ -80,15 +75,17 @@ nomsLangues.of('zh-TW');   // "Chinese (Taiwan)"
     nomsLangues = new Intl.DisplayNames(['zh-Hant'], {type: 'language'});
     nomsLangues.of('fr'); // "法文"
     nomsLangues.of('zh'); // "中文"
    -nomsLangues.of('de'); // "德文"
    +nomsLangues.of('de'); // "德文" +``` -

    Affichage des noms de systèmes d'écriture

    +### Affichage des noms de systèmes d'écriture -

    To create an Intl.DisplayNames for a locale and get the display name for a script code.

    +To create an `Intl.DisplayNames` for a locale and get the display name for a script code. -

    Pour créer un objet Intl.DisplayNames pour une langue et obtenir le nom correspondant à un code de système d'écriture dans cette langue.

    +Pour créer un objet `Intl.DisplayNames` pour une langue et obtenir le nom correspondant à un code de système d'écriture dans cette langue. -
    // Obtenir le nom d'un système d'écriture en anglais
    +```js
    +// Obtenir le nom d'un système d'écriture en anglais
     let nomsSystèmes = new Intl.DisplayNames(['en'], {type: 'script'});
     nomsSystèmes.of('Latn'); // "Latin"
     nomsSystèmes.of('Arab'); // "Arabic"
    @@ -98,13 +95,15 @@ nomsSystèmes.of('Kana'); // "Katakana"
     nomsSystèmes = new Intl.DisplayNames(['zh-Hant'], {type: 'script'});
     nomsSystèmes.of('Latn'); // "拉丁文"
     nomsSystèmes.of('Arab'); // "阿拉伯文"
    -nomsSystèmes.of('Kana'); // "片假名"
    +nomsSystèmes.of('Kana'); // "片假名" +``` -

    Affichage des noms de devises

    +### Affichage des noms de devises -

    Pour créer un objet Intl.DisplayNames pour une langue et obtenir le nom correspondant au code d'une devise.

    +Pour créer un objet `Intl.DisplayNames` pour une langue et obtenir le nom correspondant au code d'une devise. -
    // Obtenir le nom d'une devise in English
    +```js
    +// Obtenir le nom d'une devise in English
     let nomsDevises = new Intl.DisplayNames(['en'], {type: 'currency'});
     nomsDevises.of('USD'); // "US Dollar"
     nomsDevises.of('EUR'); // "Euro"
    @@ -116,29 +115,19 @@ nomsDevises = new Intl.DisplayNames(['zh-Hant'], {type: 'currency'});
     nomsDevises.of('USD'); // "美元"
     nomsDevises.of('EUR'); // "歐元"
     nomsDevises.of('TWD'); // "新台幣"
    -nomsDevises.of('CNY'); // "人民幣"
    +nomsDevises.of('CNY'); // "人民幣" +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - -
    Spécification
    {{SpecName('Intl.DisplayNames', '#intl-displaynames-objects', 'DisplayNames')}}
    +| Spécification | +| -------------------------------------------------------------------------------------------------------- | +| {{SpecName('Intl.DisplayNames', '#intl-displaynames-objects', 'DisplayNames')}} | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.DisplayNames")}}

    +{{Compat("javascript.builtins.Intl.DisplayNames")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Intl")}}
    • -
    +- {{jsxref("Intl")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/getcanonicallocales/index.md b/files/fr/web/javascript/reference/global_objects/intl/getcanonicallocales/index.md index a239a169c1..2970706d63 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/getcanonicallocales/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/getcanonicallocales/index.md @@ -10,61 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/getCanonicalLocales --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.getCanonicalLocales() renvoie un tableau contenant les noms canoniques des locales. Les doublons seront fusionnés et les éléments passés en arguments doivent être des étiquettes de langues valides.

    +La méthode **`Intl.getCanonicalLocales()`** renvoie un tableau contenant les noms canoniques des locales. Les doublons seront fusionnés et les éléments passés en arguments doivent être des étiquettes de langues valides. -
    {{EmbedInteractiveExample("pages/js/intl-getcanonicallocales.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-getcanonicallocales.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.getCanonicalLocales(locales)
    + Intl.getCanonicalLocales(locales) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Une liste de chaînes ({{jsxref("String")}}) dont on veut obtenir les noms canoniques pour les locales correspondantes.
    -
    +- `locales` + - : Une liste de chaînes ({{jsxref("String")}}) dont on veut obtenir les noms canoniques pour les locales correspondantes. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau qui contient les noms canoniques des locales.

    +Un tableau qui contient les noms canoniques des locales. -

    Exemples

    +## Exemples -
    Intl.getCanonicalLocales("EN-US"); // ["en-US"]
    +```js
    +Intl.getCanonicalLocales("EN-US"); // ["en-US"]
     Intl.getCanonicalLocales(["EN-US", "Fr"]); // ["en-US", "fr"]
     
     Intl.getCanonicalLocales("EN_US");
     // RangeError:'EN_US' is not a structurally valid language tag
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int Draft', '#sec-intl.getcanonicallocales', 'Intl.getCanonicalLocales')}}{{Spec2('ES Int Draft')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.getCanonicalLocales")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
    • -
    • {{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}
    • -
    • {{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | -------------------- | +| {{SpecName('ES Int Draft', '#sec-intl.getcanonicallocales', 'Intl.getCanonicalLocales')}} | {{Spec2('ES Int Draft')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.getCanonicalLocales")}} + +## Voir aussi + +- {{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}} +- {{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}} +- {{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/index.md b/files/fr/web/javascript/reference/global_objects/intl/index.md index 7f1ccb56fd..71920ac7ae 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/index.md @@ -10,86 +10,79 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl original_slug: Web/JavaScript/Reference/Objets_globaux/Intl --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl est l'espace de noms pour l'API d'Internationalisation d'ECMAScript. Elle fournit des outils de comparaison de chaînes de caractères, de formatage des nombres, de dates et de l'heure selon les langues. Intl donne accès à plusieurs constructeurs et fonctionnalités communs aux constructeurs destinés à l'internationalion et à d'autres fonctions dépendantes des langues.

    +L'objet **`Intl`** est l'espace de noms pour l'API d'Internationalisation d'ECMAScript. Elle fournit des outils de comparaison de chaînes de caractères, de formatage des nombres, de dates et de l'heure selon les langues. `Intl` donne accès à plusieurs constructeurs et fonctionnalités communs aux constructeurs destinés à l'internationalion et à d'autres fonctions dépendantes des langues. -

    Propriétés constructrices

    +## Propriétés constructrices -
    -
    {{jsxref("Objets_globaux/Collator", "Intl.Collator")}}
    -
    Le constructeur pour les ordonnanceurs (collators en anglais) et les objets qui permettent la comparaison de chaînes de caractères selon les règles spécifiques d'une langue.
    -
    {{jsxref("Objets_globaux/DateTimeFormat", "Intl.DateTimeFormat")}}
    -
    Le constructeur pour les objets qui permettent le formatage des dates et de l'heure selon les règles spécifiques d'une langue.
    -
    {{jsxref("Global_Objects/Intl/DisplayNames/DisplayNames", "Intl.DisplayNames()")}}
    -
    Le constructeur pour les objets qui permettent de fournir des traductions constantes de noms de langues, régions et systèmes d'écriture.
    -
    {{jsxref("Objets_globaux/ListFormat", "Intl.ListFormat")}}
    -
    Le constructeur pour les objets qui permettent le formatage des listes selon les règles spécifiques d'une langue.
    -
    {{jsxref("Global_Objects/Intl/Locale/Locale", "Intl.Locale()")}}
    -
    Le constructeur pour les objets qui représentent un identifiant de langue Unicode.
    -
    {{jsxref("Objets_globaux/NumberFormat", "Intl.NumberFormat")}}
    -
    Le constructeur pour les objets qui permettent le formatage des nombres selon les règles spécifiques d'une langue.
    -
    {{jsxref("Objets_globaux/PluralRules","Intl.PluralRules")}}
    -
    Le constructeur pour les objets qui permettent le formatage prenant en compte le pluriel et les règles de pluriel spécifiques d'une langue.
    -
    {{jsxref("Objets_globaux/RelativeTimeFormat","Intl.RelativeTimeFormat")}}
    -
    Le constructeur pour les objets qui permettent le formatage d'intervalles de temps spécifiques d'une langue.
    -
    +- {{jsxref("Objets_globaux/Collator", "Intl.Collator")}} + - : Le constructeur pour les ordonnanceurs (_collators_ en anglais) et les objets qui permettent la comparaison de chaînes de caractères selon les règles spécifiques d'une langue. +- {{jsxref("Objets_globaux/DateTimeFormat", "Intl.DateTimeFormat")}} + - : Le constructeur pour les objets qui permettent le formatage des dates et de l'heure selon les règles spécifiques d'une langue. +- {{jsxref("Global_Objects/Intl/DisplayNames/DisplayNames", "Intl.DisplayNames()")}} + - : Le constructeur pour les objets qui permettent de fournir des traductions constantes de noms de langues, régions et systèmes d'écriture. +- {{jsxref("Objets_globaux/ListFormat", "Intl.ListFormat")}} + - : Le constructeur pour les objets qui permettent le formatage des listes selon les règles spécifiques d'une langue. +- {{jsxref("Global_Objects/Intl/Locale/Locale", "Intl.Locale()")}} + - : Le constructeur pour les objets qui représentent un identifiant de langue Unicode. +- {{jsxref("Objets_globaux/NumberFormat", "Intl.NumberFormat")}} + - : Le constructeur pour les objets qui permettent le formatage des nombres selon les règles spécifiques d'une langue. +- {{jsxref("Objets_globaux/PluralRules","Intl.PluralRules")}} + - : Le constructeur pour les objets qui permettent le formatage prenant en compte le pluriel et les règles de pluriel spécifiques d'une langue. +- {{jsxref("Objets_globaux/RelativeTimeFormat","Intl.RelativeTimeFormat")}} + - : Le constructeur pour les objets qui permettent le formatage d'intervalles de temps spécifiques d'une langue. -

    Méthodes statiques

    +## Méthodes statiques -
    -
    {{jsxref("Intl.getCanonicalLocales()")}}
    -
    Méthode renvoyant les noms canoniques des locales.
    -
    +- {{jsxref("Intl.getCanonicalLocales()")}} + - : Méthode renvoyant les noms canoniques des locales. -

    Identification et choix de la locale

    +## Identification et choix de la locale -

    Les constructeurs d'internationalisation, ainsi que plusieurs autres méthodes spécifiques à une langue dans d'autres constructeurs (voir ci-dessous {{anch("See_also", "Voir aussi")}}), utilisent un schéma commun pour identifier les locales et déterminer celle qu'ils utiliseront effectivement : ils acceptent tous les arguments locales et options, et ils négocient les locales demandées face aux locales qu'ils supportent, en utilisant un algorithme spécifié dans la propriété options.localeMatcher.

    +Les constructeurs d'internationalisation, ainsi que plusieurs autres méthodes spécifiques à une langue dans d'autres constructeurs (voir ci-dessous {{anch("See_also", "Voir aussi")}}), utilisent un schéma commun pour identifier les locales et déterminer celle qu'ils utiliseront effectivement : ils acceptent tous les arguments `locales` et `options`, et ils négocient les locales demandées face aux locales qu'ils supportent, en utilisant un algorithme spécifié dans la propriété `options.localeMatcher`. -

    Argument locales

    +### Argument `locales` -

    L'argument locales peut être soit une chaîne de caractères comportant une balise de langue BCP 47, soit un tableau de telles balises. Si l'argument n'est pas fourni ou est indéfini, la locale par défaut de l'environnement d'exécution est utilisée.

    +L'argument `locales` peut être soit une chaîne de caractères comportant une [balise de langue BCP 47](http://tools.ietf.org/html/rfc5646), soit un tableau de telles balises. Si l'argument n'est pas fourni ou est indéfini, la locale par défaut de l'environnement d'exécution est utilisée. -

    Une balise de langue BCP 47 définit un langage et contient au minimum un code de langue principale. Dans sa forme la plus fréquente, elle peut contenir, dans l'ordre : un code de langue, un code de script et un code de pays ou de région, tous séparés par des tirets. Bien que la balise ne soit sensible à la casse, il est recommandé d'utiliser des initiales majuscules pour le code de script, des majuscules pour les codes de pays et de région, et des minuscules pour tout le reste.

    +Une balise de langue BCP 47 définit un langage et contient au minimum un code de langue principale. Dans sa forme la plus fréquente, elle peut contenir, dans l'ordre : un code de langue, un code de script et un code de pays ou de région, tous séparés par des tirets. Bien que la balise ne soit sensible à la casse, il est recommandé d'utiliser des initiales majuscules pour le code de script, des majuscules pour les codes de pays et de région, et des minuscules pour tout le reste. -

    Exemples :

    +Exemples : -
      -
    • "hi" : Hindi (langue principale).
    • -
    • "de-AT" : Allemand tel qu'utilisé en Autriche (langue principale avec un code pays).
    • -
    • "zh-Hans-CN" : Le chinois écrit en caractères simplifiés tel qu'utilisé en Chine (langue principale avec des codes de script et de pays).
    • -
    +- `"hi"` : Hindi (langue principale). +- `"de-AT"` : Allemand tel qu'utilisé en Autriche (langue principale avec un code pays). +- `"zh-Hans-CN"` : Le chinois écrit en caractères simplifiés tel qu'utilisé en Chine (langue principale avec des codes de script et de pays). -

    Les sous balises identifiant les langues, les scripts, les pays (régions) et les variantes (rarement utilisées) dans les balises de langue BCP 47 peuvent être trouvées dans le registre IANA des Sous balises de Langues

    +Les sous balises identifiant les langues, les scripts, les pays (régions) et les variantes (rarement utilisées) dans les balises de langue BCP 47 peuvent être trouvées dans le [registre IANA des Sous balises de Langues](http://www.iana.org/assignments/language-subtag-registry) -

    La BCP 47 permet également des extensions. Les fonctions d'internalisation de JavaScript utilisent l'extension "u" (Unicode), qui peut utilisée pour demander une personnalisation supplémentaire des objets {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, ou {{jsxref("DateTimeFormat")}}. Exemples :

    +La BCP 47 permet également des extensions. Les fonctions d'internalisation de JavaScript utilisent l'extension "u" (Unicode), qui peut utilisée pour demander une personnalisation supplémentaire des objets {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, ou {{jsxref("DateTimeFormat")}}. Exemples : -
      -
    • "de-DE-u-co-phonebk" : utiliser la variante annuaire de l'ordre de tri allemand, qui décompose les voyelles infléchies (à umlaut) en paires de caractères : ä → ae, ö → oe, ü → ue.
    • -
    • "th-TH-u-nu-thai" : utiliser les chiffres thaïs (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) dans le formatage des nombres.
    • -
    • "ja-JP-u-ca-japanese" : utiliser le calendrier japonais dans le formatage des dates et des heures, de sorte que 2013 soit exprimé comme l'an 25 de l'ère Heisei, ou 平成25.
    • -
    • "en-GB-u-ca-islamic" : utiliser l'anglais britannique avec le calendrier islamique (Hijri), où la date grégorienne 14 octobre 2017 est la date de l'ère de l'Hégire 24 Muharram,1439.
    • -
    +- `"de-DE-u-co-phonebk"` : utiliser la variante annuaire de l'ordre de tri allemand, qui décompose les voyelles infléchies (à umlaut) en paires de caractères : ä → ae, ö → oe, ü → ue. +- `"th-TH-u-nu-thai"` : utiliser les chiffres thaïs (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) dans le formatage des nombres. +- `"ja-JP-u-ca-japanese"` : utiliser le calendrier japonais dans le formatage des dates et des heures, de sorte que 2013 soit exprimé comme l'an 25 de l'ère Heisei, ou 平成 25. +- `"en-GB-u-ca-islamic"` : utiliser l'anglais britannique avec le calendrier islamique (Hijri), où la date grégorienne 14 octobre 2017 est la date de l'ère de l'Hégire 24 Muharram,1439. -

    Négociation de la locale

    +### Négociation de la locale -

    L'argument locales, après retrait de toutes les extensions Unicode, est interprété comme une requête classée par priorité émanant de l'application. L'environnement d'exécution le compare aux locales dont il dispose et choisit la meilleure disponible. Il existe deux algorithmes d'association : l'apparieur "lookup" suit l'algorithme Lookup spécifié dans BCP 47; l'apparieur "meilleure correspondance" laisse l'environnement d'exécution fournir une locale qui est au moins aussi, mais possiblement mieux, adaptée à la demande que le résultat de l'algorithme Lookup. Si l'application ne fournit pas d'argument locales ou que l'environnement d'exécution ne dispose pas d'une locale qui corresponde à la requête, alors la locale par défaut de l'environnement d'exécution est utilisée. L'apparieur peut être choisi en utilisant une propriété de l'argument options (voir ci-dessous).

    +L'argument `locales`, après retrait de toutes les extensions Unicode, est interprété comme une requête classée par priorité émanant de l'application. L'environnement d'exécution le compare aux locales dont il dispose et choisit la meilleure disponible. Il existe deux algorithmes d'association : l'apparieur "lookup" suit l'algorithme Lookup spécifié dans [BCP 47](http://tools.ietf.org/html/rfc4647#section-3.4); l'apparieur "meilleure correspondance" laisse l'environnement d'exécution fournir une locale qui est au moins aussi, mais possiblement mieux, adaptée à la demande que le résultat de l'algorithme Lookup. Si l'application ne fournit pas d'argument `locales` ou que l'environnement d'exécution ne dispose pas d'une locale qui corresponde à la requête, alors la locale par défaut de l'environnement d'exécution est utilisée. L'apparieur peut être choisi en utilisant une propriété de l'argument `options` (voir ci-dessous). -

    Si la balise de la langue choisie comporte une sous chaîne d'extension Unicode, cette extension est maintenant utilisée pour personnaliser l'objet construit ou le comportement de la fonction. Chaque constructeur ou fonction ne supporte qu'un sous-ensemble des clés définies pour le extension Unicode, et les valeurs supportées dépendent souvent de la balise de langue. Par exemple, la clé "co" (collation) n'est supportée que par le constructeur {{jsxref("Collator")}}, et sa valeur "phonebk" n'est supportée que pour l'allemand.

    +Si la balise de la langue choisie comporte une sous chaîne d'extension Unicode, cette extension est maintenant utilisée pour personnaliser l'objet construit ou le comportement de la fonction. Chaque constructeur ou fonction ne supporte qu'un sous-ensemble des clés définies pour le extension Unicode, et les valeurs supportées dépendent souvent de la balise de langue. Par exemple, la clé "co" (collation) n'est supportée que par le constructeur {{jsxref("Collator")}}, et sa valeur "phonebk" n'est supportée que pour l'allemand. -

    Argument options

    +### Argument `options` -

    L'argument options doit être un objet ayant des propriétés qui varient suivant qu'il s'agit des constructeurs ou des fonctions. Si l'argument options n'est pas fourni ou est indéfini, des valeurs par défaut seront utilisées pour toutes les propriétés.

    +L'argument `options` doit être un objet ayant des propriétés qui varient suivant qu'il s'agit des constructeurs ou des fonctions. Si l'argument `options` n'est pas fourni ou est indéfini, des valeurs par défaut seront utilisées pour toutes les propriétés. -

    Une propriété est supportée par tous les constructeurs et toutes les fonctions fondés sur les locales : la propriété localeMatcher, dont la valeur doit être la chaîne "lookup" ou "best fit", et qui sélectionne l'un des algorithmes d'appariement décrits ci-dessus.

    +Une propriété est supportée par tous les constructeurs et toutes les fonctions fondés sur les locales : la propriété `localeMatcher`, dont la valeur doit être la chaîne `"lookup"` ou `"best fit"`, et qui sélectionne l'un des algorithmes d'appariement décrits ci-dessus. -

    Exemples

    +## Exemples -

    Formater des dates et nombres

    +### Formater des dates et nombres -

    Vous pouvez utiliser Intl pour formater des dates et nombres dans un format qui est conventionnel pour une langue et une région spécifiques :

    +Vous pouvez utiliser Intl pour formater des dates et nombres dans un format qui est conventionnel pour une langue et une région spécifiques : -
    const compte = 26254.39;
    +```js
    +const compte = 26254.39;
     const date = new Date("2012-05-24");
     
     function afficher (langue) {
    @@ -102,61 +95,38 @@ afficher("en-US");
     // résultat attendu : 5/24/2012 26,254.39
     
     afficher("de-DE");
    -// résultat attendu : 24.5.2012 26.254,39
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-8', 'Intl')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-8', 'Intl')}}{{Spec2('ES Int 2.0')}}
    {{SpecName('ES Int Draft', '#intl-object', 'Intl')}}{{Spec2('ES Int Draft')}}Ajout de Intl.getCanonicalLocales dans la 4e édition.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl")}}

    - -

    Voir aussi

    - -
      -
    • Introduction : 'The ECMAScript Internationalisation API
    • -
    • Constructeurs -
        -
      • {{jsxref("Collator", "Intl.Collator")}}
      • -
      • {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}
      • -
      • {{jsxref("ListFormat", "Intl.ListFormat")}}
      • -
      • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
      • -
      • {{jsxref("PluralRules", "Intl.PluralRules")}}
      • -
      • {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}
      • -
      • {{jsxref("Locale", "Intl.Locale")}}
      • -
      -
    • -
    • Méthodes -
        -
      • {{jsxref("String.prototype.localeCompare()")}}
      • -
      • {{jsxref("Number.prototype.toLocaleString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleDateString()")}}
      • -
      • {{jsxref("Date.prototype.toLocaleTimeString()")}}
      • -
      -
    • -
    +// résultat attendu : 24.5.2012 26.254,39 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------- | +| {{SpecName('ES Int 1.0', '#sec-8', 'Intl')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-8', 'Intl')}} | {{Spec2('ES Int 2.0')}} | | +| {{SpecName('ES Int Draft', '#intl-object', 'Intl')}} | {{Spec2('ES Int Draft')}} | Ajout de `Intl.getCanonicalLocales` dans la 4e édition. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl")}} + +## Voir aussi + +- Introduction : ['The ECMAScript Internationalisation API](http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/index.html) +- Constructeurs + + - {{jsxref("Collator", "Intl.Collator")}} + - {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} + - {{jsxref("ListFormat", "Intl.ListFormat")}} + - {{jsxref("NumberFormat", "Intl.NumberFormat")}} + - {{jsxref("PluralRules", "Intl.PluralRules")}} + - {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} + - {{jsxref("Locale", "Intl.Locale")}} + +- Méthodes + + - {{jsxref("String.prototype.localeCompare()")}} + - {{jsxref("Number.prototype.toLocaleString()")}} + - {{jsxref("Date.prototype.toLocaleString()")}} + - {{jsxref("Date.prototype.toLocaleDateString()")}} + - {{jsxref("Date.prototype.toLocaleTimeString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/listformat/format/index.md b/files/fr/web/javascript/reference/global_objects/intl/listformat/format/index.md index ab43e1466e..f18d79b75b 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/listformat/format/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/listformat/format/index.md @@ -12,56 +12,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/format original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/ListFormat/format --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode format() renvoie une chaîne de caractères représentant la liste passée en argument, mise en forme selon la langue choisie (lors de la construction de l'objet Intl.ListFormat).

    +La méthode **`format()`** renvoie une chaîne de caractères représentant la liste passée en argument, mise en forme selon la langue choisie (lors de la construction de l'objet `Intl.ListFormat`). -
    {{EmbedInteractiveExample("pages/js/intl-listformat.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-listformat.html")}} -

    Description

    +## Description -

    La méthode format() renvoie une chaîne de caractères qui a été formatée en fonction des paramètres fournis à l'objet Intl.ListFormat. Les paramètres locales et options permettent de personnaliser le comportement de format() et de gérer différentes conventions linguistiques au sein d'une application, notamment pour la mise en forme des listes.

    +La méthode **`format()`** renvoie une chaîne de caractères qui a été formatée en fonction des paramètres fournis à l'objet `Intl.ListFormat`. Les paramètres `locales` et `options` permettent de personnaliser le comportement de `format()` et de gérer différentes conventions linguistiques au sein d'une application, notamment pour la mise en forme des listes. -

    Syntaxe

    +## Syntaxe -
    listFormat.format([list]);
    + listFormat.format([list]); -

    Paramètres

    +### Paramètres -
    -
    list
    -
    Un objet itérable (ex. un tableau / {{jsxref("Array")}}).
    -
    +- **`list`** + - : Un objet itérable (ex. un tableau / {{jsxref("Array")}}). -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères représentant les éléments de la liste et mise en forme en fonction de la langue souhaitée (grâce au paramètre locales passé au constructeur Intl.ListFormat).

    +Une chaîne de caractères représentant les éléments de la liste et mise en forme en fonction de la langue souhaitée (grâce au paramètre `locales` passé au constructeur `Intl.ListFormat`). -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.ListFormat.prototype.formatProposition de niveau 3
    +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.ListFormat.prototype.format`](https://tc39.github.io/proposal-intl-list-format/#sec-Intl.ListFormat.prototype.format) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.ListFormat.format")}}

    +{{Compat("javascript.builtins.Intl.ListFormat.format")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("ListFormat", "Intl.ListFormat")}}
    • -
    +- {{jsxref("ListFormat", "Intl.ListFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/listformat/formattoparts/index.md b/files/fr/web/javascript/reference/global_objects/intl/listformat/formattoparts/index.md index 8f13257373..2730cf774b 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/listformat/formattoparts/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/listformat/formattoparts/index.md @@ -12,37 +12,35 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/formatToParts original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/ListFormat/formatToParts --- -
    {{JSRef}}{{Draft}}
    +{{JSRef}}{{Draft}} -

    La méthode Intl.ListFormat.prototype.formatToParts() renvoie un tableau ({{jsxref("Array")}}) d'objets représentants les différentes composantes de la chaine de caractères qui est le résultat du formatage de la liste (selon les options de locale et de style indiquées).

    +La méthode **`Intl.ListFormat.prototype.formatToParts()`** renvoie un tableau ({{jsxref("Array")}}) d'objets représentants les différentes composantes de la chaine de caractères qui est le résultat du formatage de la liste (selon les options de locale et de style indiquées). -

    Syntaxe

    +## Syntaxe -
    Intl.ListFormat.prototype.formatToParts(list)
    -
    + Intl.ListFormat.prototype.formatToParts(list) -

    Paramètres

    +### Paramètres -
    -
    list
    -
    Un tableau ({{jsxref("Array")}}) de valeurs à mettre en forme selon une locale et des options de style.
    -
    +- `list` + - : Un tableau ({{jsxref("Array")}}) de valeurs à mettre en forme selon une locale et des options de style. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau ({{jsxref("Array")}}) de fragments composants la chaîne de caractères pour la liste formatée.

    +Un tableau ({{jsxref("Array")}}) de fragments composants la chaîne de caractères pour la liste formatée. -

    Description

    +## Description -

    Alors que la méthode {{jsxref("ListFormat.prototype.format()", "Intl.ListFormat.prototype.format()")}} renvoie une chaîne de caractères avec la liste formatée (en fonction de la locale et des options de style), formatToParts() renvoie un tableau des différentes composantes de cette chaîne.

    +Alors que la méthode {{jsxref("ListFormat.prototype.format()", "Intl.ListFormat.prototype.format()")}} renvoie une chaîne de caractères avec la liste formatée (en fonction de la locale et des options de style), `formatToParts()` renvoie un tableau des différentes composantes de cette chaîne. -

    Chaque élément du tableau résultant possède deux propriétés : type et value. La propriété type pourra valoir "element" (pour indiquer une valeur de la liste) ou "literal" (pour indiquer un élément linguistique). La propriété value fournit quant à elle le contenu du fragment sous forme d'une chaîne de caractères.

    +Chaque élément du tableau résultant possède deux propriétés : `type` et `value`. La propriété `type` pourra valoir `"element"` (pour indiquer une valeur de la liste) ou `"literal"` (pour indiquer un élément linguistique). La propriété `value` fournit quant à elle le contenu du fragment sous forme d'une chaîne de caractères. -

    Les options de locale et de style utilisées pour le formatage sont fournies lors de la construction de l'instance {{jsxref("ListFormat", "Intl.ListFormat")}}.

    +Les options de locale et de style utilisées pour le formatage sont fournies lors de la construction de l'instance {{jsxref("ListFormat", "Intl.ListFormat")}}. -

    Exemples

    +## Exemples -
    const fruits = ['Apple', 'Orange', 'Pineapple'];
    +```js
    +const fruits = ['Apple', 'Orange', 'Pineapple'];
     const myListFormat = new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' });
     
     console.table(myListFormat.formatToParts(fruits));
    @@ -53,37 +51,22 @@ console.table(myListFormat.formatToParts(fruits));
     //  { "type": "literal", "value": ", and " },
     //  { "type": "element", "value": "Pineapple" }
     // ]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Intl.ListFormat.prototype.formatToParts proposalStage 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.ListFormat.formatToParts")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("ListFormat", "Intl.ListFormat")}}
    • -
    • {{jsxref("ListFormat.prototype.format()", "Intl.ListFormat.prototype.format()")}}
    • -
    • {{jsxref("RelativeTimeFormat.formatToParts()", "Intl.RelativeTimeFormat.prototype.formatToParts()")}}
    • -
    • {{jsxref("NumberFormat.formatToParts()", "Intl.NumberFormat.prototype.formatToParts()")}}
    • -
    • {{jsxref("DateTimeFormat.formatToParts()", "Intl.DateTimeFormat.prototype.formatToParts()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------------ | +| [`Intl.ListFormat.prototype.formatToParts` proposal](https://tc39.github.io/proposal-intl-list-format/#sec-Intl.ListFormat.prototype.formatToParts) | Stage 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.ListFormat.formatToParts")}} + +## Voir aussi + +- {{jsxref("ListFormat", "Intl.ListFormat")}} +- {{jsxref("ListFormat.prototype.format()", "Intl.ListFormat.prototype.format()")}} +- {{jsxref("RelativeTimeFormat.formatToParts()", "Intl.RelativeTimeFormat.prototype.formatToParts()")}} +- {{jsxref("NumberFormat.formatToParts()", "Intl.NumberFormat.prototype.formatToParts()")}} +- {{jsxref("DateTimeFormat.formatToParts()", "Intl.DateTimeFormat.prototype.formatToParts()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/listformat/index.md b/files/fr/web/javascript/reference/global_objects/intl/listformat/index.md index 6bc6208998..af5f79508d 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/listformat/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/listformat/index.md @@ -11,142 +11,112 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/ListFormat --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.ListFormat est un constructeur d'objets qui permettent de formater des listes de façon différente selon la langue utilisée.

    +L'objet **`Intl.ListFormat`** est un constructeur d'objets qui permettent de formater des listes de façon différente selon la langue utilisée. -
    {{EmbedInteractiveExample("pages/js/intl-listformat.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-listformat.html")}} +## Syntax + new Intl.ListFormat([locales[, options]]) -

    Syntax

    +### Paramètres -
    new Intl.ListFormat([locales[, options]])
    -
    +- `locales`{{optional_inline}} + - : Paramètre optionnel. Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. +- `options`{{optional_inline}} -

    Paramètres

    + - : Paramètre optionnel. Un objet avec certaines ou toutes les propriétés suivantes : -
    -
    locales{{optional_inline}}
    -
    -

    Paramètre optionnel. Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}.

    -
    -
    options{{optional_inline}}
    -
    -

    Paramètre optionnel. Un objet avec certaines ou toutes les propriétés suivantes :

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Intl","Intl","##Choix_de_la_locale")}}. + - `type` -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Intl","Intl","##Choix_de_la_locale")}}.
    -
    type
    -
    Le format de sortie pour le message. Les valeurs possibles sont : -
      -
    • "conjunction" : qui concaténera les éléments de la liste avec des et. Cela produira par exemple, en anglais : A, B, and C
    • -
    • "disjunction" : qui concaténera les éléments de la liste avec des ou. Cela produira par exemple, en anglais : A, B, or C
    • -
    • "unit" : qui permet de gérer des listes de valeurs avec des unités. Cela produira par exemple 5 livres, 12 onces
    • -
    -
    -
    style
    -
    Le niveau de concision/longueur du message obtenu. Les valeurs possibles sont : -
      -
    • "long" : par exemple A, B, and C
    • -
    • "narrow" : cette valeur permet uniquement d'utiliser le type unit et affichera un message concis : par exemple A, B, C
    • -
    • "short" : par exemple A, B, C
    • -
    -
    -
    -
    -
    + - : Le format de sortie pour le message. Les valeurs possibles sont : -

    Description

    + - `"conjunction"` : qui concaténera les éléments de la liste avec des _et_. Cela produira par exemple, en anglais : `A, B, and C` + - `"disjunction"` : qui concaténera les éléments de la liste avec des _ou_. Cela produira par exemple, en anglais : `A, B, or C` + - `"unit"` : qui permet de gérer des listes de valeurs avec des unités. Cela produira par exemple `5 livres, 12 onces` -

    Propriétés

    + - `style` -
    -
    {{jsxref("ListFormat.prototype", "Intl.ListFormat.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés à l'ensemble des objets de ce type.
    -
    + - : Le niveau de concision/longueur du message obtenu. Les valeurs possibles sont : -

    Méthodes

    + - `"long"` : par exemple `A, B, and C` + - `"narrow"` : cette valeur permet uniquement d'utiliser le type `unit` et affichera un message concis : par exemple `A, B, C` + - `"short"` : par exemple `A, B, C` -
    -
    {{jsxref("ListFormat.supportedLocalesOf", "Intl.ListFormat.supportedLocalesOf()")}}
    -
    Cette méthode renvoie un tableau des locales prises en charge par le moteur pour le formatage des heures sans qu'il y ait besoin d'utiliser la locale de l'environnement d'exécution.
    -
    +## Description -

    Instances de Intl.ListFormat

    +### Propriétés -

    Toutes les instances de Intl.ListFormat héritent de Intl.ListFormat.prototype.

    +- {{jsxref("ListFormat.prototype", "Intl.ListFormat.prototype")}} + - : Cette propriété permet d'ajouter des propriétés à l'ensemble des objets de ce type. -

    Propriétés

    +### Méthodes -
    -
    Intl.ListFormat.prototype.constructor
    -
    Définit la fonction qui crée le prototype d'un objet.
    -
    +- {{jsxref("ListFormat.supportedLocalesOf", "Intl.ListFormat.supportedLocalesOf()")}} + - : Cette méthode renvoie un tableau des locales prises en charge par le moteur pour le formatage des heures sans qu'il y ait besoin d'utiliser la locale de l'environnement d'exécution. -

    Méthodes

    +## Instances de `Intl.ListFormat` -
    -
    {{jsxref("ListFormat.prototype.format","Intl.ListFormat.prototype.format()")}}
    -
    Renvoie une chaîne de caractères mise en forme selon la langue voulue et qui représente les éléments de la liste.
    -
    +Toutes les instances de `Intl.ListFormat` héritent de `Intl.ListFormat.prototype`. -

    Exemples

    +### Propriétés -

    Utiliser format()

    +- `Intl.ListFormat.prototype.constructor` + - : Définit la fonction qui crée le prototype d'un objet. -

    Dans l'exemple qui suit, on voit comment créer un formateur de liste pour l'anglais.

    +### Méthodes -
    const list = ['Motorcycle', 'Bus', 'Car'];
    +- {{jsxref("ListFormat.prototype.format","Intl.ListFormat.prototype.format()")}}
    +  - : Renvoie une chaîne de caractères mise en forme selon la langue voulue et qui représente les éléments de la liste.
    +
    +## Exemples
    +
    +### Utiliser `format()`
    +
    +Dans l'exemple qui suit, on voit comment créer un formateur de liste pour l'anglais.
    +
    +```js
    +const list = ['Motorcycle', 'Bus', 'Car'];
     
      console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).format(list));
    -// > Motorcycle, Bus and Car
    +// > Motorcycle, Bus and Car
     
      console.log(new Intl.ListFormat('en-GB', { style: 'short', type: 'disjunction' }).format(list));
    -// > Motorcycle, Bus or Car
    +// > Motorcycle, Bus or Car
     
      console.log(new Intl.ListFormat('en-GB', { style: 'narrow', type: 'unit' }).format(list));
    -// > Motorcycle Bus Car
    -
    +// > Motorcycle Bus Car +``` -

    Utiliser formatToParts()

    +### Utiliser `formatToParts()` -

    Dans l'exemple qui suit, on voit comment créer un formateur de liste, renvoyant les fragments, pour l'anglais

    +Dans l'exemple qui suit, on voit comment créer un formateur de liste, renvoyant les fragments, pour l'anglais -
    const list = ['Motorcycle', 'Bus', 'Car'];
    +```js
    +const list = ['Motorcycle', 'Bus', 'Car'];
     console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).formatToParts(list));
     
    -// > [ { "type": "element", "value": "Motorcycle" },
    +// > [ { "type": "element", "value": "Motorcycle" },
            { "type": "literal", "value": ", " },
            { "type": "element", "value": "Bus" },
            { "type": "literal", "value": ", and " },
            { "type": "element", "value": "Car" } ];
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.ListFormatProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.ListFormat")}}

    - -

    Voir aussi

    - -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}}
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.ListFormat`](https://tc39.github.io/proposal-intl-list-format/#listformat-objects) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.ListFormat")}} + +## Voir aussi + +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/listformat/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/listformat/resolvedoptions/index.md index c486feed3d..8262926d17 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/listformat/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/listformat/resolvedoptions/index.md @@ -12,70 +12,54 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/resolvedOptions original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/ListFormat/resolvedOptions --- -
    {{JSRef}}{{Draft}}
    +{{JSRef}}{{Draft}} -

    La méthode  Intl.ListFormat.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés reflètent les options de locale et de style calculées à l'initialisation de l'objet {{jsxref("ListFormat")}}.

    +La méthode  **`Intl.ListFormat.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés reflètent les options de locale et de style calculées à l'initialisation de l'objet {{jsxref("ListFormat")}}. -

    Syntaxe

    +## Syntaxe -
    listFormat.resolvedOptions()
    + listFormat.resolvedOptions() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet dont les propriétés reflètent les options de locale et de style calculées lors de l'initialisation de l'objet {{jsxref("ListFormat")}}.

    +Un nouvel objet dont les propriétés reflètent les options de locale et de style calculées lors de l'initialisation de l'objet {{jsxref("ListFormat")}}. -

    Description

    +## Description -

    L'objet renvoyé par resolvedOptions() possède les propriétés suivantes :

    +L'objet renvoyé par `resolvedOptions()` possède les propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans locale.
    -
    style
    -
    La valeur fournie au constructeur via l'argument options ou la valeur utilisée par défaut ("long"). Cette propriété peut valoir "long", "short" ou "narrow".
    -
    type
    -
    La valeur fournie au constructeur via l'argument options ou la valeur par défaut ("conjunction"). Cette propriété peut valoir "conjunction", "disjunction" ou "unit".
    -
    +- `locale` + - : La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans `locale`. +- `style` + - : La valeur fournie au constructeur via l'argument `options` ou la valeur utilisée par défaut (`"long"`). Cette propriété peut valoir `"long"`, `"short"` ou `"narrow"`. +- `type` + - : La valeur fournie au constructeur via l'argument `options` ou la valeur par défaut (`"conjunction"`). Cette propriété peut valoir `"conjunction"`, `"disjunction"` ou `"unit"`. -

    Exemples

    +## Exemples -
    const deListFormatter = new Intl.ListFormat("de-DE", { style: "short" });
    +```js
    +const deListFormatter = new Intl.ListFormat("de-DE", { style: "short" });
     
     const usedOptions = de.resolvedOptions();
     console.log(usedOptions.locale); // "de-DE"
     console.log(usedOptions.style);  // "short"
     console.log(usedOptions.type);   // "conjunction" (la valeur par défaut)
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.ListFormat.prototype.resolvedOptions()Proposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.ListFormat.resolvedOptions")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("ListFormat", "Intl.ListFormat")}}
    • -
    • {{jsxref("NumberFormat.prototype.resolvedOptions()", "Intl.NumberFormat.prototype.resolvedOptions()")}}
    • -
    • {{jsxref("Collator.prototype.resolvedOptions()", "Intl.Collator.prototype.resolvedOptions()")}}
    • -
    • {{jsxref("DateTimeFormat.prototype.resolvedOptions()", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}
    • -
    • {{jsxref("PluralRules.prototype.resolvedOptions()", "Intl.PluralRules.prototype.resolvedOptions()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.ListFormat.prototype.resolvedOptions()`](https://tc39.github.io/proposal-intl-list-format/#sec-Intl.ListFormat.prototype.resolvedOptions) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.ListFormat.resolvedOptions")}} + +## Voir aussi + +- {{jsxref("ListFormat", "Intl.ListFormat")}} +- {{jsxref("NumberFormat.prototype.resolvedOptions()", "Intl.NumberFormat.prototype.resolvedOptions()")}} +- {{jsxref("Collator.prototype.resolvedOptions()", "Intl.Collator.prototype.resolvedOptions()")}} +- {{jsxref("DateTimeFormat.prototype.resolvedOptions()", "Intl.DateTimeFormat.prototype.resolvedOptions()")}} +- {{jsxref("PluralRules.prototype.resolvedOptions()", "Intl.PluralRules.prototype.resolvedOptions()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/listformat/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/listformat/supportedlocalesof/index.md index b5f54c9535..ae6a5c4f24 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/listformat/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/listformat/supportedlocalesof/index.md @@ -11,77 +11,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/supportedLocalesOf original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/ListFormat/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    The Intl.ListFormat.supportedLocalesOf() renvoie, parmi les locales fournies, un tableau contenant les locales supportées pour le formatage des listes et qui ne nécessitent pas d'utiliser la locale par défaut de l'environnement.

    +The **`Intl.ListFormat.supportedLocalesOf()`** renvoie, parmi les locales fournies, un tableau contenant les locales supportées pour le formatage des listes et qui ne nécessitent pas d'utiliser la locale par défaut de l'environnement. -

    Syntaxe

    +## Syntaxe -
    Intl.ListFormat.supportedLocalesOf(locales[, options])
    + Intl.ListFormat.supportedLocalesOf(locales[, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Une chaîne de caractères qui est une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations concernant la forme générale de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}.
    -
    options{{optional_inline}}
    -
    -

    Paramètre facultatif. Un objet qui peut posséder les propriétés suivantes :

    +- `locales` + - : Une chaîne de caractères qui est une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations concernant la forme générale de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}. +- `options`{{optional_inline}} -
    -
    localeMatcher
    -
    -

    L'algorithme utilisé pour la correspondance entre chaînes de caractères. Les valeurs possibles sont "lookup" et "best fit". La valeur par défaut est "best fit". Pour plus d'informations, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}.

    -
    -
    -
    -
    + - : Paramètre facultatif. Un objet qui peut posséder les propriétés suivantes : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme utilisé pour la correspondance entre chaînes de caractères. Les valeurs possibles sont `"lookup"` et `"best fit"`. La valeur par défaut est `"best fit"`. Pour plus d'informations, voir la page {{jsxref("Objets_globaux/Intl", "Intl", "#Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langues qui sont prises en charge pour le formatage des listes sans qu'il faille utiliser la locale par défaut de l'environnement d'exécution.

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langues qui sont prises en charge pour le formatage des listes sans qu'il faille utiliser la locale par défaut de l'environnement d'exécution. -

    Cette méthode renvoie un tableau qui est un sous-ensemble des balises de locales fournies avec l'argument locales. Les balises renvoyées sont celles supportées par l'environnement navigateur en termes de formatage des listes et qui ne nécessitent pas d'utiliser la locale par défaut.

    +## Description -

    Exemples

    +Cette méthode renvoie un tableau qui est un sous-ensemble des balises de locales fournies avec l'argument `locales`. Les balises renvoyées sont celles supportées par l'environnement navigateur en termes de formatage des listes et qui ne nécessitent pas d'utiliser la locale par défaut. -

    Utiliser supportedLocalesOf

    +## Exemples -

    Si on dispose d'un environnement (un navigateur par exemple) qui supporte le formatage des listes dans les locales indonésienne, allemande mais pas balinaise,  supportedLocalesOf renvoie les balises pour l'indonésien et l'allemand quand bien même le formatage des listes pinyin n'est pas utilisée avec l'indonésien et qu'il n'existe pas une version spécifique de l'allemand pour l'Indonésie. On illustre ici l'algorithme "lookup". SI on utilisait "best fit" pour trouver les locales correspondantes, on aurait pu avoir une balise supplémentaire pour le balinais en plus car la plupart des balinais comprennent l'indonésien.

    +### Utiliser `supportedLocalesOf` -
    const locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
    +Si on dispose d'un environnement (un navigateur par exemple) qui supporte le formatage des listes dans les locales indonésienne, allemande mais pas balinaise,  `supportedLocalesOf` renvoie les balises pour l'indonésien et l'allemand quand bien même le formatage des listes pinyin n'est pas utilisée avec l'indonésien et qu'il n'existe pas une version spécifique de l'allemand pour l'Indonésie. On illustre ici l'algorithme `"lookup"`. SI on utilisait `"best fit"` pour trouver les locales correspondantes, on aurait pu avoir une balise supplémentaire pour le balinais en plus car la plupart des balinais comprennent l'indonésien.
    +
    +```js
    +const locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
     const options = { localeMatcher: 'lookup' };
     console.log(Intl.ListFormat.supportedLocalesOf(locales, options).join(', '));
     // → "id-u-co-pinyin, de-ID"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.ListFormat.supportedLocalesOfProposition de niveau 3 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.ListFormat.supportedLocalesOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("ListFormat", "Intl.ListFormat")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.ListFormat.supportedLocalesOf`](https://tc39.github.io/proposal-intl-list-format/#sec-Intl.ListFormat.supportedLocalesOf) | Proposition de niveau 3 |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.ListFormat.supportedLocalesOf")}} + +## Voir aussi + +- {{jsxref("ListFormat", "Intl.ListFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/basename/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/basename/index.md index a13032aa1d..cbbb4f6856 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/basename/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/basename/index.md @@ -10,65 +10,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/baseName original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/baseName --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.baseName renvoie un extrait de la chaîne de caractères représentant l'objet Locale. Cet extrait contient les informations essentielles à propos de l'objet Locale.

    +La propriété **`Intl.Locale.prototype.baseName`** renvoie un extrait de la chaîne de caractères représentant l'objet `Locale`. Cet extrait contient les informations essentielles à propos de l'objet `Locale`. -

    Description

    +## Description -

    Un objet Intl.Locale représente une locale ainsi que des options qui lui sont associées. La propriété baseName renvoie des informations essentielles quant à la locale sous la forme d'une chaîne de caractères. Cette chaîne est un extrait de la représentation textuelle complète de l'objet Locale. Cet extrait contient notamment la langue, le script utilisé ainsi que la région (s'ils sont disponibles).

    +Un objet `Intl.Locale` représente une locale ainsi que des options qui lui sont associées. La propriété `baseName` renvoie des informations essentielles quant à la locale sous la forme d'une chaîne de caractères. Cette chaîne est un extrait de la représentation textuelle complète de l'objet `Locale`. Cet extrait contient notamment la langue, le script utilisé ainsi que la région (s'ils sont disponibles). -

    Si on utilise la grammaire Unicode, baseName renvoie la sous-séquence language ["-" script] ["-" region] *("-" variant).

    +Si on utilise [la grammaire Unicode](https://www.unicode.org/reports/tr35/#Identifiers), `baseName` renvoie la sous-séquence `language ["-" script] ["-" region] *("-" variant)`. -

    Exemples

    +## Exemples -

    Exemple simple

    +### Exemple simple -
    let myLoc = new Intl.Locale("fr-Latn-CA"); // Sets locale to Candanian French
    +```js
    +let myLoc = new Intl.Locale("fr-Latn-CA"); // Sets locale to Candanian French
     console.log(myLoc.toString()); // Prints out "fr-Latn-CA-u-ca-gregory"
    -console.log(myLoc.baseName); // Prints out "fr-Latn-CA"
    +console.log(myLoc.baseName); // Prints out "fr-Latn-CA" +``` -

    Exemple avec certaines options

    +### Exemple avec certaines options -
    // Sets language to Japanese, region to Japan,
    +```js
    +// Sets language to Japanese, region to Japan,
     
     // calendar to Gregorian, hour cycle to 24 hours
     let japan = new Intl.Locale("ja-JP-u-ca-gregory-hc-24");
     console.log(japan.toString()); // Prints out "ja-JP-u-ca-gregory-hc-h24"
    -console.log(japan.baseName); // Prints out "ja-JP"
    +console.log(japan.baseName); // Prints out "ja-JP" +``` -

    Exemple avec options qui surchargent

    +### Exemple avec options qui surchargent -
    // Input string indicates language as Dutch and region as Belgium,
    +```js
    +// Input string indicates language as Dutch and region as Belgium,
     
     // but options object overrides the region and sets it to the Netherlands
     let dutch = new Intl.Locale("nl-Latn-BE", {region: "NL"});
     
    -console.log(dutch.baseName); // Prints out "nl-Latn-NL"
    +console.log(dutch.baseName); // Prints out "nl-Latn-NL" +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.baseNameProposition de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.baseName`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.baseName) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.baseName")}}
    +{{Compat("javascript.builtins.Intl.Locale.baseName")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Locale", "Intl.Locale")}}
    • -
    +- {{jsxref("Locale", "Intl.Locale")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/calendar/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/calendar/index.md index a27a8efbb5..e9d990d117 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/calendar/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/calendar/index.md @@ -11,147 +11,159 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/calendar original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/calendar --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.calendar est une propriété (via un accesseur) qui renvoie le type de calendrier utilisé par l'instance de Locale.

    +La propriété **`Intl.Locale.prototype.calendar`** est une propriété (via un accesseur) qui renvoie le type de calendrier utilisé par l'instance de `Locale`. -

    Description

    +## Description -

    La propriété calendar renvoie la partie de la locale qui indique le calendrier utilisé. Bien que la plupart des régions utilise le calendrier grégorien, il existe différents calendriers utilisés. Le tableau qui suit indique les clés Unicode pour les différents calendriers ainsi qu'une description.

    +La propriété `calendar` renvoie la partie de la locale qui indique le calendrier utilisé. Bien que la plupart des régions utilise le calendrier grégorien, il existe différents calendriers utilisés. Le tableau qui suit indique les clés Unicode pour les différents calendriers ainsi qu'une description. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Clés Unicode pour les calendriers
    Clé UnicodeDescription
    buddhistCalendrier bouddhiste
    chineseCalendrier chinois traditionnel
    copticCalendrier copte
    dangiCalendrier coréen traditionnel
    ethioaaCalendrier éthiopique, Amete Alem (an 0 situé environ à  5493 ans avant notre ère)
    ethiopicCalendrier éthiopique, Amete Mihret (an 0 situé environ à 8 ans de notre ère)
    gregoryCalendrier grégorien
    hebrewCalendrier traditionnel hébreux
    indianCalendrier indien
    islamicCalendrier islamique
    islamic-umalquraCalendrier islamique, Umm al-Qura
    islamic-tblaCalendrier islamique tabulaire (années intercalaires [2,5,7,10,13,16,18,21,24,26,29] - origine des temps astronomique)
    islamic-civilCalendrier islamique tabulaire (années intercalaires [2,5,7,10,13,16,18,21,24,26,29] - origine des temps civile)
    islamic-rgsaCalendrier islamique vu de l'Arabie saoudite
    iso8601Calendrier ISO (calendrier grégorien utilisant la numérotation des semaines ISO 8601)
    japaneseCalendrier japonais impérial
    persianCalendrier perse
    rocCalendrier de la République de Chine
    -

    Attention : La clé  islamicc est désormais dépréciée et il faut utiliser islamic-civil à la place.

    - -

    islamicc

    -
    Calendrier arabe civil (algorithmique)
    + Clés Unicode pour les calendriers +
    Clé UnicodeDescription
    buddhistCalendrier bouddhiste
    chineseCalendrier chinois traditionnel
    copticCalendrier copte
    dangiCalendrier coréen traditionnel
    ethioaa + Calendrier éthiopique, Amete Alem (an 0 situé environ à  5493 ans avant + notre ère) +
    ethiopic + Calendrier éthiopique, Amete Mihret (an 0 situé environ à 8 ans de notre + ère) +
    gregoryCalendrier grégorien
    hebrewCalendrier traditionnel hébreux
    indianCalendrier indien
    islamicCalendrier islamique
    islamic-umalquraCalendrier islamique, Umm al-Qura
    islamic-tbla + Calendrier islamique tabulaire (années intercalaires + [2,5,7,10,13,16,18,21,24,26,29] - origine des temps astronomique) +
    islamic-civil + Calendrier islamique tabulaire (années intercalaires + [2,5,7,10,13,16,18,21,24,26,29] - origine des temps civile) +
    islamic-rgsaCalendrier islamique vu de l'Arabie saoudite
    iso8601 + Calendrier ISO (calendrier grégorien utilisant la numérotation des + semaines ISO 8601) +
    japaneseCalendrier japonais impérial
    persianCalendrier perse
    rocCalendrier de la République de Chine
    +
    +

    + Attention : La clé  islamicc est + désormais dépréciée et il faut utiliser islamic-civil à + la place. +

    +
    +

    islamicc

    +
    Calendrier arabe civil (algorithmique)
    -

    Exemples

    +## Exemples -

    Indiquer le calendrier via la chaîne de définition de la locale

    +### Indiquer le calendrier via la chaîne de définition de la locale -

    Les calendriers font partie des « clés d'extension ». Ces clés permettent d'ajouter des informations supplémentaires aux locales et sont ajoutées via l'extension -u. Ainsi, on peut indiquer le calendrier utilisé via la chaîne de locale passée comme argument au constructeur {{jsxref("Locale", "Intl.Locale")}}. Pour ce faire, on ajoutera d'abord -u à la chaîne « courte » de la locale puis -ca afin d'indiquer qu'on précise le calendrier et enfin la chaîne représentant la clé du calendrier.

    +Les calendriers font partie des « clés d'extension ». Ces clés permettent d'ajouter des informations supplémentaires aux locales et sont ajoutées via l'extension `-u`. Ainsi, on peut indiquer le calendrier utilisé via la chaîne de locale passée comme argument au constructeur {{jsxref("Locale", "Intl.Locale")}}. Pour ce faire, on ajoutera d'abord `-u` à la chaîne « courte » de la locale puis `-ca` afin d'indiquer qu'on précise le calendrier et enfin la chaîne représentant la clé du calendrier. -
    let frBuddhist = new Intl.Locale("fr-FR-u-ca-buddhist");
    -console.log(frBuddhist.calendar); // affiche "buddhist" dans la console
    +```js +let frBuddhist = new Intl.Locale("fr-FR-u-ca-buddhist"); +console.log(frBuddhist.calendar); // affiche "buddhist" dans la console +``` -

    Spécifier un calendrier grâce à un objet de configuration

    +### Spécifier un calendrier grâce à un objet de configuration -

    Le constructeur {{jsxref("Locale", "Intl.Locale")}} peut utiliser un argument optionnel qui est un objet permettant de configurer la locale via différentes extensions dont les calendriers. En utilisant la propriété calendar de cet objet, on définit le calendrier qui sera utilisé :

    +Le constructeur {{jsxref("Locale", "Intl.Locale")}} peut utiliser un argument optionnel qui est un objet permettant de configurer la locale via différentes extensions dont les calendriers. En utilisant la propriété `calendar` de cet objet, on définit le calendrier qui sera utilisé : -
    let frBuddhist = new Intl.Locale("fr-FR", {calendar: "buddhist"});
    +```js
    +let frBuddhist = new Intl.Locale("fr-FR", {calendar: "buddhist"});
     console.log(frBuddhist.calendar); // affiche "buddhist" dans la console
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.calendarProposition de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.calendar`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.calendar) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.calendar")}}
    +{{Compat("javascript.builtins.Intl.Locale.calendar")}} -

    Voir aussi

    +## Voir aussi - +- {{jsxref("Locale", "Intl.Locale")}} +- [Identifiants Unicode pour les calendriers](https://www.unicode.org/reports/tr35/#UnicodeCalendarIdentifier) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/casefirst/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/casefirst/index.md index e271f2b621..b5e2d8d422 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/casefirst/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/casefirst/index.md @@ -12,82 +12,55 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/caseFirst original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/caseFirst --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.caseFirst est une propriété (via un accesseur) qui renvoie si la casse est prise en compte par la locale pour ses règles de collation (celles qui permettent d'ordonner des chaînes de caractères entre elles).

    +La propriété **`Intl.Locale.prototype.caseFirst`** est une propriété (via un accesseur) qui renvoie si la casse est prise en compte par la locale pour ses règles de collation (celles qui permettent d'ordonner des chaînes de caractères entre elles). -

    Description

    +## Description -

    Les règles de collation des locales sont utilisées afin de déterminer la façon dont les chaînes sont ordonnées pour cette locale. Certaines locales utilisent la casse (minuscule ou majuscule) dans ce processus de collation. Cette règle peut être exprimée via la propriété caseFirst d'une instance Locale.

    +Les règles de collation des locales sont utilisées afin de déterminer la façon dont les chaînes sont ordonnées pour cette locale. Certaines locales utilisent la casse (minuscule ou majuscule) dans ce processus de collation. Cette règle peut être exprimée via la propriété `caseFirst` d'une instance `Locale`. -

    Cette propriété peut avoir une des 3 valeurs suivantes :

    +Cette propriété peut avoir une des 3 valeurs suivantes : - - - - - - - - - - - - - - - - - - - - - - -
    Valeurs pour caseFirst
    ValeurDescription
    upperLes majuscules devraient être triées avant les minuscules.
    lowerLes minuscules devraient être triées avant les majuscules.
    falseLa casse n'a pas d'importance pour le tri des chaînes.
    +| Valeur | Description | +| ------- | ---------------------------------------------------------- | +| `upper` | Les majuscules devraient être triées avant les minuscules. | +| `lower` | Les minuscules devraient être triées avant les majuscules. | +| `false` | La casse n'a pas d'importance pour le tri des chaînes. | -

    Exemples

    +## Exemples -

    Définir caseFirst grâce à la chaîne de description de la locale

    +### Définir `caseFirst` grâce à la chaîne de description de la locale -

    Le constructeur Intl.Locale prend comme premier argument une chaîne de caractères qui décrit la locale. On peut allonger cette chaîne avec certaines valeurs afin de l'affiner.

    +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") prend comme premier argument une chaîne de caractères qui décrit la locale. On peut allonger cette chaîne avec certaines valeurs afin de l'affiner. -

    Dans la spécification Unicode sur les clés des extensions, caseFirst correspond à la clé kf. kf. Il est possible d'ajouter des extensions à la chaîne identifiant la locale en la concaténant à -u puis en concaténant la clé de l'extension qu'on souhaite préciser (ici -kf) puis en ajoutant enfin la valeur pour cette extension (ici upper) :

    +Dans la [spécification Unicode sur les clés des extensions](https://www.unicode.org/reports/tr35/), `caseFirst` correspond à la clé` kf`. `kf`. Il est possible d'ajouter des extensions à la chaîne identifiant la locale en la concaténant à `-u` puis en concaténant la clé de l'extension qu'on souhaite préciser (ici `-kf`) puis en ajoutant enfin la valeur pour cette extension (ici `upper`) : -
    let caseFirstStr = new Intl.Locale("fr-Latn-FR-u-kf-upper");
    -console.log(caseFirstStr.caseFirst); // Prints "upper"
    +```js +let caseFirstStr = new Intl.Locale("fr-Latn-FR-u-kf-upper"); +console.log(caseFirstStr.caseFirst); // Prints "upper" +``` -

    Définir caseFirst via l'objet de configuration

    +### Définir `caseFirst` via l'objet de configuration -

    Le constructeur Intl.Locale permet d'utiliser un objet de configuration comme deuxième argument. Les propriétés de cet objet seront autant d'extensions Unicode à utiliser pour la locale. Ici, on peut utiliser un objet avec la propriété caseFirst pour indiquer l'impact de la casse sur la collation de cette locale :

    +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") permet d'utiliser un objet de configuration comme deuxième argument. Les propriétés de cet objet seront autant d'extensions Unicode à utiliser pour la locale. Ici, on peut utiliser un objet avec la propriété `caseFirst` pour indiquer l'impact de la casse sur la collation de cette locale : -
    let caseFirstObj= new Intl.Locale("en-Latn-US", {caseFirst: "lower"});
    -console.log(us12hour.caseFirst); // affichera "lower" dans la console.
    +```js +let caseFirstObj= new Intl.Locale("en-Latn-US", {caseFirst: "lower"}); +console.log(us12hour.caseFirst); // affichera "lower" dans la console. +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.LocaleProposition de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.caseFirst) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.caseFirst")}}
    +{{Compat("javascript.builtins.Intl.Locale.caseFirst")}} -

    Voir aussi

    +## Voir aussi - +- {{jsxref("Locale", "Intl.Locale")}} +- [Spécification Unicode pour la collation selon la casse](https://github.com/unicode-org/cldr/blob/master/common/bcp47/collation.xml#L49) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/collation/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/collation/index.md index fe261c15a3..3e856490ab 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/collation/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/collation/index.md @@ -11,156 +11,173 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/collation original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/collation --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.collation est une propriété (à laquelle on accède via un accesseur) qui renvoie le type de collation pour l'instance de Locale courante. La collation est la méthode qui permet d'ordonner des chaînes de caractères en fonction des règles de la locale.

    +La propriété **`Intl.Locale.prototype.collation`** est une propriété (à laquelle on accède via un accesseur) qui renvoie le [type de collation](https://www.unicode.org/reports/tr35/tr35-collation.html#CLDR_Collation) pour l'instance de `Locale` courante. La collation est la méthode qui permet d'ordonner des chaînes de caractères en fonction des règles de la locale. -

    Description

    +## Description -

    La collation est la façon dont les chaînes de caractères sont ordonnées. Elle est utilisée lorsqu'on doit trier des chaînes de caractères (des résultats de recherche, des enregistrements dans une base de donnée, etc.). Bien que cela puisse sembler trivial, la collation varie d'une région à l'autre et d'une langue à une autre. Cette propriété permet aux développeurs de connaître le type de collation pour une locale donnée.

    +La collation est la façon dont les chaînes de caractères sont ordonnées. Elle est utilisée lorsqu'on doit trier des chaînes de caractères (des résultats de recherche, des enregistrements dans une base de donnée, etc.). Bien que cela puisse sembler trivial, la collation varie d'une région à l'autre et d'une langue à une autre. Cette propriété permet aux développeurs de connaître le type de collation pour une locale donnée. -

    Voici un tableau listant les types de collation possibles tels que définis dans la spécification Unicode sur la collation.

    +Voici un tableau listant les types de collation possibles tels que définis dans [la spécification Unicode sur la collation](https://github.com/unicode-org/cldr/blob/2dd06669d833823e26872f249aa304bc9d9d2a90/common/bcp47/collation.xml). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Les différents types de collation
    Type de collationDescription
    big5hanOrdre pinyin pour l'alphabet latin et ordre big5 pour les caractères CJK (utilisés en chinois)
    compatUne version précédente de l'ordre, utilisée à des fins de compatibilité
    dictOrdre à la façon d'un dictionnaire (comme utilisé en cingalais)
    -
    -

    Attention : Le type direct a été déprécié et ne doit pas être utilisé.

    -
    - -

    direct

    -
    Ordre des points de code binaires (utilisé en hindoux)
    ducetLa collation Unicode par défaut pour les éléments d'un tableau
    emojiL'ordre recommandé pour les émojis
    eorRègles d'ordre européennes
    gb2312Ordre pinyin pour l'alphabet latin et ordre gb2312han pour les caractères CJK (utilisés en chinois)
    phonebkOrdre à la façon d'un annuaire (tel qu'en allemand)
    phoneticOrdre phonétique, basé sur la prononciation
    pinyinOrdre pinyin pour les caractères de l'alphabet latin et les caractères CJK (utilisés en chniois)
    reformedOrdre réformé (tel qu'en suédois)
    searchCollation spéciale pour les chaînes de caractères utilisées pour des recherches
    searchjlCollation spéciale pour la recherche des consonnes initiales en coréen
    standardL'ordre par défaut pour chaque langue
    strokeOrdre pinyin pour l'alphabet latin et ordre de dessin (stroke) pour les caractères CJK (utilisés en chinois)
    tradOrdre traditionnel (tel qu'en espagnol)
    unihanOrdre pinyin pour l'alphabet latin et ordre Unihan radical pour les caractères CJK (utilisés en chinois)
    zhuyin -

    Ordre pinyin pour l'alphabet latin, ordre zhuyin pour les caractères Bopomofo et CJK (utilisés en chinois)

    -
    + Les différents types de collation +
    Type de collationDescription
    big5han + Ordre pinyin pour l'alphabet latin et ordre big5 pour les caractères CJK + (utilisés en chinois) +
    compat + Une version précédente de l'ordre, utilisée à des fins de compatibilité +
    dictOrdre à la façon d'un dictionnaire (comme utilisé en cingalais)
    +
    +

    + Attention : Le type direct a été + déprécié et ne doit pas être utilisé. +

    +
    +

    direct

    +
    Ordre des points de code binaires (utilisé en hindoux)
    ducetLa collation Unicode par défaut pour les éléments d'un tableau
    emojiL'ordre recommandé pour les émojis
    eorRègles d'ordre européennes
    gb2312 + Ordre pinyin pour l'alphabet latin et ordre gb2312han pour les + caractères CJK (utilisés en chinois) +
    phonebkOrdre à la façon d'un annuaire (tel qu'en allemand)
    phoneticOrdre phonétique, basé sur la prononciation
    pinyin + Ordre pinyin pour les caractères de l'alphabet latin et les caractères + CJK (utilisés en chniois) +
    reformedOrdre réformé (tel qu'en suédois)
    search + Collation spéciale pour les chaînes de caractères utilisées pour des + recherches +
    searchjl + Collation spéciale pour la recherche des consonnes initiales en coréen +
    standardL'ordre par défaut pour chaque langue
    stroke + Ordre pinyin pour l'alphabet latin et ordre de dessin (stroke) + pour les caractères CJK (utilisés en chinois) +
    tradOrdre traditionnel (tel qu'en espagnol)
    unihan + Ordre pinyin pour l'alphabet latin et ordre Unihan radical pour les + caractères CJK (utilisés en chinois) +
    zhuyin +

    + Ordre pinyin pour l'alphabet latin, ordre zhuyin pour les caractères + Bopomofo et CJK (utilisés en chinois) +

    +
    -

    Exemples

    +## Exemples -

    À l'instar des autres étiquettes, le type de collation peut être défini pour l'objet {{jsxref("Locale", "Intl.Locale")}} via la chaîne de caractères qui définit la locale ou grâce au deuxième paramètre du constructeur qui est un objet de configuration.

    +À l'instar des autres étiquettes, le type de collation peut être défini pour l'objet {{jsxref("Locale", "Intl.Locale")}} via la chaîne de caractères qui définit la locale ou grâce au deuxième paramètre du constructeur qui est un objet de configuration. -

    Définir le type de collation via la chaîne décrivant la locale

    +### Définir le type de collation via la chaîne décrivant la locale -

    Le premier argument passé à Intl.Locale est une chaîne de caractères qui décrit la locale. Cette chaîne peut contenir des fragments additionnels (en plus de l'identifiant canonique de la locale). Pour cela, on ajoutera -u afin d'indiquer qu'on définit une extension. On ajoutera ensuite la clé identifiant cette extension, ici -co pour la collation. Enfin, on ajoutera la valeur souhaitée pour cette extension (dans cet exemple, -emoji) :

    +Le premier argument passé à [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") est une chaîne de caractères qui décrit la locale. Cette chaîne peut contenir des fragments additionnels (en plus de l'identifiant canonique de la locale). Pour cela, on ajoutera `-u` afin d'indiquer qu'on définit une extension. On ajoutera ensuite la clé identifiant cette extension, ici `-co` pour la collation. Enfin, on ajoutera la valeur souhaitée pour cette extension (dans cet exemple, `-emoji`) : -
    let stringColl = new Intl.Locale("en-Latn-US-u-co-emoji");
    +```js
    +let stringColl = new Intl.Locale("en-Latn-US-u-co-emoji");
     console.log(stringColl.collation); // Affichera "emoji" dans la console
    -
    +``` -

    Définir le type de collation via l'objet de configuration

    +### Définir le type de collation via l'objet de configuration -

    Le constructeur Intl.Locale possède un deuxième argument optionnel qui est un objet de configuration. Chaque propriété de cet objet pourra permettre de préciser une extension à la locale, y compris un type de collation. Pour définir le type de collation, on pourra utiliser une propriété collation sur cet objet avec une des valeurs indiquées ci-avant :

    +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") possède un deuxième argument optionnel qui est un objet de configuration. Chaque propriété de cet objet pourra permettre de préciser une extension à la locale, y compris un type de collation. Pour définir le type de collation, on pourra utiliser une propriété `collation` sur cet objet avec une des valeurs indiquées ci-avant : -
    let configColl = new Intl.Locale("en-Latn-US", {collation: "emoji"});
    -console.log(configColl.collation); // Affichera "emoji" dans la console
    +```js +let configColl = new Intl.Locale("en-Latn-US", {collation: "emoji"}); +console.log(configColl.collation); // Affichera "emoji" dans la console +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.collationProposition de niveau 3
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.collation`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.collation) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.Locale.collation")}}

    +{{Compat("javascript.builtins.Intl.Locale.collation")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Locale", "Intl.Locale")}}
    • -
    +- {{jsxref("Locale", "Intl.Locale")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/hourcycle/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/hourcycle/index.md index c46c209435..14cb734a56 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/hourcycle/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/hourcycle/index.md @@ -11,84 +11,52 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/hourCycle --- -
    {{JSRef}}
    - -

    La propriété Intl.Locale.prototype.hourCycle est une propriété accessible via un accesseur qui renvoie la convention pour le format des heures utilisée par la locale courante.

    - -

    Description

    - -

    Il existe deux types de conventions pour la représentation des heures : sur douze heures d'une part et sur vingt-quatre heures d'autre part. La propriété hourCycle permet aux développeurs de connaître la représentation utilisée par une locale donnée. À l'instar des autres données fournies par les instances de Locale, hourCycle représente une extension Unicode qui permet d'affiner le comportement d'une locale. Les valeurs de cette propriété/extension peuvent être :

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Valeurs possibles pour l'extension hourCycle
    CléDescription
    h12Système horaire sur les heures 1 à 12 (correspond à la notation "h" pour les motifs de recherche). L'horloge est sur douze heures et minuit commence à 12:00 AM.
    h23Système horaire sur les heures 0 à 23 (correspond à la notation "H" pour les motifs de recherche). L'horloge est sur vingt-quatre heures et minuit commence à 0:00.
    h11Système horaire sur les heures 0 à 11 (correspond à la notation "K" pour les motifs de recherche). L'horloge est sur douze heures et minuit commence à 0:00 AM.
    h24Système horaire sur les heures 1 à 24 (correspond à la notation "K" pour les motifs de recherche). L'horloge est sur vingt-quatre heures et minuit commence à 24:00.
    - -

    Exemples

    - -

    Définir le format horaire grâce à la chaîne décrivant la locale

    - -

    Il est possible de préciser la valeur d'une extension Unicode dans la chaîne de caractères représentant la locale. Pour indiquer l'extension, on ajoutera le suffixe -u qui indique une clé d'extension à venir, ensuite on ajoutera la clé de l'extension en question (ici -hc) et enfin on ajoutera la valeur souhaitée pour cette extension.

    - -
    let fr24hour = new Intl.Locale("fr-FR-u-hc-h23");
    -console.log(fr24hour.hourCycle); // Affichera "h23" dans la console
    - -

    Définir le format horaire grâce à un objet de configuration

    - -

    Le constructeur Intl.Locale permet d'utiliser un objet de configuration comme deuxième argument. Les propriétés de cet objet permettent de définir différentes extensions, y compris celle pour le format horaire. Pour cela, on indiquera la propriété hourCycle sur l'objet de configuration avec la valeur souhaitée et on passera cet objet au constructeur.

    - -
    let us12hour = new Intl.Locale("en-US-u-hc-h12");
    -console.log(us12hour.hourCycle); // Affichera "h12" dans la console
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.LocaleProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -
    {{Compat("javascript.builtins.Intl.Locale.hourCycle")}}
    - -

    Voir aussi

    - - +{{JSRef}} + +La propriété **`Intl.Locale.prototype.hourCycle`** est une propriété accessible via un accesseur qui renvoie la convention pour le format des heures utilisée par la locale courante. + +## Description + +Il existe deux types de conventions pour la représentation des heures : sur douze heures d'une part et sur vingt-quatre heures d'autre part. La propriété `hourCycle` permet aux développeurs de connaître la représentation utilisée par une locale donnée. À l'instar des autres données fournies par les instances de `Locale`, `hourCycle` représente une [extension Unicode](https://www.unicode.org/reports/tr35/#u_Extension) qui permet d'affiner le comportement d'une locale. Les valeurs de cette propriété/extension peuvent être : + +| Clé | Description | +| ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `h12` | Système horaire sur les heures 1 à 12 (correspond à la notation "h" pour les motifs de recherche). L'horloge est sur douze heures et minuit commence à 12:00 AM. | +| `h23` | Système horaire sur les heures 0 à 23 (correspond à la notation "H" pour les motifs de recherche). L'horloge est sur vingt-quatre heures et minuit commence à 0:00. | +| `h11` | Système horaire sur les heures 0 à 11 (correspond à la notation "K" pour les motifs de recherche). L'horloge est sur douze heures et minuit commence à 0:00 AM. | +| `h24` | Système horaire sur les heures 1 à 24 (correspond à la notation "K" pour les motifs de recherche). L'horloge est sur vingt-quatre heures et minuit commence à 24:00. | + +## Exemples + +### Définir le format horaire grâce à la chaîne décrivant la locale + +Il est possible de préciser la valeur d'une extension Unicode dans la chaîne de caractères représentant la locale. Pour indiquer l'extension, on ajoutera le suffixe `-u` qui indique une clé d'extension à venir, ensuite on ajoutera la clé de l'extension en question (ici `-hc`) et enfin on ajoutera la valeur souhaitée pour cette extension. + +```js +let fr24hour = new Intl.Locale("fr-FR-u-hc-h23"); +console.log(fr24hour.hourCycle); // Affichera "h23" dans la console +``` + +### Définir le format horaire grâce à un objet de configuration + +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") permet d'utiliser un objet de configuration comme deuxième argument. Les propriétés de cet objet permettent de définir différentes extensions, y compris celle pour le format horaire. Pour cela, on indiquera la propriété `hourCycle` sur l'objet de configuration avec la valeur souhaitée et on passera cet objet au constructeur. + +```js +let us12hour = new Intl.Locale("en-US-u-hc-h12"); +console.log(us12hour.hourCycle); // Affichera "h12" dans la console +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.hourCycle) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.hourCycle")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} +- [Spécification pour l'extension Unicode des cycles horaires](https://www.unicode.org/reports/tr35/#UnicodeHourCycleIdentifier) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/index.md index 07608fd53c..95dbb3bc0d 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/index.md @@ -10,62 +10,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale --- -
    {{JSRef}}{{SeeCompatTable}}
    +{{JSRef}}{{SeeCompatTable}} -

    Le constructeur Intl.Locale est une propriété native de l'objet Intl représentant l'identifiant d'une locale Unicode.

    +Le constructeur **`Intl.Locale`** est une propriété native de l'objet `Intl` représentant l'identifiant d'une locale Unicode. -

    {{EmbedInteractiveExample("pages/js/intl-locale.html")}}

    +{{EmbedInteractiveExample("pages/js/intl-locale.html")}} -

    Syntaxe

    +## Syntaxe -
    new Intl.Locale([tag[, options]])
    + new Intl.Locale([tag[, options]]) -

    Paramètres

    +### Paramètres -
    -
    tag
    -
    La chaîne de caractère représentant l'identifiant d'une locale Unicode.
    -
    options
    -
    Un objet contenant la configuration pour la locale. Les clés (noms des propriétés) de cet objets sont des balises Unicode et les valeurs de ces propriétés doivent être des valeurs de balises Unicode valides.
    -
    +- `tag` + - : La chaîne de caractère représentant l'identifiant d'une locale Unicode. +- `options` + - : Un objet contenant la configuration pour la locale. Les clés (noms des propriétés) de cet objets sont des balises Unicode et les valeurs de ces propriétés doivent être des valeurs de balises Unicode valides. -

    Description

    +## Description -

    L'objet Intl.locale a été conçu afin de manipuler des locales Unicode. Les locales Unicode sont représentées par une chaîne de caractères qu'on appelle « identifiant de locale ». L'identifant de locale se compose d'un identifiant de langue et d'extensions. Les identifiants de langue sont la composante principale d'une locale et contiennent une langue, un système d'écriture et des extensions régionales. Les informations complémentaires sont stockées via les extensions. Ces extensions peuvent fournir des informations quant au type de calendrier utilisé, le format d'heure utilisé ou la numération utilisée.

    +L'objet `Intl.locale` a été conçu afin de manipuler des locales Unicode. Les locales Unicode sont représentées par une chaîne de caractères qu'on appelle « identifiant de locale ». L'identifant de locale se compose d'un identifiant de langue et d'extensions. Les identifiants de langue sont la composante principale d'une locale et contiennent une langue, un système d'écriture et des extensions régionales. Les informations complémentaires sont stockées via les extensions. Ces extensions peuvent fournir des informations quant au type de calendrier utilisé, le format d'heure utilisé ou la numération utilisée. -

    L'objet Intl.Locale possède les propriétés et méthodes suivantes.

    +L'objet `Intl.Locale` possède les propriétés et méthodes suivantes. -

    Propriétés

    +### Propriétés -
    -
    {{jsxref("Locale.prototype","Intl.Locale.prototype")}}
    -
    Le prototype pour le constructeur Locale.
    -
    +- {{jsxref("Locale.prototype","Intl.Locale.prototype")}} + - : Le prototype pour le constructeur `Locale`. -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.LocaleProposition de niveau 3
    +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale`](https://tc39.github.io/proposal-intl-locale/#locale-objects) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.Locale")}}

    +{{Compat("javascript.builtins.Intl.Locale")}} -

    Voir aussi

    +## Voir aussi - +- [La prothèse d'émulation (_polyfill_) pour `Intl.Locale`](https://github.com/zbraniecki/Intl.js/tree/intllocale) +- [La spécification Unicode pour les identifiants de locale](https://www.unicode.org/reports/tr35/#Canonical_Unicode_Locale_Identifiers) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/language/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/language/index.md index 4fe3adfb90..c5e52123c9 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/language/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/language/index.md @@ -11,58 +11,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/language original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/language --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.language est une propriété fournie via un accesseur qui renvoie la langue associée à la locale.

    +La propriété **`Intl.Locale.prototype.language`** est une propriété fournie via un accesseur qui renvoie la langue associée à la locale. -

    Description

    +## Description -

    La langue est l'une des caractéristiques majeurs d'une locale. La spécification Unicode indique que l'identifiant de la langue d'une locale est composée de l'identifiant canonique de la langue et de l'identifiant de la réponse (on pourra ainsi distinguer l'anglais britannique de l'anglais américain). Toutefois, la propriété language de {{jsxref("Locale", "Locale")}} renvoie uniquement la composante relative à la langue.

    +La langue est l'une des caractéristiques majeurs d'une locale. La spécification Unicode indique que l'identifiant de la langue d'une locale est composée de l'identifiant canonique de la langue et de l'identifiant de la réponse (on pourra ainsi distinguer l'anglais britannique de l'anglais américain). Toutefois, la propriété `language` de {{jsxref("Locale", "Locale")}} renvoie uniquement la composante relative à la langue. -

    Exemples

    +## Exemples -

    Indiquer la langue via la chaîne décrivant la locale

    +### Indiquer la langue via la chaîne décrivant la locale -

    Afin de pouvoir représenter une locale Unicode correctement, une chaîne doit commencer par un identifiant de langue. Le principal argument du constructeur {{jsxref("Locale", "Locale")}} doit être un identifiant valide et doit donc contenir la composante liée à la langue.

    +Afin de pouvoir représenter une locale Unicode correctement, une chaîne doit commencer par un identifiant de langue. Le principal argument du constructeur {{jsxref("Locale", "Locale")}} doit être un identifiant valide et doit donc contenir la composante liée à la langue. -
    let langStr = new Intl.Locale("en-Latn-US");
    +```js
    +let langStr = new Intl.Locale("en-Latn-US");
     
    -console.log(langStr.language); // Affichera "en" dans la console
    +console.log(langStr.language); // Affichera "en" dans la console +``` -

    Surcharger la langue via l'objet de configuration

    +### Surcharger la langue via l'objet de configuration -

    Bien que la composante de la langue doive être indiquée dans le premier paramètre, le constructeur {{jsxref("Locale", "Locale")}} prend comme deuxième argument un objet de configuration qui permet de surcharger cette composante.

    +Bien que la composante de la langue doive être indiquée dans le premier paramètre, le constructeur {{jsxref("Locale", "Locale")}} prend comme deuxième argument un objet de configuration qui permet de surcharger cette composante. -
    let langObj = new Intl.Locale("en-Latn-US", {language: "es"});
    +```js
    +let langObj = new Intl.Locale("en-Latn-US", {language: "es"});
     
    -console.log(langObj.language); // Affichera "es" dans la console
    +console.log(langObj.language); // Affichera "es" dans la console +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.languageProposition de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.language`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.language) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.language")}}
    +{{Compat("javascript.builtins.Intl.Locale.language")}} -

    Voir aussi

    +## Voir aussi - +- {{jsxref("Locale", "Locale")}} +- [Spécification des extensions Unicode](https://www.unicode.org/reports/tr35/#unicode_language_subtag_validity) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/maximize/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/maximize/index.md index 74411b818c..f125b58901 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/maximize/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/maximize/index.md @@ -10,27 +10,28 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/maximize original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/maximize --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Locale.prototype.maximize() permet d'obtenir les valeurs les plus vraisemblantes pour la langue, le script et la région de la locale en fonction des valeurs existantes.

    +La méthode **`Intl.Locale.prototype.maximize()`** permet d'obtenir les valeurs les plus vraisemblantes pour la langue, le script et la région de la locale en fonction des valeurs existantes. -

    {{EmbedInteractiveExample("pages/js/intl-locale-prototype-maximize.html")}}

    +{{EmbedInteractiveExample("pages/js/intl-locale-prototype-maximize.html")}} -

    Syntaxe

    +## Syntaxe -
    locale.maximize()
    + locale.maximize() -

    Valeur de retour

    +### Valeur de retour -

    Une instance {{jsxref("Locale", "Locale")}} dont la propriété baseName renvoie le résultat de l'algorithme de vraisemblance des composantes lancé sur {{jsxref("Locale/baseName", "locale.baseName")}}.

    +Une instance {{jsxref("Locale", "Locale")}} dont la propriété `baseName` renvoie le résultat de l'algorithme de [vraisemblance des composantes](https://www.unicode.org/reports/tr35/#Likely_Subtags) lancé sur `{{jsxref("Locale/baseName", "locale.baseName")}}`. -

    Description

    +## Description -

    Il est parfois utile d'identifier les composantes les plus probables d'une locale en fonction d'un identifiant incomplet. Cette méthode utilise un algorithme qui permet de déduire les composantes restantes les plus probables. Par exemple, si on fournit la langue "en", l'algorithme renverra "en-Latn-US", car l'anglais ne s'écrit qu'avec l'alphabet latin et est le plus largement parlé aux États-Unis. La méthode maximize() n'opère que sur les composantes principales (langue, script, région) et pas sur les extensions éventuellement indiquées après "-u" (dont Locale.hourCycleLocale.calendar et Locale.numeric entre autres).

    +Il est parfois utile d'identifier les composantes les plus probables d'une locale en fonction d'un identifiant incomplet. Cette méthode utilise un algorithme qui permet de déduire les composantes restantes les plus probables. Par exemple, si on fournit la langue `"en"`, l'algorithme renverra `"en-Latn-US"`, car l'anglais ne s'écrit qu'avec l'alphabet latin et est le plus largement parlé aux États-Unis. La méthode `maximize()` n'opère que sur les composantes principales (langue, script, région) et pas sur les extensions éventuellement indiquées après `"-u"` (dont [`Locale.hourCycle`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale/hourCycle "The Intl.Locale.prototype.hourCycle property is an accessor property that returns the time keeping format convention used by the locale."), [`Locale.calendar`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale/calendar "The Intl.Locale.prototype.calendar property is an accessor property which returns the type of calendar used in the Locale.") et [`Locale.numeric`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale/numeric "The Intl.Locale.prototype.numeric property is an accessor property that returns whether the locale has special collation handling for numeric characters.") entre autres). -

    Exemples

    +## Exemples -
    let maLocale = new Intl.Locale("fr", {hourCycle: "h24", calendar: "gregory"});
    +```js
    +let maLocale = new Intl.Locale("fr", {hourCycle: "h24", calendar: "gregory"});
     console.log(maLocale.baseName); // Affiche "fr"
     console.log(maLocale.toString()); // Affiche "fr-u-ca-gregory-hc-h24"
     let maLocMaximized = maLocale.maximize();
    @@ -41,35 +42,21 @@ console.log(maLocMaximized.baseName);
     
     // Affiche "fr-Latn-FR-u-ca-gregory-hc-h24".
     // On notera que les extensions (après "-u") restent inchangées.
    -console.log(myLocMaximized.toString()); 
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.maximize()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Locale.maximize")}}

    - -

    Voir aussi

    - - +console.log(myLocMaximized.toString()); +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------- | ---- | ------------ | +| [Proposition pour `Intl.Locale.prototype.maximize()`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.maximize) | | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.maximize")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} +- {{jsxref("Locale/baseName", "Locale.baseName")}} +- [Spécification Unicode sur la vraisemblance entre composantes](https://www.unicode.org/reports/tr35/#Likely_Subtags) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/minimize/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/minimize/index.md index 78de1ee9b5..47b6aa48f0 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/minimize/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/minimize/index.md @@ -11,29 +11,30 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/minimize original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/minimize --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Locale.prototype.minimize() tente de retirer les informations qui auraient pu être ajoutée à une locale lors d'un appel à {{jsxref("Locale/maximize", "Locale.maximize()")}}.

    +La méthode **`Intl.Locale.prototype.minimize()`** tente de retirer les informations qui auraient pu être ajoutée à une locale lors d'un appel à {{jsxref("Locale/maximize", "Locale.maximize()")}}. -

    {{EmbedInteractiveExample("pages/js/intl-locale-prototype-minimize.html")}}

    +{{EmbedInteractiveExample("pages/js/intl-locale-prototype-minimize.html")}} -

    Syntaxe

    +## Syntaxe -
    locale.minimize()
    + locale.minimize() -

    Valeur de retour

    +### Valeur de retour -

    Une instance {{jsxref("Locale", "Locale")}} dont la propriété baseName renvoie le résultat de l'exécution de l'algorithme de suppression des composantes probables sur locale.baseName

    +Une instance {{jsxref("Locale", "Locale")}} dont la propriété `baseName` renvoie le résultat de l'exécution de [l'algorithme de suppression des composantes probables](https://www.unicode.org/reports/tr35/#Likely_Subtags) sur `locale.baseName`. -

    Description

    +## Description -

    Cette méthode effectue l'opération inverse de {{jsxref("Locale/maximize", "maximize()")}}, en retirant les fragments de langue/script ou de région qui sont superflus. Ainsi, "en-Latn" pourra être minimisé en "en" car l'anglais s'écrit uniquement à l'aide de l'alphabet latin.

    +Cette méthode effectue l'opération inverse de {{jsxref("Locale/maximize", "maximize()")}}, en retirant les fragments de langue/script ou de région qui sont superflus. Ainsi, `"en-Latn"` pourra être minimisé en `"en"` car l'anglais s'écrit uniquement à l'aide de l'alphabet latin. -

    minimize() ne modifie pas les éventuelles extensions décrites dans la chaîne de locale (après le "-u") ou via l'objet de configuration (elle ne modifie donc pas les valeurs de {{jsxref("Locale/hourCycle", "Locale.hourCycle")}}, {{jsxref("Locale/calendar", "Locale.calendar")}} et {{jsxref("Locale/numeric", "Locale.numeric")}}).

    +`minimize()` ne modifie pas les éventuelles extensions décrites dans la chaîne de locale (après le `"-u"`) ou via l'objet de configuration (elle ne modifie donc pas les valeurs de {{jsxref("Locale/hourCycle", "Locale.hourCycle")}}, {{jsxref("Locale/calendar", "Locale.calendar")}} et {{jsxref("Locale/numeric", "Locale.numeric")}}). -

    Exemples

    +## Exemples -
    let maLocale = new Intl.Locale("fr-Latn-FR", {hourCycle: "h24", calendar: "gregory"});
    +```js
    +let maLocale = new Intl.Locale("fr-Latn-FR", {hourCycle: "h24", calendar: "gregory"});
     console.log(maLocale.baseName); // Affiche "fr-Latn-FR"
     console.log(maLocale.toString()); // Affiche "fr-Latn-FR-u-ca-gregory-hc-h24"
     let maLocMinimized = maLocale.minimize();
    @@ -44,34 +45,20 @@ console.log(maLocMinimized.baseName);
     
     console.log(maLocMinimized.toString());
     // Affiche "fr-u-ca-gregory-hc-h24". On voit ici que les extensions
    -// (décrites après "-u") restent inchangées.
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.minimize()
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Locale.minimize")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Locale", "Intl.Locale")}}
    • -
    • {{jsxref("Locale/baseName", "Intl.Locale.baseName")}}
    • -
    +// (décrites après "-u") restent inchangées. +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------- | ---- | ------------ | +| [Proposition pour `Intl.Locale.prototype.minimize()`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.minimize) | | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.minimize")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} +- {{jsxref("Locale/baseName", "Intl.Locale.baseName")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.md index a57835345c..212cc4c37f 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.md @@ -11,414 +11,138 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numberingSystem original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/numberingSystem --- -
    {{JSRef}}
    - -

    La propriété Intl.Locale.prototype.numberingSystem est une propriété fournie par un accesseur qui renvoie le système de numération utilisée par la locale.

    - -

    Description

    - -

    Un système de numération est un système qui permet d'exprimer les nombres. La propriété numberingSystem permet de connaître le système de numérati Unicode. A table of the standard Unicode numeral systems can be seen belowon de la locale. Les valeurs qui peuvent être fournies par cette propriété sont standardisées par Unicode.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ValeurDescription
    adlmChiffres adlams
    ahomChiffres ahoms
    arabChiffres arabes
    arabextChiffres arabes étendus
    armnNumération arménienne majuscule (algorithmique)
    armnlowNumération arménienne minuscule (algorithmique)
    baliChiffres balinais
    bengChiffres bengalis
    bhksChiffres bhaiksuki
    brahChiffres brahmis
    cakmChiffres chakmas
    chamChiffres chams
    cyrlNumération cyrillique (algorithmique)
    devaChiffres devanagaris
    ethiNumération éthiopienne (algorithmique)
    financeNumération financière (peut être algorithmique)
    fullwideChiffres à pleine chasse
    georNumération géorgienne (algorithmique)
    gongChiffres Gunjala Gondis
    gonmChiffres Masaram Gondis
    grekNumération greque majuscule (algorithmique)
    greklowNumération greque minuscule (algorithmique)
    gujrChiffres Gujaratis
    guruChiffres Gurmukhis
    hanidaysNumération du jour du mois avec caractère Han (utilisée avec les calendriers lunaires ou traditionnels)
    hanidecSystème décimal positionnel utilisant les idéographes des nombres chinois comme chiffres
    hansNumération chinoise simplifiée (algorithmique)
    hansfinNumération chinoise simplifiée financière (algorithmique)
    hantNumération chinoise traditionnelle (algorithmique)
    hantfinNumération chinoise traditionnelle financière (algorithmique)
    hebrNumération hébraïque (algorithmique)
    hmngChiffres Pahawh Hmongs
    hmnpChiffres Nyiakeng Puachue Hmongs
    javaChiffres javanais
    jpanNumération japonaise (algorithmique)
    jpanfinNumération japonaise financière (algorithmique)
    jpanyearNumération basée sur la première année Gannen du calendrier japonais
    kaliChiffres Kayah Lis
    khmrChiffres Khmers
    kndaChiffres Kannadas
    lanaChiffres Tai Tham Hora séculiers
    lanathamChiffres Tai Tham Tham ecclésiastiques
    laooChiffres laotien
    latnChiffres latins
    lepcChiffres Lepchas
    limbChiffres Limbus
    mathboldChiffres mathématiques en gras
    mathdblChiffres mathématiques barrés en double
    mathmonoChiffres mathématiques à chasse fixe
    mathsanbChiffres mathématiques en gras sans empattements
    mathsansChiffres mathématiques sans empattements
    mlymChiffres Malayalams
    modiChiffres Modis
    mongChiffres mongols
    mrooChiffres Mros
    mteiChiffres Meetei Mayeks
    mymrChiffres Myanmars
    mymrshanChiffres Myanmar Shans
    mymrtlngChiffres Myanmar Tai Laings
    nativeChiffres natifs
    newaChiffres Newas
    nkooChiffres N'Kos
    olckChiffres Ol Chikis
    oryaChiffres Oriyas
    osmaChiffres Osmanyas
    rohgChiffres Hanifi Rohingyas
    romanNumération romaine majuscule (algorithmique)
    romanlowNumération romaine minuscule (algorithmique)
    saurChiffres Saurashtras
    shrdChiffres Sharadas
    sindChiffres Khudawadis
    sinhChiffres Sinhala Liths
    soraChiffres Sora_Sompengs
    sundChiffres soudanais
    takrChiffres Takris
    taluChiffres New Tai Lues
    tamlNumération tamoule (algorithmique=
    tamldecChiffres tamouls décimaux modernes
    teluChiffres Telugus
    thaiChiffres thaïs
    tirhChiffres Tirhutas
    tibtChiffres tibétains
    traditioNumération traditionnelle (peut être algorithmique)
    vaiiChiffres Vais
    waraChiffres Warang Citis
    wchoChiffres Wanchos
    - -

    Exemples

    - -

    Définir la valeur de numberingSystem grâce à la chaîne décrivant la locale

    - -

    D'après la spécification Unicode sur les chaînes décrivant les locales, l'extension décrivant le système de numération est indiquée par la clé nu.

    - -

    Le constructeur Intl.locale prend comme premier argument une chaîne de caractères décrivant la locale. Aussi, on peut indiquer le système de numération après les composantes principales de la chaîne de caractères en lui ajoutant un "-u" (indiquant la présence d'une extension), suivi d'un "-nu" (indiquant que l'extension qui sera indiquée décrit le système de numération, suivi de la valeur voulue pour le système de numération.

    - -
    let numberingSystemViaStr = new Intl.Locale("fr-Latn-FR-u-nu-mong");
    +{{JSRef}}
    +
    +La propriété **`Intl.Locale.prototype.numberingSystem`** est une propriété fournie par un accesseur qui renvoie le [système de numération](https://en.wikipedia.org/wiki/Numeral_system) utilisée par la locale.
    +
    +## Description
    +
    +Un système de numération est un système qui permet d'exprimer les nombres. La propriété `numberingSystem` permet de connaître le système de numérati Unicode. A table of the standard Unicode numeral systems can be seen belowon de la locale. Les valeurs qui peuvent être fournies par cette propriété sont standardisées par Unicode.
    +
    +| Valeur     | Description                                                                                             |
    +| ---------- | ------------------------------------------------------------------------------------------------------- |
    +| `adlm`     | Chiffres adlams                                                                                         |
    +| `ahom`     | Chiffres ahoms                                                                                          |
    +| `arab`     | Chiffres arabes                                                                                         |
    +| `arabext`  | Chiffres arabes étendus                                                                                 |
    +| `armn`     | Numération arménienne majuscule (algorithmique)                                                         |
    +| `armnlow`  | Numération arménienne minuscule (algorithmique)                                                         |
    +| `bali`     | Chiffres balinais                                                                                       |
    +| `beng`     | Chiffres bengalis                                                                                       |
    +| `bhks`     | Chiffres bhaiksuki                                                                                      |
    +| `brah`     | Chiffres brahmis                                                                                        |
    +| `cakm`     | Chiffres chakmas                                                                                        |
    +| `cham`     | Chiffres chams                                                                                          |
    +| `cyrl`     | Numération cyrillique (algorithmique)                                                                   |
    +| `deva`     | Chiffres devanagaris                                                                                    |
    +| `ethi`     | Numération éthiopienne (algorithmique)                                                                  |
    +| `finance`  | Numération financière (peut être algorithmique)                                                         |
    +| `fullwide` | Chiffres à pleine chasse                                                                                |
    +| `geor`     | Numération géorgienne (algorithmique)                                                                   |
    +| `gong`     | Chiffres Gunjala Gondis                                                                                 |
    +| `gonm`     | Chiffres Masaram Gondis                                                                                 |
    +| `grek`     | Numération greque majuscule (algorithmique)                                                             |
    +| `greklow`  | Numération greque minuscule (algorithmique)                                                             |
    +| `gujr`     | Chiffres Gujaratis                                                                                      |
    +| `guru`     | Chiffres Gurmukhis                                                                                      |
    +| `hanidays` | Numération du jour du mois avec caractère Han (utilisée avec les calendriers lunaires ou traditionnels) |
    +| `hanidec`  | Système décimal positionnel utilisant les idéographes des nombres chinois comme chiffres                |
    +| `hans`     | Numération chinoise simplifiée (algorithmique)                                                          |
    +| `hansfin`  | Numération chinoise simplifiée financière (algorithmique)                                               |
    +| `hant`     | Numération chinoise traditionnelle (algorithmique)                                                      |
    +| `hantfin`  | Numération chinoise traditionnelle financière (algorithmique)                                           |
    +| `hebr`     | Numération hébraïque (algorithmique)                                                                    |
    +| `hmng`     | Chiffres Pahawh Hmongs                                                                                  |
    +| `hmnp`     | Chiffres Nyiakeng Puachue Hmongs                                                                        |
    +| `java`     | Chiffres javanais                                                                                       |
    +| `jpan`     | Numération japonaise (algorithmique)                                                                    |
    +| `jpanfin`  | Numération japonaise financière (algorithmique)                                                         |
    +| `jpanyear` | Numération basée sur la première année Gannen du calendrier japonais                                    |
    +| `kali`     | Chiffres Kayah Lis                                                                                      |
    +| `khmr`     | Chiffres Khmers                                                                                         |
    +| `knda`     | Chiffres Kannadas                                                                                       |
    +| `lana`     | Chiffres Tai Tham Hora séculiers                                                                        |
    +| `lanatham` | Chiffres Tai Tham Tham ecclésiastiques                                                                  |
    +| `laoo`     | Chiffres laotien                                                                                        |
    +| `latn`     | Chiffres latins                                                                                         |
    +| `lepc`     | Chiffres Lepchas                                                                                        |
    +| `limb`     | Chiffres Limbus                                                                                         |
    +| `mathbold` | Chiffres mathématiques en gras                                                                          |
    +| `mathdbl`  | Chiffres mathématiques barrés en double                                                                 |
    +| `mathmono` | Chiffres mathématiques à chasse fixe                                                                    |
    +| `mathsanb` | Chiffres mathématiques en gras sans empattements                                                        |
    +| `mathsans` | Chiffres mathématiques sans empattements                                                                |
    +| `mlym`     | Chiffres Malayalams                                                                                     |
    +| `modi`     | Chiffres Modis                                                                                          |
    +| `mong`     | Chiffres mongols                                                                                        |
    +| `mroo`     | Chiffres Mros                                                                                           |
    +| `mtei`     | Chiffres Meetei Mayeks                                                                                  |
    +| `mymr`     | Chiffres Myanmars                                                                                       |
    +| `mymrshan` | Chiffres Myanmar Shans                                                                                  |
    +| `mymrtlng` | Chiffres Myanmar Tai Laings                                                                             |
    +| `native`   | Chiffres natifs                                                                                         |
    +| `newa`     | Chiffres Newas                                                                                          |
    +| `nkoo`     | Chiffres N'Kos                                                                                          |
    +| `olck`     | Chiffres Ol Chikis                                                                                      |
    +| `orya`     | Chiffres Oriyas                                                                                         |
    +| `osma`     | Chiffres Osmanyas                                                                                       |
    +| `rohg`     | Chiffres Hanifi Rohingyas                                                                               |
    +| `roman`    | Numération romaine majuscule (algorithmique)                                                            |
    +| `romanlow` | Numération romaine minuscule (algorithmique)                                                            |
    +| `saur`     | Chiffres Saurashtras                                                                                    |
    +| `shrd`     | Chiffres Sharadas                                                                                       |
    +| `sind`     | Chiffres Khudawadis                                                                                     |
    +| `sinh`     | Chiffres Sinhala Liths                                                                                  |
    +| `sora`     | Chiffres Sora_Sompengs                                                                                  |
    +| `sund`     | Chiffres soudanais                                                                                      |
    +| `takr`     | Chiffres Takris                                                                                         |
    +| `talu`     | Chiffres New Tai Lues                                                                                   |
    +| `taml`     | Numération tamoule (algorithmique=                                                                      |
    +| `tamldec`  | Chiffres tamouls décimaux modernes                                                                      |
    +| `telu`     | Chiffres Telugus                                                                                        |
    +| `thai`     | Chiffres thaïs                                                                                          |
    +| `tirh`     | Chiffres Tirhutas                                                                                       |
    +| `tibt`     | Chiffres tibétains                                                                                      |
    +| `traditio` | Numération traditionnelle (peut être algorithmique)                                                     |
    +| `vaii`     | Chiffres Vais                                                                                           |
    +| `wara`     | Chiffres Warang Citis                                                                                   |
    +| `wcho`     | Chiffres Wanchos                                                                                        |
    +
    +## Exemples
    +
    +### Définir la valeur de `numberingSystem` grâce à la chaîne décrivant la locale
    +
    +D'après [la spécification Unicode sur les chaînes décrivant les locales](https://www.unicode.org/reports/tr35/), l'extension décrivant le système de numération est indiquée par la clé `nu`.
    +
    +Le constructeur [`Intl.locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale) prend comme premier argument une chaîne de caractères décrivant la locale. Aussi, on peut indiquer le système de numération après les composantes principales de la chaîne de caractères en lui ajoutant un `"-u"` (indiquant la présence d'une extension), suivi d'un `"-nu"` (indiquant que l'extension qui sera indiquée décrit le système de numération, suivi de la valeur voulue pour le système de numération.
    +
    +```js
    +let numberingSystemViaStr = new Intl.Locale("fr-Latn-FR-u-nu-mong");
     console.log(numberingSystemStr.numberingSystem);
    -// affichera "mong" dans la console
    +// affichera "mong" dans la console +``` -

    Définir la valeur de numberingSystem grâce à un objet de configuration

    +### Définir la valeur de `numberingSystem` grâce à un objet de configuration -

    Le constructeur Intl.Locale possède un deuxième argument, optionnel, qui est un objet permettant de configurer la locale. Les propriétés de cet objet sont utilisées comme extensions pour la locale ; les clés des propriétés sont les noms des extensions et leurs valeurs sont celles utilisées pour chaque extension. On peut donc utiliser la propriété numberingSystem sur cet objet afin de définir le système de numération à utiliser pour cette locale.

    +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") possède un deuxième argument, optionnel, qui est un objet permettant de configurer la locale. Les propriétés de cet objet sont utilisées comme extensions pour la locale ; les clés des propriétés sont les noms des extensions et leurs valeurs sont celles utilisées pour chaque extension. On peut donc utiliser la propriété `numberingSystem` sur cet objet afin de définir le système de numération à utiliser pour cette locale. -
    let numberingSystemViaObj= new Intl.Locale("en-Latn-US", {numberingSystem: "latn"});
    +```js
    +let numberingSystemViaObj= new Intl.Locale("en-Latn-US", {numberingSystem: "latn"});
     console.log(us12hour.numberingSystem);
     // affichera "latn" dans la console
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.LocaleProposition de niveau 3
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.numberingSystem) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.numberingSystem")}}
    +{{Compat("javascript.builtins.Intl.Locale.numberingSystem")}} -

    Voir aussi

    +## Voir aussi - +- {{jsxref("Locale", "Intl.Locale")}} +- [Détails sur les systèmes de numération dans le standard Unicode](https://github.com/unicode-org/cldr/blob/master/common/supplemental/numberingSystems.xml) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/numeric/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/numeric/index.md index d38122f7be..7d9b8d02f4 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/numeric/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/numeric/index.md @@ -11,58 +11,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numeric original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/numeric --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.numeric est une propriété fournie par un accesseur et qui indique si la locale possède une collation spécifique pour les caractères numériques (la collation étant la méthode qui permet d'ordonner des chaînes de caractères entre elles).

    +La propriété **`Intl.Locale.prototype.numeric`** est une propriété fournie par un accesseur et qui indique si la locale possède une collation spécifique pour les caractères numériques (la collation étant la méthode qui permet d'ordonner des chaînes de caractères entre elles). -

    Description

    +## Description -

    À l'instar de {{jsxref("Locale.caseFirst", "Intl.Locale.caseFirst")}}, numeric représente une modification des règles de collation utilisée par la locale. numeric est un booléen (true ou false). Lorsque cette propriété vaut false, il n'y a pas de gestion particulière des chiffres et si cette propriété vaut true, cela indique que les caractères numériques sont pris en compte lors de la collation des chaînes. Ainsi, les séquences de chiffres décimaux seront comparés comme des nombres. Ainsi, la chaîne de caractères "A-21" sera considérée inférieure à "A-123".

    +À l'instar de {{jsxref("Locale.caseFirst", "Intl.Locale.caseFirst")}}, `numeric` représente une modification des règles de collation utilisée par la locale. `numeric` est un booléen (`true` ou `false`). Lorsque cette propriété vaut `false`, il n'y a pas de gestion particulière des chiffres et si cette propriété vaut `true`, cela indique que les caractères numériques sont pris en compte lors de la collation des chaînes. Ainsi, les séquences de chiffres décimaux seront comparés comme des nombres. Ainsi, la chaîne de caractères `"A-21"` sera considérée inférieure à `"A-123"`. -

    Exemples

    +## Exemples -

    Définir numeric grâce à la chaîne de description de la locale

    +### Définir `numeric` grâce à la chaîne de description de la locale -

    Selon la spécification Unicode sur les chaînes de caractères décrivant les locales, les valeurs de numeric sont associées à la clé kn. Pour utiliser cette clé dans la chaîne de description de la locale (le premier argument de Intl.Locale), après la chaîne de base, on pourra ajouter un suffixe avec "-u" afin d'indiquer la présence d'une extension, puis "-kn" afin de préciser l'extension en question et enfin la valeur souhaitée pour cette extension. Si on veut que numeric soit true, il suffit d'ajouter la clé kn. Pour indiquer la valeur false, il faudra explicitement ajouter "-false".

    +Selon [la spécification Unicode sur les chaînes de caractères décrivant les locales](https://www.unicode.org/reports/tr35/), les valeurs de `numeric` sont associées à la clé `kn`. Pour utiliser cette clé dans la chaîne de description de la locale (le premier argument de [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.")), après la chaîne de base, on pourra ajouter un suffixe avec `"-u"` afin d'indiquer la présence d'une extension, puis `"-kn"` afin de préciser l'extension en question et enfin la valeur souhaitée pour cette extension. Si on veut que `numeric` soit `true`, il suffit d'ajouter la clé `kn`. Pour indiquer la valeur `false`, il faudra explicitement ajouter `"-false"`. -
    let numericViaStr = new Intl.Locale("fr-Latn-FR-u-kn-false");
    +```js
    +let numericViaStr = new Intl.Locale("fr-Latn-FR-u-kn-false");
     console.log(numericStr.numeric);
    -// Affichera "false" dans la console
    +// Affichera "false" dans la console +``` -

    Définir numeric via l'objet de configuration de l'instance

    +### Définir `numeric` via l'objet de configuration de l'instance -

    Le constructeur Intl.Locale possède un deuxième argument, optionnel, qui est un objet permettant de configurer la locale. Les propriétés de cet objet sont utilisées comme extensions pour la locale ; les clés des propriétés sont les noms des extensions et leurs valeurs sont celles utilisées pour chaque extension. On peut donc utiliser la propriété numeric sur cet objet afin de définir le système de numération à utiliser pour cette locale.

    +Le constructeur [`Intl.Locale`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Locale "The Intl.Locale constructor is a standard built-in property of the Intl object.") possède un deuxième argument, optionnel, qui est un objet permettant de configurer la locale. Les propriétés de cet objet sont utilisées comme extensions pour la locale ; les clés des propriétés sont les noms des extensions et leurs valeurs sont celles utilisées pour chaque extension. On peut donc utiliser la propriété `numeric` sur cet objet afin de définir le système de numération à utiliser pour cette locale. -
    let numericViaObj= new Intl.Locale("en-Latn-US", {numeric: true});
    +```js
    +let numericViaObj= new Intl.Locale("en-Latn-US", {numeric: true});
     console.log(us12hour.numeric);
     // Affichera "true" dans la console
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.LocaleProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -
    {{Compat("javascript.builtins.Intl.Locale.numeric")}}
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Locale", "Intl.Locale")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.numeric) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.numeric")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/region/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/region/index.md index 603db078a8..d3430cbde4 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/region/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/region/index.md @@ -11,60 +11,49 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/region original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/region --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.region est fournie par un accesseur qui renvoie la région du monde (il s'agit généralement d'un pays) associée à la locale courante.

    +La propriété **`Intl.Locale.prototype.region`** est fournie par un accesseur qui renvoie la région du monde (il s'agit généralement d'un pays) associée à la locale courante. -

    Description

    +## Description -

    La région est un fragment majeur de l'identifiant de la locale car il situe la locale dans une zone donnée du monde. Connaître la région associée à la locale est crucial pour identifier les différences entre les locales. Ainsi, on parle anglais aux États-Unis et au Royaume-Uni mais il existe certaines différences d'orthographe entre ces pays. Connaître la région d'une locale peut permettre aux développeurs d'adapter leurs sites et applications selon la région depuis laquelle ils sont consultés.

    +La région est un fragment majeur de l'identifiant de la locale car il situe la locale dans une zone donnée du monde. Connaître la région associée à la locale est crucial pour identifier les différences entre les locales. Ainsi, on parle anglais aux États-Unis et au Royaume-Uni mais il existe certaines différences d'orthographe entre ces pays. Connaître la région d'une locale peut permettre aux développeurs d'adapter leurs sites et applications selon la région depuis laquelle ils sont consultés. -

    Exemples

    +## Exemples -

    Définir la région avec la chaîne de caractères décrivant la locale

    +### Définir la région avec la chaîne de caractères décrivant la locale -

    La région est la troisième composante d'une chaîne représentant un identifiant de langue Unicode. Cette chaîne de caractères est généralement passée au constructeur {{jsxref("Locale", "Locale")}}.

    +La région est la troisième composante d'une chaîne représentant un identifiant de langue Unicode. Cette chaîne de caractères est généralement passée au constructeur {{jsxref("Locale", "Locale")}}. -
    let regionStr = new Intl.Locale("en-Latn-US");
    +```js
    +let regionStr = new Intl.Locale("en-Latn-US");
     
     console.log(regionStr.region);
    -// Affichera "US" dans la console
    +// Affichera "US" dans la console +``` -

    Définir la région via l'objet de configuration du constructeur

    +### Définir la région via l'objet de configuration du constructeur -

    Le constructeur {{jsxref("Locale", "Locale")}} prend comme second argument un objet de paramétrage dont chacune des propriétés permet de définir une extension ou une composante de la locale.

    +Le constructeur {{jsxref("Locale", "Locale")}} prend comme second argument un objet de paramétrage dont chacune des propriétés permet de définir une extension ou une composante de la locale. -
    let regionObj = new Intl.Locale("fr-Latn", {region: "FR"});
    +```js
    +let regionObj = new Intl.Locale("fr-Latn", {region: "FR"});
     
     console.log(regionObj.region);
    -// Affichera "FR" dans la console
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.regionProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -
    {{Compat("javascript.builtins.Intl.Locale.region")}}
    - -

    Voir aussi

    - - +// Affichera "FR" dans la console +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.region`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.region) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.region")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} +- [Tableau Unicode des régions](https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/script/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/script/index.md index 138d442ed8..ecafc1ab87 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/script/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/script/index.md @@ -10,58 +10,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/script original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/script --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Intl.Locale.prototype.script est fournie via un accesseur et renvoie le script utilisé pour l'écriture d'une langue donnée pour la locale courante.

    +La propriété **`Intl.Locale.prototype.script`** est fournie via un accesseur et renvoie le script utilisé pour l'écriture d'une langue donnée pour la locale courante. -

    Description

    +## Description -

    Un script, ou système d'écriture, est l'une des caractéristiques fondamentales d'une locale. Il décrit l'ensemble des symboles (ou glyphes) qui sont utilisés pour écrire dans une langue donnée. Ainsi, le script associé à l'anglais est l'alphabet latin, le script associé au coréen est le Hangul. Dans la plupart des cas, indiquer le script n'est pas strictement nécessaire car une langue ne s'écrit que dans un script donné. Il existe toutefois des exceptions et il est préférable d'indique le script afin d'avoir un identifiant de langue Unicode complet.

    +Un script, ou système d'écriture, est l'une des caractéristiques fondamentales d'une locale. Il décrit l'ensemble des symboles (ou glyphes) qui sont utilisés pour écrire dans une langue donnée. Ainsi, le script associé à l'anglais est l'alphabet latin, le script associé au coréen est le Hangul. Dans la plupart des cas, indiquer le script n'est pas strictement nécessaire car une langue ne s'écrit que dans un script donné. Il existe toutefois des exceptions et il est préférable d'indique le script afin d'avoir un identifiant de langue Unicode complet. -

    Exemples

    +## Exemples -

    Définir le script via la chaîne de description de la locale

    +### Définir le script via la chaîne de description de la locale -

    Le script correspond à la deuxième partie d'un identifiant de langue Unicode valide. On peut donc le définir en passant un tel identifiant au constructeur {{jsxref("Locale", "Locale")}}. Toutefois, cette composante n'est pas obligatoire pour créer une instance de Locale.

    +Le script correspond à la deuxième partie d'un identifiant de langue Unicode valide. On peut donc le définir en passant un tel identifiant au constructeur {{jsxref("Locale", "Locale")}}. Toutefois, cette composante n'est pas obligatoire pour créer une instance de `Locale`. -
    let scriptStr = new Intl.Locale("en-Latn-US");
    +```js
    +let scriptStr = new Intl.Locale("en-Latn-US");
     
    -console.log(scriptStr.script); // Affichera "Latn" dans la console
    +console.log(scriptStr.script); // Affichera "Latn" dans la console +``` -

    Définir le script grâce à l'objet de configuration du constructeur

    +### Définir le script grâce à l'objet de configuration du constructeur -

    Le constructeur {{jsxref("Locale", "Locale")}} permet d'utiliser un objet de configuration dont les propriétés définiront les caractéristiques de la locale :

    +Le constructeur {{jsxref("Locale", "Locale")}} permet d'utiliser un objet de configuration dont les propriétés définiront les caractéristiques de la locale : -
    let scriptObj = new Intl.Locale("fr-FR", {script: "Latn"});
    +```js
    +let scriptObj = new Intl.Locale("fr-FR", {script: "Latn"});
     
    -console.log(scriptObj.script); // Affichera "Latn" dans la console
    +console.log(scriptObj.script); // Affichera "Latn" dans la console +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.scriptProposition de niveau 3
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.script`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.script) | Proposition de niveau 3 | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -
    {{Compat("javascript.builtins.Intl.Locale.script")}}
    +{{Compat("javascript.builtins.Intl.Locale.script")}} -

    Voir aussi

    +## Voir aussi - +- {{jsxref("Locale", "Intl.Locale")}} +- [Spécification Unicode pour la composante script](https://www.unicode.org/reports/tr35/#unicode_script_subtag_validity) diff --git a/files/fr/web/javascript/reference/global_objects/intl/locale/tostring/index.md b/files/fr/web/javascript/reference/global_objects/intl/locale/tostring/index.md index 96e0b7767b..e25a84aadc 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/locale/tostring/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/locale/tostring/index.md @@ -10,57 +10,43 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/toString original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/Locale/toString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Locale.prototype.toString() renvoie l'identifiant de locale complet pour la locale courante.

    +La méthode **`Intl.Locale.prototype.toString()`** renvoie [l'identifiant de locale complet](https://www.unicode.org/reports/tr35/#Unicode_locale_identifier) pour la locale courante. -

    {{EmbedInteractiveExample("pages/js/intl-locale-prototype-tostring.html")}}

    +{{EmbedInteractiveExample("pages/js/intl-locale-prototype-tostring.html")}} -

    Syntaxe

    +## Syntaxe -
    locale.toString()
    + locale.toString() -

    Valeur de retour

    +### Valeur de retour -

    La chaîne de caractères représentant l'identifiant complet de la locale.

    +La chaîne de caractères représentant l'identifiant complet de la locale. -

    Description

    +## Description -

    Une instance de Locale est une représentation JavaScript d'une locale au sens Unicode. Les informations décrivant une locale donnée (la langue, le système d'écriture, le type de calendrier, etc.) peuvent être encodées en une chaîne de caractères qui est l'identifiant de la locale. Lorsqu'on appelle la méthode toString() sur une instance de Locale, on obtiendra l'identifiant complet de la locale.

    +Une instance de `Locale` est une représentation JavaScript d'une locale au sens Unicode. Les informations décrivant une locale donnée (la langue, le système d'écriture, le type de calendrier, etc.) peuvent être encodées en une chaîne de caractères qui est l'identifiant de la locale. Lorsqu'on appelle la méthode `toString()` sur une instance de `Locale`, on obtiendra l'identifiant complet de la locale. -

    Exemples

    +## Exemples -
    let maLocale = new Intl.Locale("fr-Latn-FR", {hourCycle: "h24", calendar: "gregory"});
    +```js
    +let maLocale = new Intl.Locale("fr-Latn-FR", {hourCycle: "h24", calendar: "gregory"});
     console.log(maLocale.baseName); // Affiche "fr-Latn-FR"
     console.log(maLocale.toString()); // Affiche "fr-Latn-FR-u-ca-gregory-hc-h24"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.Locale.prototype.toString()Proposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.Locale.toString")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Locale", "Intl.Locale")}}
    • -
    • {{jsxref("Locale/baseName", "Intl.Locale.baseName")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.Locale.prototype.toString()`](https://tc39.github.io/proposal-intl-locale/#sec-Intl.Locale.prototype.toString) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.Locale.toString")}} + +## Voir aussi + +- {{jsxref("Locale", "Intl.Locale")}} +- {{jsxref("Locale/baseName", "Intl.Locale.baseName")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/numberformat/format/index.md b/files/fr/web/javascript/reference/global_objects/intl/numberformat/format/index.md index d912f25f6f..bac7a3220c 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/numberformat/format/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/numberformat/format/index.md @@ -13,82 +13,63 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/NumberFormat/format --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.NumberFormat.prototype.format() formate un nombre en fonction des options de locales et de formats définis dans l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}} correspondant.

    +La méthode **`Intl.NumberFormat.prototype.format()`** formate un nombre en fonction des options de locales et de formats définis dans l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}} correspondant. -
    {{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-format.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-format.html")}} -

    Syntaxe

    +## Syntaxe -
    numberFormat.format(nombre)
    + numberFormat.format(nombre) -

    Paramètres

    +### Paramètres -
    -
    nombre
    -
    Le nombre qu'on souhaite formater.
    -
    +- `nombre` + - : Le nombre qu'on souhaite formater. -

    Description

    +## Description -

    La fonction d'accesseur format permet de formater un nombre donné en une chaîne de caractères selon les options de locale et de format de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}.

    +La fonction d'accesseur `format` permet de formater un nombre donné en une chaîne de caractères selon les options de locale et de format de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}. -

    Exemples

    +## Exemples -

    Utiliser format()

    +### Utiliser `format()` -

    On peut utiliser la fonction renvoyée par format pour formater une valeur monétaire selon la locale russe :

    +On peut utiliser la fonction renvoyée par `format` pour formater une valeur monétaire selon la locale russe : -
    var options = {style: "currency", currency: "RUB"};
    +```js
    +var options = {style: "currency", currency: "RUB"};
     var numberFormat = new Intl.NumberFormat("ru-RU", options);
     console.log(numberFormat.format(654321.987));
    -// → "654 321,99 руб."
    +// → "654 321,99 руб." +``` -

    Utiliser format() avec map()

    +### Utiliser `format()` avec `map()` -

    On peut également utiliser la fonction format pour formater les nombres contenus dans un tableau. On notera que la fonction est liée à l'objet NumberFormat dont elle provient, on peut donc directement l'utiliser avec {{jsxref("Array.prototype.map")}}.

    +On peut également utiliser la fonction `format` pour formater les nombres contenus dans un tableau. On notera que la fonction est liée à l'objet `NumberFormat` dont elle provient, on peut donc directement l'utiliser avec {{jsxref("Array.prototype.map")}}. -
    var a = [123456.789, 987654.321, 456789.123];
    +```js
    +var a = [123456.789, 987654.321, 456789.123];
     var numberFormat = new Intl.NumberFormat("es-ES");
     var formatted = a.map(numberFormat.format);
     console.log(formatted.join("; "));
    -// → "123.456,789; 987.654,321; 456.789,123"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 1.0')}}Définition initiale
    {{SpecName('ES Int 2.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.format', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.NumberFormat.format")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
    • -
    • {{jsxref("Number.prototype.toLocaleString()")}}
    • -
    +// → "123.456,789; 987.654,321; 456.789,123" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ------------------- | +| {{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}} | {{Spec2('ES Int 1.0')}} | Définition initiale | +| {{SpecName('ES Int 2.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.format', 'Intl.NumberFormat.prototype.format')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.NumberFormat.format")}} + +## Voir aussi + +- {{jsxref("NumberFormat", "Intl.NumberFormat")}} +- {{jsxref("Number.prototype.toLocaleString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.md b/files/fr/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.md index caadb942cb..66f86323c6 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.md @@ -12,67 +12,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/NumberFormat/formatToParts --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.Numberformat.prototype.formatToParts() permet de produire des fragments de chaînes à partir d'un nombre pour le mettre en forme avec des formateurs NumberTimeFormat.

    +La méthode **`Intl.Numberformat.prototype.formatToParts()`** permet de produire des fragments de chaînes à partir d'un nombre pour le mettre en forme avec des formateurs `NumberTimeFormat`. -

    Syntaxe

    +## Syntaxe -
    Intl.NumberFormat.prototype.formatToParts(nombre)
    + Intl.NumberFormat.prototype.formatToParts(nombre) -

    Paramètres

    +### Paramètres -
    -
    nombre {{optional_inline}}
    -
    Le nombre qu'on souhaite mettre en forme.
    -
    +- `nombre` {{optional_inline}} + - : Le nombre qu'on souhaite mettre en forme. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau {{jsxref("Array")}} contenant des objets correspondants aux différents fragments du nombres.

    +Un tableau {{jsxref("Array")}} contenant des objets correspondants aux différents fragments du nombres. -

    Description

    +## Description -

    La méthode formatToParts() est peut être utilisée lorsqu'on met en forme des chaînes de caractères représentant des valeurs numériques. Cette méthode renvoie un tableau ({{jsxref("Array")}}) d'objets qui sont les différents fragments spécifiques aux locales et qui permettent de construire des chaînes dans un format spécifiques tout en conservant les parties liées à la locale. formatToParts() renvoie une structure analogue à :

    +La méthode `formatToParts()` est peut être utilisée lorsqu'on met en forme des chaînes de caractères représentant des valeurs numériques. Cette méthode renvoie un tableau ({{jsxref("Array")}}) d'objets qui sont les différents fragments spécifiques aux locales et qui permettent de construire des chaînes dans un format spécifiques tout en conservant les parties liées à la locale. `formatToParts()` renvoie une structure analogue à : -
    [
    +```js
    +[
       { type: "integer", value: "3" }
       { type: "group", value: "." }
       { type: "integer", value: "500" }
    -]
    - -

    Les valeurs possibles pour l'attribut type sont :

    - -
    -
    currency
    -
    Le suffixe associé à la devise. Ce peut être le symbole "$", "€" ou bien le nom de la devise "Dollar", "Euro" selon la façon dont currencyDisplay  est indiquée.
    -
    decimal
    -
    Le séparateur décimal utilisé (".").
    -
    fraction
    -
    La partie fractionnaire du nombre.
    -
    group
    -
    La chaîne de caractères utilisée pour indiquer un groupe (",").
    -
    infinity
    -
    La chaîne de caractères qui représente la valeur {{jsxref("Infinity")}} ("∞").
    -
    integer
    -
    La partie entière du nombre.
    -
    literal
    -
    Toute chaîne de caractères littérale ou blanc utilisée dans le nombre mis en forme.
    -
    minusSign
    -
    La chaîne de caractères utilisée pour le signe moins ("-").
    -
    nan
    -
    La chaîne de caractères utilisée pour représenter la valeur {{jsxref("NaN")}} ("NaN").
    -
    plusSign
    -
    La chaîne de caractères utilisée pour le signe plus ("+").
    -
    percentSign
    -
    La châine de caractères utilisée pour le symbole pourcent ("%").
    -
    - -

    Exemples

    - -

    NumberFormat produit une chaîne localisée opaque qui ne peut pas être manipulée directement :

    - -
    var number = 3500;
    +]
    +```
    +
    +Les valeurs possibles pour l'attribut `type` sont :
    +
    +- `currency`
    +  - : Le suffixe associé à la devise. Ce peut être le symbole "$", "€" ou bien le nom de la devise "Dollar", "Euro" selon la façon dont `currencyDisplay`  est indiquée.
    +- `decimal`
    +  - : Le séparateur décimal utilisé (".").
    +- `fraction`
    +  - : La partie fractionnaire du nombre.
    +- `group`
    +  - : La chaîne de caractères utilisée pour indiquer un groupe (",").
    +- `infinity`
    +  - : La chaîne de caractères qui représente la valeur {{jsxref("Infinity")}} ("∞").
    +- `integer`
    +  - : La partie entière du nombre.
    +- `literal`
    +  - : Toute chaîne de caractères littérale ou blanc utilisée dans le nombre mis en forme.
    +- `minusSign`
    +  - : La chaîne de caractères utilisée pour le signe moins ("-").
    +- `nan`
    +  - : La chaîne de caractères utilisée pour représenter la valeur {{jsxref("NaN")}} ("NaN").
    +- `plusSign`
    +  - : La chaîne de caractères utilisée pour le signe plus ("+").
    +- `percentSign`
    +  - : La châine de caractères utilisée pour le symbole pourcent ("%").
    +
    +## Exemples
    +
    +`NumberFormat` produit une chaîne localisée opaque qui ne peut pas être manipulée directement :
    +
    +```js
    +var number = 3500;
     
     var formatter = new Intl.NumberFormat('de-DE', {
       style: 'currency',
    @@ -81,11 +80,12 @@ var formatter = new Intl.NumberFormat('de-DE', {
     
     formatter.format(number);
     // "3.500,00 €"
    -
    +``` -

    Toutefois, pour certaines applications, on souhaite adapter la mise en forme de cette chaîne de caractères. La méthode formatToParts permet d'obtenir cette flexibilité tout en conservant les différents fragments produits par NumberFormat :

    +Toutefois, pour certaines applications, on souhaite adapter la mise en forme de cette chaîne de caractères. La méthode `formatToParts` permet d'obtenir cette flexibilité tout en conservant les différents fragments produits par `NumberFormat` : -
    formatter.formatToParts(number);
    +```js
    +formatter.formatToParts(number);
     
     // return value:
     [
    @@ -97,52 +97,42 @@ formatter.format(number);
       { type: "literal",  value: " "   }
       { type: "currency", value: "€"   }
     ]
    -
    +``` -

    Maintenant que la chaîne est décomposée, on peut la réassembler d'une façon spécifique. On peut, par exemple utiliser {{jsxref("Array.prototype.map()")}}, une fonction fléchée, une instruction switch, des littéraux de gabarits et {{jsxref("Array.prototype.reduce()")}}.

    +Maintenant que la chaîne est décomposée, on peut la réassembler d'une façon spécifique. On peut, par exemple utiliser {{jsxref("Array.prototype.map()")}}, [une fonction fléchée](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées), une [instruction `switch`](/fr/docs/Web/JavaScript/Reference/Instructions/switch), [des littéraux de gabarits](/fr/docs/Web/JavaScript/Reference/Littéraux_gabarits) et {{jsxref("Array.prototype.reduce()")}}. -
    var numberString = formatter.formatToParts(number).map(({type, value}) => {
    +```js
    +var numberString = formatter.formatToParts(number).map(({type, value}) => {
       switch (type) {
    -    case 'currency': return `<strong>${value}</strong>`;
    +    case 'currency': return `${value}`;
         default : return value;
       }
    -}).reduce((string, part) => string + part);
    -
    +}).reduce((string, part) => string + part); +``` -

    Grâce à cette fonction, on pourra mettre en gras le suffixe associé à la devise :

    +Grâce à cette fonction, on pourra mettre en gras le suffixe associé à la devise : -
    console.log(numberString);
    -// "3.500,00 <strong>€</strong>"
    +```js +console.log(numberString); +// "3.500,00 " +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Une prothèse pour cette fonctionnalité est disponible dans le dépôt associé à la proposition.

    +Une prothèse pour cette fonctionnalité est disponible [dans le dépôt associé à la proposition](https://github.com/zbraniecki/proposal-intl-formatToParts). -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.formatToParts', 'Intl.NumberFormat.prototype.formatToParts')}}{{Spec2('ES Int Draft')}}Définition initiale.
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.formatToParts', 'Intl.NumberFormat.prototype.formatToParts')}} | {{Spec2('ES Int Draft')}} | Définition initiale. | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.NumberFormat.formatToParts")}}

    +{{Compat("javascript.builtins.Intl.NumberFormat.formatToParts")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
    • -
    • {{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}
    • -
    • Formater des dates : {{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}}
    • -
    +- {{jsxref("NumberFormat", "Intl.NumberFormat")}} +- {{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}} +- Formater des dates : {{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/numberformat/index.md b/files/fr/web/javascript/reference/global_objects/intl/numberformat/index.md index 5c8188d5f9..248d95d5ed 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/numberformat/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/numberformat/index.md @@ -10,110 +10,99 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/NumberFormat --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.NumberFormat est un constructeur permettant de créer des objets pour formater des nombres en fonction de la locale.

    +L'objet **`Intl.NumberFormat`** est un constructeur permettant de créer des objets pour formater des nombres en fonction de la locale. -
    {{EmbedInteractiveExample("pages/js/intl-numberformat.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-numberformat.html")}} -

    Syntaxe

    +## Syntaxe -
    new Intl.NumberFormat([locales[, options]])
    -Intl.NumberFormat.call(this[, locales[, options]])
    + new Intl.NumberFormat([locales[, options]]) + Intl.NumberFormat.call(this[, locales[, options]]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    -

    Paramètre optionnel. Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. Les clefs d'extensions Unicode suivantes sont autorisées :

    +- `locales` -
    -
    nu
    -
    Le système numérique à utiliser. Parmi les valeurs possibles, on a : "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
    -
    -
    -
    options
    -
    -

    Paramètre optionnel. Un objet avec certaines ou toutes les propriétés suivantes :

    + - : Paramètre optionnel. Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. Les clefs d'extensions Unicode suivantes sont autorisées : -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Intl","Intl","##Choix_de_la_locale")}}.
    -
    style
    -
    Le style de formatage. Les valeurs possibles sont "decimal" pour l'affichage de nombres simple, "currency" pour un affichage en fonction de la devise et "percent" pour afficher des pourcentages. La valeur par défaut est "decimal".
    -
    currency
    -
    La devise à utiliser pour le formatage. Les valeurs possibles sont les codes ISO 4217 pour les devises, tels que "USD" pour le dollar américain, "EUR" pour l'euro, ou "CNY" pour le yuan chinois. Voir la page listant les codes actuels pour les devises et les fonds (en anglais). Il n'y a pas de valeur par défaut. Si le style choisi avec l'option style est "currency", la propriété currency doit être définie.
    -
    currencyDisplay
    -
    La façon d'afficher la devise dans le format courant. Les valeurs possibles sont "symbol" qui permet d'utiliser un symbole localisé comme '€', "code" qui affichera le code ISO de la devise (voir ci-avant), "name"  affichera un nom localisé pour la devise comme "dollar". La valeur par défaut est "symbol".
    -
    useGrouping
    -
    Cette option indique si on doit utiliser des séparateurs de groupes (comme les séparateurs de milliers ou autres comme lakhs et crores). Les valeurs possibles sont true et false. La valeur par défaut true.
    -
    + - nu + - : Le système numérique à utiliser. Parmi les valeurs possibles, on a : `"arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".` -

    Les propriétés suivantes peuvent être classées en deux groupes. Dans le premier on aura minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits et dans le second on aura minimumSignificantDigits et maximumSignificantDigits. S'il existe une option définie pour le second groupe, les options du premier groupe seront ignorées.

    +- `options` -
    -
    minimumIntegerDigits
    -
    Le nombre minimal de chiffres à utiliser pour la partie entière. Les valeurs possibles sont comprises entre 1 to 21. La valeur par défaut est 1.
    -
    minimumFractionDigits
    -
    Le nombre minimal de chiffres à utiliser pour la partie fractionnaire. Les valeurs possibles sont comprises entre 0 et 20. Pour les formats "decimal" et "percent", la valeur par défaut est 0. La valeur par défaut pour le formatage monétaire ("currency") correspond au nombre de chiffres défini par la liste de codes de devises ISO 4217, si cette valeur n'est pas définie dans cette liste, on aura 2 chiffres.
    -
    maximumFractionDigits
    -
    Le nombre maximal de chiffres à utiliser pour représenter la partie fractionnaire. Les valeurs possibles sont comprises entre 0 et 20. Pour le format "decimal", la valeur par défaut est le maximum entre 3 et minimumFractionDigits. Pour le format monétaire ("currency"), la valeur par défaut est le maximum entre  minimumFractionDigits et le nombre de chiffres prévus par la liste ISO 4217 des codes de devises (ou 2 si cette information n'est pas disponible dans cette liste). Pour le format en pourcent, la valeur par défaut est le maximum entre minimumFractionDigits et 0.
    -
    minimumSignificantDigits
    -
    Le nombre minimal de chiffres significatifs à utiliser. Les valeurs possibles sont comprises entre 1 et 21. La valeur par défaut est 1.
    -
    maximumSignificantDigits
    -
    Le nombre maximal de chiffres significatifs à utiliser. Les valeurs possibles sont comprises entre 1 et 21. La valeur par défaut est minimumSignificantDigits.
    -
    -
    -
    + - : Paramètre optionnel. Un objet avec certaines ou toutes les propriétés suivantes : -

    Description

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Intl","Intl","##Choix_de_la_locale")}}. + - `style` + - : Le style de formatage. Les valeurs possibles sont `"decimal"` pour l'affichage de nombres simple, `"currency"` pour un affichage en fonction de la devise et `"percent"` pour afficher des pourcentages. La valeur par défaut est `"decimal"`. + - `currency` + - : La devise à utiliser pour le formatage. Les valeurs possibles sont les codes ISO 4217 pour les devises, tels que `"USD"` pour le dollar américain, `"EUR"` pour l'euro, ou `"CNY"` pour le yuan chinois. Voir la page listant [les codes actuels pour les devises et les fonds](http://www.currency-iso.org/en/home/tables/table-a1.html) (en anglais). Il n'y a pas de valeur par défaut. Si le style choisi avec l'option `style` est "currency", la propriété `currency` doit être définie. + - `currencyDisplay` + - : La façon d'afficher la devise dans le format courant. Les valeurs possibles sont `"symbol"` qui permet d'utiliser un symbole localisé comme '€', `"code"` qui affichera le code ISO de la devise (voir ci-avant), `"name"`  affichera un nom localisé pour la devise comme `"dollar"`. La valeur par défaut est `"symbol"`. + - `useGrouping` + - : Cette option indique si on doit utiliser des séparateurs de groupes (comme les séparateurs de milliers ou autres comme lakhs et crores). Les valeurs possibles sont `true` et `false`. La valeur par défaut `true`. -

    Propriétés

    + Les propriétés suivantes peuvent être classées en deux groupes. Dans le premier on aura `minimumIntegerDigits`, `minimumFractionDigits`, `maximumFractionDigits` et dans le second on aura `minimumSignificantDigits` et `maximumSignificantDigits`. S'il existe une option définie pour le second groupe, les options du premier groupe seront ignorées. -
    -
    {{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}
    -
    Permet d'ajouter des propriétés à toutes les instances.
    -
    + - `minimumIntegerDigits` + - : Le nombre minimal de chiffres à utiliser pour la partie entière. Les valeurs possibles sont comprises entre 1 to 21. La valeur par défaut est 1. + - `minimumFractionDigits` + - : Le nombre minimal de chiffres à utiliser pour la partie fractionnaire. Les valeurs possibles sont comprises entre 0 et 20. Pour les formats `"decimal"` et `"percent"`, la valeur par défaut est 0. La valeur par défaut pour le formatage monétaire (`"currency"`) correspond au nombre de chiffres défini par [la liste de codes de devises ISO 4217](https://www.currency-iso.org/en/home/tables/table-a1.html), si cette valeur n'est pas définie dans cette liste, on aura 2 chiffres. + - `maximumFractionDigits` + - : Le nombre maximal de chiffres à utiliser pour représenter la partie fractionnaire. Les valeurs possibles sont comprises entre 0 et 20. Pour le format `"decimal"`, la valeur par défaut est le maximum entre 3 et `minimumFractionDigits`. Pour le format monétaire (`"currency"`), la valeur par défaut est le maximum entre  `minimumFractionDigits` et le nombre de chiffres prévus par la liste [ISO 4217 des codes de devises](https://www.currency-iso.org/en/home/tables/table-a1.html) (ou 2 si cette information n'est pas disponible dans cette liste). Pour le format en pourcent, la valeur par défaut est le maximum entre `minimumFractionDigits` et 0. + - `minimumSignificantDigits` + - : Le nombre minimal de chiffres significatifs à utiliser. Les valeurs possibles sont comprises entre 1 et 21. La valeur par défaut est 1. + - `maximumSignificantDigits` + - : Le nombre maximal de chiffres significatifs à utiliser. Les valeurs possibles sont comprises entre 1 et 21. La valeur par défaut est `minimumSignificantDigits`. -

    Méthodes

    +## Description -
    -
    {{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
    -
    Renvoie un tableau des locales supportées parmi les locales données afin d'éviter d'utiliser la locale par défaut de l'environnement.
    -
    +### Propriétés -

    Instances de NumberFormat

    +- {{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}} + - : Permet d'ajouter des propriétés à toutes les instances. -

    Propriétés

    +### Méthodes -

    Les instances de NumberFormat héritent des propriétés suivantes grâce à leur prototype :

    +- {{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}} + - : Renvoie un tableau des locales supportées parmi les locales données afin d'éviter d'utiliser la locale par défaut de l'environnement. -
    {{page('fr/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype','Properties')}}
    +## Instances de `NumberFormat` -

    Méthods

    +### Propriétés -
    -

    Les instances de NumberFormat héritent des méthodes suivantes grâce à leur prototype :

    -{{page('fr/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype','Methods')}}
    +Les instances de `NumberFormat` héritent des propriétés suivantes grâce à leur prototype : -

    Exemples

    +{{page('fr/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype','Properties')}} -

    Usage simple

    +### Méthods -

    Sans aucune spécification, le résultat sera une chaîne de caractères avec la locale et les options par défaut :

    +Les instances de `NumberFormat` héritent des méthodes suivantes grâce à leur prototype : -
    var nombre = 3500;
    +{{page('fr/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype','Methods')}}
    +
    +## Exemples
    +
    +### Usage simple
    +
    +Sans aucune spécification, le résultat sera une chaîne de caractères avec la locale et les options par défaut :
    +
    +```js
    +var nombre = 3500;
     
     console.log(new Intl.NumberFormat().format(nombre));
     // → "3 500" pour la locale fr
    -
    +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Cet exemple illustre les variations possibles des formats numériques localisés. Si vous souhaitez que votre application utilise le format de la locale de l'utilisateur, assurez vous de l'indiquer via l'argument locales (voire avec d'autres locales de secours) :

    +Cet exemple illustre les variations possibles des formats numériques localisés. Si vous souhaitez que votre application utilise le format de la locale de l'utilisateur, assurez vous de l'indiquer via l'argument `locales` (voire avec d'autres locales de secours) : -
    var nombre = 123456.789;
    +```js
    +var nombre = 123456.789;
     
     // L'allemand utilise la virgule comme séparateur décimal
     // et un point pour indiquer les milliers
    @@ -139,13 +128,14 @@ console.log(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(nombre));
     // on peut inclure une locale de secours (ici l'indonésien)
     console.log(new Intl.NumberFormat(["ban", "id"]).format(nombre));
     // → 123.456,789
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les résultats fournis par toLocaleString peuvent être paramétrés grâce à l'argument options :

    +Les résultats fournis par `toLocaleString` peuvent être paramétrés grâce à l'argument `options` : -
    var nombre = 123456.789;
    +```js
    +var nombre = 123456.789;
     
     // on affiche une devise avec le style "currency"
     console.log(new Intl.NumberFormat("de-DE", {style: "currency", currency: "EUR"}).format(nombre));
    @@ -158,41 +148,20 @@ console.log(new Intl.NumberFormat("ja-JP", {style: "currency", currency: "JPY"})
     // On se limite ici à trois chiffres significatifs
     console.log(new Intl.NumberFormat("en-IN", {maximumSignificantDigits: 3}).format(nombre));
     // → 1,23,000
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#numberformat-objects', 'Intl.NumberFormat')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - - - -

    {{Compat("javascript.builtins.Intl.NumberFormat")}}

    - -

    Voir aussi

    - -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl','Voir_aussi')}}

    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-11.1', 'Intl.NumberFormat')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#numberformat-objects', 'Intl.NumberFormat')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.NumberFormat")}} + +## Voir aussi + +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl','Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.md index f980e6608a..84d7961afb 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.md @@ -13,49 +13,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/NumberFormat/resolvedOptions --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.NumberFormat.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés correspondent aux options de locales et de format calculées à l'initialisation de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}.

    +La méthode **`Intl.NumberFormat.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés correspondent aux options de locales et de format calculées à l'initialisation de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}. -
    {{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-resolvedoptions.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-resolvedoptions.html")}} -

    Syntaxe

    +## Syntaxe -
    numberFormat.resolvedOptions()
    + numberFormat.resolvedOptions() -

    Valeur de retour

    +### Valeur de retour -

    Un objet dont les propriétés correspondent aux options de locale et de format calculées lors de l'initialisation de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}.

    +Un objet dont les propriétés correspondent aux options de locale et de format calculées lors de l'initialisation de l'objet {{jsxref("NumberFormat", "Intl.NumberFormat")}}. -

    Description

    +## Description -

    Cette méthode renvoie un objet composé des propriétés suivantes :

    +Cette méthode renvoie un objet composé des propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 qui est utilisée. Si des extensions Unicode avaient été rajoutées à la balise BCP 47 demandée, les paires de clés-valeurs qui ont été demandées et qui sont supportées sont inscrites dans locale.
    -
    numberingSystem
    -
    La valeur requise via l'extension Unicode "nu" ou celle qui est utilisée par défaut.
    -
    style, useGrouping
    -
    Les valeurs fournies pour ces propriétés via l'argument options ou bien les valeurs par défaut.
    -
    currency, currencyDisplay
    -
    Les valeurs fournies pour ces propriétés via l'argument options ou bien les valeurs par défaut. Ces valeurs sont présentes uniquement si style vaut "currency".
    -
    +- `locale` + - : La balise de langue BCP 47 qui est utilisée. Si des extensions Unicode avaient été rajoutées à la balise BCP 47 demandée, les paires de clés-valeurs qui ont été demandées et qui sont supportées sont inscrites dans `locale`. +- `numberingSystem` + - : La valeur requise via l'extension Unicode `"nu"` ou celle qui est utilisée par défaut. +- `style`, `useGrouping` + - : Les valeurs fournies pour ces propriétés via l'argument `options` ou bien les valeurs par défaut. +- `currency`, `currencyDisplay` + - : Les valeurs fournies pour ces propriétés via l'argument `options` ou bien les valeurs par défaut. Ces valeurs sont présentes uniquement si `style` vaut `"currency"`. -

    Un seul des deux groupes suivants est inclus dans les propriétés :

    +Un seul des deux groupes suivants est inclus dans les propriétés : -
    -
    minimumIntegerDigits,minimumFractionDigits, maximumFractionDigits
    -
    Les valeurs fournies pour ces propriétés via l'argument options ou bien les valeurs par défaut. Ces propriétés ne sont présentes que si minimumSignificantDigits ou maximumSignificantDigits n'ont pas été fournies à l'argument options.
    -
    minimumSignificantDigits,maximumSignificantDigits
    -
    Les valeurs fournies pour ces propriétés via l'argument options ou bien les valeurs par défaut. Ces propriétés sont présentes si au moins une d'entre elles a été fournie via l'argument options.
    -
    +- `minimumIntegerDigits`,`minimumFractionDigits`, `maximumFractionDigits` + - : Les valeurs fournies pour ces propriétés via l'argument `options` ou bien les valeurs par défaut. Ces propriétés ne sont présentes que si `minimumSignificantDigits` ou `maximumSignificantDigits` n'ont pas été fournies à l'argument `options`. +- `minimumSignificantDigits`,`maximumSignificantDigits` + - : Les valeurs fournies pour ces propriétés via l'argument `options` ou bien les valeurs par défaut. Ces propriétés sont présentes si au moins une d'entre elles a été fournie via l'argument `options`. -

    Exemples

    +## Exemples -

    Utiliser la méthode resolvedOptions()

    +### Utiliser la méthode `resolvedOptions()` -
    var de = new Intl.NumberFormat('de-DE');
    +```js
    +var de = new Intl.NumberFormat('de-DE');
     var usedOptions = de.resolvedOptions();
     
     usedOptions.locale;                // "de-DE"
    @@ -64,41 +61,21 @@ usedOption.style;                  // "decimal"
     usedOptions.minimumIntegerDigits;  // 1
     usedOptions.minimumFractionDigits; // 0
     usedOptions.maximumFractionDigits; // 3
    -usedOptions.useGrouping;           // true
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}}{{Spec2('ES Int 1.0')}}Définition initiale.
    {{SpecName('ES Int 2.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.resolvedOptions', 'Intl.NumberFormat.prototype.resolvedOptions')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.NumberFormat.resolvedOptions")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
    • -
    +usedOptions.useGrouping; // true +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | -------------------- | +| {{SpecName('ES Int 1.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}} | {{Spec2('ES Int 1.0')}} | Définition initiale. | +| {{SpecName('ES Int 2.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype.resolvedOptions', 'Intl.NumberFormat.prototype.resolvedOptions')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.NumberFormat.resolvedOptions")}} + +## Voir aussi + +- {{jsxref("NumberFormat", "Intl.NumberFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.md index 6e622f3240..0e53d66889 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.md @@ -12,84 +12,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/NumberFormat/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.NumberFormat.supportedLocalesOf() renvoie un tableau de locales supportées parmi les locales fournies en argument afin d'éviter d'utiliser celle par défaut de l'environnement.

    +La méthode **`Intl.NumberFormat.supportedLocalesOf()`** renvoie un tableau de locales supportées parmi les locales fournies en argument afin d'éviter d'utiliser celle par défaut de l'environnement. -
    {{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-supportedlocalesof.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-supportedlocalesof.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.NumberFormat.supportedLocalesOf(locales[, options])
    + Intl.NumberFormat.supportedLocalesOf(locales[, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Une chaîne de caractères qui est une balise BCP 47 ou un tableau composé de telles chaînes. Pour plus d'informations sur la forme générale de l'argument locales, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}.
    -
    options
    -
    -

    Un objet qui peut avoir la propriété suivante :

    +- `locales` + - : Une chaîne de caractères qui est une balise BCP 47 ou un tableau composé de telles chaînes. Pour plus d'informations sur la forme générale de l'argument `locales`, voir la page {{jsxref("Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. +- `options` -
    -
    localeMatcher
    -
    L'algorithme de correspondance des locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". La valeur par défaut est "best fit". Pour plus d'informations,, voir la page {{jsxref("Intl","Intl","#Choix_de_la_locale")}}.
    -
    -
    -
    + - : Un objet qui peut avoir la propriété suivante : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme de correspondance des locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". La valeur par défaut est "best fit". Pour plus d'informations,, voir la page {{jsxref("Intl","Intl","#Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères représentant un sous-ensemble des balises de langues qui sont prises en charge pour la mise en forme des nombres sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution.

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères représentant un sous-ensemble des balises de langues qui sont prises en charge pour la mise en forme des nombres sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution. -

    Cette méthode renvoie un tableau de locales supportées parmi les locales fournies en argument afin d'éviter d'utiliser celle par défaut de l'environnement. Les locales renvoyées sont celles considérées comme équivalentes aux locales fournies avec l'algorithme indiqué.

    +## Description -

    Exemples

    +Cette méthode renvoie un tableau de locales supportées parmi les locales fournies en argument afin d'éviter d'utiliser celle par défaut de l'environnement. Les locales renvoyées sont celles considérées comme équivalentes aux locales fournies avec l'algorithme indiqué. -

    Utiliser supportedLocalesOf()

    +## Exemples -

    Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des dates et des heures, supportedLocalesOf renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les nombres ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme "lookup". Si on utilisait "best fit", on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise.

    +### Utiliser `supportedLocalesOf()` -
    var locales = ["ban", "id-u-co-pinyin", "de-ID"];
    +Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des dates et des heures, `supportedLocalesOf` renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les nombres ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme `"lookup"`. Si on utilisait `"best fit"`, on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise.
    +
    +```js
    +var locales = ["ban", "id-u-co-pinyin", "de-ID"];
     var options = {localeMatcher: "lookup"};
     console.log(Intl.NumberFormat.supportedLocalesOf(locales, options).join(", "));
    -// → "id-u-co-pinyin, de-ID"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES Int 1.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Définition initiale
    {{SpecName('ES Int 2.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}}{{Spec2('ES Int 2.0')}} 
    {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.supportedLocalesOf', 'Intl.NumberFormat.supportedLocalesOf')}}{{Spec2('ES Int Draft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.NumberFormat.supportedLocalesOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("NumberFormat", "Intl.NumberFormat")}}
    • -
    +// → "id-u-co-pinyin, de-ID" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------- | +| {{SpecName('ES Int 1.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}} | {{Spec2('ES Int 1.0')}} | Définition initiale | +| {{SpecName('ES Int 2.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}} | {{Spec2('ES Int 2.0')}} |   | +| {{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.supportedLocalesOf', 'Intl.NumberFormat.supportedLocalesOf')}} | {{Spec2('ES Int Draft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.NumberFormat.supportedLocalesOf")}} + +## Voir aussi + +- {{jsxref("NumberFormat", "Intl.NumberFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/index.md b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/index.md index 1e106a5079..dcb8012ff4 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/index.md @@ -10,77 +10,65 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/PluralRules --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.PluralRules est un constructeur d'objets qui permettent de mettre en forme des chaînes de caractères en fonction des règles de nombre (pluriel) d'une langue donnée.

    +L'objet **`Intl.PluralRules`** est un constructeur d'objets qui permettent de mettre en forme des chaînes de caractères en fonction des règles de nombre (pluriel) d'une langue donnée. -

    Syntaxe

    +## Syntaxe -
    new Intl.PluralRules([locales[, options]])
    -
    + new Intl.PluralRules([locales[, options]]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    -

    Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}.

    -
    -
    options {{optional_inline}}
    -
    -

    Optionnel, un objet possédant tout ou partie des propriétés suivantes :

    +- `locales` + - : Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. +- `options` {{optional_inline}} -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}
    -
    type
    -
    Le type de numérotation à utiliser. Les valeurs possibles sont : -
      -
    • "cardinal" pour les nombres cardinaux (la quantité de telle ou telle chose). Cette valeur est la valeur par défaut.
    • -
    • "ordinal" pour les nombres ordinaux (l'ordre relatif de différentes choses « premier », « deuxième », « troisième »).
    • -
    -
    -
    -
    -
    + - : Optionnel, un objet possédant tout ou partie des propriétés suivantes : -

    Description

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}} + - `type` -

    Propriétés

    + - : Le type de numérotation à utiliser. Les valeurs possibles sont : -
    -
    {{jsxref("PluralRules.prototype", "Intl.PluralRules.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés aux objets Intl.PluralRules.
    -
    + - `"cardinal"` pour les nombres cardinaux (la quantité de telle ou telle chose). Cette valeur est la valeur par défaut. + - `"ordinal"` pour les nombres ordinaux (l'ordre relatif de différentes choses « premier », « deuxième », « troisième »). -

    Méthodes

    +## Description -
    -
    {{jsxref("PluralRules.supportedLocalesOf", "Intl.PluralRules.supportedLocalesOf()")}}
    -
    Cette méthode renvoie un tableau contenant les locales prises en charge sans que le moteur ait à utiliser la locale par défaut du système d'exécution.
    -
    +### Propriétés -

    Instances de PluralRules

    +- {{jsxref("PluralRules.prototype", "Intl.PluralRules.prototype")}} + - : Cette propriété permet d'ajouter des propriétés aux objets `Intl.PluralRules`. -

    Propriétés

    +### Méthodes -

    Les instances de PluralRules héritent des propriétés suivantes de par leur prototype :

    +- {{jsxref("PluralRules.supportedLocalesOf", "Intl.PluralRules.supportedLocalesOf()")}} + - : Cette méthode renvoie un tableau contenant les locales prises en charge sans que le moteur ait à utiliser la locale par défaut du système d'exécution. -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/PluralRules/prototype', 'Propriétés')}}
    +## Instances de `PluralRules` -

    Méthodes

    +### Propriétés -

    Les instances de PluralRules héritent des méthodes suivantes de par leur prototype :

    +Les instances de `PluralRules` héritent des propriétés suivantes de par leur prototype : -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/PluralRules/prototype', 'Méthodes')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/PluralRules/prototype', 'Propriétés')}} -

    Exemples

    +### Méthodes -

    Exemple simple

    +Les instances de `PluralRules` héritent des méthodes suivantes de par leur prototype : -

    Sans indiquer de locale, une chaîne formatée dans la locale par défaut et avec les options par défaut est renvoyée. On peut ainsi différencier entre le singulier et le pluriel (par exemple "chien" et "chiens").

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/PluralRules/prototype', 'Méthodes')}} -
    var pr = new Intl.PluralRules();
    +## Exemples
    +
    +### Exemple simple
    +
    +Sans indiquer de locale, une chaîne formatée dans la locale par défaut et avec les options par défaut est renvoyée. On peut ainsi différencier entre le singulier et le pluriel (par exemple "chien" et "chiens").
    +
    +```js
    +var pr = new Intl.PluralRules();
     
     pr.select(0);
     // → 'one' si utilisée avec une locale anglais américain
    @@ -90,13 +78,14 @@ pr.select(1);
     
     pr.select(2);
     // → 'other' si utilisée avec une locale anglais américain
    -
    +``` -

    Utiliser locales

    +### Utiliser `locales` -

    Dans cet exemple, on voit l'impact de la locale sur les règles de nombre. Afin de respecter la langue de l'utilisateur dans votre application, assurez vous d'indiquer cette langue (et éventuellement une langue de secours) grâce à l'argument locales :

    +Dans cet exemple, on voit l'impact de la locale sur les règles de nombre. Afin de respecter la langue de l'utilisateur dans votre application, assurez vous d'indiquer cette langue (et éventuellement une langue de secours) grâce à l'argument `locales` : -
    // L'arabe possède plusieurs règles
    +```js
    +// L'arabe possède plusieurs règles
     // de nombre
     
     new Intl.PluralRules('ar-EG').select(0);
    @@ -109,13 +98,14 @@ new Intl.PluralRules('ar-EG').select(6);
     // → 'few'
     new Intl.PluralRules('ar-EG').select(18);
     // → 'many'
    -
    +``` -

    Utiliser options

    +### Utiliser `options` -

    Les résultats obtenus peuvent être adaptés grâce à l'argument options. Celui-ci possède une propriété appelée type qui peut valoir ordinal. Cela peut être utile afin de déterminer la forme d'un indicateur ordinal (par exemple, "1er", "2e", etc.).

    +Les résultats obtenus peuvent être adaptés grâce à l'argument `options`. Celui-ci possède une propriété appelée `type` qui peut valoir `ordinal`. Cela peut être utile afin de déterminer la forme d'un indicateur ordinal (par exemple, "1er", "2e", etc.). -
    var pr = new Intl.PluralRules('en-US', { type: 'ordinal' });
    +```js
    +var pr = new Intl.PluralRules('en-US', { type: 'ordinal' });
     
     pr.select(0);
     // → 'other'
    @@ -129,29 +119,18 @@ pr.select(4);
     // → 'other'
     pr.select(42);
     // → 'two'
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour le constructeur Intl.PluralRules{{Spec2('ES Int Draft')}}Définition initiale.
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| [Proposition pour le constructeur `Intl.PluralRules`](https://tc39.es/ecma402/#sec-intl-pluralrules-constructor) | {{Spec2('ES Int Draft')}} | Définition initiale. | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Intl.PluralRules")}}

    +{{Compat("javascript.builtins.Intl.PluralRules")}} -

    Voir aussi

    +## Voir aussi -
    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}}
    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl', 'Voir_aussi')}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/resolvedoptions/index.md index 8279bdd641..3e43bd2616 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/resolvedoptions/index.md @@ -12,45 +12,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/resolvedOptions original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/PluralRules/resolvedOptions --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.PluralRules.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés reflètent la locale et les options de formatage relatives aux règles de nombre calculées lors de l'initialisation de l'objet {{jsxref("PluralRules")}}.

    +La méthode **`Intl.PluralRules.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés reflètent la locale et les options de formatage relatives aux règles de nombre calculées lors de l'initialisation de l'objet {{jsxref("PluralRules")}}. -

    Syntaxe

    +## Syntaxe -
    pluralRule.resolvedOptions()
    + pluralRule.resolvedOptions() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet dont les propriétés reflètent la locale et les options de formatage relatives aux règles de nombre calculées lors de l'initialisation de l'objet {{jsxref("PluralRules")}}.

    +Un nouvel objet dont les propriétés reflètent la locale et les options de formatage relatives aux règles de nombre calculées lors de l'initialisation de l'objet {{jsxref("PluralRules")}}. -

    Description

    +## Description -

    L'objet produit possède les propriétés suivantes :

    +L'objet produit possède les propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 pour la locale réellement utilisée. Si une extension Unicode a été demandée dans la balise de langue BCP 47 ayant menée à cette locale, les paires clé/valeur qui ont été demandées et qui sont prises en charge dans cette locale sont incluses dans l'objet locale.
    -
    pluralCategories
    -
    Un tableau {{jsxref("Array")}} des règles de nombre utilisée pour la langue donnée.
    -
    type
    -
    Le type de règle utilisée (cardinal ou ordinal).
    -
    +- `locale` + - : La balise de langue BCP 47 pour la locale réellement utilisée. Si une extension Unicode a été demandée dans la balise de langue BCP 47 ayant menée à cette locale, les paires clé/valeur qui ont été demandées et qui sont prises en charge dans cette locale sont incluses dans l'objet `locale`. +- `pluralCategories` + - : Un tableau {{jsxref("Array")}} des règles de nombre utilisée pour la langue donnée. +- `type` + - : Le type de règle utilisée (`cardinal` ou `ordinal`). -

    Seul l'un de ces deux groupes de propriétés est inclus :

    +Seul l'un de ces deux groupes de propriétés est inclus : -
    -
    minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits
    -
    Les valeurs fournies pour ces propriétés via l'argument options ou les valeurs par défaut. Ces propriétés sont uniquement présentes si aucunes des propriétés minimumSignificantDigits ou maximumSignificantDigits n'a été fournie dans l'argument options.
    -
    minimumSignificantDigits, maximumSignificantDigits
    -
    Les valeurs fournies par ces propriétés via l'argument options ou les valeurs par défaut. Ces propriétés sont uniquement présentes si au moins l'une d'entre elles a été fournie dans l'argument options.
    -
    +- `minimumIntegerDigits`, `minimumFractionDigits`, `maximumFractionDigits` + - : Les valeurs fournies pour ces propriétés via l'argument `options` ou les valeurs par défaut. Ces propriétés sont uniquement présentes si aucunes des propriétés `minimumSignificantDigits` ou `maximumSignificantDigits` n'a été fournie dans l'argument `options`. +- `minimumSignificantDigits`, `maximumSignificantDigits` + - : Les valeurs fournies par ces propriétés via l'argument `options` ou les valeurs par défaut. Ces propriétés sont uniquement présentes si au moins l'une d'entre elles a été fournie dans l'argument `options`. -

    Exemples

    +## Exemples -

    Utiliser resolvedOptions()

    +### Utiliser `resolvedOptions()` -
    var de = new Intl.PluralRules('de-DE');
    +```js
    +var de = new Intl.PluralRules('de-DE');
     var usedOptions = de.resolvedOptions();
     
     usedOptions.locale;                // "de-DE"
    @@ -59,31 +56,18 @@ usedOptions.minimumFractionDigits; // 0
     usedOptions.minimumIntegerDigits;  // 1
     usedOptions.pluralCategories;      // Array [ "one", "other" ]
     usedOptions.type;                  // "cardinal"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Brouillon pour les règles de nombre avec IntlBrouillonDéfinition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.PluralRules.resolvedOptions")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("PluralRules", "Intl.PluralRules")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------------------------------- | --------- | -------------------- | +| [Brouillon pour les règles de nombre avec `Intl`](https://rawgit.com/caridy/intl-plural-rules-spec/master/index.html) | Brouillon | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.PluralRules.resolvedOptions")}} + +## Voir aussi + +- {{jsxref("PluralRules", "Intl.PluralRules")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/select/index.md b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/select/index.md index d8a329b4a8..cc4c837203 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/select/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/select/index.md @@ -11,28 +11,27 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/select original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/PluralRules/select --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.PluralRules.prototype.select renvoie une chaîne de caractères qui indique la règle de nombre utilisée pour le formatage relatif à la locale.

    +La méthode **`Intl.PluralRules.prototype.select`** renvoie une chaîne de caractères qui indique la règle de nombre utilisée pour le formatage relatif à la locale. -

    Syntaxe

    +## Syntaxe -
    pluralRule.select(nombre)
    + pluralRule.select(nombre) -

    Paramètres

    +### Paramètres -
    -
    nombre
    -
    Le nombre pour lequel on souhaite obtenir la règle de nombre associée.
    -
    +- `nombre` + - : Le nombre pour lequel on souhaite obtenir la règle de nombre associée. -

    Description

    +## Description -

    Cette fonction permet de sélectionner une règle de nombre en fonction de la locale et des options de formatage choisies via un objet {{jsxref("PluralRules")}}.

    +Cette fonction permet de sélectionner une règle de nombre en fonction de la locale et des options de formatage choisies via un objet {{jsxref("PluralRules")}}. -

    Exemples

    +## Exemples -
     new Intl.PluralRules('ar-EG').select(0);
    +```js
    + new Intl.PluralRules('ar-EG').select(0);
     // → 'zero'
     
     new Intl.PluralRules('ar-EG').select(1);
    @@ -46,31 +45,18 @@ new Intl.PluralRules('ar-EG').select(6);
     
     new Intl.PluralRules('ar-EG').select(18);
     // → 'many'
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Brouillon pour les règles de nombre avec Intl{{Spec2('ES Int Draft')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.PluralRules.select")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("PluralRules", "Intl.PluralRules")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| [Brouillon pour les règles de nombre avec Intl](https://rawgit.com/caridy/intl-plural-rules-spec/master/index.html) | {{Spec2('ES Int Draft')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.PluralRules.select")}} + +## Voir aussi + +- {{jsxref("PluralRules", "Intl.PluralRules")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.md index 0c20fbcf7e..8f93737a64 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.md @@ -11,71 +11,54 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/supportedLocalesOf original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/PluralRules/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.PluralRules.supportedLocalesOf() renvoie un tableau contenant les locales prises en charge, parmi celles passées en argument, pour les règles de nombre (sans avoir à utiliser la locale par défaut du système d'exécution).

    +La méthode **`Intl.PluralRules.supportedLocalesOf()`** renvoie un tableau contenant les locales prises en charge, parmi celles passées en argument, pour les règles de nombre (sans avoir à utiliser la locale par défaut du système d'exécution). -

    Syntaxe

    +## Syntaxe -
    Intl.PluralRules.supportedLocalesOf(locales[, options])
    + Intl.PluralRules.supportedLocalesOf(locales[, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Une chaîne de caractères représentant une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour la forme générale de l'argument locales, se référer à la page {{jsxref("Intl", "Intl", "#Identification_et_choix_de_la_locale", 1)}}.
    -
    options {{optional_inline}}
    -
    -

    Optionnel. Un objet pouvant contenir la propriété suivante :

    +- `locales` + - : Une chaîne de caractères représentant une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour la forme générale de l'argument `locales`, se référer à la page {{jsxref("Intl", "Intl", "#Identification_et_choix_de_la_locale", 1)}}. +- `options` {{optional_inline}} -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}.
    -
    -
    -
    + - : Optionnel. Un objet pouvant contenir la propriété suivante : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères représentant le sous-ensemble de balises de langues prises en charge pour le formatage avec les règles de nombre (sans qu'il soit nécssaire d'utiliser la locale par défaut du système d'exploitation).

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères représentant le sous-ensemble de balises de langues prises en charge pour le formatage avec les règles de nombre (sans qu'il soit nécssaire d'utiliser la locale par défaut du système d'exploitation). -

    Cette méthode renvoie un tableau contenant un sous-ensemble des balises de langue fournies dans l'argument locales. Les balises de langue sont celles qui sont prises en charge par l'environnement pour le formatage avec les règles de nombre et pour lesquelles la locale respecte l'algorithme de correspondance indiqué. Les locales de ce tableau évitent d'avoir à utiliser la locale du système d'exécution par défaut.

    +## Description -

    Exemples

    +Cette méthode renvoie un tableau contenant un sous-ensemble des balises de langue fournies dans l'argument `locales`. Les balises de langue sont celles qui sont prises en charge par l'environnement pour le formatage avec les règles de nombre et pour lesquelles la locale respecte l'algorithme de correspondance indiqué. Les locales de ce tableau évitent d'avoir à utiliser la locale du système d'exécution par défaut. -

    Dans l'hypothèse où on utilise un système prenant en charge l'indonésien, l'allemand mais pas le balinais pour le formatage avec les règles de nombre, supportedLocalesOf renvoie les balises de langue indonésienne et allemande inchangées bien que la collation pinyin ne soit pas pertinente ni utilisée avec l'indonésien (et qu'il est peu probable qu'une variante indonésienne pour l'allemand soit prise en charge). On notera que l'algorithme de correspondance "lookup" est utilisé ici. L'algorithme "best fit" aurait pu déterminer que l'indonésien aurait pu remplacer le balinais car la plupart des personnes parlant le balinais comprend également l'indonésien, la fonction aurait alors pu remplacer la balise de langue balinaise.

    +## Exemples -
    var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
    +Dans l'hypothèse où on utilise un système prenant en charge l'indonésien, l'allemand mais pas le balinais pour le formatage avec les règles de nombre, `supportedLocalesOf` renvoie les balises de langue indonésienne et allemande inchangées bien que la collation `pinyin` ne soit pas pertinente ni utilisée avec l'indonésien (et qu'il est peu probable qu'une variante indonésienne pour l'allemand soit prise en charge). On notera que l'algorithme de correspondance `"lookup"` est utilisé ici. L'algorithme `"best fit"` aurait pu déterminer que l'indonésien aurait pu remplacer le balinais car la plupart des personnes parlant le balinais comprend également l'indonésien, la fonction aurait alors pu remplacer la balise de langue balinaise.
    +
    +```js
    +var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
     var options = { localeMatcher: 'lookup' };
     console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', '));
     // → "id-u-co-pinyin, de-ID"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Brouillon pour les règles de nombre avec Intl{{Spec2('ES Int Draft')}}Définition initiale.
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.PluralRules.supportedLocalesOf")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("PluralRules", "Intl.PluralRules")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| --------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------- | +| [Brouillon pour les règles de nombre avec `Intl`](https://rawgit.com/caridy/intl-plural-rules-spec/master/index.html) | {{Spec2('ES Int Draft')}} | Définition initiale. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.PluralRules.supportedLocalesOf")}} + +## Voir aussi + +- {{jsxref("PluralRules", "Intl.PluralRules")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.md b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.md index ad924c3837..3f1e19cee0 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.md @@ -10,36 +10,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/RelativeTimeFormat/format --- -
    {{JSRef}}
    +{{JSRef}}La méthode **`Intl.RelativeTimeFormat.prototype.format()`** permet de formater une valeur avec une unité selon des options de locale et de formatage stockées dans l'objet {{jsxref("RelativeTimeFormat")}}.{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-format.html")}} -
    La méthode Intl.RelativeTimeFormat.prototype.format() permet de formater une valeur avec une unité selon des options de locale et de formatage stockées dans l'objet {{jsxref("RelativeTimeFormat")}}.
    +## Syntaxe -
    {{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-format.html")}}
    +```js +RelativeTimeFormat.format(valeur, unite) +``` -

    Syntaxe

    +### Paramètres -
    RelativeTimeFormat.format(valeur, unite)
    +- `valeur` + - : Une valeur numérique qu'on souhaite utiliser pour exprimer un temps relatif dans un message internationalisé. +- `unite` + - : L'unité à utiliser pour le message internationalisé exprimant le temps relatif. Les valeurs possibles pour cet argument sont `"year"` (année), `"quarter"` (trimestre), `"month"` (mois), `"week"` (semaine), `"day"` (jour), `"hour"` (heure), `"minute"` (minute), `"second"` (secondes). Les formes plurielles sont également autorisées. -

    Paramètres

    +## Description -
    -
    valeur
    -
    Une valeur numérique qu'on souhaite utiliser pour exprimer un temps relatif dans un message internationalisé.
    -
    unite
    -
    L'unité à utiliser pour le message internationalisé exprimant le temps relatif. Les valeurs possibles pour cet argument sont "year" (année), "quarter" (trimestre), "month" (mois), "week" (semaine), "day" (jour), "hour" (heure), "minute" (minute), "second" (secondes). Les formes plurielles sont également autorisées.
    -
    +La fonction renvoyée par l'accesseur `format` permet de formater une valeur et une unité en une chaîne de caractères en prenant en compte la locale et les options de formatage associées à l'objet {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} utilisé. -

    Description

    +## Exemples -

    La fonction renvoyée par l'accesseur format permet de formater une valeur et une unité en une chaîne de caractères en prenant en compte la locale et les options de formatage associées à l'objet {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} utilisé.

    +### Utilisation simple de `format` -

    Exemples

    +L'exemple suivant illustre comment créer un outil de formatage pour les valeurs de temps relatifs en anglais. -

    Utilisation simple de format

    - -

    L'exemple suivant illustre comment créer un outil de formatage pour les valeurs de temps relatifs en anglais.

    - -
    // On crée un outil de formatage pour les valeurs exprimant
    +```js
    +// On crée un outil de formatage pour les valeurs exprimant
     // les temps relatifs en anglais, avec les valeurs par défaut
     // utilisées explicitement.
     const rtf = new Intl.RelativeTimeFormat("en", {
    @@ -50,48 +47,37 @@ const rtf = new Intl.RelativeTimeFormat("en", {
     
     // Formatage d'une valeur relative négative.
     rtf.format(-1, "day");
    -// > "1 day ago"
    +// > "1 day ago"
     
     // Formatage d'une valeur relative positive.
     rtf.format(1, "day");
    -// > "in 1 day"
    +// > "in 1 day" +``` -

    Utiliser l'option auto

    +### Utiliser l'option `auto` -

    Si on passe l'option numeric:auto, c'est la chaîne de caractères yesterday ou tomorrow qui sera produite (en anglais) plutôt que 1 day ago ou in 1 day. Cela permet de n'avoir pas nécessairement une valeur numérique en résultat.

    +Si on passe l'option `numeric:auto`, c'est la chaîne de caractères `yesterday` ou `tomorrow` qui sera produite (en anglais) plutôt que `1 day ago` ou `in 1 day`. Cela permet de n'avoir pas nécessairement une valeur numérique en résultat. -
    // On crée un formateur en anglais avec l'option
    +```js
    +// On crée un formateur en anglais avec l'option
     // numeric: "auto".
     const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
     
     // Formatage d'une valeur relative négative.
     rtf.format(-1, "day");
    -// > "yesterday"
    +// > "yesterday"
     
     // Formatage d'une valeur relative positive.
     rtf.format(1, "day");
    -// > "tomorrow"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.RelativeTimeProposition de niveau 3 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.RelativeTimeFormat.format")}}

    +// > "tomorrow" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.RelativeTime`](https://tc39.github.io/proposal-intl-relative-time/#sec-Intl.RelativeTimeFormat.prototype.format) | Proposition de niveau 3 |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.RelativeTimeFormat.format")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.md b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.md index c8c141e6e3..be57f9e3d3 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.md @@ -10,71 +10,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/RelativeTimeFormat/formatToParts --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.RelativeTimeFormat.prototype.formatToParts() est une méthode analogue à format() qui renvoie un tableau d'objets contenant les différentes parties représentant le message internationalisé pour le temps relatif.

    +La méthode **`Intl.RelativeTimeFormat.prototype.formatToParts()`** est une méthode analogue à [`format()`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl.RelativeTimeFormat/format) qui renvoie un tableau d'objets contenant les différentes parties représentant le message internationalisé pour le temps relatif. -
    {{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-formattoparts.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-formattoparts.html")}} -

    Syntaxe

    +## Syntaxe -
    RelativeTimeFormat.formatToParts(valeur, unite)
    +```js +RelativeTimeFormat.formatToParts(valeur, unite) +``` -

    Paramètres

    +### Paramètres -
    -
    valeur
    -
    Une valeur numérique qu'on souhaite formater pour un message internationalisé exprimant un temps relatif.
    -
    unite
    -
    L'unité à utiliser pour le message internationalisé exprimant le temps relatif. Les valeurs possibles pour cet argument sont "year" (année), "quarter" (trimestre), "month" (mois), "week" (semaine), "day" (jour), "hour" (heure), "minute" (minute), "second" (secondes). Les formes plurielles sont également autorisées.
    -
    +- `valeur` + - : Une valeur numérique qu'on souhaite formater pour un message internationalisé exprimant un temps relatif. +- `unite` + - : L'unité à utiliser pour le message internationalisé exprimant le temps relatif. Les valeurs possibles pour cet argument sont `"year"` (année), `"quarter"` (trimestre), `"month"` (mois), `"week"` (semaine), `"day"` (jour), `"hour"` (heure), `"minute"` (minute), `"second"` (secondes). Les formes plurielles sont également autorisées. -

    Valeur de retour

    +### Valeur de retour -

    Un tableau ({{jsxref("Array")}}) d'objets contenant les fragments composant la chaîne de caractères localisée et mise en forme pour exprimer le temps relatif.

    +Un tableau ({{jsxref("Array")}}) d'objets contenant les fragments composant la chaîne de caractères localisée et mise en forme pour exprimer le temps relatif. -

    Description

    +## Description -
    La méthode Intl.RelativeTimeFormat.prototype.formatToParts() est une méthode analogue à la méthode format() mais renvoie un tableau d'objets représentant chacun une partie du message internationalisé. Ces objets ont deux propriétés : type et value. Si un des composants provient de NumberFormat, il aura une propriété unit indiquant l'unité utilisée pour le formatage.
    +La méthode `Intl.RelativeTimeFormat.prototype.formatToParts()` est une méthode analogue à la méthode `format()` mais renvoie un tableau d'objets représentant chacun une partie du message internationalisé. Ces objets ont deux propriétés : `type` et `value`. Si un des composants provient de `NumberFormat`, il aura une propriété `unit` indiquant l'unité utilisée pour le formatage. -

    Exemples

    +## Exemples -
    const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
    +```js
    +const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
     
     // Format relative time using the day unit.
     rtf.formatToParts(-1, "day");
    -// > [{ type: "literal", value: "yesterday"}]
    +// > [{ type: "literal", value: "yesterday"}]
     
     rtf.formatToParts(100, "day");
    -// > [{ type: "literal", value: "in " },
    +// > [{ type: "literal", value: "in " },
           { type: "integer", value: "100", unit: "day" },
    -      { type: "literal", value: " days" }]
    - -

    Spécifications

    - - - - - - - - - - - - - - - - -
    SpécificationsÉtatCommentaires
    Proposition pour Intl.RelativeTimeProposition de niveau 3 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.RelativeTimeFormat.formatToParts")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}
    • -
    + { type: "literal", value: " days" }] +``` + +## Spécifications + +| Spécifications | État | Commentaires | +| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour `Intl.RelativeTime`](https://tc39.github.io/proposal-intl-relative-time/#sec-Intl.RelativeTimeFormat.prototype.formatToParts) | Proposition de niveau 3 |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.RelativeTimeFormat.formatToParts")}} + +## Voir aussi + +- {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/index.md b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/index.md index 96a0d534dd..85bfd8665a 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/index.md @@ -10,74 +10,65 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat original_slug: Web/JavaScript/Reference/Objets_globaux/Intl/RelativeTimeFormat --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Intl.RelativeTimeFormat est un constructeur fournissant des objets pour mettre en forme des données temporelles relatives en respectant le format des locales.

    +L'objet **`Intl.RelativeTimeFormat`** est un constructeur fournissant des objets pour mettre en forme des données temporelles relatives en respectant le format des locales. -
    {{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}} -

    Syntaxe

    +## Syntaxe -
    new Intl.RelativeTimeFormat([locales[, options]])
    + new Intl.RelativeTimeFormat([locales[, options]]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    -

    Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}.

    -
    -
    options {{optional_inline}}
    -
    -

    Optionnel, un objet possédant tout ou partie des propriétés suivantes :

    -
    -
    localeMatcher
    -
    L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}.
    -
    numeric
    -
    Le format du message de sortie. Les valeurs possibles sont "always" (par exemple 1 day ago) ou  "auto" (par exemple yesterday). "auto" permet de ne pas toujours avoir de valeurs numériques dans le message produit.
    -
    style
    -
    La longueur du message internationalisé. Les valeurs possibles sont : "long" (la valeur par défaut) (par exemple : in 1 month), "short" (par exemple : in 1 mo.) ou  "narrow" (par exemple : in 1 mo.). Le style narrow peut être semblable au style short pour certaines locales.
    -
    -
    -
    +- `locales` + - : Une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument `locales`, voir la page {{jsxref("Objets_globaux/Intl","Intl","#L'identification_et_le_choix_de_la_locale")}}. +- `options` {{optional_inline}} -

    Description

    + - : Optionnel, un objet possédant tout ou partie des propriétés suivantes : -

    Propriétés

    + - `localeMatcher` + - : L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont `"lookup"` et `"best fit"` ; le défaut est `"best fit"`. Pour des informations sur cette option, voir la page {{jsxref("Objets_globaux/Intl","Intl","##Choix_de_la_locale")}}. + - `numeric` + - : Le format du message de sortie. Les valeurs possibles sont `"always"` (par exemple `1 day ago`) ou  `"auto"` (par exemple `yesterday`). `"auto"` permet de ne pas toujours avoir de valeurs numériques dans le message produit. + - `style` + - : La longueur du message internationalisé. Les valeurs possibles sont : `"long"` (la valeur par défaut) (par exemple : `in 1 month`), `"short"` (par exemple : `in 1 mo.`) ou  `"narrow"` (par exemple : `in 1 mo.`). Le style `narrow` peut être semblable au style `short` pour certaines locales. -
    -
    {{jsxref("RelativeTimeFormat.prototype", "Intl.RelativeTimeFormat.prototype")}}
    -
    Cette propriété permet d'ajouter des propriétés à l'ensemble des instances.
    -
    +## Description -

    Méthodes

    +### Propriétés -
    -
    {{jsxref("RelativeTimeFormat.supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}}
    -
    Cette méthode renvoie un tableau des locales, parmi celles passées en argument, qui sont pris en charge pour le formatage internationalisé des temps relatifs sans qu'il y ait besoin d'utiliser la locale par défaut de l'environnement d'exécution.
    -
    +- {{jsxref("RelativeTimeFormat.prototype", "Intl.RelativeTimeFormat.prototype")}} + - : Cette propriété permet d'ajouter des propriétés à l'ensemble des instances. -

    Les instances de RelativeTimeFormat

    +### Méthodes -

    Propriétés

    +- {{jsxref("RelativeTimeFormat.supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}} + - : Cette méthode renvoie un tableau des locales, parmi celles passées en argument, qui sont pris en charge pour le formatage internationalisé des temps relatifs sans qu'il y ait besoin d'utiliser la locale par défaut de l'environnement d'exécution. -

    Les instances de RelativeTimeFormat héritent des propriétés suivantes grâce à leur prototype :

    +## Les instances de `RelativeTimeFormat` -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl.RelativeTimeFormat/prototype', 'Propriétés')}}

    +### Propriétés -

    Méthodes

    +Les instances de RelativeTimeFormat héritent des propriétés suivantes grâce à leur prototype : -

    Les instances de RelativeTimeFormat héritent des méthodes suivantes grâce à leur prototype :

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl.RelativeTimeFormat/prototype', 'Propriétés')}} -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl.RelativeTimeFormat/prototype', 'Méthodes')}}

    +### Méthodes -

    Exemples

    +Les instances de `RelativeTimeFormat` héritent des méthodes suivantes grâce à leur prototype : -

    Utiliser format()

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/Intl.RelativeTimeFormat/prototype', 'Méthodes')}} -

    L'exemple suivant illustre comment créer un formateur de temps relatif en anglais :

    +## Exemples -
    // On crée un formateur en anglais en utilisant explicitement
    +### Utiliser `format()`
    +
    +L'exemple suivant illustre comment créer un formateur de temps relatif en anglais :
    +
    +```js
    +// On crée un formateur en anglais en utilisant explicitement
     // les valeurs par défaut.
     const rtf = new Intl.RelativeTimeFormat("en", {
         localeMatcher: "best fit", // autre valeur possible : "lookup"
    @@ -87,68 +78,58 @@ const rtf = new Intl.RelativeTimeFormat("en", {
     
     // On formate un temps relatif avec une valeur négative (-1).
     rtf.format(-1, "day");
    -// > "1 day ago"
    +// > "1 day ago"
     
     // On formate un temps relatif avec une valeur positive (1).
     rtf.format(1, "day");
    -// > "in 1 day"
    +// > "in 1 day" +``` -

    Utiliser l'option auto

    +### Utiliser l'option `auto` -

    Si l'option numeric:auto est passée, on aura la chaîne de caractères yesterday ou tomorrow plutôt que 1 day ago ou in 1 day. De cette façon, on peut ne pas avoir de valeur numérique dans la valeur produite.

    +Si l'option `numeric:auto` est passée, on aura la chaîne de caractères `yesterday` ou `tomorrow` plutôt que `1 day ago` ou `in 1 day`. De cette façon, on peut ne pas avoir de valeur numérique dans la valeur produite. -
    // On crée un formateur en anglais avec l'option
    +```js
    +// On crée un formateur en anglais avec l'option
     // numeric: "auto".
     const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
     
     // On formate un temps relatif avec une valeur négative (-1).
     rtf.format(-1, "day");
    -// > "yesterday"
    +// > "yesterday"
     
     // On formate un temps relatif avec une valeur positive (1).
     rtf.format(1, "day");
    -// > "tomorrow"
    -
    +// > "tomorrow" +``` -

    Utiliser formatToParts()

    +### Utiliser `formatToParts()` -

    L'exemple suivant illustre comment créer un formateur de temps relatif qui renvoie les différents fragments pour exprimer le temps relatif internationalisé.

    +L'exemple suivant illustre comment créer un formateur de temps relatif qui renvoie les différents fragments pour exprimer le temps relatif internationalisé. -
    const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
    +```js
    +const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
     
     // On crée un temps relatif exprimé en jour.
     rtf.formatToParts(-1, "day");
    -// > [{ type: "literal", value: "yesterday"}]
    +// > [{ type: "literal", value: "yesterday"}]
     
     rtf.formatToParts(100, "day");
    -// > [{ type: "literal", value: "in " },
    +// > [{ type: "literal", value: "in " },
           { type: "integer", value: "100", unit: "day" },
           { type: "literal", value: " days" }]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - -
    SpécificationEtatCommentaires
    Proposition pour le constructeur Intl.RelativeTimeFormatProposition de niveau 3
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.RelativeTimeFormat")}}

    - -

    Voir aussi

    - - +``` + +## Spécifications + +| Spécification | Etat | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| [Proposition pour le constructeur `Intl.RelativeTimeFormat`](https://tc39.es/proposal-intl-relative-time/#sec-intl-relativetimeformat-constructor) | Proposition de niveau 3 | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.RelativeTimeFormat")}} + +## Voir aussi + +- [L'API `Intl.RelativeTimeFormat`, un billet de Mathias Bynens (en anglais)](https://developers.google.com/web/updates/2018/10/intl-relativetimeformat) diff --git a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/resolvedoptions/index.md b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/resolvedoptions/index.md index ed4d45c451..daa3fcb143 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/resolvedoptions/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/resolvedoptions/index.md @@ -15,84 +15,67 @@ translation_of: >- original_slug: >- Web/JavaScript/Reference/Objets_globaux/Intl/RelativeTimeFormat/resolvedOptions --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.RelativeTimeFormat.prototype.resolvedOptions() renvoie un nouvel objet dont les propriétés reflètent les options de format et de locale pour les valeurs temporelles relatives, calculées pendant l'initialisation de l'objet {{jsxref("RelativeTimeFormat")}}.

    +La méthode **`Intl.RelativeTimeFormat.prototype.resolvedOptions()`** renvoie un nouvel objet dont les propriétés reflètent les options de format et de locale pour les valeurs temporelles relatives, calculées pendant l'initialisation de l'objet {{jsxref("RelativeTimeFormat")}}. -
    {{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-resolvedoptions.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-resolvedoptions.html")}} -

    Syntaxe

    +## Syntaxe -
    relativeTimeFormat.resolvedOptions()
    + relativeTimeFormat.resolvedOptions() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet dont les propriétés reflètent les options de locale et de formatage calculées lors de l'initialisation de l'objet {{jsxref("RelativeTimeFormat")}}.

    +Un nouvel objet dont les propriétés reflètent les options de locale et de formatage calculées lors de l'initialisation de l'objet {{jsxref("RelativeTimeFormat")}}. -

    Description

    +## Description -

    L'objet renvoyé par cette méthode possèdera les propriétés suivantes :

    +L'objet renvoyé par cette méthode possèdera les propriétés suivantes : -
    -
    locale
    -
    La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans locale.
    -
    style
    -
    La longueur du message internationalisé. Les valeurs possibles sont : -
      -
    • "long" : la valeur par défaut, peu concise (par exemple in 1 month)
    • -
    • "short" : une valeur plus courte (par exemple in 1 mo.),
    • -
    • "narrow" : une valeur encore plus courte (pouvant être ambigüe selon les locales) (par exemple in 1 mo.). Les styles narrow et short peuvent être similaires voire identiques pour certaines locales.
    • -
    -
    -
    numeric
    -
    Le format du message produit. Les valeurs possibles sont : -
      -
    • "always" : la valeur par défaut (par exemple  1 day ago),
    • -
    • "auto" : cette valeur indique qu'il n'est pas nécessaire d'utiliser de valeur numérique dans le message produit (par exemple yesterday).
    • -
    -
    -
    numberingSystem
    -
    La valeur demandée pour la clé d'extension Unicode "nu" ou la valeur remplie par défaut.
    -
    +- `locale` + - : La balise de langue BCP 47 qui est réellement utilisée. Si des extensions Unicode étaient fournies avec la balise d'origine et sont supportées pour la locale utilisée, les paires de clés-valeurs seront incluses dans `locale`. +- `style` -

    Exemples

    + - : La longueur du message internationalisé. Les valeurs possibles sont : -
    var de = new Intl.RelativeTimeFormat('de-DE');
    +    - `"long"` : la valeur par défaut, peu concise (par exemple `in 1 month`)
    +    - `"short"` : une valeur plus courte (par exemple `in 1 mo.`),
    +    - `"narrow"` : une valeur encore plus courte (pouvant être ambigüe selon les locales) (par exemple `in 1 mo.`). Les styles `narrow` et `short` peuvent être similaires voire identiques pour certaines locales.
    +
    +- `numeric`
    +
    +  - : Le format du message produit. Les valeurs possibles sont :
    +
    +    - `"always"` : la valeur par défaut (par exemple  `1 day ago`),
    +    - `"auto"` : cette valeur indique qu'il n'est pas nécessaire d'utiliser de valeur numérique dans le message produit (par exemple `yesterday`).
    +
    +- `numberingSystem`
    +  - : La valeur demandée pour la clé d'extension Unicode `"nu"` ou la valeur remplie par défaut.
    +
    +## Exemples
    +
    +```js
    +var de = new Intl.RelativeTimeFormat('de-DE');
     var usedOptions = de.resolvedOptions();
     
     usedOptions.locale;          // "de-DE"
     usedOptions.style;           // "long"
     usedOptions.numeric;         // "always"
     usedOptions.numberingSystem; // "latn"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.RelativeTimeProposition de niveau 3 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Intl.RelativeTimeFormat.resolvedOptions")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------ | +| | | | +| [Proposition pour `Intl.RelativeTime`](https://tc39.github.io/proposal-intl-relative-time/#sec-intl.relativetimeformat.prototype.resolvedoptions) | Proposition de niveau 3 |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Intl.RelativeTimeFormat.resolvedOptions")}} + +## Voir aussi + +- {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/supportedlocalesof/index.md b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/supportedlocalesof/index.md index e0a6433b75..261968f2ba 100644 --- a/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/supportedlocalesof/index.md +++ b/files/fr/web/javascript/reference/global_objects/intl/relativetimeformat/supportedlocalesof/index.md @@ -13,73 +13,53 @@ translation_of: >- original_slug: >- Web/JavaScript/Reference/Objets_globaux/Intl/RelativeTimeFormat/supportedLocalesOf --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Intl.RelativeTimeFormat.supportedLocalesOf() renvoie un tableau contenant l'ensemble des locales, parmi celles fournies en argument, qui sont prises en charge pour le formatage internationalisé du temps relatif, sans avoir à utiliser la locale par défaut de l'environnement d'exécution.

    +La méthode **`Intl.RelativeTimeFormat.supportedLocalesOf()`** renvoie un tableau contenant l'ensemble des locales, parmi celles fournies en argument, qui sont prises en charge pour le formatage internationalisé du temps relatif, sans avoir à utiliser la locale par défaut de l'environnement d'exécution. -
    {{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-supportedlocalesof.html")}}
    +{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-supportedlocalesof.html")}} -

    Syntaxe

    +## Syntaxe -
    Intl.RelativeTimeFormat.supportedLocalesOf(locales[, options])
    + Intl.RelativeTimeFormat.supportedLocalesOf(locales[, options]) -

    Paramètres

    +### Paramètres -
    -
    locales
    -
    Un chaîne de caractères au format d'une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations sur le format de l'argument locales, voir la page {{jsxref("Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}.
    -
    options
    -
    -

    Paramètre optionnel, un objet pouvant avoir la propriété suivante :

    +- `locales` + - : Un chaîne de caractères au format d'une balise de langue BCP 47 ou bien un tableau de telles chaînes. Pour plus d'informations sur le format de l'argument `locales`, voir la page {{jsxref("Intl", "Intl", "#L'identification_et_le_choix_de_la_locale")}}. +- `options` -
    -
    localeMatcher
    -
    L'algorithme de correspondance entre locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". Pour plus d'informations sur ce sujet, voir la page {{jsxref("Intl", "Intl", "#Choix_de_la_locale")}}.
    -
    -
    -
    + - : Paramètre optionnel, un objet pouvant avoir la propriété suivante : -

    Valeur de retour

    + - `localeMatcher` + - : L'algorithme de correspondance entre locales à utiliser. Les valeurs possibles sont "lookup" et "best fit". Pour plus d'informations sur ce sujet, voir la page {{jsxref("Intl", "Intl", "#Choix_de_la_locale")}}. -

    Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langue qui sont prises en charge pour la mise en forme du temps relatif sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution.

    +### Valeur de retour -

    Description

    +Un tableau de chaînes de caractères qui représente un sous-ensemble des balises de langue qui sont prises en charge pour la mise en forme du temps relatif sans qu'il soit nécessaire d'utiliser la locale par défaut de l'environnement d'exécution. -

    Cette méthode renvoie un tableau qui est un sous-ensemble de locales. Les balises de langues renvoyées sont celles supportées par l'environnement pour le formatage des temps relatifs. Ces balises sont déterminées en fonction de l'algorithme de correspondances de locale et des locales utilisées. Le tableau résultant fournit les locales qui permettent de ne pas avoir à utiliser la locale par défaut.

    +## Description -

    Examples

    +Cette méthode renvoie un tableau qui est un sous-ensemble de `locales`. Les balises de langues renvoyées sont celles supportées par l'environnement pour le formatage des temps relatifs. Ces balises sont déterminées en fonction de l'algorithme de correspondances de locale et des locales utilisées. Le tableau résultant fournit les locales qui permettent de ne pas avoir à utiliser la locale par défaut. -

    Utiliser supportedLocalesOf()

    +## Examples -

    Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des temps relatifs, supportedLocalesOf renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les dates ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme "lookup". Si on utilisait "best fit", on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise.

    +### Utiliser `supportedLocalesOf()` -
    var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];var options = { localeMatcher: 'lookup' };console.log(Intl.RelativeTimeFormat.supportedLocalesOf(locales, options).join(', '));// → "id-u-co-pinyin, de-ID"
    +Si on dispose d'un environnement qui supporte les locales indonésienne et allemande mais pas balinaise pour le formatage des temps relatifs, `supportedLocalesOf` renverra les balises BCP 47 pour l'indonésien et l'allemand (bien que la collation pinyin ne soit pas pertinente pour les dates ni pour l'indonésien et qu'il soit peu probable qu'une variante indonésienne existe pour l'allemand). Pour l'exemple, on l'utilise l'algorithme `"lookup"`. Si on utilisait `"best fit"`, on pourrait considérer que l'indonésien est adéquat pour la locale balinaise (sachant que la plupart des balinais comprend l'indonésien) et donc également renvoyer la balise balinaise. -

    Spécifications

    + var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];var options = { localeMatcher: 'lookup' };console.log(Intl.RelativeTimeFormat.supportedLocalesOf(locales, options).join(', '));// → "id-u-co-pinyin, de-ID" - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    Proposition pour Intl.RelativeTimeProposition de niveau 3 
    +## Spécifications -

    Compatibilité des navigateurs

    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------ | +| [Proposition pour `Intl.RelativeTime`](https://tc39.github.io/proposal-intl-relative-time/#sec-Intl.RelativeTimeFormat.supportedLocalesOf) | Proposition de niveau 3 |   | -

    {{Compat("javascript.builtins.Intl.RelativeTimeFormat.supportedLocalesOf")}}

    +## Compatibilité des navigateurs -

    Voir aussi

    +{{Compat("javascript.builtins.Intl.RelativeTimeFormat.supportedLocalesOf")}} -
      -
    • {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}
    • -
    +## Voir aussi + +- {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} diff --git a/files/fr/web/javascript/reference/global_objects/isfinite/index.md b/files/fr/web/javascript/reference/global_objects/isfinite/index.md index a127177d6e..2bfa521574 100644 --- a/files/fr/web/javascript/reference/global_objects/isfinite/index.md +++ b/files/fr/web/javascript/reference/global_objects/isfinite/index.md @@ -8,36 +8,35 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/isFinite original_slug: Web/JavaScript/Reference/Objets_globaux/isFinite --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction globale isFinite() détermine si la valeur passée en argument est un nombre fini. Si nécessaire, le paramètre est d'abord converti en nombre.

    +La fonction globale **`isFinite()`** détermine si la valeur passée en argument est un nombre fini. Si nécessaire, le paramètre est d'abord converti en nombre. -
    {{EmbedInteractiveExample("pages/js/globalprops-isfinite.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-isfinite.html")}} -

    Syntaxe

    +## Syntaxe -
    isFinite(valeurÀTester)
    + isFinite(valeurÀTester) -

    Paramètres

    +### Paramètres -
    -
    valeurÀTester
    -
    La valeur dont on souhaite savoir si elle est finie ou non.
    -
    +- `valeurÀTester` + - : La valeur dont on souhaite savoir si elle est finie ou non. -

    Valeur de retour

    +### Valeur de retour -

    false si la valeur passée en argument vaut {{jsxref("Infinity")}} (en positif ou en négatif),{{jsxref("NaN")}} ou {{jsxref("undefined")}}, true sinon.

    +`false` si la valeur passée en argument vaut {{jsxref("Infinity")}} (en positif ou en négatif),{{jsxref("NaN")}} ou {{jsxref("undefined")}}, `true` sinon. -

    Description

    +## Description -

    isFinite() est une fonction qui n'est rattachée à aucun objet et qui est disponible au plus haut niveau.

    +`isFinite()` est une fonction qui n'est rattachée à aucun objet et qui est disponible au plus haut niveau. -

    Cette fonction peut être utilisée pour déterminer si un nombre est fini ou non. La fonction isFinite() examine le nombre passé en argument : si celui-ci vaut {{jsxref("NaN")}}, {{jsxref("Infinity")}} (pour l'infini) ou {{jsxref("Infinity","-Infinity")}} (pour l'infini négatif), cette fonction renvoie false sinon elle renvoie true.

    +Cette fonction peut être utilisée pour déterminer si un nombre est fini ou non. La fonction `isFinite()` examine le nombre passé en argument : si celui-ci vaut {{jsxref("NaN")}}, {{jsxref("Infinity")}} (pour l'infini) ou {{jsxref("Infinity","-Infinity")}} (pour l'infini négatif), cette fonction renvoie `false` sinon elle renvoie `true`. -

    Exemples

    +## Exemples -
    isFinite(Infinity);  // false
    +```js
    +isFinite(Infinity);  // false
     isFinite(NaN);       // false
     isFinite(-Infinity); // false
     
    @@ -50,49 +49,24 @@ isFinite(null);      // true, ce qui aurait été false
     
     isFinite("0");       // true ce qui aurait été false
                          // avec la méthode Number.isFinite("0")
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2')}}{{Spec2('ES3')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.isFinite")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.isFinite()")}}
    • -
    • {{jsxref("Number.NaN")}}
    • -
    • {{jsxref("Number.POSITIVE_INFINITY")}}
    • -
    • {{jsxref("Number.NEGATIVE_INFINITY")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2')}} | {{Spec2('ES3')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-isfinite-number', 'isFinite')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.isFinite")}} + +## Voir aussi + +- {{jsxref("Number.isFinite()")}} +- {{jsxref("Number.NaN")}} +- {{jsxref("Number.POSITIVE_INFINITY")}} +- {{jsxref("Number.NEGATIVE_INFINITY")}} diff --git a/files/fr/web/javascript/reference/global_objects/isnan/index.md b/files/fr/web/javascript/reference/global_objects/isnan/index.md index af6f562a83..acc31bfd71 100644 --- a/files/fr/web/javascript/reference/global_objects/isnan/index.md +++ b/files/fr/web/javascript/reference/global_objects/isnan/index.md @@ -8,63 +8,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/isNaN original_slug: Web/JavaScript/Reference/Objets_globaux/isNaN --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La fonction isNaN() permet de déterminer si une valeur est {{jsxref("NaN")}}. On notera que cette fonction utilise des règles de conversion différentes de {{jsxref("Number.isNaN()")}}, définie avec ECMAScript 2015 (ES6).

    +La fonction **`isNaN()`** permet de déterminer si une valeur est {{jsxref("NaN")}}. On notera que cette fonction utilise des règles de conversion différentes de {{jsxref("Number.isNaN()")}}, définie avec ECMAScript 2015 (ES6). -
    {{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}} -

    Syntaxe

    +## Syntaxe -
    isNaN(valeurÀTester)
    + isNaN(valeurÀTester) -

    Paramètres

    +### Paramètres -
    -
    valeurÀTester
    -
    La valeur dont on souhaite déterminer si elle est {{jsxref("NaN")}}.
    -
    +- `valeurÀTester` + - : La valeur dont on souhaite déterminer si elle est {{jsxref("NaN")}}. -

    Valeur de retour

    +### Valeur de retour -

    true si la valeur fournie vaut {{jsxref("NaN")}}, sinon, la méthode renverra false.

    +`true` si la valeur fournie vaut {{jsxref("NaN")}}, sinon, la méthode renverra `false`. -

    Description

    +## Description -

    La nécessité d'avoir isNaN()

    +### La nécessité d'avoir `isNaN()` -

    À la différence des autres valeurs JavaScript, il est impossible d'utiliser les opérateurs d'égalité faible et stricte ({{jsxref("Opérateurs/Opérateurs_de_comparaison","==","#.C3.89galit.C3.A9_simple_(.3D.3D)")}} et {{jsxref("Opérateurs/Opérateurs_de_comparaison","===","#.C3.89galit.C3.A9_stricte_(.3D.3D.3D)")}}) afin de déterminer si une valeur est ou n'est pas réellement {{jsxref("NaN")}}. En effet NaN == NaN et NaN === NaN renvoient false tous les deux. C'est pour cela qu'il est nécessaire d'avoir la fonction isNaN().

    +À la différence des autres valeurs JavaScript, il est impossible d'utiliser les opérateurs d'égalité faible et stricte ({{jsxref("Opérateurs/Opérateurs_de_comparaison","==","#.C3.89galit.C3.A9_simple_(.3D.3D)")}} et {{jsxref("Opérateurs/Opérateurs_de_comparaison","===","#.C3.89galit.C3.A9_stricte_(.3D.3D.3D)")}}) afin de déterminer si une valeur _est_ ou _n'est pas_ réellement {{jsxref("NaN")}}. En effet `NaN == NaN` et `NaN === NaN` renvoient `false` tous les deux. C'est pour cela qu'il est nécessaire d'avoir la fonction `isNaN()`. -

    Les origines de NaN

    +### Les origines de `NaN` -

    La valeur NaN est générée lorsqu'une opération arithmétique résulte en une valeur indéfinie ou non représentable. De telles valeurs ne représentent pas nécessairement des dépassements de condition. NaN peut également être le résultat d'une conversion numérique pour les valeurs qui n'ont pas de valeurs numériques correspondantes (par exemple lorsqu'on souhaite convertir la chaîne "toto" en un nombre).

    +La valeur `NaN` est générée lorsqu'une opération arithmétique résulte en une valeur indéfinie ou non représentable. De telles valeurs ne représentent pas nécessairement des dépassements de condition. `NaN` peut également être le résultat d'une conversion numérique pour les valeurs qui n'ont pas de valeurs numériques correspondantes (par exemple lorsqu'on souhaite convertir la chaîne `"toto"` en un nombre). -

    Par exemple, lorsqu'on divise zéro par zéro, on obtient NaN. En revanche, lorsqu'on divise d'autres nombres par zéro, on n'obtient pas ce résultat.

    +Par exemple, lorsqu'on divise zéro par zéro, on obtient `NaN`. En revanche, lorsqu'on divise d'autres nombres par zéro, on n'obtient pas ce résultat. -

    Comportement étrange de isNaN()

    +### Comportement étrange de `isNaN()` -

    Depuis les premières spécifications pour isNaN(), son comportement sur les arguments non-numériques a toujours été source de confusion. Lorsque l'argument passé à la fonction n'est pas du type Number, la valeur est d'abord convertie en une valeur du type Number. La valeur résultante est ensuite utilisée lors du test afin de déterminer si c'est {{jsxref("NaN")}}. Ainsi pour valeurs non numériques qui sont converties en une valeur non-NaN numérique (notamment la chaîne vide, les valeurs booléennes qui donnent zéro ou un), la fonction renverra false, ce qui pourrait être inattendu (en effet, la chaîne vide n'est pas un nombre). Ici, la confusion provient du fait que « not a number » a un sens particulier pour les valeurs numériques représentées selon IEEE-754. Cette fonction doit plutôt être vue comme la réponse à la question « est-ce que cette valeur, lorsqu'elle est convertie en une valeur numérique, correspond à la valeur IEEE-754 "Not A Number" ? ».

    +Depuis les premières spécifications pour `isNaN()`, son comportement sur les arguments non-numériques a toujours été source de confusion. Lorsque l'argument passé à la fonction n'est pas du type [Number](https://es5.github.com/#x8.5), la valeur est d'abord convertie en une valeur du type Number. La valeur résultante est ensuite utilisée lors du test afin de déterminer si c'est {{jsxref("NaN")}}. Ainsi pour valeurs non numériques qui sont converties en une valeur non-NaN numérique (notamment la chaîne vide, les valeurs booléennes qui donnent zéro ou un), la fonction renverra `false`, ce qui pourrait être inattendu (en effet, la chaîne vide _n'est pas un nombre_). Ici, la confusion provient du fait que « not a number » a un sens particulier pour les valeurs numériques représentées selon IEEE-754. Cette fonction doit plutôt être vue comme la réponse à la question « est-ce que cette valeur, lorsqu'elle est convertie en une valeur numérique, correspond à la valeur IEEE-754 "Not A Number" ? ». -

    La version ECMAScript ES2015 ajoute la méthode {{jsxref("Number.isNaN()")}}. Number.isNaN(x) permettra de tester de façon plus fiable si x vaut NaN ou non. Si on ne dispose pas de cette méthode, on peut également utiliser l'expression (x != x) afin de tester de façon plus certaine si x vaut NaN ou non (en effet le résultat de cette expression n'aura pas les faux positifs de isNaN). Sous cet angle, isNaN() peut être vu comme :

    +La version ECMAScript ES2015 ajoute la méthode {{jsxref("Number.isNaN()")}}. `Number.isNaN(x)` permettra de tester de façon plus fiable si `x` vaut `NaN` ou non. Si on ne dispose pas de cette méthode, on peut également utiliser l'expression `(x != x)` afin de tester de façon plus certaine si `x` vaut `NaN` ou non (en effet le résultat de cette expression n'aura pas les faux positifs de `isNaN`). Sous cet angle, `isNaN()` peut être vu comme : -
    var isNaN = function(valeur) {
    +```js
    +var isNaN = function(valeur) {
       return Number.isNaN(Number(valeur));
    -};
    +}; +``` -

    Ou encore, en utilisant le fait que NaN est la seule valeur différente d'elle-même :

    +Ou encore, en utilisant le fait que `NaN` est la seule valeur différente d'elle-même : -
    var isNaN = function(valeur) {
    +```js
    +var isNaN = function(valeur) {
       var n = Number(valeur);
       return n !== n;
    -};
    +}; +``` -

    NaN est « empoisonné »

    +### `NaN` est « empoisonné » -

    Cette fonction peut être utilisée afin de déterminer si la valeur courante peut faire partie d'une expression arithmétique. En effet, si un des composants d'une expression arithmétique vaut NaN, le résultat de l'expression sera NaN également (on dit alors que NaN « empoisonne » l'expression). La méthode isNaN() permet alors de vérifier, avant de construire une expression, que les valeurs utilisées n'empoisonneront pas l'expression.

    +Cette fonction peut être utilisée afin de déterminer si la valeur courante peut faire partie d'une expression arithmétique. En effet, si un des composants d'une expression arithmétique vaut `NaN`, le résultat de l'expression sera `NaN` également (on dit alors que `NaN` « empoisonne » l'expression). La méthode `isNaN()` permet alors de vérifier, avant de construire une expression, que les valeurs utilisées n'empoisonneront pas l'expression. -

    On peut par exemple construire une fonction dont on souhaite qu'elle incrémente l'argument et que la valeur qu'elle renvoie ne puisse pas être NaN. Le code de cette fonction pourrait être :

    +On peut par exemple construire une fonction dont on souhaite qu'elle incrémente l'argument et que la valeur qu'elle renvoie ne puisse pas être `NaN`. Le code de cette fonction pourrait être : -
    function incrément(x) {
    +```js
    +function incrément(x) {
       if (isNaN(x)){
         x = 0;
       }
    @@ -80,11 +83,12 @@ function incrémentCourt(x) {
     incrément("blabla");  // 1
     incrément(1);         // 2
     incrément(NaN);       // 1
    -
    +``` -

    Exemples

    +## Exemples -
    isNaN(NaN);       // true
    +```js
    +isNaN(NaN);       // true
     isNaN(undefined); // true
     isNaN({});        // true
     
    @@ -108,47 +112,22 @@ isNaN(new Date().toString());     // true
     isNaN("blabla")   // true : "blabla" est converti en un nombre
                       // Si on souhaite convertir cette valeur en nombre, cela échoue
                       // et on obtient NaN
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.isNaN")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("NaN")}}
    • -
    • {{jsxref("Number.isNaN()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-isnan-number', 'isNaN')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.isNaN")}} + +## Voir aussi + +- {{jsxref("NaN")}} +- {{jsxref("Number.isNaN()")}} diff --git a/files/fr/web/javascript/reference/global_objects/json/index.md b/files/fr/web/javascript/reference/global_objects/json/index.md index cd592c8638..ac25b46a6b 100644 --- a/files/fr/web/javascript/reference/global_objects/json/index.md +++ b/files/fr/web/javascript/reference/global_objects/json/index.md @@ -10,141 +10,112 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/JSON original_slug: Web/JavaScript/Reference/Objets_globaux/JSON --- -
    {{JSRef}}
    - -

    L’objet JSON contient des méthodes pour interpréter du JSON (JavaScript Object Notation) (voir également la page du glossaire {{glossary("JSON")}}) et convertir des valeurs en JSON. Il ne peut être appelé ou construit, et, en dehors de ses deux méthodes, n’a pas de fonctionnalité propre.

    - -

    Différences entres JavaScript et JSON

    - -

    JSON est une syntaxe pour sérialiser des objets, tableaux, nombres, chaînes de caractères, booléens et valeurs null. Elle est basée sur la syntaxe de JavaScript mais en est distincte : du code JavaScript n’est pas nécessairement du JSON, et du JSON n’est pas nécessairement du JavaScript.

    - -
      -
    • Pour les objets et les tableaux -
        -
      • Les noms de propriété doivent être des chaînes de caractères délimitées par des guillements doubles ; les trailing commas sont interdits
      • -
      -
    • -
    • Pour les nombres -
        -
      • Les zéros non significatifs sont interdits ; un point décimal doit être suivi d’au moins un chiffre (plus exactement : JSON.stringify() ignorera les zéros mais JSON.parse() déclenchera une exception SyntaxError).
      • -
      -
    • -
    • Pour le texte : tout texte JSON est une expression JavaScript (pour les moteurs qui implémentent cette proposition). -
        -
      • Pour les autres moteurs, seul un jeu limité de caractères peut être échappé ; certains caractères de contrôle sont interdits ; le séparateur de ligne Unicode (U+2028) et le séparateur de paragraphe (U+2029) sont autorisés en JSON mais pas en JavaScript dans les littéraux de chaînes de caractères.
      • -
      -
    • -
    - -

    Dans l'exemple suivant, on utilise {{jsxref("JSON.parse()")}} afin d'analyser la chaîne JSON et eval afin d'exécuter le code correspondant :

    - -
    var code = '"\u2028\u2029"';
    +{{JSRef}}
    +
    +L’objet **`JSON`** contient des méthodes pour interpréter du [JSON](https://json.org/) (JavaScript Object Notation) (voir également la page du glossaire {{glossary("JSON")}}) et convertir des valeurs en JSON. Il ne peut être appelé ou construit, et, en dehors de ses deux méthodes, n’a pas de fonctionnalité propre.
    +
    +## Différences entres JavaScript et JSON
    +
    +JSON est une syntaxe pour sérialiser des objets, tableaux, nombres, chaînes de caractères, booléens et valeurs _null_. Elle est basée sur la syntaxe de JavaScript mais en est distincte : du code JavaScript n’est pas nécessairement du JSON, et du JSON n’est pas nécessairement du JavaScript.
    +
    +- Pour les objets et les tableaux
    +
    +  - Les noms de propriété doivent être des chaînes de caractères délimitées par des guillements doubles ; les _trailing commas_ sont interdits
    +
    +- Pour les nombres
    +
    +  - Les zéros non significatifs sont interdits ; un point décimal doit être suivi d’au moins un chiffre (plus exactement : `JSON.stringify()` ignorera les zéros mais `JSON.parse()` déclenchera une exception `SyntaxError`).
    +
    +- Pour le texte : **tout texte JSON est une expression JavaScript** (pour les moteurs qui implémentent [cette proposition](https://github.com/tc39/proposal-json-superset)).
    +
    +  - Pour les autres moteurs, seul un jeu limité de caractères peut être échappé ; certains caractères de contrôle sont interdits ; le séparateur de ligne Unicode ([U+2028](https://unicode-table.com/en/2028/)) et le séparateur de paragraphe ([U+2029](https://unicode-table.com/en/2029/)) sont autorisés en JSON mais pas en JavaScript dans les littéraux de chaînes de caractères.
    +
    +Dans l'exemple suivant, on utilise {{jsxref("JSON.parse()")}} afin d'analyser la chaîne JSON et `eval` afin d'exécuter le code correspondant :
    +
    +```js
    +var code = '"\u2028\u2029"';
     JSON.parse(code); // vaut "\u2028\u2029" pour tous les moteurs
    -eval(code); // provoque une SyntaxError pour les anciens moteurs
    - -

    Syntaxe complète

    - -
    JSON = null
    -    ou true ou false
    -    ou NombreJSON
    -    ou ChaîneJSON
    -    ou ObjetJSON
    -    ou TableauJSON
    -
    -NombreJSON = - NombrePositif
    -          ou NombrePositif
    -NombrePositif = NombreDécimal
    -              ou NombreDécimal . Chiffres
    -              ou NombreDécimal . Chiffres PartiExposant
    -              ou NombreDécimal PartiExposant
    -NombreDécimal = 0
    -             ou UnÀNeuf Chiffres
    -PartiExposant = e Exposant
    -            ou E Exposant
    -Exposant = Chiffres
    -        ou + Chiffres
    -        ou - Chiffres
    -Chiffres = Chiffre
    -      ou Chiffres Chiffre
    -Chiffre = 0 à 9
    -UnÀNeuf = 1 à 9
    -
    -ChaîneJSON = ""
    -          ou " ChaîneCaractères "
    -ChaîneCaractères = ChaîneCaractère
    -                ou ChaîneCaractères ChaîneCaractère
    -ChaîneCaractère = un caractère
    -                  sauf " ou \ ou U+0000 à U+001F
    -               ou SéquenceÉchappement
    -SéquenceÉchappement = \" ou \/ ou \\ ou \b ou \f ou \n ou \r ou \t
    -              ou \u ChifreHexadécimal ChifreHexadécimal ChifreHexadécimal ChifreHexadécimal
    -ChifreHexadécimal = 0 à 9
    -        ou A à F
    -        ou a à f
    -
    -ObjetJSON = { }
    -          ou { Membres }
    -Membres = ChaîneJSON : JSON
    -       ou Membres , ChaîneJSON : JSON
    -
    -TableauJSON = [ ]
    -         ou [ ÉlémentsTableau ]
    -ÉlémentsTableau = JSON
    -             ou ÉlémentsTableau , JSON
    - -

    Des espaces blancs insignifiants peuvent être présents n’importe où sauf dans un JSONNumber (les nombres ne doivent pas contenir d’espaces blancs) ou dans un JSONString (where it is interpreted as the corresponding character in the string, or would cause an error). Les caractères tabulation (U+0009), retour chariot (U+000D), saut de ligne (U+000A), and espace (U+0020) sont les seuls caractères blancs valides.

    - -

    Méthodes

    - -
    -
    {{jsxref("JSON.parse()", "JSON.parse(texte[, revivificateur])")}}
    -
    Analysez le texte de la chaîne comme JSON, transformez éventuellement la valeur produite et ses propriétés, et renvoyez la valeur. Toute violation de la syntaxe JSON, y compris celles concernant les différences entre JavaScript et JSON, entraîne l'envoi d'un {{jsxref("SyntaxError")}}. L'option "revivificateur" permet d'interpréter ce que le remplacement a utilisé pour remplacer d'autres types de données.
    -
    {{jsxref("JSON.stringify()", "JSON.stringify(valeur[, remplacement[, expace]])")}}
    -
    Retourne une chaîne JSON correspondant à la valeur spécifiée, en incluant éventuellement seulement certaines propriétés ou en remplaçant les valeurs des propriétés d'une manière définie par l'utilisateur. Par défaut, toutes les instances de {{jsxref("undefined")}} sont remplacées par {{jsxref("null")}}, et les autres types de données natives non prises en charge sont censurés. L'option de remplacement permet de spécifier un autre comportement.
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.12', 'JSON')}}{{Spec2('ES5.1')}}Définition initiale.
    {{SpecName('ES6', '#sec-json-object', 'JSON')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-json-object', 'JSON')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.JSON")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Date.prototype.toJSON()")}}
    • -
    • Quelques outils permettant de manipuler des données en JSON - -
    • -
    +eval(code); // provoque une SyntaxError pour les anciens moteurs +``` + +## Syntaxe complète + + JSON = null + ou true ou false + ou NombreJSON + ou ChaîneJSON + ou ObjetJSON + ou TableauJSON + + NombreJSON = - NombrePositif + ou NombrePositif + NombrePositif = NombreDécimal + ou NombreDécimal . Chiffres + ou NombreDécimal . Chiffres PartiExposant + ou NombreDécimal PartiExposant + NombreDécimal = 0 + ou UnÀNeuf Chiffres + PartiExposant = e Exposant + ou E Exposant + Exposant = Chiffres + ou + Chiffres + ou - Chiffres + Chiffres = Chiffre + ou Chiffres Chiffre + Chiffre = 0 à 9 + UnÀNeuf = 1 à 9 + + ChaîneJSON = "" + ou " ChaîneCaractères " + ChaîneCaractères = ChaîneCaractère + ou ChaîneCaractères ChaîneCaractère + ChaîneCaractère = un caractère + sauf " ou \ ou U+0000 à U+001F + ou SéquenceÉchappement + SéquenceÉchappement = \" ou \/ ou \\ ou \b ou \f ou \n ou \r ou \t + ou \u ChifreHexadécimal ChifreHexadécimal ChifreHexadécimal ChifreHexadécimal + ChifreHexadécimal = 0 à 9 + ou A à F + ou a à f + + ObjetJSON = { } + ou { Membres } + Membres = ChaîneJSON : JSON + ou Membres , ChaîneJSON : JSON + + TableauJSON = [ ] + ou [ ÉlémentsTableau ] + ÉlémentsTableau = JSON + ou ÉlémentsTableau , JSON + +Des espaces blancs insignifiants peuvent être présents n’importe où sauf dans un `JSONNumber` (les nombres ne doivent pas contenir d’espaces blancs) ou dans un `JSONString` (where it is interpreted as the corresponding character in the string, or would cause an error). Les caractères tabulation ([U+0009](https://unicode-table.com/en/0009/)), retour chariot ([U+000D](https://unicode-table.com/en/000D/)), saut de ligne ([U+000A](https://unicode-table.com/en/000A/)), and espace ([U+0020](https://unicode-table.com/en/0020/)) sont les seuls caractères blancs valides. + +## Méthodes + +- {{jsxref("JSON.parse()", "JSON.parse(texte[, revivificateur])")}} + - : Analysez le `texte` de la chaîne comme JSON, transformez éventuellement la valeur produite et ses propriétés, et renvoyez la valeur. Toute violation de la syntaxe JSON, y compris celles concernant les différences entre JavaScript et JSON, entraîne l'envoi d'un {{jsxref("SyntaxError")}}. L'option "`revivificateur`" permet d'interpréter ce que le `remplacement` a utilisé pour remplacer d'autres types de données. +- {{jsxref("JSON.stringify()", "JSON.stringify(valeur[, remplacement[, expace]])")}} + - : Retourne une chaîne JSON correspondant à la valeur spécifiée, en incluant éventuellement seulement certaines propriétés ou en remplaçant les valeurs des propriétés d'une manière définie par l'utilisateur. Par défaut, toutes les instances de {{jsxref("undefined")}} sont remplacées par {{jsxref("null")}}, et les autres types de données natives non prises en charge sont censurés. L'option de `remplacement` permet de spécifier un autre comportement. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES5.1', '#sec-15.12', 'JSON')}} | {{Spec2('ES5.1')}} | Définition initiale. | +| {{SpecName('ES6', '#sec-json-object', 'JSON')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-json-object', 'JSON')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.JSON")}} + +## Voir aussi + +- {{jsxref("Date.prototype.toJSON()")}} +- Quelques outils permettant de manipuler des données en JSON + + - [JSON Compare](http://jsoncompare.org/) qui permet de comparer deux JSON + - [JSON Beautifier](http://jsonbeautifier.org/) qui permet de visualiser et d'éditer un fichier JSON + - [JSON Parser](https://jsonparser.org/) qui permet de formatter une chaîne JSON + - [JSON Formatter](https://extendsclass.com/json-validator.html) qui permet de formatter et échapper une chaîne JSON + - [JSON Validator](https://tools.learningcontainer.com/json-validator/) qui permet de valider une chaîne JSON diff --git a/files/fr/web/javascript/reference/global_objects/json/parse/index.md b/files/fr/web/javascript/reference/global_objects/json/parse/index.md index 071d0c8a92..723c68223b 100644 --- a/files/fr/web/javascript/reference/global_objects/json/parse/index.md +++ b/files/fr/web/javascript/reference/global_objects/json/parse/index.md @@ -10,38 +10,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse original_slug: Web/JavaScript/Reference/Objets_globaux/JSON/parse --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode JSON.parse() analyse une chaîne de caractères JSON et construit la valeur JavaScript ou l'objet décrit par cette chaîne. On peut éventuellement utiliser cette fonction avec un paramètre de modification permettant de traiter l'objet avant qu'il soit renvoyé.

    +La méthode **`JSON.parse()`** analyse une chaîne de caractères JSON et construit la valeur JavaScript ou l'objet décrit par cette chaîne. On peut éventuellement utiliser cette fonction avec un paramètre de modification permettant de traiter l'objet avant qu'il soit renvoyé. -
    {{EmbedInteractiveExample("pages/js/json-parse.html")}}
    +{{EmbedInteractiveExample("pages/js/json-parse.html")}} -

    Syntaxe

    +## Syntaxe -
    JSON.parse(texte[, reviver])
    + JSON.parse(texte[, reviver]) -

    Paramètres

    +### Paramètres -
    -
    texte
    -
    La chaine de caractère à analyser comme du JSON. Voir l'objet {{jsxref("JSON")}} pour une description de la syntaxe JSON.
    -
    reviver
    -
    Si l'argument est une fonction, effectue une opération de transformation sur la valeur analysée avant de la renvoyer.
    -
    +- `texte` + - : La chaine de caractère à analyser comme du JSON. Voir l'objet {{jsxref("JSON")}} pour une description de la syntaxe JSON. +- `reviver` + - : Si l'argument est une fonction, effectue une opération de transformation sur la valeur analysée avant de la renvoyer. -

    Valeur de retour

    +### Valeur de retour -

    Un objet ({{jsxref("Object")}}) correspondant au texte envoyé.

    +Un objet ({{jsxref("Object")}}) correspondant au texte envoyé. -

    Exceptions

    +### Exceptions -

    Lève une exception {{jsxref("SyntaxError")}} si la chaine de caractère à analyser ne contient pas du JSON valide.

    +Lève une exception {{jsxref("SyntaxError")}} si la chaine de caractère à analyser ne contient pas du JSON valide. -

    Exemples

    +## Exemples -

    Utiliser JSON.parse()

    +### Utiliser `JSON.parse()` -
    try {
    +```js
    +try {
       JSON.parse('{}');              // {}
       JSON.parse('true');            // true
       JSON.parse('"toto"');          // "toto"
    @@ -50,15 +49,16 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/JSON/parse
     } catch (e) {
       console.error("Parsing error:", e);
     }
    -
    +``` -

    Utiliser le paramètre reviver

    +### Utiliser le paramètre `reviver` -

    Si un reviver est spécifié, la valeur obtenue par l'analyse est transformée avant d'être renvoyée. Plus précisément, la valeur calculée, et toutes les propriétés (commençant avec les propriétés les plus imbriquées), sont passées individuellement au reviver, qui est appelé avec : l'objet contenant la propriété en cours de traitement, le nom de la propriété en chaine de caractères et la valeur de la propriété. Si la fonction reviver retourne {{jsxref("undefined")}} (ou ne retourne aucune valeur, par exemple si l'exécution s'arrête à la fin de la fonction), la propriété est supprimée de l'objet. Autrement la propriété est redéfinie avec la valeur retournée.

    +Si un _reviver_ est spécifié, la valeur obtenue par l'analyse est transformée avant d'être renvoyée. Plus précisément, la valeur calculée, et toutes les propriétés (commençant avec les propriétés les plus imbriquées), sont passées individuellement au _reviver_, qui est appelé avec : l'objet contenant la propriété en cours de traitement, le nom de la propriété en chaine de caractères et la valeur de la propriété. Si la fonction _reviver_ retourne {{jsxref("undefined")}} (ou ne retourne aucune valeur, par exemple si l'exécution s'arrête à la fin de la fonction), la propriété est supprimée de l'objet. Autrement la propriété est redéfinie avec la valeur retournée. -

    Si le reviver ne transforme que certaines valeurs et pas d'autres, assurez-vous que les valeurs inchangées soient renvoyées telles quelles. En effet, si elles ne sont pas renvoyées, elles seront supprimés sur l'objet obtenu !

    +Si le _reviver_ ne transforme que certaines valeurs et pas d'autres, assurez-vous que les valeurs inchangées soient renvoyées telles quelles. En effet, si elles ne sont pas renvoyées, elles seront supprimés sur l'objet obtenu ! -
    JSON.parse('{"p": 5}', (key, value) => {
    +```js
    +JSON.parse('{"p": 5}', (key, value) => {
       if (typeof value === 'number') {
         return value * 2;  // renvoie value * 2 pour les nombres
       }
    @@ -67,7 +67,7 @@ original_slug: Web/JavaScript/Reference/Objets_globaux/JSON/parse
     
     // { p: 10 }
     
    -JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
    +JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
         console.log(key);            // on affiche le nom de la propriété dans la console
         return value;                // et on renvoie la valeur inchangée.
     });
    @@ -78,51 +78,29 @@ JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
     // 6
     // 5
     // 3
    -// ""
    +// "" +``` -

    JSON.parse() n'accepte pas les virgules en fin de tableau

    +### `JSON.parse()` n'accepte pas les virgules en fin de tableau -
    // les deux instructions qui suivent lèveront une SyntaxError
    +```js example-bad
    +// les deux instructions qui suivent lèveront une SyntaxError
     JSON.parse('[1, 2, 3, 4, ]');
     JSON.parse('{ "toto" : 1, }');
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}{{Spec2('ES5.1')}}Définition initiale.
    - Implementée avec JavaScript 1.7.
    {{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.JSON.parse")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("JSON.stringify()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}} | {{Spec2('ES5.1')}} | Définition initiale. Implementée avec JavaScript 1.7. | +| {{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.JSON.parse")}} + +## Voir aussi + +- {{jsxref("JSON.stringify()")}} diff --git a/files/fr/web/javascript/reference/global_objects/json/stringify/index.md b/files/fr/web/javascript/reference/global_objects/json/stringify/index.md index be5bb15eac..3d5282d7a1 100644 --- a/files/fr/web/javascript/reference/global_objects/json/stringify/index.md +++ b/files/fr/web/javascript/reference/global_objects/json/stringify/index.md @@ -9,62 +9,55 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify original_slug: Web/JavaScript/Reference/Objets_globaux/JSON/stringify --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode JSON.stringify() convertit une valeur JavaScript en chaîne JSON. Optionnellement, elle peut remplacer des valeurs ou spécifier les propriétés à inclure si un tableau de propriétés a été fourni.

    +La méthode **`JSON.stringify()`** convertit une valeur JavaScript en chaîne JSON. Optionnellement, elle peut remplacer des valeurs ou spécifier les propriétés à inclure si un tableau de propriétés a été fourni. -
    {{EmbedInteractiveExample("pages/js/json-stringify.html")}}
    +{{EmbedInteractiveExample("pages/js/json-stringify.html")}} -

    Syntaxe

    +## Syntaxe -
    JSON.stringify( valeur[, remplaçant [, espace]])
    + JSON.stringify( valeur[, remplaçant [, espace]]) -

    Paramètres

    +### Paramètres -
    -
    valeur
    -
    La valeur à convertir en chaîne JSON.
    -
    remplaçant {{optional_inline}}
    -
    -

    Une fonction qui modifie le processus de transformation ou un tableau de chaînes de caractères et de nombres qui sont utilisés comme liste blanche pour sélectionner/filtrer les propriétés de l'objet à inclure dans la chaîne JSON. Si cette valeur est {{jsxref("null")}} ou n'est pas fournie, toutes les propriétés de l'objet seront inclues dans la chaîne résultante.

    -
    -
    espace {{optional_inline}}
    -
    Un objet {{jsxref("String")}} ou {{jsxref("Number")}} qui est utilisé pour insérer des blancs dans la chaîne JSON produite afin de faciliter la lisibilité.
    -
    +- `valeur` + - : La valeur à convertir en chaîne JSON. +- `remplaçant` {{optional_inline}} + - : Une fonction qui modifie le processus de transformation ou un tableau de chaînes de caractères et de nombres qui sont utilisés comme liste blanche pour sélectionner/filtrer les propriétés de l'objet à inclure dans la chaîne JSON. Si cette valeur est {{jsxref("null")}} ou n'est pas fournie, toutes les propriétés de l'objet seront inclues dans la chaîne résultante. +- `espace` {{optional_inline}} + - : Un objet {{jsxref("String")}} ou {{jsxref("Number")}} qui est utilisé pour insérer des blancs dans la chaîne JSON produite afin de faciliter la lisibilité. -
      -
    • Si cet argument est un nombre, il indiquera le nombre d'espaces à utiliser pour l'indentation (la valeur est ramenée à 10 si elle dépasse 10).
    • -
    • Si l'argument est une chaîne, les 10 premiers caractères (ou la chaîne si elle est plus courte) seront utilisés pour les blancs.
    • -
    • Si le paramètre n'est pas fourni (ou s'il est nul), aucun blanc ne sera utilisé.
    • -
    + -

    Valeur de retour

    +- Si cet argument est un nombre, il indiquera le nombre d'espaces à utiliser pour l'indentation (la valeur est ramenée à 10 si elle dépasse 10). +- Si l'argument est une chaîne, les 10 premiers caractères (ou la chaîne si elle est plus courte) seront utilisés pour les blancs. +- Si le paramètre n'est pas fourni (ou s'il est nul), aucun blanc ne sera utilisé. -

    Une chaîne de caractères JSON qui représente la valeur indiquée.

    +### Valeur de retour -

    Exceptions

    +Une chaîne de caractères JSON qui représente la valeur indiquée. -
      -
    • Cette méthode lève une exception {{jsxref("TypeError")}} (« cyclic object value ») lorsqu'elle trouve une référence circulaire.
    • -
    • Cette méthode lève une exception {{jsxref("TypeError")}} (« BigInt value can't be serialized in JSON ») lorsqu'on tente de convertir une valeur {{jsxref("BigInt")}} en une chaîne de caractères JSON.
    • -
    +### Exceptions -

    Description

    +- Cette méthode lève une exception {{jsxref("TypeError")}} (« _cyclic object value_ ») lorsqu'elle trouve une référence circulaire. +- Cette méthode lève une exception {{jsxref("TypeError")}} (« _BigInt value can't be serialized in JSON_ ») lorsqu'on tente de convertir une valeur {{jsxref("BigInt")}} en une chaîne de caractères JSON. -

    La fonction JSON.stringify() convertit un objet en JSON :

    +## Description -
      -
    • L'ordre des propriétés des objets qui ne sont pas des tableaux n'est pas garanti. Par la suite, ne pas supposer que cet ordre soit respecté.
    • -
    • Les objets {{jsxref("Boolean")}}, {{jsxref("Number")}} et {{jsxref("String")}} sont convertis en leur valeur primitive correspondante, en accord avec la sémantique traditionnelle.
    • -
    • Si {{jsxref("undefined")}}, une fonction ou un symbole est rencontré lors de la conversion , il est soit omis ( quand il se trouve dans un objet ) ou ramené à {{jsxref("null")}} ( quand il se trouve dans un tableau). JSON.stringify() peut également renvoyer undefined lorsqu'il reçoit des valeurs « brutes » qui ne sont pas objectifiées comme par exemple JSON.stringify(function(){}) ou JSON.stringify(undefined).
    • -
    • Toutes les propriétés liées aux symboles (cf. {{jsxref("Symbol")}}) seront complètement ignorées , même lorsque la fonction remplaçant est utilisée.
    • -
    • Les propriétés qui ne sont pas énumérables seront ignorées.
    • -
    • Les instances de {{jsxref("Date")}} implémentent la fonction toJSON() en renvoyant une chaîne de caractères (identique à celle renvoyée par date.toISOString()). Aussi, les dates sont traitées comme des chaînes de caractères.
    • -
    • Les nombres {{jsxref("Infinity")}} et {{jsxref("NaN")}}, ainsi que l'objet {{jsxref("null")}} sont traités comme null.
    • -
    • Pour les autres instances d'objets tels que {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}} et {{jsxref("WeakSet")}}, seules les propriétés énumérables sont sérialisées.
    • -
    +La fonction `JSON.stringify()` convertit un objet en JSON : -
    JSON.stringify({});                        // '{}'
    +- L'ordre des propriétés des objets qui ne sont pas des tableaux n'est pas garanti. Par la suite, ne pas supposer que cet ordre soit respecté.
    +- Les objets {{jsxref("Boolean")}}, {{jsxref("Number")}} et {{jsxref("String")}} sont convertis en leur valeur primitive correspondante, en accord avec la sémantique traditionnelle.
    +- Si {{jsxref("undefined")}}, une fonction ou un symbole est rencontré lors de la conversion , il est soit omis ( quand il se trouve dans un objet ) ou ramené à {{jsxref("null")}} ( quand il se trouve dans un tableau). `JSON.stringify()` peut également renvoyer `undefined` lorsqu'il reçoit des valeurs « brutes » qui ne sont pas objectifiées comme par exemple `JSON.stringify(function(){})` ou `JSON.stringify(undefined)`.
    +- Toutes les propriétés liées aux symboles (cf. {{jsxref("Symbol")}}) seront complètement ignorées , même lorsque la fonction `remplaçant` est utilisée.
    +- Les propriétés qui ne sont pas énumérables seront ignorées.
    +- Les instances de {{jsxref("Date")}} implémentent la fonction `toJSON()` en renvoyant une chaîne de caractères (identique à celle renvoyée par `date.toISOString()`). Aussi, les dates sont traitées comme des chaînes de caractères.
    +- Les nombres {{jsxref("Infinity")}} et {{jsxref("NaN")}}, ainsi que l'objet {{jsxref("null")}} sont traités comme `null`.
    +- Pour les autres instances d'objets tels que {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}} et {{jsxref("WeakSet")}}, seules les propriétés énumérables sont sérialisées.
    +
    +```js
    +JSON.stringify({});                        // '{}'
     JSON.stringify(true);                      // 'true'
     JSON.stringify("toto");                    // '"toto"'
     JSON.stringify([1, "false", false]);       // '[1,"false",false]'
    @@ -140,28 +133,27 @@ JSON.stringify(Object.create(null, { x: { value: 'x', enumerable: false }, y: {
     // Échec avec BigInt
     JSON.stringify({x: 2n});
     // TypeError: BigInt value can't be serialized in JSON
    -
    +``` -

    L'argument remplaçant

    +### L'argument `remplaçant` -

    L'argument remplaçant est une fonction ou un tableau. Si c'est une fonction, elle prend deux paramètres : une clé et la valeur qui est traitée pour être convertie en chaîne. L'objet dans lequel la clé a été trouvée sera fourni comme paramètre this pour la fonction. Cette fonction est d'abord appelée avec une chaîne vide comme clé représentant l'objet à transformer puis elle est appelée sur chaque propriété de l'objet ou du tableau à transformer en chaîne. Cette fonction renvoie la valeur à ajouter à la chaîne JSON :

    +L'argument `remplaçant` est une fonction ou un tableau. Si c'est une fonction, elle prend deux paramètres : une clé et la valeur qui est traitée pour être convertie en chaîne. L'objet dans lequel la clé a été trouvée sera fourni comme paramètre `this` pour la fonction. Cette fonction est d'abord appelée avec une chaîne vide comme clé représentant l'objet à transformer puis elle est appelée sur chaque propriété de l'objet ou du tableau à transformer en chaîne. Cette fonction renvoie la valeur à ajouter à la chaîne JSON : -
      -
    • Si la valeur renvoyée est un nombre ({{jsxref("Number")}}), la chaîne correspondante au nombre sera utilisée comme valeur à ajouter à la chaîne pour représenter la valeur de la propriété traitée.
    • -
    • Si la valeur renvoyée est une chaîne de caractères ({{jsxref("String")}}), cette chaîne sera utilisée pour représenter la valeur de la propriété dans la chaîne JSON.
    • -
    • Si la valeur renvoyée est un {{jsxref("Boolean")}}, "true" ou "false" sera utilisé pour représenter la valeur de la propriété et sera ajouté à la chaîne JSON.
    • -
    • Si la valeur renvoyée est null, null sera ajouté à la chaîne JSON.
    • -
    • Si la valeur renvoyée est un autre objet, cet objet sera, de façon récursive, transformé en une chaîne JSON en appelant la fonction remplaçant sur chaque propriété sauf si l'objet est une fonction auquel cas, rien n'est ajouté à la chaîne JSON.
    • -
    • Si la valeur renvoyée est {{jsxref("undefined")}}, la propriété ne sera pas incluse dans la chaîne JSON.
    • -
    +- Si la valeur renvoyée est un nombre ({{jsxref("Number")}}), la chaîne correspondante au nombre sera utilisée comme valeur à ajouter à la chaîne pour représenter la valeur de la propriété traitée. +- Si la valeur renvoyée est une chaîne de caractères ({{jsxref("String")}}), cette chaîne sera utilisée pour représenter la valeur de la propriété dans la chaîne JSON. +- Si la valeur renvoyée est un {{jsxref("Boolean")}}, "true" ou "false" sera utilisé pour représenter la valeur de la propriété et sera ajouté à la chaîne JSON. +- Si la valeur renvoyée est `null`, `null` sera ajouté à la chaîne JSON. +- Si la valeur renvoyée est un autre objet, cet objet sera, de façon récursive, transformé en une chaîne JSON en appelant la fonction `remplaçant` sur chaque propriété sauf si l'objet est une fonction auquel cas, rien n'est ajouté à la chaîne JSON. +- Si la valeur renvoyée est {{jsxref("undefined")}}, la propriété ne sera pas incluse dans la chaîne JSON. -

    Note : la fonction remplaçant ne peut pas être utilisée pour retirer des valeurs d'un tableau. Si on renvoie undefined ou une fonction, ce sera la valeur null qui sera utilisée.

    +> **Note :** la fonction `remplaçant` ne peut pas être utilisée pour retirer des valeurs d'un tableau. Si on renvoie `undefined` ou une fonction, ce sera la valeur `null` qui sera utilisée. -

    Note : Si on souhaite que la fonction remplaçant distingue un objet dont une propriété a un clé qui est « réellement » une chaîne vide, il faudra avoir un compteur pour le nombre d'itération. Si le compteur indique que la première itération est passée, alors il s'agit bien d'un clé avec une chaîne vide.

    +> **Note :** Si on souhaite que la fonction `remplaçant` distingue un objet dont une propriété a un clé qui est « réellement » une chaîne vide, il faudra avoir un compteur pour le nombre d'itération. Si le compteur indique que la première itération est passée, alors il s'agit bien d'un clé avec une chaîne vide. -

    Exemple avec une fonction

    +#### Exemple avec une fonction -
    function remplaçant(clé, valeur) {
    +```js
    +function remplaçant(clé, valeur) {
       if (typeof valeur === "string") {
         return undefined;
       }
    @@ -170,54 +162,54 @@ JSON.stringify({x: 2n});
     
     var toto = {fondation: "Mozilla", modèle: "boîte", semaine: 45, transport: "bus", mois: 7};
     console.log(JSON.stringify(toto, remplaçant)); // {"semaine":45, "mois":7}
    -
    +``` -

    Exemple avec un tableau

    +#### Exemple avec un tableau -

    Si remplaçant est un tableau, les valeurs du tableau indiquent les propriétés de l'objet à inclure dans la chaîne JSON.

    +Si `remplaçant` est un tableau, les valeurs du tableau indiquent les propriétés de l'objet à inclure dans la chaîne JSON. -
    JSON.stringify(toto, ['semaine', 'mois']);
    +```js
    +JSON.stringify(toto, ['semaine', 'mois']);
     // '{"semaine":45,"mois":7}', on ne garde que "semaines" et "mois"
    -
    +``` -

    L'argument espace

    +### L'argument `espace` -

    L'argument espace est utilisé pour contrôler les espacements utilisés dans la chaîne finale.

    +L'argument `espace` est utilisé pour contrôler les espacements utilisés dans la chaîne finale. -
      -
    • Si c'est un nombre, les différents niveaux d'indentation auront autant d'espaces qu'indiqué grâce à ce paramètre (jusqu'à 10).
    • -
    • Si c'est une chaîne, les dix premiers caractères (ou la chaîne complète si elle est plus courte)
    • -
    +- Si c'est un nombre, les différents niveaux d'indentation auront autant d'espaces qu'indiqué grâce à ce paramètre (jusqu'à 10). +- Si c'est une chaîne, les dix premiers caractères (ou la chaîne complète si elle est plus courte) -
    JSON.stringify({ a: 2 }, null, ' ');
    +```js
    +JSON.stringify({ a: 2 }, null, ' ');
     // '{
     //  "a": 2
     // }'
    -
    +``` -

    Dans l'exemple suivant on utilise la tabulation pour rendre lisible le résultat :

    +Dans l'exemple suivant on utilise la tabulation pour rendre lisible le résultat : -
    JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
    +```js
    +JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
     // renverra
     // '{
     //     "uno": 1,
     //     "dos": 2
     // }'
    -
    +``` -

    La fonction toJSON()

    +### La fonction `toJSON()` -

    Pour personnaliser la valeur d'un objet lors de sa conversion en JSON, on peut surcharger la méthode toJSON() : la valeur retournée par cette méthode toJSON() sera alors utilisée. JSON.stringify() invoquera la méthode toJSON() de l'objet avec un paramètre :

    +Pour personnaliser la valeur d'un objet lors de sa conversion en JSON, on peut surcharger la méthode `toJSON()` : la valeur retournée par cette méthode `toJSON()` sera alors utilisée. `JSON.stringify()` invoquera la méthode `toJSON()` de l'objet avec un paramètre : -
      -
    • Si cet objet est une propriété de donnée, ce sera le nom de la propriété
    • -
    • Si cet objet est un tableau, ce sera l'indice de l'élément du tableau sous la forme d'une chaîne de caractères
    • -
    • Une chaîne vide si JSON.stringify() était directement appelé sur l'objet.
    • -
    +- Si cet objet est une propriété de donnée, ce sera le nom de la propriété +- Si cet objet est un tableau, ce sera l'indice de l'élément du tableau sous la forme d'une chaîne de caractères +- Une chaîne vide si `JSON.stringify()` était directement appelé sur l'objet. -

    Ainsi :

    +Ainsi : -
    var obj = {
    +```js
    +var obj = {
       data: 'data',
       toJSON(clef){
         if(clef) {
    @@ -236,28 +228,30 @@ JSON.stringify({ obj })
     
     JSON.stringify([ obj ])
     // '["Un objet imbriqué sous la clef '0'"]'
    -
    +``` -

    Le problème des références circulaires

    +### Le problème des références circulaires -

    Le format JSON ne prend pas en charge les références (bien qu'un brouillon IETF existe) et une exception {{jsxref("TypeError")}} sera levée si on tente d'encoder un objet possédant des références circulaires.

    +[Le format JSON](https://www.json.org/) ne prend pas en charge les références (bien [qu'un brouillon IETF existe](http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03)) et une exception {{jsxref("TypeError")}} sera levée si on tente d'encoder un objet possédant des références circulaires. -
    const circularReference = {};
    +```js example-bad
    +const circularReference = {};
     circularReference.myself = circularReference;
     
     // Sérialiser un objet avec des références circulaires déclenche une "TypeError: cyclic object value"
     JSON.stringify(circularReference);
    -
    +``` -

    Pour sérialiser les références circulaires, on peut utiliser une bibliothèque (cycle.js par exemple) ou implémenter sa propre solution (qui consistera à trouver et à remplacer le cycle par des valeurs sérialisables).

    +Pour sérialiser les références circulaires, on peut utiliser une bibliothèque ([cycle.js](https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) par exemple) ou implémenter sa propre solution (qui consistera à trouver et à remplacer le cycle par des valeurs sérialisables). -

    Gestion des terminateurs de ligne

    +### Gestion des terminateurs de ligne -

    Par le passé, JSON n'était pas un sous-ensemble strict de JavaScript. En effet, en JSON, deux terminateurs de ligne (le caractère de séparation de ligne U+2028 LINE SEPARATOR et le caractère de séparation de paragraphe U+2029 PARAGRAPH SEPARATOR) n'avaient pas besoin d'être échappés dans des données JSON alors qu'ils devaient l'être en JavaScript. Cela a désormais évolué et les deux points de code peuvent apparaître tant en JSON qu'en JavaScript.

    +Par le passé, JSON n'était pas un sous-ensemble strict de JavaScript. En effet, en JSON, deux terminateurs de ligne (le caractère de séparation de ligne U+2028 LINE SEPARATOR et le caractère de séparation de paragraphe U+2029 PARAGRAPH SEPARATOR) n'avaient pas besoin d'être échappés dans des données JSON alors qu'ils devaient l'être en JavaScript. Cela a désormais évolué et les deux points de code peuvent apparaître tant en JSON qu'en JavaScript. -

    Ainsi, si on souhaite avoir une compatibilité avec les anciens moteurs JavaScript, on pourra évaluer ou utiliser les données JSON avec JSONP et la fonction utilitaire suivante :

    +Ainsi, si on souhaite avoir une compatibilité avec les anciens moteurs JavaScript, on pourra évaluer ou utiliser les données JSON avec [JSONP](https://fr.wikipedia.org/wiki/JSONP) et la fonction utilitaire suivante : -
    function jsFriendlyJSONStringify (s) {
    +```js
    +function jsFriendlyJSONStringify (s) {
         return JSON.stringify(s).
             replace(/\u2028/g, '\\u2028').
             replace(/\u2029/g, '\\u2029');
    @@ -270,28 +264,27 @@ var s = {
     
     // dans Firefox, console.log enlève les échappements
     // des caractères Unicode, on utilise donc alert :(
    -alert(jsFriendlyJSONStringify(s)); // {"a":"\u2028","b":"\u2029"}
    +alert(jsFriendlyJSONStringify(s)); // {"a":"\u2028","b":"\u2029"} +``` -
    -

    Note : Les propriétés des objets qui ne sont pas des tableaux ne sont pas transformées en chaînes de caractères selon un ordre particulier. Aussi, l'ordre des données en JSON ne saurait constituer une information utile.

    -
    +> **Note :** Les propriétés des objets qui ne sont pas des tableaux ne sont pas transformées en chaînes de caractères selon un ordre particulier. Aussi, l'ordre des données en JSON ne saurait constituer une information utile. -
    var a = JSON.stringify({toto: "truc", bidule: "machin"});
    +```js
    +var a = JSON.stringify({toto: "truc", bidule: "machin"});
     // '{"toto":"truc","bidule":"machin"}'
     var b = JSON.stringify({bidule: "machin", toto: "truc"});
     // '{"bidule":"machin","toto":"truc"}'
     console.log(a !== b); // true
    -
    +``` -

    Utiliser JSON.stringify avec localStorage

    +### Utiliser `JSON.stringify` avec localStorage -

    Dans le cas où on souhaite enregistrer un objet créé par l'utilisateur afin de le restorer plus tard (y compris après que le navigateur ait été fermé), on peut utiliser JSON.stringify.

    +Dans le cas où on souhaite enregistrer un objet créé par l'utilisateur afin de le restorer plus tard (y compris après que le navigateur ait été fermé), on peut utiliser `JSON.stringify`. -
    -

    Attention : Les fonctions n'ont pas de correspondances en JSON, il ne sera donc pas possible de les enregistrer de cette façon. En revanche, elles peuvent être affichées si elles ont été converties en texte avec la fonction de remplacement. De même, certains objets comme les dates seront transformées en chaîne de caractères après l'utilisation de JSON.parse().

    -
    +> **Attention :** Les fonctions n'ont pas de correspondances en JSON, il ne sera donc pas possible de les enregistrer de cette façon. En revanche, elles peuvent être affichées si elles ont été converties en texte avec la fonction de remplacement. De même, certains objets comme les dates seront transformées en chaîne de caractères après l'utilisation de JSON.parse(). -
    // On crée un objet pour l'exemple
    +```js
    +// On crée un objet pour l'exemple
     var session = {
         'screens' : [],
         'state' : true
    @@ -314,54 +307,37 @@ var sessionRestaurée = JSON.parse(localStorage.getItem('session'));
     // La variable sessionRestaurée contient désormais l'objet précédent
     // qui avait été sauvegardé dans localStorage
     console.log(sessionRestaurée);
    -
    +``` -

    Chaînes bien formées et JSON.stringify()

    +### Chaînes bien formées et `JSON.stringify()` -

    Les moteurs, qui implémentent la spécification sur JSON.stringify() bien formé, transformeront en chaîne de caractères les éléments isolés de paires surrogates via des séquences d'échappement Unicode plutôt que d'utiliser leurs valeurs littérales. Avant cette modification de spécification, JSON.stringify() n'aurait pas encodé les éléments surrogates isolés et les chaînes produites n'étaient pas valides selon UTF-8 ou UTF-16 :

    +Les moteurs, qui implémentent la spécification sur JSON.stringify() bien formé, transformeront en chaîne de caractères les éléments isolés de paires _surrogates_ via des séquences d'échappement Unicode plutôt que d'utiliser leurs valeurs littérales. Avant cette modification de spécification, `JSON.stringify()` n'aurait pas encodé les éléments _surrogates_ isolés et les chaînes produites n'étaient pas valides selon UTF-8 ou UTF-16 : -
    JSON.stringify("\uD800"); // '"�"'
    +```js +JSON.stringify("\uD800"); // '"�"' +``` -

    Avec cette modification, les séquences d'échappement produites permettent d'avoir un contenu UTF-16 ou UTF-8 lisible :

    +Avec cette modification, les séquences d'échappement produites permettent d'avoir un contenu UTF-16 ou UTF-8 lisible : -
    JSON.stringify("\uD800"); // '"\\ud800"'
    +```js +JSON.stringify("\uD800"); // '"\\ud800"' +``` -

    Cette modification est rétrocompatible pour toutes les opérations où le résultat de JSON.stringify() est passé à des API comme JSON.parse() qui acceptent du texte JSON valide. En effet, ces API traiteront les séquences d'échappement de surrogates isolés comme les caractères correspondants. Seul le cas où le code interprète directement le résultat de JSON.stringify() doit être adapté afin de gérer les deux encodages possibles pour ces cas.

    +Cette modification est rétrocompatible pour toutes les opérations où le résultat de `JSON.stringify()` est passé à des API comme `JSON.parse()` qui acceptent du texte JSON valide. En effet, ces API traiteront les séquences d'échappement de _surrogates_ isolés comme les caractères correspondants. Seul le cas où le code interprète directement le résultat de `JSON.stringify()` doit être adapté afin de gérer les deux encodages possibles pour ces cas. -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.7.
    {{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ESDraft')}}
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.7. | +| {{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-json.stringify', 'JSON.stringify')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.JSON.stringify")}}

    +{{Compat("javascript.builtins.JSON.stringify")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("JSON.parse()")}}
    • -
    • cycle.js qui ajoute deux fonctions JSON.decycle et JSON.retrocycle qui permettent d'encoder et de décoder des structures cycliques.
    • -
    +- {{jsxref("JSON.parse()")}} +- [cycle.js](https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) qui ajoute deux fonctions `JSON.decycle` et `JSON.retrocycle` qui permettent d'encoder et de décoder des structures cycliques. diff --git a/files/fr/web/javascript/reference/global_objects/map/@@iterator/index.md b/files/fr/web/javascript/reference/global_objects/map/@@iterator/index.md index 72bc8d1d13..a971dab13c 100644 --- a/files/fr/web/javascript/reference/global_objects/map/@@iterator/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/@@iterator/index.md @@ -12,25 +12,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@iterator original_slug: Web/JavaScript/Reference/Global_Objects/Map/@@iterator --- -
    {{JSRef}}
    +{{JSRef}} -

    La valeur initiale de la propriété @@iterator est la même fonction que la valeur initiale de la propriété {{jsxref("Map.prototype.entries()", "entries")}}.

    +La valeur initiale de la propriété **`@@iterator`** est la même fonction que la valeur initiale de la propriété {{jsxref("Map.prototype.entries()", "entries")}}. -
    {{EmbedInteractiveExample("pages/js/map-prototype-@@iterator.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-@@iterator.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap[Symbol.iterator]
    + maMap[Symbol.iterator] -

    Valeur de retour

    +### Valeur de retour -

    La fonction d'itération (le symbole @@iterator) de l'objet, par défaut, c'est la fonction {{jsxref("Map.prototype.entries()","entries()")}}.

    +La fonction d'itération (le symbole `@@iterator`) de l'objet, par défaut, c'est la fonction {{jsxref("Map.prototype.entries()","entries()")}}. -

    Exemples

    +## Exemples -

    Utiliser [@@iterator]()

    +### Utiliser `[@@iterator]()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("0", "toto");
     maMap.set(1, "truc");
     maMap.set({}, "bidule");
    @@ -40,11 +41,12 @@ var mapIter = myMap[Symbol.iterator]();
     console.log(mapIter.next().value); // ["0", "toto"]
     console.log(mapIter.next().value); // [1, "truc"]
     console.log(mapIter.next().value); // [Object, "bidule"]
    -
    +``` -

    Utiliser [@@iterator]() avec for..of

    +### Utiliser `[@@iterator]()` avec `for..of` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("0", "toto");
     maMap.set(1, "truc");
     maMap.set({}, "bidule");
    @@ -52,38 +54,21 @@ maMap.set({}, "bidule");
     for (var v of maMap) {
       console.log(v);
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype-@@iterator', 'Map.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Définition initiale
    {{SpecName('ESDraft', '#sec-map.prototype-@@iterator', 'Map.prototype[@@iterator]()')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.@@iterator")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map.prototype.entries()")}}
    • -
    • {{jsxref("Map.prototype.keys()")}}
    • -
    • {{jsxref("Map.prototype.values()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-map.prototype-@@iterator', 'Map.prototype[@@iterator]()')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-map.prototype-@@iterator', 'Map.prototype[@@iterator]()')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.@@iterator")}} + +## Voir aussi + +- {{jsxref("Map.prototype.entries()")}} +- {{jsxref("Map.prototype.keys()")}} +- {{jsxref("Map.prototype.values()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/@@species/index.md b/files/fr/web/javascript/reference/global_objects/map/@@species/index.md index dddc3795f8..69c46bb86c 100644 --- a/files/fr/web/javascript/reference/global_objects/map/@@species/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/@@species/index.md @@ -10,62 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@species original_slug: Web/JavaScript/Reference/Global_Objects/Map/@@species --- -
    {{JSRef}}
    +{{JSRef}} -

    Map[@@species] renvoie le constructeur Map.

    +**`Map[@@species]`** renvoie le constructeur `Map`. -

    Syntaxe

    +## Syntaxe -
    Map[Symbol.species]
    -
    + Map[Symbol.species] -

    Description

    +## Description -

    L'accesseur species renvoie le constructeur par défaut pour les objets Map. Les constructeurs des sous-classes peuvent surcharger ce constructeur afin de modifier ce qui est fait lors de la construction de l'objet et son affectation

    +L'accesseur `species` renvoie le constructeur par défaut pour les objets `Map`. Les constructeurs des sous-classes peuvent surcharger ce constructeur afin de modifier ce qui est fait lors de la construction de l'objet et son affectation -

    Exemples

    +## Exemples -

    La propriété species renvoie la fonction correspondant au constructeur par défaut. Pour les objets Map, ce sera le constructeur Map :

    +La propriété `species` renvoie la fonction correspondant au constructeur par défaut. Pour les objets `Map`, ce sera le constructeur `Map` : -
    Map[Symbol.species]; // function Map()
    +```js +Map[Symbol.species]; // function Map() +``` -

    Pour des objets dérivés (par exemple un dictionnaire MaMap que vous auriez construit), la propriété species correspondra au constructeur MaMap. Si vous souhaitez surcharger cela pour renvoyer le constructeur parent Map, vous pourrez utiliser :

    +Pour des objets dérivés (par exemple un dictionnaire `MaMap` que vous auriez construit), la propriété `species` correspondra au constructeur `MaMap`. Si vous souhaitez surcharger cela pour renvoyer le constructeur parent `Map`, vous pourrez utiliser : -
    class MaMap extends Map {
    +```js
    +class MaMap extends Map {
       // On surcharge le symbole species de MaMap
       // avec le constructeur Map parent
       static get [Symbol.species]() { return Map; }
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES2015', '#sec-get-map-@@species', 'get Map [ @@species ]')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-map-@@species', 'get Map [ @@species ]')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.@@species")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    • {{jsxref("Symbol.species")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-get-map-@@species', 'get Map [ @@species ]')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-map-@@species', 'get Map [ @@species ]')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.@@species")}} + +## Voir aussi + +- {{jsxref("Map")}} +- {{jsxref("Symbol.species")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/@@tostringtag/index.md b/files/fr/web/javascript/reference/global_objects/map/@@tostringtag/index.md index 251a4c46eb..0618585f04 100644 --- a/files/fr/web/javascript/reference/global_objects/map/@@tostringtag/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/@@tostringtag/index.md @@ -11,44 +11,29 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag original_slug: Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Map[@@toStringTag] vaut "Map" initialement.

    +La propriété **`Map[@@toStringTag]`** vaut "Map" initialement. -
    {{EmbedInteractiveExample("pages/js/map-prototype-@@tostringtag.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-@@tostringtag.html")}}{{js_property_attributes(0,0,1)}} -
    {{js_property_attributes(0,0,1)}}
    +## Syntaxe -

    Syntaxe

    + Map[Symbol.toStringTag] -
    Map[Symbol.toStringTag]
    +## Exemple -

    Exemple

    +```js +Object.prototype.toString.call(new Map()) // "[object Map]" +``` -
    Object.prototype.toString.call(new Map()) // "[object Map]"
    +## Spécifications -

    Spécifications

    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype-@@tostringtag', 'Map.prototype[@@toStringTag]')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype-@@tostringtag', 'Map.prototype[@@toStringTag]')}} | {{Spec2('ESDraft')}} |   | - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype-@@tostringtag', 'Map.prototype[@@toStringTag]')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype-@@tostringtag', 'Map.prototype[@@toStringTag]')}}{{Spec2('ESDraft')}} 
    +## Compatibilité des navigateurs -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.@@toStringTag")}}

    +{{Compat("javascript.builtins.Map.@@toStringTag")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/clear/index.md b/files/fr/web/javascript/reference/global_objects/map/clear/index.md index 5c0dbc8661..7eb0c53805 100644 --- a/files/fr/web/javascript/reference/global_objects/map/clear/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/clear/index.md @@ -11,25 +11,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear original_slug: Web/JavaScript/Reference/Global_Objects/Map/clear --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode clear() supprime tous les éléments d'un objet Map.

    +La méthode **`clear()`** supprime tous les éléments d'un objet `Map`. -
    {{EmbedInteractiveExample("pages/js/map-prototype-clear.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-clear.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.clear();
    + maMap.clear(); -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}.

    +{{jsxref("undefined")}}. -

    Exemple

    +## Exemple -

    Utiliser la méthode clear()

    +### Utiliser la méthode `clear()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("truc", "bidule");
     maMap.set(1, "toto");
     
    @@ -40,36 +41,19 @@ maMap.clear();
     
     maMap.size;        // 0
     maMap.has("truc")  // false
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.clear")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.clear', 'Map.prototype.clear')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.clear")}} + +## Voir aussi + +- {{jsxref("Map")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/delete/index.md b/files/fr/web/javascript/reference/global_objects/map/delete/index.md index 3705d6bacc..0e8aa9ecf5 100644 --- a/files/fr/web/javascript/reference/global_objects/map/delete/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/delete/index.md @@ -11,64 +11,46 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete original_slug: Web/JavaScript/Reference/Global_Objects/Map/delete --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode delete() permet de retirer un élément donné d'un objet Map grâce à sa clé.

    +La méthode **`delete()`** permet de retirer un élément donné d'un objet `Map` grâce à sa clé. -
    {{EmbedInteractiveExample("pages/js/map-prototype-delete.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-delete.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.delete(clé);
    + maMap.delete(clé); -

    Paramètres

    +### Paramètres -
    -
    clé
    -
    Ce paramètre obligatoire correspond à la clé de l'élément qu'on souhaite retirer de l'objet Map.
    -
    +- `clé` + - : Ce paramètre obligatoire correspond à la clé de l'élément qu'on souhaite retirer de l'objet `Map`. -

    Valeur de retour

    +### Valeur de retour -

    Un booléen. La méthode renvoie true si un élément de l'objet Map a bien été retiré ou false si l'élément n'existe pas.

    +Un booléen. La méthode renvoie `true` si un élément de l'objet `Map` a bien été retiré ou `false` si l'élément n'existe pas. -

    Exemples

    +## Exemples -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("truc", "toto");
     
     maMap.delete("truc"); // Renvoie true. La suppression est OK.
     maMap.has("truc");    // Renvoie false. "truc" n'est plus présent.
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.delete")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.delete")}} + +## Voir aussi + +- {{jsxref("Map")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/entries/index.md b/files/fr/web/javascript/reference/global_objects/map/entries/index.md index 3deaed0bd3..a03e8f96c4 100644 --- a/files/fr/web/javascript/reference/global_objects/map/entries/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/entries/index.md @@ -12,25 +12,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries original_slug: Web/JavaScript/Reference/Global_Objects/Map/entries --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode entries() renvoie un objet Iterator qui contient les paires [clé, valeur] pour chaque élément de l'objet Map, dans leur ordre d'insertion.

    +La méthode **`entries()`** renvoie un objet [`Iterator`](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs#Itérateurs) qui contient les paires `[clé, valeur]` pour chaque élément de l'objet `Map`, dans leur ordre d'insertion. -
    {{EmbedInteractiveExample("pages/js/map-prototype-entries.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-entries.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.entries()
    + maMap.entries() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet Iterator {{jsxref("Map")}}.

    +Un nouvel objet `Iterator` {{jsxref("Map")}}. -

    Exemple

    +## Exemple -

    Utiliser entries()

    +### Utiliser `entries()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("0", "toto");
     maMap.set(1, "truc");
     maMap.set({}, "bidule");
    @@ -40,39 +41,20 @@ var mapIter = maMap.entries();
     console.log(mapIter.next().value); // ["0", "toto"]
     console.log(mapIter.next().value); // [1, "truc"]
     console.log(mapIter.next().value); // [Object, "bidule"]
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ES2015')}}Défintion initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.entries")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map.prototype.keys()")}}
    • -
    • {{jsxref("Map.prototype.values()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.entries', 'Map.prototype.entries')}} | {{Spec2('ES2015')}} | Défintion initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.entries")}} + +## Voir aussi + +- {{jsxref("Map.prototype.keys()")}} +- {{jsxref("Map.prototype.values()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/foreach/index.md b/files/fr/web/javascript/reference/global_objects/map/foreach/index.md index 4d2fbfdd70..da31bd273a 100644 --- a/files/fr/web/javascript/reference/global_objects/map/foreach/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/foreach/index.md @@ -11,52 +11,49 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach original_slug: Web/JavaScript/Reference/Global_Objects/Map/forEach --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode forEach() exécute une fonction donnée sur chaque élément clé-valeur de l'objet Map dans l'ordre d'insertion.

    +La méthode **`forEach()`** exécute une fonction donnée sur chaque élément clé-valeur de l'objet `Map` dans l'ordre d'insertion. -
    {{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.forEach(callback[, thisArg])
    + maMap.forEach(callback[, thisArg]) -

    Paramètres

    +### Paramètres -
    -
    callback
    -
    La fonction à exécuter pour chaque élément.
    -
    thisArg
    -
    La valeur à utiliser comme contexte this lors de l'exécution de callback.
    -
    +- `callback` + - : La fonction à exécuter pour chaque élément. +- `thisArg` + - : La valeur à utiliser comme contexte `this` lors de l'exécution de `callback`. -

    Valeur de retour

    +### Valeur de retour -

    {{jsxref("undefined")}}

    +{{jsxref("undefined")}} -

    Description

    +## Description -

    La méthode forEach exécute la fonction callback donnée sur chacune des clés qui existe. Elle n'est pas appelée pour les clés qui ont été supprimées. En revanche, elle est appelée pour les valeurs qui sont présentes mais qui sont égales à undefined.

    +La méthode `forEach` exécute la fonction `callback` donnée sur chacune des clés qui existe. Elle n'est pas appelée pour les clés qui ont été supprimées. En revanche, elle est appelée pour les valeurs qui sont présentes mais qui sont égales à `undefined`. -

    callback est appelé avec trois arguments :

    +`callback` est appelé avec **trois arguments** : -
      -
    • la valeur de l'élément
    • -
    • la clé de l'élément
    • -
    • l'objet Map parcouru
    • -
    +- la **valeur de l'élément** +- la **clé de l'élément** +- l'objet **`Map` parcouru** -

    Si un argument thisArg est fourni à la méthode forEach, il sera passé au callback quand il sera appelé et celui-ci l'utilisera comme valeur this. Dans les autres cas, la valeur undefined sera utilisée comme contexte this. La valeur this observée par la fonction callback est déterminée selon les règles appliquées à l'opérateur this.

    +Si un argument `thisArg` est fourni à la méthode `forEach`, il sera passé au `callback` quand il sera appelé et celui-ci l'utilisera comme valeur `this`. Dans les autres cas, la valeur `undefined` sera utilisée comme contexte `this`. La valeur `this` observée par la fonction `callback` est déterminée selon [les règles appliquées à l'opérateur `this`](/fr/docs/JavaScript/Reference/Opérateurs/Opérateurs_spéciaux/L'opérateur_this). -

    Chacune des valeurs sera traitée une fois sauf si celle-ci a été supprimée puis réajoutée avant la fin de forEach. callback n'est pas appelé pour les valeurs qui sont supprimés avant le passage de la fonction. Les valeurs qui sont ajoutées avant que forEach ait parcouru l'ensemble seront traitées.

    +Chacune des valeurs sera traitée une fois sauf si celle-ci a été supprimée puis réajoutée avant la fin de `forEach`. `callback` n'est pas appelé pour les valeurs qui sont supprimés avant le passage de la fonction. Les valeurs qui sont ajoutées avant que `forEach` ait parcouru l'ensemble seront traitées. -

    forEach exécute la fonction callback une fois pour chaque élément de l'objet Map : il ne renvoie pas de valeur.

    +`forEach` exécute la fonction `callback` une fois pour chaque élément de l'objet `Map` : il ne renvoie pas de valeur. -

    Exemples

    +## Exemples -

    Le fragment de code suivant enregistre une ligne pour chaque élément d'un objet Map :

    +Le fragment de code suivant enregistre une ligne pour chaque élément d'un objet` Map `: -
    function logMapElements(valeur, clé, map) {
    +```js
    +function logMapElements(valeur, clé, map) {
         console.log(`map.get('${clé}') = ${value}`);
     }
     
    @@ -66,37 +63,20 @@ new Map([["toto", 3], ["truc", {}], ["bidule", undefined]]).forEach(logMapElemen
     // "map.get('toto') = 3"
     // "map.get('truc') = [object Object]"
     // "map.get('bidule') = undefined"
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.forEach")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Array.prototype.forEach()")}}
    • -
    • {{jsxref("Set.prototype.forEach()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.forEach")}} + +## Voir aussi + +- {{jsxref("Array.prototype.forEach()")}} +- {{jsxref("Set.prototype.forEach()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/get/index.md b/files/fr/web/javascript/reference/global_objects/map/get/index.md index bf2e8cba01..5dbc57ae3a 100644 --- a/files/fr/web/javascript/reference/global_objects/map/get/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/get/index.md @@ -11,66 +11,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/get original_slug: Web/JavaScript/Reference/Global_Objects/Map/get --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode get() renvoie un élément précisé d'un objet Map. Si la valeur associée à la clé fournie est un objet, alors on obtient une référence à cet objet et tous changements apporté à cet objet sera aussi visible à l'intérieur de l'objet Map.

    +La méthode **`get()`** renvoie un élément précisé d'un objet `Map`. Si la valeur associée à la clé fournie est un objet, alors on obtient une référence à cet objet et tous changements apporté à cet objet sera aussi visible à l'intérieur de l'objet `Map`. -
    {{EmbedInteractiveExample("pages/js/map-prototype-get.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-get.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.get(clé)
    + maMap.get(clé) -

    Paramètres

    +### Paramètres -
    -
    clé
    -
    La clé de l'élément à renvoyer depuis l'objet Map.
    -
    +- `clé` + - : La clé de l'élément à renvoyer depuis l'objet `Map`. -

    Valeur de retour

    +### Valeur de retour -

    L'élément associée à la clé donnée ou {{jsxref("undefined")}} si la clé ne fait pas partie de l'objet Map.

    +L'élément associée à la clé donnée ou {{jsxref("undefined")}} si la clé ne fait pas partie de l'objet `Map`. -

    Exemples

    +## Exemples -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("truc", "toto");
     
     maMap.get("truc");     // Renvoie "toto".
     maMap.get("machin");   // Renvoie undefined.
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.get")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    • {{jsxref("Map.prototype.set()")}}
    • -
    • {{jsxref("Map.prototype.has()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.get")}} + +## Voir aussi + +- {{jsxref("Map")}} +- {{jsxref("Map.prototype.set()")}} +- {{jsxref("Map.prototype.has()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/has/index.md b/files/fr/web/javascript/reference/global_objects/map/has/index.md index ce26d66e47..998b7fe3bc 100644 --- a/files/fr/web/javascript/reference/global_objects/map/has/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/has/index.md @@ -11,66 +11,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/has original_slug: Web/JavaScript/Reference/Global_Objects/Map/has --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode has() renvoie un booléen permettant de déterminer si l'objet Map en question contient la clé donnée.

    +La méthode **`has()`** renvoie un booléen permettant de déterminer si l'objet `Map` en question contient la clé donnée. -
    {{EmbedInteractiveExample("pages/js/map-prototype-has.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-has.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.has(clé);
    + maMap.has(clé); -

    Paramètres

    +### Paramètres -
    -
    clé
    -
    Ce paramètre obligatoire correspond à la clé dont on veut savoir si elle appartient à l'objet Map.
    -
    +- `clé` + - : Ce paramètre obligatoire correspond à la clé dont on veut savoir si elle appartient à l'objet `Map`. -

    Valeur de retour

    +### Valeur de retour -

    Cette méthode renvoie un booléen : true si un élément avec cette clé existe au sein de l'objet Map et false sinon.

    +Cette méthode renvoie un booléen : `true` si un élément avec cette clé existe au sein de l'objet `Map` et `false` sinon. -

    Exemples

    +## Exemples -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("truc", "toto");
     
     maMap.has("truc");  // renvoie true
     maMap.has("machin");// renvoie false
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.has")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    • {{jsxref("Map.prototype.set()")}}
    • -
    • {{jsxref("Map.prototype.get()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.has', 'Map.prototype.has')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.has")}} + +## Voir aussi + +- {{jsxref("Map")}} +- {{jsxref("Map.prototype.set()")}} +- {{jsxref("Map.prototype.get()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/index.md b/files/fr/web/javascript/reference/global_objects/map/index.md index 7e49822844..81d5b8cb36 100644 --- a/files/fr/web/javascript/reference/global_objects/map/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/index.md @@ -9,82 +9,75 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map original_slug: Web/JavaScript/Reference/Global_Objects/Map --- -
    {{JSRef}}
    +{{JSRef}} -

    L'objet Map représente un dictionnaire, autrement dit une carte de clés/valeurs. N'importe quelle valeur valable en JavaScript (que ce soit les objets ou les valeurs de types primitifs) peut être utilisée comme clé ou comme valeur.

    +L'objet **`Map`** représente un dictionnaire, autrement dit une carte de clés/valeurs. N'importe quelle valeur valable en JavaScript (que ce soit les objets ou les valeurs de types primitifs) peut être utilisée comme clé ou comme valeur. -

    L'ordre d'insertion des clés est mémorisé dans l'objet et les boucles sur les Map parcourent les clés dans cet ordre.

    +L'ordre d'insertion des clés est mémorisé dans l'objet et les boucles sur les `Map` parcourent les clés dans cet ordre. -

    Syntaxe

    +## Syntaxe -
    new Map([iterable])
    + new Map([iterable]) -

    Paramètres

    +### Paramètres -
    -
    itérable
    -
    Un tableau ({{jsxref("Array")}}) ou tout autre objet itérable dont les éléments sont des paires clé/valeur (par exemple un tableau de la forme [[1 , "toto"],[2, "truc"]]). Chaque paire clé/valeur sera ajoutée au nouvel objet Map. {{jsxref("null")}} est traité comme {{jsxref("undefined")}}.
    -
    +- `itérable` + - : Un tableau ({{jsxref("Array")}}) ou tout autre objet [itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_«_itérable_») dont les éléments sont des paires clé/valeur (par exemple un tableau de la forme `[[1 , "toto"],[2, "truc"]]`). Chaque paire clé/valeur sera ajoutée au nouvel objet `Map`. {{jsxref("null")}} est traité comme {{jsxref("undefined")}}. -

    Description

    +## Description -

    Un objet Map permet de retrouver ses éléments dans leur ordre d'insertion. Par exemple, une boucle {{jsxref("Instructions/for...of","for...of")}} renverra un tableau de [clé, valeur] pour chaque itération.

    +Un objet `Map` permet de retrouver ses éléments dans leur ordre d'insertion. Par exemple, une boucle {{jsxref("Instructions/for...of","for...of")}} renverra un tableau de `[clé, valeur]` pour chaque itération. -

    On notera qu'un objet Map contenant des objets ne sera parcouru que dans l'ordre d'insertion de ces objets. Avec ES2015, l'ordre d'itération est fixé pour les objets. Toutefois, pour les versions antérieures d'ECMAScript, cet ordre n'est pas garanti.

    +On notera qu'un objet `Map` contenant des objets ne sera parcouru que dans l'ordre d'insertion de ces objets. Avec ES2015, l'ordre d'itération est fixé pour les objets. Toutefois, pour les versions antérieures d'ECMAScript, cet ordre n'est pas garanti. -

    Égalité des clés

    +### Égalité des clés -

    L'égalité des clés est testée avec l'algorithme basé sur l'égalité de valeurs :

    +L'égalité des clés est testée avec l'algorithme basé sur [l'égalité de valeurs](/fr/docs/JavaScript/Les_différents_tests_d_Égalité_comment_les_utiliser#.C3.89galit.C3.A9_de_valeurs) : -
      -
    • {{jsxref("NaN")}} est considéré égal à NaN (bien que, pour l'égalité stricte NaN !== NaN)
    • -
    • les autres valeurs sont considérées égales au sens de l'égalité stricte (l'opérateur  ===).
    • -
    +- {{jsxref("NaN")}} est considéré égal à `NaN` (bien que, pour l'égalité stricte `NaN !== NaN`) +- les autres valeurs sont considérées égales au sens de l'égalité stricte (l'opérateur  `===`). -

    Dans les versions précédentes des brouillons ECMAScript 2015 (ES6) -0 et +0 étaient considérés différents (bien que -0 === +0), ceci a été changé dans les versions ultérieures et a été adapté avec Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) et une version nocturne de Chrome.

    +Dans les versions précédentes des brouillons ECMAScript 2015 (ES6) `-0` et `+0` étaient considérés différents (bien que `-0 === +0`), ceci a été changé dans les versions ultérieures et a été adapté avec Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) et une version nocturne de [Chrome](https://code.google.com/p/v8/issues/detail?id=3069). -

    Comparaison entre objets et maps

    +### Comparaison entre objets et maps -

    Les {{jsxref("Object", "objets","",1)}} sont similaires aux Maps, chacun manipulant des clés associées à des valeurs, récupérant ces valeurs, supprimant des clés... Il n'y avait auparavant pas d'alternatives natives et c'est pourquoi, historiquement, les objets JavaScript ont été utilisés comme des Maps. Malgré tout, il y a des différences importantes entre Objects et Maps qui permettent de distinguer une utilisation des objets Map plus efficace :

    +Les {{jsxref("Object", "objets","",1)}} sont similaires aux `Maps`, chacun manipulant des clés associées à des valeurs, récupérant ces valeurs, supprimant des clés... Il n'y avait auparavant pas d'alternatives natives et c'est pourquoi, historiquement, les objets JavaScript ont été utilisés comme des `Maps`. Malgré tout, il y a des différences importantes entre` Objects` et `Maps` qui permettent de distinguer une utilisation des objets `Map` plus efficace : -
      -
    • Un Object possède un prototype, certaines clés par défaut peuvent donc entrer en collision avec les clés qu'on souhaite créer. À partir d'ES5, on peut écrire map = {{jsxref("Object.create", "Object.create(null)")}} mais cette formulation est rarement utilisée.
    • -
    • Les clés d'une Map sont ordonnées tandis que les clés d'un objet n'ont pas d'ordre particulier. Ainsi, quand on parcourt une Map, on obtient les clés selon leur ordre d'insertion. On notera qu'à partir d'ECMAScript 2015, la spécification pour les objets indique de conserver l'ordre de création pour les clés qui sont des chaînes et des symboles.
    • -
    • Les clés d'un Object sont des {{jsxref("String", "chaînes de caractères","",1)}} ou des symboles (cf. {{jsxref("Symbol")}}), alors que pour une Map ça peut être n'importe quelle valeur.
    • -
    • Il est possible d'obtenir facilement la taille d'une Map avec size. En revanche, pour un Object il faudra compter « manuellement ».
    • -
    • Un objet Map est un itérable et on peut donc le parcourir directement. En revanche, itérer sur un Object nécessite de récupérer les clés de l'objet pour ensuite les parcourir.
    • -
    • Un objet Map permettra d'obtenir de meilleures performances si on ajoute et supprime des éléments fréquemment.
    • -
    +- Un `Object` possède un prototype, certaines clés par défaut peuvent donc entrer en collision avec les clés qu'on souhaite créer. À partir d'ES5, on peut écrire `map = `{{jsxref("Object.create", "Object.create(null)")}} mais cette formulation est rarement utilisée. +- Les clés d'une `Map` sont ordonnées tandis que les clés d'un objet n'ont pas d'ordre particulier. Ainsi, quand on parcourt une `Map`, on obtient les clés selon leur ordre d'insertion. On notera qu'à partir d'ECMAScript 2015, la spécification pour les objets indique de conserver l'ordre de création pour les clés qui sont des chaînes et des symboles. +- Les clés d'un `Object` sont des {{jsxref("String", "chaînes de caractères","",1)}} ou des symboles (cf. {{jsxref("Symbol")}}), alors que pour une `Map` ça peut être n'importe quelle valeur. +- Il est possible d'obtenir facilement la taille d'une `Map` avec `size`. En revanche, pour un `Object` il faudra compter « manuellement ». +- Un objet `Map` est un [itérable](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_«_itérable_») et on peut donc le parcourir directement. En revanche, itérer sur un `Object` nécessite de récupérer les clés de l'objet pour ensuite les parcourir. +- Un objet `Map` permettra d'obtenir de meilleures performances si on ajoute et supprime des éléments fréquemment. -

    Propriétés

    +## Propriétés -
    -
    Map.length
    -
    La valeur de la propriété length est 0.
    - Attention, pour compter le nombre d'élément contenu dans une Map, on utilisera plutôt {{jsxref("Map.prototype.size")}}.
    -
    {{jsxref("Map.@@species", "get Map[@@species]")}}
    -
    La fonction constructeur utilisée pour créer des objets dérivées.
    -
    {{jsxref("Map.prototype")}}
    -
    Représente le prototype du constructeur Map. Permet l'addition de propriétés à tous les objets Map.
    -
    +- `Map.length` + - : La valeur de la propriété `length` est 0. + Attention, pour compter le nombre d'élément contenu dans une `Map`, on utilisera plutôt {{jsxref("Map.prototype.size")}}. +- {{jsxref("Map.@@species", "get Map[@@species]")}} + - : La fonction constructeur utilisée pour créer des objets dérivées. +- {{jsxref("Map.prototype")}} + - : Représente le prototype du constructeur `Map`. Permet l'addition de propriétés à tous les objets `Map`. -

    Instances de Map

    +## Instances de `Map` -

    Toutes les instances de Map héritent de {{jsxref("Map.prototype")}}.

    +Toutes les instances de `Map` héritent de {{jsxref("Map.prototype")}}. -

    Propriétés

    +### Propriétés -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Map/prototype','Propriétés')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Map/prototype','Propriétés')}} -

    Méthodes

    +### Méthodes -

    {{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Map/prototype','Méthodes')}}

    +{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/Map/prototype','Méthodes')}} -

    Exemples

    +## Exemples -

    Utiliser un objet Map

    +### Utiliser un objet `Map` -
    const myMap = new Map();
    +```js
    +const myMap = new Map();
     
     const objectKey = {},
         functionKey = function () {},
    @@ -106,26 +99,28 @@ myMap.get("une chaîne");  // "valeur associée à 'une chaîne'"
                               // car chaineClé === 'une chaîne'
     myMap.get({});            // indéfini car objetClé !== {}
     myMap.get(function() {}); // indéfini car fonctionClé !== function () {}
    -
    +``` -

    Utiliser NaN comme clé

    +### Utiliser `NaN` comme clé -

    {{jsxref("NaN")}} peut être utilisé comme une clé. Bien que NaN ne soit pas strictement égal à lui-même (NaN !== NaN est vérifié), on peut bâtir l'exemple suivant car on ne peut pas distinguer deux valeurs NaN :

    +{{jsxref("NaN")}} peut être utilisé comme une clé. Bien que `NaN` ne soit pas strictement égal à lui-même (`NaN !== NaN` est vérifié), on peut bâtir l'exemple suivant car on ne peut pas distinguer deux valeurs `NaN `: -
    const myMap = new Map();
    +```js
    +const myMap = new Map();
     myMap.set(NaN, "not a number");
     
     myMap.get(NaN); // "not a number"
     
     const otherNaN = Number("toto");
     myMap.get(otherNaN); // "not a number"
    -
    +``` -

    Parcourir des objets Maps avec for..of

    +### Parcourir des objets `Maps` avec `for..of` -

    Il est possible de parcourir les objets Map grâce à des boucles for..of :

    +Il est possible de parcourir les objets `Map `grâce à des boucles `for..of` : -
    const myMap = new Map();
    +```js
    +const myMap = new Map();
     myMap.set(0, "zéro");
     myMap.set(1, "un");
     for (const [key, value] of myMap) {
    @@ -157,11 +152,12 @@ myMap.forEach(function(value, key) {
     });
     // On aura 2 lignes : la première avec "0 = zéro"
     // la seconde avec "1 = un"
    -
    +``` -

    Relation avec les objets Array

    +### Relation avec les objets `Array` -
    const keyValuePair = [["clé1", "valeur1"], ["clé2", "valeur2"]];
    +```js
    +const keyValuePair = [["clé1", "valeur1"], ["clé2", "valeur2"]];
     
     // On utilise le constructeur Map
     // pour transformer un tableau de clés/valeurs
    @@ -176,26 +172,30 @@ console.log(Array.from(myMap)); // affichera la même chose que tableauCléValeu
     
     // On peut aussi l'utiliser pour n'extraire que les clés
     // ou les valeurs et créer le tableau associé
    -console.log(Array.from(myMap.keys())); // affichera ["clé1", "clé2"]
    +console.log(Array.from(myMap.keys())); // affichera ["clé1", "clé2"] +``` -

    Cloner et fusionner des objets Map

    +### Cloner et fusionner des objets `Map` -

    Il est possible de cloner des Map comme on clone des tableaux :

    +Il est possible de cloner des `Map` comme on clone des tableaux : -
    const original = new Map([
    +```js
    +const original = new Map([
       [1, 'un']
     ]);
     
     const clone = new Map(original);
     
     console.log(clone.get(1)); // un
    -console.log(original === clone); // false. Utile pour une comparaison superficielle
    +console.log(original === clone); // false. Utile pour une comparaison superficielle +``` -

    Attention, la donnée contenue dans la Map n'est pas clonée.

    +Attention, la donnée contenue dans la `Map` n'est pas clonée. -

    Il est également possible de fusionner deux Map en conservant le critère d'unicité sur les clés :

    +Il est également possible de fusionner deux `Map` en conservant le critère d'unicité sur les clés : -
    const first = new Map([
    +```js
    +const first = new Map([
       [1, 'un'],
       [2, 'deux'],
       [3, 'trois'],
    @@ -214,11 +214,13 @@ const fusion = new Map([...first, ...second]);
     
     console.log(fusion.get(1)); // uno
     console.log(fusion.get(2)); // dos
    -console.log(fusion.get(3)); // trois
    +console.log(fusion.get(3)); // trois +``` -

    Il est également possible de fusionner des objets Map avec des objets Array :

    +Il est également possible de fusionner des objets `Map` avec des objets `Array` : -
    const first = new Map([
    +```js
    +const first = new Map([
       [1, 'un'],
       [2, 'deux'],
       [3, 'trois'],
    @@ -235,42 +237,24 @@ const fusion = new Map([...first, ...second, [1, 'eins']]);
     
     console.log(fusion.get(1)); // eins
     console.log(fusion.get(2)); // dos
    -console.log(fusion.get(3)); // trois
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map-objects', 'Map')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map-objects', 'Map')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map")}}

    - -

    Voir aussi

    - - +console.log(fusion.get(3)); // trois +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map-objects', 'Map')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map-objects', 'Map')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map")}} + +## Voir aussi + +- [Le bug sur Map et Set pour Mozilla](https://bugzilla.mozilla.org/show_bug.cgi?id=697479) +- [La proposition ECMAScript Harmony](https://web.archive.org/web/20170105121945/http://wiki.ecmascript.org:80/doku.php?id=harmony:simple_maps_and_sets) +- {{jsxref("Set")}} +- {{jsxref("WeakMap")}} +- {{jsxref("WeakSet")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/keys/index.md b/files/fr/web/javascript/reference/global_objects/map/keys/index.md index 423cf8d7dd..94943f763b 100644 --- a/files/fr/web/javascript/reference/global_objects/map/keys/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/keys/index.md @@ -11,25 +11,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys original_slug: Web/JavaScript/Reference/Global_Objects/Map/keys --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode keys() renvoie un objet Iterator qui contient les clés de chaque élément de l'objet Map, dans leur ordre d'insertion.

    +La méthode **`keys()`** renvoie un objet [`Iterator`](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs) qui contient les clés de chaque élément de l'objet `Map`, dans leur ordre d'insertion. -
    {{EmbedInteractiveExample("pages/js/map-prototype-keys.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-keys.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.keys()
    + maMap.keys() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet Iterator {{jsxref("Map")}}.

    +Un nouvel objet `Iterator` {{jsxref("Map")}}. -

    Exemples

    +## Exemples -

    Utiliser keys()

    +### Utiliser `keys()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("0", "toto");
     maMap.set(1, "truc");
     maMap.set({}, "bidule");
    @@ -39,37 +40,20 @@ var mapIter = maMap.keys();
     console.log(mapIter.next().value); // "0"
     console.log(mapIter.next().value); // 1
     console.log(mapIter.next().value); // Object
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.keys")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map.prototype.entries()")}}
    • -
    • {{jsxref("Map.prototype.values()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.keys', 'Map.prototype.keys')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.keys")}} + +## Voir aussi + +- {{jsxref("Map.prototype.entries()")}} +- {{jsxref("Map.prototype.values()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/set/index.md b/files/fr/web/javascript/reference/global_objects/map/set/index.md index b0e695aed3..b25fc7c250 100644 --- a/files/fr/web/javascript/reference/global_objects/map/set/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/set/index.md @@ -11,34 +11,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/set original_slug: Web/JavaScript/Reference/Global_Objects/Map/set --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode set() ajoute un nouvel élément avec une clé et une valeur données à un objet Map.

    +La méthode **`set()`** ajoute un nouvel élément avec une `clé` et une `valeur` données à un objet `Map`. -
    {{EmbedInteractiveExample("pages/js/map-prototype-set.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-set.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.set(clé, valeur);
    + maMap.set(clé, valeur); -

    Paramètres

    +### Paramètres -
    -
    clé
    -
    Ce paramètre représente la clé de l'élément à ajouter à l'objet Map.
    -
    valeur
    -
    Ce paramètre représente la valeur de l'élément à ajouter à l'objet Map.
    -
    +- `clé` + - : Ce paramètre représente la clé de l'élément à ajouter à l'objet `Map`. +- `valeur` + - : Ce paramètre représente la valeur de l'élément à ajouter à l'objet `Map`. -

    Valeur de retour

    +### Valeur de retour -

    L'objet Map courant (auquel l'élément a été ajouté).

    +L'objet `Map` courant (auquel l'élément a été ajouté). -

    Exemples

    +## Exemples -

    Utiliser la méthode set()

    +### Utiliser la méthode `set()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     
     // On ajoute de nouveaux éléments à l'objet map
     maMap.set("truc", "toto");
    @@ -46,48 +45,33 @@ maMap.set(1, "bidule");
     
     // On met à jour un élément
     maMap.set("truc", "fuuu");
    -
    +``` -

    Utiliser la méthode set() avec un enchaînement

    +### Utiliser la méthode `set()` avec un enchaînement -

    La méthode set() renvoie le même objet Map et on peut donc la « chaîner » pour des opérations successives :

    +La méthode `set()` renvoie le même objet `Map` et on peut donc la « chaîner » pour des opérations successives : -
    // On ajoute de nouveaux éléments
    +```js
    +// On ajoute de nouveaux éléments
     // en enchaînant les appels à set()
     maMap.set('truc', 'toto')
          .set(1, 'tototruc')
    -     .set(2, 'bidule');
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.set")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map")}}
    • -
    • {{jsxref("Map.prototype.get()")}}
    • -
    • {{jsxref("Map.prototype.has()")}}
    • -
    + .set(2, 'bidule'); +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.set', 'Map.prototype.set')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.set")}} + +## Voir aussi + +- {{jsxref("Map")}} +- {{jsxref("Map.prototype.get()")}} +- {{jsxref("Map.prototype.has()")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/size/index.md b/files/fr/web/javascript/reference/global_objects/map/size/index.md index 0473610825..898542a176 100644 --- a/files/fr/web/javascript/reference/global_objects/map/size/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/size/index.md @@ -10,56 +10,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/size original_slug: Web/JavaScript/Reference/Global_Objects/Map/size --- -
    {{JSRef}}
    +{{JSRef}} -

    L'accesseur size est une propriété renvoyant le nombre d'éléments d'un objet {{jsxref("Map")}}.

    +L'accesseur **`size`** est une propriété renvoyant le nombre d'éléments d'un objet {{jsxref("Map")}}. -
    {{EmbedInteractiveExample("pages/js/map-prototype-size.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-size.html")}} -

    Description

    +## Description -

    La valeur de size est un entier représentant le nombre d'entrées d'un objet Map. Le mutateur correspond à cette propriété est {{jsxref("undefined")}}, on ne peut pas donc pas modifier cette propriété.

    +La valeur de `size` est un entier représentant le nombre d'entrées d'un objet `Map`. Le mutateur correspond à cette propriété est {{jsxref("undefined")}}, on ne peut pas donc pas modifier cette propriété. -

    Exemple

    +## Exemple -

    Utiliser size

    +### Utiliser `size` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("a", "alpha");
     maMap.set("b", "beta");
     maMap.set("g", "gamma");
     
     maMap.size // 3
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-get-map.prototype.size', 'Map.prototype.size')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}} | {{Spec2('ESDraft')}} |   | -

    Compatibliité des navigateurs

    +## Compatibliité des navigateurs -

    {{Compat("javascript.builtins.Map.size")}}

    +{{Compat("javascript.builtins.Map.size")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Map")}}
    • -
    +- {{jsxref("Map")}} diff --git a/files/fr/web/javascript/reference/global_objects/map/values/index.md b/files/fr/web/javascript/reference/global_objects/map/values/index.md index 8071caa2d0..07c000c242 100644 --- a/files/fr/web/javascript/reference/global_objects/map/values/index.md +++ b/files/fr/web/javascript/reference/global_objects/map/values/index.md @@ -12,25 +12,26 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Map/values original_slug: Web/JavaScript/Reference/Global_Objects/Map/values --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode values() renvoie un objet Iterator qui contient les valeurs de chacun des éléments contenu dans l'objet Map donné, dans leur ordre d'insertion.

    +La méthode **`values()`** renvoie un objet [`Iterator`](/fr/docs/Web/JavaScript/Guide/iterateurs_et_generateurs) qui contient les valeurs de chacun des éléments contenu dans l'objet `Map` donné, dans leur ordre d'insertion. -
    {{EmbedInteractiveExample("pages/js/map-prototype-values.html")}}
    +{{EmbedInteractiveExample("pages/js/map-prototype-values.html")}} -

    Syntaxe

    +## Syntaxe -
    maMap.values()
    + maMap.values() -

    Valeur de retour

    +### Valeur de retour -

    Un nouvel objet Iterator {{jsxref("Map")}}.

    +Un nouvel objet `Iterator` {{jsxref("Map")}}. -

    Exemple

    +## Exemple -

    Utiliser values()

    +### Utiliser `values()` -
    var maMap = new Map();
    +```js
    +var maMap = new Map();
     maMap.set("0", "toto");
     maMap.set(1, "truc");
     maMap.set({}, "licorne");
    @@ -39,37 +40,21 @@ var mapIter = maMap.values();
     
     console.log(mapIter.next().value); // "toto"
     console.log(mapIter.next().value); // "truc"
    -console.log(mapIter.next().value); // "licorne"
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Map.values")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Map.prototype.entries()")}}
    • -
    • {{jsxref("Map.prototype.keys()")}}
    • -
    +console.log(mapIter.next().value); // "licorne" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Map.values")}} + +## Voir aussi + +- {{jsxref("Map.prototype.entries()")}} +- {{jsxref("Map.prototype.keys()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/abs/index.md b/files/fr/web/javascript/reference/global_objects/math/abs/index.md index c632d426db..6a1a7d758d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/abs/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/abs/index.md @@ -9,40 +9,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs original_slug: Web/JavaScript/Reference/Objets_globaux/Math/abs --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.abs() retourne la valeur absolue d'un nombre, c'est-à-dire

    +La fonction **`Math.abs()`** retourne la valeur absolue d'un nombre, c'est-à-dire -

    Math.abs(x)=|x|={xsix0-xsix<0{\mathtt{\operatorname{Math.abs}(x)}} = {|x|} = \begin{cases} x & \text{si} \quad x \geq 0 \\ -x & \text{si} \quad x < 0 \end{cases}

    +Math.abs(x)=|x|={xsix0-xsix<0{\mathtt{\operatorname{Math.abs}(x)}} = {|x|} = \begin{cases} x & \text{si} \quad x \geq 0 \\ -x & \text{si} \quad x < 0 \end{cases} -
    {{EmbedInteractiveExample("pages/js/math-abs.html")}}
    +{{EmbedInteractiveExample("pages/js/math-abs.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.abs(x);
    + Math.abs(x); -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur absolue

    +### Valeur absolue -

    La valeur absolue du nombre passé en argument.

    +La valeur absolue du nombre passé en argument. -

    Description

    +## Description -

    abs est une méthode statique de l'objet Math et doit toujours être utilisée avec la syntaxe Math.abs().

    +`abs` est une méthode statique de l'objet `Math` et doit toujours être utilisée avec la syntaxe `Math.abs()`. -

    Exemples

    +## Exemples -

    Utiliser Math.abs()

    +### Utiliser `Math.abs()` -

    Si la méthode est utilisée avec une chaîne de caractères non numérique, avec un tableau à plus d'un élément, sans paramètre ou avec {{jsxref("undefined")}}, la valeur retournée sera {{jsxref("NaN")}}. Si elle est utilisée avec {{jsxref("null")}}, la fonction renverra 0.

    +Si la méthode est utilisée avec une chaîne de caractères non numérique, avec un tableau à plus d'un élément, sans paramètre ou avec {{jsxref("undefined")}}, la valeur retournée sera {{jsxref("NaN")}}. Si elle est utilisée avec {{jsxref("null")}}, la fonction renverra 0. -
    Math.abs('-1');     // 1
    +```js
    +Math.abs('-1');     // 1
     Math.abs(-2);       // 2
     Math.abs(null);     // 0
     Math.abs('');       // 0
    @@ -51,50 +50,26 @@ Math.abs([2]);      // 2
     Math.abs([1,2]);    // NaN
     Math.abs({});       // NaN
     Math.abs("string"); // NaN
    -Math.abs();         // NaN
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.1', 'Math.abs')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.abs', 'Math.abs')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.abs', 'Math.abs')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.abs")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.ceil()")}}
    • -
    • {{jsxref("Math.floor()")}}
    • -
    • {{jsxref("Math.round()")}}
    • -
    • {{jsxref("Math.sign()")}}
    • -
    • {{jsxref("Math.trunc()")}}
    • -
    +Math.abs(); // NaN +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.1', 'Math.abs')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.abs', 'Math.abs')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.abs', 'Math.abs')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.abs")}} + +## Voir aussi + +- {{jsxref("Math.ceil()")}} +- {{jsxref("Math.floor()")}} +- {{jsxref("Math.round()")}} +- {{jsxref("Math.sign()")}} +- {{jsxref("Math.trunc()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/acos/index.md b/files/fr/web/javascript/reference/global_objects/math/acos/index.md index 3a2f6fa132..2d120f115d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/acos/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/acos/index.md @@ -9,92 +9,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos original_slug: Web/JavaScript/Reference/Objets_globaux/Math/acos --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.acos() renvoie l'arc cosinus d'une valeur exprimée en radians. Cela est défini par :

    +La fonction **`Math.acos()`** renvoie l'arc cosinus d'une valeur exprimée en radians. Cela est défini par : -

    x[-1;1],Math.acos(x)=arccos(x)= le seul  y[0;π]tel quecos(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ the unique } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x

    +x[-1;1],Math.acos(x)=arccos(x)= le seul  y[0;π]tel quecos(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ the unique } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x -
    {{EmbedInteractiveExample("pages/js/math-acos.html")}}
    +{{EmbedInteractiveExample("pages/js/math-acos.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.acos(x) 
    + Math.acos(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre (représentant un angle exprimé en radians).
    -
    +- `x` + - : Un nombre (représentant un angle exprimé en radians). -

    Valeur de retour

    +### Valeur de retour -

    L'arc cosinus du nombre passé en argument si celui est compris entre -1 et 1. La méthode renvoie {{jsxref("NaN")}} sinon.

    +L'arc cosinus du nombre passé en argument si celui est compris entre -1 et 1. La méthode renvoie {{jsxref("NaN")}} sinon. -

    Description

    +## Description -

    La méthode acos renvoie une valeur numérique comprise entre 0 et Pi pour x compris entre -1 et 1. Si la valeur de x est hors de cet intervalle, la méthode renverra {{jsxref("NaN")}}.

    +La méthode `acos` renvoie une valeur numérique comprise entre 0 et Pi pour x compris entre -1 et 1. Si la valeur de `x` est hors de cet intervalle, la méthode renverra {{jsxref("NaN")}}. -

    acos est une méhode statique de Math et doit toujours être utilisée avec la syntaxe Math.acos(), elle ne doit pas être appelée depuis un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`acos` est une méhode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.acos()`, elle ne doit pas être appelée depuis un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.acos()

    +### Utiliser `Math.acos()` -
    Math.acos(-2);  // NaN
    +```js
    +Math.acos(-2);  // NaN
     Math.acos(-1);  // 3.141592653589793
     Math.acos(0);   // 1.5707963267948966
     Math.acos(0.5); // 1.0471975511965979
     Math.acos(1);   // 0
     Math.acos(2);   // NaN
    -
    - -

    Pour les valeurs (strictement) inférieures à -1 ou supérieures à 1, Math.acos renvoie NaN.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.2', 'Math.acos')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.acos', 'Math.acos')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.acos', 'Math.acos')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.acos")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +``` + +Pour les valeurs (strictement) inférieures à -1 ou supérieures à 1, `Math.acos` renvoie `NaN`. + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.2', 'Math.acos')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.acos', 'Math.acos')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.acos', 'Math.acos')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.acos")}} + +## Voir aussi + +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.sin()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/acosh/index.md b/files/fr/web/javascript/reference/global_objects/math/acosh/index.md index 26a4b11b80..cb4ff0b1c1 100644 --- a/files/fr/web/javascript/reference/global_objects/math/acosh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/acosh/index.md @@ -10,88 +10,70 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/acosh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.acosh() renvoie l'arc cosinus hyperbolique d'un nombre.Elle est définie par :

    +La fonction **`Math.acosh()`** renvoie l'arc cosinus hyperbolique d'un nombre.Elle est définie par : -

    x1,Math.acosh(x)=arcosh(x)= l'unique y0tel quecosh(y)=x\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ the unique } \; y \geq 0 \; \text{such that} \; \cosh(y) = x

    +x1,Math.acosh(x)=arcosh(x)= l'unique y0tel quecosh(y)=x\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ the unique } \; y \geq 0 \; \text{such that} \; \cosh(y) = x -
    {{EmbedInteractiveExample("pages/js/math-acosh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-acosh.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.acosh(x)
    + Math.acosh(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'arc cosinus hyperbolique du nombre en argument. Si le nombre est inférieur à 1, la valeur renvoyée sera {{jsxref("NaN")}}.

    +L'arc cosinus hyperbolique du nombre en argument. Si le nombre est inférieur à 1, la valeur renvoyée sera {{jsxref("NaN")}}. -

    Description

    +## Description -

    acosh étant une méthode statique de Math, il faut l'utiliser avec Math.acosh(), plutôt qu'en faisant appel à une méthode d'un autre objet créé (Math n'est pas un constructeur).

    +`acos`h étant une méthode statique de `Math`, il faut l'utiliser avec `Math.acosh()`, plutôt qu'en faisant appel à une méthode d'un autre objet créé (`Math` n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.acosh()

    +### Utiliser `Math.acosh()` -
    Math.acosh(-1);  // NaN
    +```js
    +Math.acosh(-1);  // NaN
     Math.acosh(0);   // NaN
     Math.acosh(0.5); // NaN
     Math.acosh(1);   // 0
    -Math.acosh(2);   // 1.3169578969248166
    +Math.acosh(2); // 1.3169578969248166 +``` -

    Pour les valeurs strictement inférieures à 1 Math.acosh renvoie {{jsxref("NaN")}}.

    +Pour les valeurs strictement inférieures à 1 `Math.acosh` renvoie {{jsxref("NaN")}}. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Pour tout x1x \geq 1, arcosh(x)=ln(x+x2-1)\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right), on peut donc émuler cette fonction avec le code suivant :

    +Pour tout x1x \geq 1, arcosh(x)=ln(x+x2-1)\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right), on peut donc émuler cette fonction avec le code suivant : -
    function acosh(x) {
    +```js
    +function acosh(x) {
       return Math.log(x + Math.sqrt(x * x - 1));
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ES6')}}Définition initiale
    {{SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.acosh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.asinh()")}}
    • -
    • {{jsxref("Math.atanh()")}}
    • -
    • {{jsxref("Math.cosh()")}}
    • -
    • {{jsxref("Math.sinh()")}}
    • -
    • {{jsxref("Math.tanh()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}} | {{Spec2('ES6')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.acosh")}} + +## Voir aussi + +- {{jsxref("Math.asinh()")}} +- {{jsxref("Math.atanh()")}} +- {{jsxref("Math.cosh()")}} +- {{jsxref("Math.sinh()")}} +- {{jsxref("Math.tanh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/asin/index.md b/files/fr/web/javascript/reference/global_objects/math/asin/index.md index b094e1bdce..b7d502cfb9 100644 --- a/files/fr/web/javascript/reference/global_objects/math/asin/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/asin/index.md @@ -9,91 +9,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin original_slug: Web/JavaScript/Reference/Objets_globaux/Math/asin --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.asin() renvoie l'arc sinus d'un nombre (en radians). Elle est définie par :

    +La fonction **`Math.asin()`** renvoie l'arc sinus d'un nombre (en radians). Elle est définie par : -

    x[-1;1],Math.asin(x)=arcsin(x)= le seul y[-π2;π2]tel quesin(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \sin(y) = x

    +x[-1;1],Math.asin(x)=arcsin(x)= le seul y[-π2;π2]tel quesin(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \sin(y) = x -
    {{EmbedInteractiveExample("pages/js/math-asin.html")}}
    +{{EmbedInteractiveExample("pages/js/math-asin.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.asin(x)
    + Math.asin(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'arc sinus du nombre passé en argument (exprimé en radians). Si ce nombre n'est pas compris entre -1 et 1, la valeur renvoyée sera {{jsxref("NaN")}}.

    +L'arc sinus du nombre passé en argument (exprimé en radians). Si ce nombre n'est pas compris entre -1 et 1, la valeur renvoyée sera {{jsxref("NaN")}}. -

    Description

    +## Description -

    La méthode Math.asin() renvoie une valeur numérique comprise entre -π2-\frac{\pi}{2} et π2\frac{\pi}{2} pour x compris entre -1 et 1. Si x est hors de cet intervalle, la méthode renverra {{jsxref("NaN")}}.

    +La méthode `Math.asin()` renvoie une valeur numérique comprise entre -π2-\frac{\pi}{2} et π2\frac{\pi}{2} pour `x` compris entre -1 et 1. Si `x` est hors de cet intervalle, la méthode renverra {{jsxref("NaN")}}. -

    Math.asin() est une méthode statique de Math et doit toujours être utilisée avec la syntaxe Math.asin(), elle ne doit pas être appelée à partir d'un autre objet créé (Math n'est pas un constructeur).

    +`Math.asin()` est une méthode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.asin()`, elle ne doit pas être appelée à partir d'un autre objet créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.asin()

    +### Utiliser `Math.asin()` -
    Math.asin(-2);  // NaN
    +```js
    +Math.asin(-2);  // NaN
     Math.asin(-1);  // -1.570796326794897 (-pi/2)
     Math.asin(0);   // 0
     Math.asin(0.5); // 0.5235987755982989
     Math.asin(1);   // 1.570796326794897 (pi/2)
    -Math.asin(2);   // NaN
    - -

    Pour les valeurs (strictement) inférieures à -1 ou supérieures à 1, Math.asin() renvoie {{jsxref("NaN")}}.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.3', 'Math.asin')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.asin', 'Math.asin')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.asin', 'Math.asin')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -
    {{Compat("javascript.builtins.Math.asin")}}
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +Math.asin(2); // NaN +``` + +Pour les valeurs (strictement) inférieures à -1 ou supérieures à 1, `Math.asin()` renvoie {{jsxref("NaN")}}. + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.3', 'Math.asin')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.asin', 'Math.asin')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.asin', 'Math.asin')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.asin")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.sin()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/asinh/index.md b/files/fr/web/javascript/reference/global_objects/math/asinh/index.md index e831b9abcb..607a90d9f4 100644 --- a/files/fr/web/javascript/reference/global_objects/math/asinh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/asinh/index.md @@ -9,80 +9,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/asinh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.asinh() renvoie l'arc sinus hyperbolique d'un nombre :

    +La fonction **`Math.asinh()`** renvoie l'arc sinus hyperbolique d'un nombre : -

    Math.asinh(x)=arsinh(x)= le seul ytel quesinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ the unique } \; y \; \text{such that} \; \sinh(y) = x

    +Math.asinh(x)=arsinh(x)= le seul ytel quesinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ the unique } \; y \; \text{such that} \; \sinh(y) = x -
    {{EmbedInteractiveExample("pages/js/math-asinh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-asinh.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.asinh(x)
    + Math.asinh(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'arc sinus hyperbolique du nombre passé en argument.

    +L'arc sinus hyperbolique du nombre passé en argument. -

    Description

    +## Description -

    asinh() étant une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.asinh() et ne doit pas être appelée depuis un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`asinh()` étant une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.asinh()` et ne doit pas être appelée depuis un autre objet qui aurait été créé (Math n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.asinh()

    +### Utiliser `Math.asinh()` -
    Math.asinh = Math.asinh || function(x) {
    +```js
    +Math.asinh = Math.asinh || function(x) {
       if (x === -Infinity) {
         return x;
       } else {
         return Math.log(x + Math.sqrt(x * x + 1));
       }
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.asinh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acosh()")}}
    • -
    • {{jsxref("Math.atanh()")}}
    • -
    • {{jsxref("Math.cosh()")}}
    • -
    • {{jsxref("Math.sinh()")}}
    • -
    • {{jsxref("Math.tanh()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.asinh")}} + +## Voir aussi + +- {{jsxref("Math.acosh()")}} +- {{jsxref("Math.atanh()")}} +- {{jsxref("Math.cosh()")}} +- {{jsxref("Math.sinh()")}} +- {{jsxref("Math.tanh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/atan/index.md b/files/fr/web/javascript/reference/global_objects/math/atan/index.md index 3c6754866d..3f9a23100f 100644 --- a/files/fr/web/javascript/reference/global_objects/math/atan/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/atan/index.md @@ -9,40 +9,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan original_slug: Web/JavaScript/Reference/Objets_globaux/Math/atan --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.atan() renvoie l'arc tangente d'un nombre exprimée en radians. Elle est définie par :

    +La fonction **`Math.atan()`** renvoie l'arc tangente d'un nombre exprimée en radians. Elle est définie par : -

    Math.atan(x)=arctan(x)=le seuly[-π2;π2]tel quetan(y)=x\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \tan(y) = x

    +Math.atan(x)=arctan(x)=le seuly[-π2;π2]tel quetan(y)=x\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \tan(y) = x -
    {{EmbedInteractiveExample("pages/js/math-atan.html")}}
    +{{EmbedInteractiveExample("pages/js/math-atan.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.atan(x)
    + Math.atan(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'arc tangente du nombre passé en argument (exprimé en radians).

    +L'arc tangente du nombre passé en argument (exprimé en radians). -

    Description

    +## Description -

    La méthode Math.atan() renvoie une valeur numérique comprise entre -π2-\frac{\pi}{2} et π2\frac{\pi}{2}.

    +La méthode `Math.atan()` renvoie une valeur numérique comprise entre -π2-\frac{\pi}{2} et π2\frac{\pi}{2}. -

    atan() est une méthode statique de Math et doit toujours être utilisée avec la syntaxe Math.atan(), elle ne doit pas être utilisée comme une méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`atan()` est une méthode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.atan()`, elle ne doit pas être utilisée comme une méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.atan()

    +### Utiliser `Math.atan()` -
    Math.atan(1);  // 0.7853981633974483
    +```js
    +Math.atan(1);  // 0.7853981633974483
     Math.atan(0);  // 0
     Math.atan(-0); // -0
     
    @@ -52,51 +51,26 @@ Math.atan(-Infinity); // -1.5707963267948966
     // L'angle formé entre la droite [(0,0);(x,y)] et l'axe des abscisses
     // dans un système de coordonnées cartésienne
     Math.atan(y / x);
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.4', 'Math.atan')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.atan', 'Math.atan')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.atan', 'Math.atan')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -
    {{Compat("javascript.builtins.Math.atan")}}
    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.4', 'Math.atan')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.atan', 'Math.atan')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.atan', 'Math.atan')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.atan")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.sin()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/atan2/index.md b/files/fr/web/javascript/reference/global_objects/math/atan2/index.md index 24923087e3..c95dd9050b 100644 --- a/files/fr/web/javascript/reference/global_objects/math/atan2/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/atan2/index.md @@ -9,102 +9,76 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/atan2 --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.atan2() renvoie l'arc tangente du quotient de ses arguments.

    +La fonction **`Math.atan2()`** renvoie l'arc tangente du quotient de ses arguments. -
    {{EmbedInteractiveExample("pages/js/math-atan2.html")}}
    +{{EmbedInteractiveExample("pages/js/math-atan2.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.atan2(y, x) 
    + Math.atan2(y, x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    La coordonnée en abscisse du point.
    -
    y
    -
    La coordonnée en ordonnée du point.
    -
    +- `x` + - : La coordonnée en abscisse du point. +- `y` + - : La coordonnée en ordonnée du point. -

    Valeur de retour

    +### Valeur de retour -

    L'arc tangente du quotient formé par les deux arguments, c'est-à-dire l'angle, exprimé en radians entre l'axe des abscisses et la droite passant par l'origin (0,0) et le point de coordonnées (x,y).

    +L'arc tangente du quotient formé par les deux arguments, c'est-à-dire l'angle, exprimé en radians entre l'axe des abscisses et la droite passant par l'origin (0,0) et le point de coordonnées (x,y). -

    Description

    +## Description -

    La méthode Math.atan2() renvoie une valeur numérique comprise entre -Pi et Pi qui représente l'angle theta d'un point de coordonnées (x,y). Cela correspond à l'angle (dans le sens trigonométrique) entre l'axe des abscisses et le point de coordonnées (x,y). Attention, le premier argument de la fonction est l'ordonnée (y) et le second est l'abscisse (x).

    +La méthode `Math.atan2()` renvoie une valeur numérique comprise entre -Pi et Pi qui représente l'angle theta d'un point de coordonnées (x,y). Cela correspond à l'angle (dans le sens trigonométrique) entre l'axe des abscisses et le point de coordonnées (`x,y`). Attention, le premier argument de la fonction est l'ordonnée (y) et le second est l'abscisse (x). -

    Graphique explicitant l'angle donné par un point de coordonnées X/Y

    +![Graphique explicitant l'angle donné par un point de coordonnées X/Y](https://mdn.mozillademos.org/files/11565/atan2.png) -

    Math.atan2() utilise deux arguments x et y, alors que la méthode Math.atan() utilise le ratio de deux nombres comme un seul argument.

    +`Math.atan2()` utilise deux arguments `x` et `y`, alors que la méthode `Math.atan()` utilise le ratio de deux nombres comme un seul argument. -

    atan2() est une méthode statique de l'objet Math, elle doit toujours être utilisée avec la syntaxe Math.atan2(), elle ne doit pas être utilisée comme la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`atan2()` est une méthode statique de l'objet `Math`, elle doit toujours être utilisée avec la syntaxe `Math.atan2()`, elle ne doit pas être utilisée comme la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.atan2()

    +### Utiliser `Math.atan2()` -
    Math.atan2(90, 15); // 1.4056476493802699
    +```js
    +Math.atan2(90, 15); // 1.4056476493802699
     Math.atan2(15, 90); // 0.16514867741462683
     
     Math.atan2( ±0, -0 );               // ±PI.
     Math.atan2( ±0, +0 );               // ±0.
    -Math.atan2( ±0, -x );               // ±PI pour x > 0.
    -Math.atan2( ±0, x );                // ±0 pour x > 0.
    -Math.atan2( -y, ±0 );               // -PI/2 pour y > 0.
    -Math.atan2( y, ±0 );                // PI/2 pour y > 0.
    -Math.atan2( ±y, -Infinity );        // ±PI pour y qui est un nombre fini > 0.
    -Math.atan2( ±y, +Infinity );        // ±0 pour y qui est un nombre fini > 0.
    +Math.atan2( ±0, -x );               // ±PI pour x > 0.
    +Math.atan2( ±0, x );                // ±0 pour x > 0.
    +Math.atan2( -y, ±0 );               // -PI/2 pour y > 0.
    +Math.atan2( y, ±0 );                // PI/2 pour y > 0.
    +Math.atan2( ±y, -Infinity );        // ±PI pour y qui est un nombre fini > 0.
    +Math.atan2( ±y, +Infinity );        // ±0 pour y qui est un nombre fini > 0.
     Math.atan2( ±Infinity, x );         // ±PI/2 pour x qui est un nombre fini.
     Math.atan2( ±Infinity, -Infinity ); // ±3*PI/4.
     Math.atan2( ±Infinity, +Infinity ); // ±PI/4.
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.5', 'Math.atan2')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.atan2', 'Math.atan2')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.atan2', 'Math.atan2')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.atan2")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.5', 'Math.atan2')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.atan2', 'Math.atan2')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.atan2', 'Math.atan2')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.atan2")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.sin()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/atanh/index.md b/files/fr/web/javascript/reference/global_objects/math/atanh/index.md index f159f35630..ce23e62351 100644 --- a/files/fr/web/javascript/reference/global_objects/math/atanh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/atanh/index.md @@ -10,90 +10,71 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/atanh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.atanh() renvoie l'arc tangente hyperbolique d'un nombre :

    +La fonction **`Math.atanh()`** renvoie l'arc tangente hyperbolique d'un nombre : -

    x(-1,1),Math.atanh(x)=arctanh(x)= le seul y  tel quetanh(y)=x\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ the unique } \; y \; \text{such that} \; \tanh(y) = x

    +x(-1,1),Math.atanh(x)=arctanh(x)= le seul y  tel quetanh(y)=x\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ the unique } \; y \; \text{such that} \; \tanh(y) = x -
    {{EmbedInteractiveExample("pages/js/math-atanh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-atanh.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.atanh(x)
    + Math.atanh(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'arc tangente hyperbolique du nombre passé en argument.

    +L'arc tangente hyperbolique du nombre passé en argument. -

    Description

    +## Description -

    atanh() est une méthode statique de Math, il faut utiliser la syntaxe Math.atanh(), et non pas une méthode d'un objet Math créé sur mesure (Math n'est pas un constructeur).

    +`atanh()` est une méthode statique de `Math`, il faut utiliser la syntaxe `Math.atanh()`, et non pas une méthode d'un objet `Math` créé sur mesure (`Math` n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.atanh()

    +### Utiliser `Math.atanh()` -
    Math.atanh(-2);  // NaN
    +```js
    +Math.atanh(-2);  // NaN
     Math.atanh(-1);  // -Infinity
     Math.atanh(0);   // 0
     Math.atanh(0.5); // 0.5493061443340548
     Math.atanh(1);   // Infinity
     Math.atanh(2);   // NaN
    -
    +``` -

    Pour les valeurs strictement inférieures à -1 ou strictement supérieures à 1, {{jsxref("NaN")}} sera renvoyé.

    +Pour les valeurs strictement inférieures à -1 ou strictement supérieures à 1, {{jsxref("NaN")}} sera renvoyé. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Pour |x|<1\left|x\right| < 1, on a la formule suivante : artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right)et on peut donc émuler la fonction avec :

    +Pour |x|<1\left|x\right| < 1, on a la formule suivante : artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right)et on peut donc émuler la fonction avec : -
    Math.atanh = Math.atanh || function(x) {
    +```js
    +Math.atanh = Math.atanh || function(x) {
       return Math.log((1+x)/(1-x)) / 2;
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES6', '#sec-math.atanh', 'Math.atanh')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.atanh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acosh()")}}
    • -
    • {{jsxref("Math.asinh()")}}
    • -
    • {{jsxref("Math.cosh()")}}
    • -
    • {{jsxref("Math.sinh()")}}
    • -
    • {{jsxref("Math.tanh()")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.atanh', 'Math.atanh')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.atanh")}} + +## Voir aussi + +- {{jsxref("Math.acosh()")}} +- {{jsxref("Math.asinh()")}} +- {{jsxref("Math.cosh()")}} +- {{jsxref("Math.sinh()")}} +- {{jsxref("Math.tanh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/cbrt/index.md b/files/fr/web/javascript/reference/global_objects/math/cbrt/index.md index fb9daa3cc0..8fe0f00c04 100644 --- a/files/fr/web/javascript/reference/global_objects/math/cbrt/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/cbrt/index.md @@ -11,38 +11,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt original_slug: Web/JavaScript/Reference/Objets_globaux/Math/cbrt --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.cbrt() renvoie la racine cubique (le nom anglais étant cubic root) d'un nombre :

    +La fonction **`Math.cbrt()`** renvoie la racine cubique (le nom anglais étant _cubic root_) d'un nombre : -

    Math.cbrt(x)=x3=le seulytel quey3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{the unique} \; y \; \text{such that} \; y^3 = x

    +Math.cbrt(x)=x3=le seulytel quey3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{the unique} \; y \; \text{such that} \; y^3 = x -
    {{EmbedInteractiveExample("pages/js/math-cbrt.html")}}
    +{{EmbedInteractiveExample("pages/js/math-cbrt.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.cbrt(x)
    + Math.cbrt(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La racine cubique du nombre passé en argument.

    +La racine cubique du nombre passé en argument. -

    Description

    +## Description -

    cbrt() étant une méthode statique de Math, il faut utiliser Math.cbrt(), et non pas la méthode d'un autre objet créé (Math n'est pas un constructeur).

    +`cbrt()` étant une méthode statique de `Math`, il faut utiliser `Math.cbrt()`, et non pas la méthode d'un autre objet créé (`Math` n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.cbrt()

    +### Utiliser `Math.cbrt()` -
    Math.cbrt(NaN); // NaN
    +```js
    +Math.cbrt(NaN); // NaN
     Math.cbrt(-1); // -1
     Math.cbrt(-0); // -0
     Math.cbrt(-Infinity); // -Infinity
    @@ -50,39 +49,21 @@ Math.cbrt(0); // 0
     Math.cbrt(1); // 1
     Math.cbrt(Infinity); // Infinity
     Math.cbrt(null); // 0
    -Math.cbrt(2);  // 1.2599210498948732
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.cbrt', 'Math.cbrt')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.cbrt")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.pow()")}}
    • -
    • {{jsxref("Math.sqrt()")}}
    • -
    +Math.cbrt(2);  // 1.2599210498948732 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.cbrt', 'Math.cbrt')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.cbrt")}} + +## Voir aussi + +- {{jsxref("Math.pow()")}} +- {{jsxref("Math.sqrt()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/ceil/index.md b/files/fr/web/javascript/reference/global_objects/math/ceil/index.md index 93e8919368..fced464d1b 100644 --- a/files/fr/web/javascript/reference/global_objects/math/ceil/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/ceil/index.md @@ -9,52 +9,51 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil original_slug: Web/JavaScript/Reference/Objets_globaux/Math/ceil --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.ceil() retourne le plus petit entier supérieur ou égal au nombre donné.

    +La fonction **`Math.ceil()`** retourne le plus petit entier supérieur ou égal au nombre donné. -
    {{EmbedInteractiveExample("pages/js/math-ceil.html")}}
    +{{EmbedInteractiveExample("pages/js/math-ceil.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.ceil(x) 
    + Math.ceil(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le plus petit entier qui est supérieur ou égal au nombre donné.

    +Le plus petit entier qui est supérieur ou égal au nombre donné. -

    Description

    +## Description -

    ceil() est une méthode statique de Math. Elle doit être utilisée avec la syntaxe Math.ceil(), plutôt que comme une méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`ceil()` est une méthode statique de `Math`. Elle doit être utilisée avec la syntaxe `Math.ceil()`, plutôt que comme une méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    -

    Note : Math.ceil(null) renverra 0 et pas {{jsxref("NaN")}}.

    -
    +> **Note :** `Math.ceil(null)` renverra `0` et pas {{jsxref("NaN")}}. -

    Exemples

    +## Exemples -

    Utiliser Math.ceil()

    +### Utiliser `Math.ceil()` -

    Voici un exemple d'utilisation de Math.ceil().

    +Voici un exemple d'utilisation de `Math.ceil()`. -
    Math.ceil(.95);    // 1
    +```js
    +Math.ceil(.95);    // 1
     Math.ceil(4);      // 4
     Math.ceil(7.004);  // 8
     Math.ceil(-0.95);  // -0
     Math.ceil(-4);     // -4
     Math.ceil(-7.004); // -7
    -Math.ceil(null);   // 0
    +Math.ceil(null); // 0 +``` -

    Arrondi décimal

    +### Arrondi décimal -
    // Fermeture
    +```js
    +// Fermeture
     (function(){
     
     	/**
    @@ -74,7 +73,7 @@ Math.ceil(null);   // 0
    exp = +exp; // Si value n'est pas un nombre // ou si l'exposant n'est pas entier - if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { return NaN; } // Décalage @@ -125,50 +124,25 @@ Math.ceil10(55.51, -1); // 55.6 Math.ceil10(51, 1); // 60 Math.ceil10(-55.59, -1); // -55.5 Math.ceil10(-59, 1); // -50 -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.ceil")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.floor()")}}
    • -
    • {{jsxref("Math.round()")}}
    • -
    • {{jsxref("Math.sign()")}}
    • -
    • {{jsxref("Math.trunc()")}}{
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.ceil', 'Math.ceil')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.ceil")}} + +## Voir aussi + +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.floor()")}} +- {{jsxref("Math.round()")}} +- {{jsxref("Math.sign()")}} +- {{jsxref("Math.trunc()")}}{ diff --git a/files/fr/web/javascript/reference/global_objects/math/clz32/index.md b/files/fr/web/javascript/reference/global_objects/math/clz32/index.md index c3298823a6..416bc22e28 100644 --- a/files/fr/web/javascript/reference/global_objects/math/clz32/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/clz32/index.md @@ -11,82 +11,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/clz32 --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.clz32() renvoie le nombre de zéros de tête dans la représentation binaire sur 32 bits d'un nombre.

    +La fonction **`Math.clz32()`** renvoie le nombre de zéros de tête dans la représentation binaire sur 32 bits d'un nombre. -
    {{EmbedInteractiveExample("pages/js/math-clz32.html")}}
    +{{EmbedInteractiveExample("pages/js/math-clz32.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.clz32(x)
    -
    + Math.clz32(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur retournée

    +### Valeur retournée -

    Le nombre de bits à zéro en tête de la représentation binaire sur 32 bits du nombre donné.

    +Le nombre de bits à zéro en tête de la représentation binaire sur 32 bits du nombre donné. -

    Description

    +## Description -

    "clz32" est un raccourci pour CountLeadingZeroes32 (en français, « compter les zéros de tête »).

    +"`clz32`" est un raccourci pour CountLeadingZeroes32 (en français, « compter les zéros de tête »). -

    Si x n'est pas un nombre, il sera d'abord converti en nombre puis converti en un entier non signé sur 32 bits.

    +Si `x` n'est pas un nombre, il sera d'abord converti en nombre puis converti en un entier non signé sur 32 bits. -

    Si l'entier non signé sur 32 bits résultant vaut 0, la fonction renverra 32, car tous les bits valent 0.

    +Si l'entier non signé sur 32 bits résultant vaut `0`, la fonction renverra `32`, car tous les bits valent `0`. -

    Cette fonction est particulièrement utile aux systèmes qui compilent du code JavaScript, comme Emscripten.

    +Cette fonction est particulièrement utile aux systèmes qui compilent du code JavaScript, comme [Emscripten](/fr/docs/Emscripten). -

    Exemples

    +## Exemples -
    Math.clz32(1)                // 31
    +```js
    +Math.clz32(1)                // 31
     Math.clz32(1000)             // 22
     Math.clz32()                 // 32
     
     var liste = [NaN, Infinity, -Infinity, 0, -0, null, undefined, 'machin', {}, []];
    -liste.every(n => Math.clz32(n) == 32); // true
    +liste.every(n => Math.clz32(n) == 32); // true
     
     Math.clz32(true)             // 31
     Math.clz32(3.5)              // 30
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaire
    {{SpecName('ES2015', '#sec-math.clz32', 'Math.clz32')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.clz32', 'Math.clz32')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.clz32")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math")}}
    • -
    • {{jsxref("Math.imul")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaire | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.clz32', 'Math.clz32')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.clz32', 'Math.clz32')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.clz32")}} + +## Voir aussi + +- {{jsxref("Math")}} +- {{jsxref("Math.imul")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/cos/index.md b/files/fr/web/javascript/reference/global_objects/math/cos/index.md index 2015708e27..9b78bfd357 100644 --- a/files/fr/web/javascript/reference/global_objects/math/cos/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/cos/index.md @@ -9,87 +9,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos original_slug: Web/JavaScript/Reference/Objets_globaux/Math/cos --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.cos() retourne le cosinus d'un angle dont la valeur est exprimée en radians.

    +La fonction **`Math.cos()`** retourne le [cosinus](https://fr.wikipedia.org/wiki/Cosinus) d'un angle dont la valeur est exprimée en [radians](https://fr.wikipedia.org/wiki/Radian). -
    {{EmbedInteractiveExample("pages/js/math-cos.html")}}
    +{{EmbedInteractiveExample("pages/js/math-cos.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.cos(x)
    + Math.cos(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Une valeur numérique (exprimée en radians).
    -
    +- `x` + - : Une valeur numérique (exprimée en radians). -

    Valeur de retour

    +### Valeur de retour -

    Le cosinus de l'angle fourni en argument (exprimé en radians).

    +Le cosinus de l'angle fourni en argument (exprimé en radians). -

    Description

    +## Description -

    La méthode Math.cos() renvoie une valeur numérique comprise entre -1 et 1. Cela représente la valeur du cosinus de l'angle correspondant à cette valeur.

    +La méthode `Math.cos()` renvoie une valeur numérique comprise entre -1 et 1. Cela représente la valeur du cosinus de l'angle correspondant à cette valeur. -

    cos est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.cos(), ne pas utiliser une méthode d'un objet qui aurait été créé (Math n'est pas un constructeur).

    +`cos` est une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.cos()`, ne pas utiliser une méthode d'un objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.cos()

    +### Utiliser `Math.cos()` -
    Math.cos(0);           // 1
    +```js
    +Math.cos(0);           // 1
     Math.cos(1);           // 0.5403023058681398
     
     Math.cos(Math.PI);     // -1
     Math.cos(2 * Math.PI); // 1
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.7', 'Math.cos')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.cos', 'Math.cos')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.cos")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.7', 'Math.cos')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.cos', 'Math.cos')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.cos")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.sin()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/cosh/index.md b/files/fr/web/javascript/reference/global_objects/math/cosh/index.md index 76c7d9fe17..d0306213b6 100644 --- a/files/fr/web/javascript/reference/global_objects/math/cosh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/cosh/index.md @@ -11,93 +11,77 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/cosh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/cosh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.cosh() renvoie le cosinus hyperbolique d'un nombre, défini par :

    +La fonction **`Math.cosh()`** renvoie le cosinus hyperbolique d'un nombre, défini par : -

    Math.cosh(x)=ex+e-x2\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2}

    +Math.cosh(x)=ex+e-x2\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2} -
    {{EmbedInteractiveExample("pages/js/math-cosh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-cosh.html")}} +(Voir la page sur {{jsxref("Objets_globaux/Math/E","e","",1)}}) +## Syntaxe -

    (Voir la page sur {{jsxref("Objets_globaux/Math/E","e","",1)}})

    + Math.cosh(x) -

    Syntaxe

    +### Paramètres -
    Math.cosh(x)
    +- `x` + - : Un nombre. -

    Paramètres

    +### Valeur de retour -
    -
    x
    -
    Un nombre.
    -
    +Le cosinus hyperbolique du nombre passé en argument. -

    Valeur de retour

    +## Description -

    Le cosinus hyperbolique du nombre passé en argument.

    +`cosh()` étant une méthode statique de `Math`, il faut utiliser `Math.cosh()` et non pas la méthode d'un objet `Math` créé sur mesure (`Math` n'est pas un constructeur). -

    Description

    +## Exemple -

    cosh() étant une méthode statique de Math, il faut utiliser Math.cosh() et non pas la méthode d'un objet Math créé sur mesure (Math n'est pas un constructeur).

    +### Utiliser `Math.cosh()` -

    Exemple

    - -

    Utiliser Math.cosh()

    - -
    Math.cosh(0);  // 1
    +```js
    +Math.cosh(0);  // 1
     Math.cosh(1);  // 1.5430806348152437
     Math.cosh(-1); // 1.5430806348152437
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette fonction peut être émulée grâce à la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} :

    +Cette fonction peut être émulée grâce à la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} : -
    Math.cosh = Math.cosh || function(x) {
    +```js
    +Math.cosh = Math.cosh || function(x) {
         return (Math.exp(x) + Math.exp(-x)) / 2;
    -}
    +} +``` -

    On peut également utiliser un unique appel à {{jsxref("Objets_globaux/Math/exp", "exp()")}} :

    +On peut également utiliser un unique appel à {{jsxref("Objets_globaux/Math/exp", "exp()")}} : -
    Math.cosh = Math.cosh || function(x) {
    +```js
    +Math.cosh = Math.cosh || function(x) {
         var y = Math.exp(x);
         return (y + 1 / y) / 2;
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.cosh', 'Math.cosh')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.cosh', 'Math.cosh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.cosh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acosh()")}}
    • -
    • {{jsxref("Math.asinh()")}}
    • -
    • {{jsxref("Math.atanh()")}}
    • -
    • {{jsxref("Math.sinh()")}}
    • -
    • {{jsxref("Math.tanh()")}}
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.cosh', 'Math.cosh')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.cosh', 'Math.cosh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.cosh")}} + +## Voir aussi + +- {{jsxref("Math.acosh()")}} +- {{jsxref("Math.asinh()")}} +- {{jsxref("Math.atanh()")}} +- {{jsxref("Math.sinh()")}} +- {{jsxref("Math.tanh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/e/index.md b/files/fr/web/javascript/reference/global_objects/math/e/index.md index f4df99a2cb..540d7769eb 100644 --- a/files/fr/web/javascript/reference/global_objects/math/e/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/e/index.md @@ -9,74 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/E original_slug: Web/JavaScript/Reference/Objets_globaux/Math/E --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.E représente la base du logarithme naturel, e, et vaut environ 2.718.

    +La propriété **`Math.E`** représente la base du logarithme naturel, e, et vaut environ 2.718. -

    Math.E=e2.718\mathtt{\mi{Math.E}} = e \approx 2.718

    +Math.E=e2.718\mathtt{\mi{Math.E}} = e \approx 2.718 -
    {{EmbedInteractiveExample("pages/js/math-e.html")}}
    +{{EmbedInteractiveExample("pages/js/math-e.html")}}{{js_property_attributes(0,0,0)}} +## Description +`E` étant une propriété statique de `Math`, il doit toujours être utilisé avec la syntaxe `Math.E`, et non pas être appelé comme propriété d'un autre objet `Math` qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.E` -

    E étant une propriété statique de Math, il doit toujours être utilisé avec la syntaxe Math.E, et non pas être appelé comme propriété d'un autre objet Math qui aurait été créé (Math n'est pas un constructeur).

    +La fonction suivante renvoie la valeur de e : -

    Exemples

    +```js +function getNapier() { + return Math.E; +} -

    Utiliser Math.E

    +getNapier(); // 2.718281828459045 +``` -

    La fonction suivante renvoie la valeur de e :

    +## Spécifications -
    function getNapier() {
    -   return Math.E;
    -}
    +| Spécification                                                    | Statut                       | Commentaires                                          |
    +| ---------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                         | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.1', 'Math.E')}} | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.e', 'Math.E')}}     | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.e', 'Math.E')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.E")}}
    +
    +## Voir aussi
     
    -getNapier(); // 2.718281828459045
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.1', 'Math.E')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.e', 'Math.E')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.e', 'Math.E')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.E")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log1p()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/exp/index.md b/files/fr/web/javascript/reference/global_objects/math/exp/index.md index 29ac4ef407..e6be9fc5c3 100644 --- a/files/fr/web/javascript/reference/global_objects/math/exp/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/exp/index.md @@ -9,85 +9,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp original_slug: Web/JavaScript/Reference/Objets_globaux/Math/exp --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.exp() renvoie l'exponentielle d'un nombre (donnée par e^x, où x est la valeur passée en argument et e la valeur du {{jsxref("Objets_globaux/Math/E","nombre d'Euler (parfois appelé constante de Napier)","",1)}}.

    +La fonction **`Math.exp()`** renvoie l'exponentielle d'un nombre (donnée par `e^x`, où `x` est la valeur passée en argument et `e` la valeur du {{jsxref("Objets_globaux/Math/E","nombre d'Euler (parfois appelé constante de Napier)","",1)}}. -
    {{EmbedInteractiveExample("pages/js/math-exp.html")}}
    +{{EmbedInteractiveExample("pages/js/math-exp.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.exp(x)
    + Math.exp(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    -

    Un nombre.

    -
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    L'exponentielle du nombre passé en argument (e^x).

    +L'exponentielle du nombre passé en argument (`e^x`). -

    Description

    +## Description -

    exp() est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.exp(), elle ne doit pas être utilisée avec un objet qui aurait été créé (Math n'est pas un constructeur).

    +`exp()` est une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.exp()`, elle ne doit pas être utilisée avec un objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.exp()

    +### Utiliser `Math.exp()` -
    Math.exp(-1); // 0.36787944117144233
    +```js
    +Math.exp(-1); // 0.36787944117144233
     Math.exp(0);  // 1
    -Math.exp(1);  // 2.718281828459045
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.exp', 'Math.exp')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.exp")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.E")}}
    • -
    • {{jsxref("Math.expm1()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +Math.exp(1); // 2.718281828459045 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.exp', 'Math.exp')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.exp', 'Math.exp')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.exp")}} + +## Voir aussi + +- {{jsxref("Math.E")}} +- {{jsxref("Math.expm1()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} +- {{jsxref("Math.log1p()")}} +- {{jsxref("Math.log2()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/expm1/index.md b/files/fr/web/javascript/reference/global_objects/math/expm1/index.md index 372880a5df..2d8223041f 100644 --- a/files/fr/web/javascript/reference/global_objects/math/expm1/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/expm1/index.md @@ -11,81 +11,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/expm1 --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.expm1() renvoie e^x - 1, avec x l'argument donné et {{jsxref("Objets_globaux/Math/E","e")}} la base du logarithme nepérien.

    +La fonction **`Math.expm1()`** renvoie` e^x` - 1, avec `x` l'argument donné et {{jsxref("Objets_globaux/Math/E","e")}} la base du logarithme nepérien. -
    {{EmbedInteractiveExample("pages/js/math-expm1.html")}}
    +{{EmbedInteractiveExample("pages/js/math-expm1.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.expm1(x)
    + Math.expm1(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre qui représente e^x- 1x est la valeur passée en argument et e^x l'exponentielle du nombre.

    +Un nombre qui représente `e^x- 1` où `x` est la valeur passée en argument et `e^x` l'exponentielle du nombre. -

    Description

    +## Description -

    expm1() étant une méthode statique de Math, il faut utiliser Math.expm1()et non pas la méthode d'un autre objet qui aurait été créé sur mesure (Math n'est pas un constructeur).

    +`expm1()` étant une méthode statique de `Math`, il faut utiliser `Math.expm1()`et non pas la méthode d'un autre objet qui aurait été créé sur mesure (`Math `n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.expm1()

    +### Utiliser `Math.expm1()` -
    Math.expm1(-1); // -0.6321205588285577
    +```js
    +Math.expm1(-1); // -0.6321205588285577
     Math.expm1(0);  // 0
    -Math.expm1(1);  // 1.718281828459045
    +Math.expm1(1); // 1.718281828459045 +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette fonction peut être émulée en utilisant la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} :

    +Cette fonction peut être émulée en utilisant la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} : -
    Math.expm1 = Math.expm1 || function(x) {
    +```js
    +Math.expm1 = Math.expm1 || function(x) {
         return Math.exp(x) - 1;
    -};
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.expm1', 'Math.expm1')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.expm1")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.E")}}
    • -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +}; +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.expm1', 'Math.expm1')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.expm1")}} + +## Voir aussi + +- {{jsxref("Math.E")}} +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} +- {{jsxref("Math.log1p()")}} +- {{jsxref("Math.log2()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/floor/index.md b/files/fr/web/javascript/reference/global_objects/math/floor/index.md index 4b9a6e5422..65bc3d23fc 100644 --- a/files/fr/web/javascript/reference/global_objects/math/floor/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/floor/index.md @@ -9,89 +9,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor original_slug: Web/JavaScript/Reference/Objets_globaux/Math/floor --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.floor(x) renvoie le plus grand entier qui est inférieur ou égal à un nombre x.

    +La fonction **`Math.floor(x)`** renvoie le plus grand entier qui est inférieur ou égal à un nombre `x`. -
    {{EmbedInteractiveExample("pages/js/math-floor.html")}}
    +{{EmbedInteractiveExample("pages/js/math-floor.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.floor(x)
    + Math.floor(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre qui représente le plus grand entier inférieur ou égal à la valeur passée en argument.

    +Un nombre qui représente le plus grand entier inférieur ou égal à la valeur passée en argument. -

    Description

    +## Description -

    floor() est une méthode statique de l'objet Math, elle doit toujours être utilisée avec la syntaxe  Math.floor(), elle ne doit pas être utilisée avec un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`floor()` est une méthode statique de l'objet `Math`, elle doit toujours être utilisée avec la syntaxe  `Math.floor()`, elle ne doit pas être utilisée avec un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    -

    Note : Math.floor(null) renvoie 0 et pas {{jsxref("NaN")}}.

    -
    +> **Note :** `Math.floor(null)` renvoie `0` et pas {{jsxref("NaN")}}. -

    Exemples

    +## Exemples -

    Utiliser Math.floor

    +### Utiliser `Math.floor` -
    Math.floor( 45.95); //  45
    +```js
    +Math.floor( 45.95); //  45
     Math.floor( 45.05); //  45
     Math.floor(  4   ); //   4
     Math.floor(-45.05); // -46
     Math.floor(-45.95); // -46
     Math.floor(null);   // 0
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.9', 'Math.floor')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.floor', 'Math.floor')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.floor', 'Math.floor')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.floor")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.ceil()")}}
    • -
    • {{jsxref("Math.round()")}}
    • -
    • {{jsxref("Math.sign()")}}
    • -
    • {{jsxref("Math.trunc()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.9', 'Math.floor')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.floor', 'Math.floor')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.floor', 'Math.floor')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.floor")}} + +## Voir aussi + +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.ceil()")}} +- {{jsxref("Math.round()")}} +- {{jsxref("Math.sign()")}} +- {{jsxref("Math.trunc()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/fround/index.md b/files/fr/web/javascript/reference/global_objects/math/fround/index.md index 6b5ec47735..77cf804d99 100644 --- a/files/fr/web/javascript/reference/global_objects/math/fround/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/fround/index.md @@ -10,40 +10,39 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround original_slug: Web/JavaScript/Reference/Objets_globaux/Math/fround --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.fround() renvoie le nombre flottant à précision simple sur 32 bits qui est le plus proche du nombre fourni.

    +La fonction **`Math.fround()`** renvoie le nombre flottant à [précision simple](https://en.wikipedia.org/wiki/Single_precision "link to the wikipedia page on single precision") sur 32 bits qui est le plus proche du nombre fourni. -
    {{EmbedInteractiveExample("pages/js/math-fround.html")}}
    +{{EmbedInteractiveExample("pages/js/math-fround.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.fround(x)
    + Math.fround(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le nombre flottant à précision simple sur 32 bits qui est le plus proche de la valeur fournie en argument.

    +Le nombre flottant à précision simple sur 32 bits qui est le plus proche de la valeur fournie en argument. -

    Description

    +## Description -

    Un moteur JavaScript utilise des nombres flottant à précision simple sur 64 bits. Cela permet d'obtenir une précision fine. Toutefois, lorsqu'on manipule des valeurs représentées sur 32 bits (par exemple des valeurs extraites d'un {{jsxref("Float32Array")}}) et qu'on souhaite comparer celles-ci avec des valeurs sur 32 bits, on peut obtenir des inégalités alors que les valeurs semblent identiques.

    +Un moteur JavaScript utilise des nombres flottant à précision simple sur 64 bits. Cela permet d'obtenir une précision fine. Toutefois, lorsqu'on manipule des valeurs représentées sur 32 bits (par exemple des valeurs extraites d'un {{jsxref("Float32Array")}}) et qu'on souhaite comparer celles-ci avec des valeurs sur 32 bits, on peut obtenir des inégalités alors que les valeurs semblent identiques. -

    Pour résoudre ce problème, on peut utiliser Math.fround() afin de transformer un nombre représenté sur 64 bits en un nombre représenté sur 32 bits. Pour le moteur JavaScript, la valeur sera toujours représentée sur 64 bits mais elle aura été « arrondie » à partir du 23e bit de la mantisse. Si le nombre passé en argument se situe en dehors de l'intervalle représentable sur 32 bits, la méthode renverra {{jsxref("Infinity")}} ou -Infinity.

    +Pour résoudre ce problème, on peut utiliser `Math.fround()` afin de transformer un nombre représenté sur 64 bits en un nombre représenté sur 32 bits. Pour le moteur JavaScript, la valeur sera toujours représentée sur 64 bits mais elle aura été « arrondie » à partir du 23e bit de la mantisse. Si le nombre passé en argument se situe en dehors de l'intervalle représentable sur 32 bits, la méthode renverra {{jsxref("Infinity")}} ou `-Infinity`. -

    fround étant une méthode statique de Math, il faut utiliser Math.fround() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`fround `étant une méthode statique de `Math`, il faut utiliser `Math.fround()` et non pas la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.fround()

    +### Utiliser `Math.fround()` -
    Math.fround(0);     // 0
    +```js
    +Math.fround(0);     // 0
     Math.fround(1);     // 1
     
     // 1.337 ne peut pas être représenté correctement
    @@ -51,36 +50,20 @@ Math.fround(1);     // 1
     Math.fround(1.337); // 1.3370000123977661
     
     Math.fround(1.5);   // 1.5
    -Math.fround(NaN);   // NaN
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.fround', 'Math.fround')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.fround")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.round()")}}
    • -
    +Math.fround(NaN); // NaN +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.fround', 'Math.fround')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.fround")}} + +## Voir aussi + +- {{jsxref("Math.round()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/hypot/index.md b/files/fr/web/javascript/reference/global_objects/math/hypot/index.md index bba9aaebe8..977f6c4965 100644 --- a/files/fr/web/javascript/reference/global_objects/math/hypot/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/hypot/index.md @@ -11,59 +11,59 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot original_slug: Web/JavaScript/Reference/Objets_globaux/Math/hypot --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.hypot() renvoie la racine carrée de la somme des carrés de ses arguments. On peut également la définir avec la formule suivante :

    +La fonction **`Math.hypot()`** renvoie la racine carrée de la somme des carrés de ses arguments. On peut également la définir avec la formule suivante : -

    Math.hypot(v1,v2,,vn)=i=1nvi2=v12+v22++vn2\mathtt{\operatorname{Math.hypot}(v_1, v_2, \dots, v_n)} = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}

    +Math.hypot(v1,v2,,vn)=i=1nvi2=v12+v22++vn2\mathtt{\operatorname{Math.hypot}(v*1, v_2, \dots, v_n)} = \sqrt{\sum*{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2} -
    {{EmbedInteractiveExample("pages/js/math-hypot.html")}}
    +{{EmbedInteractiveExample("pages/js/math-hypot.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.hypot([valeur1[,valeur2, ...]]) 
    + Math.hypot([valeur1[,valeur2, ...]]) -

    Paramètres

    +### Paramètres -
    -
    valeur1, valeur2, ...
    -
    Des nombres.
    -
    +- `valeur1, valeur2, ...` + - : Des nombres. -

    Valeur de retour

    +### Valeur de retour -

    La racine carrée de la somme des carrés des arguments. S'il existe un des arguments qui ne peut pas être converti en un nombre, c'est la valeur {{jsxref("NaN")}} qui sera renvoyée.

    +La racine carrée de la somme des carrés des arguments. S'il existe un des arguments qui ne peut pas être converti en un nombre, c'est la valeur {{jsxref("NaN")}} qui sera renvoyée. -

    Description

    +## Description -

    hypot() étant une méthode statique de Math, il faut utiliser Math.hypot()et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`hypot()` étant une méthode statique de `Math`, il faut utiliser `Math.hypot()`et non pas la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Si aucun argument n'est donné, le résultat sera +0.Si, parmi les arguments, au moins un ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}.Si cette fonction est utilisée avec un argument : Math.hypot(x) sera équivalente à Math.abs(x).

    +Si aucun argument n'est donné, le résultat sera +0.Si, parmi les arguments, au moins un ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}.Si cette fonction est utilisée avec un argument : `Math.hypot(x)` sera équivalente à `Math.abs(x)`. -

    Cette fonction permet entre autres de gérer certains cas où, pour les grands nombres, l'utilisation de {{jsxref("Math.sqrt()")}} aurait renvoyé {{jsxref("Infinity")}} à cause des calculs intermédiaires.

    +Cette fonction permet entre autres de gérer certains cas où, pour les grands nombres, l'utilisation de {{jsxref("Math.sqrt()")}} aurait renvoyé {{jsxref("Infinity")}} à cause des calculs intermédiaires. -

    Exemples

    +## Exemples -

    Utiliser Math.hypot()

    +### Utiliser `Math.hypot()` -
    Math.hypot(3, 4)        // 5
    +```js
    +Math.hypot(3, 4)        // 5
     Math.hypot(3, 4, 5)     // 7.0710678118654755
     Math.hypot()            // 0
     Math.hypot(NaN)         // NaN
    -Math.hypot(3, 4, "toto") // NaN, +"toto" => NaN
    -Math.hypot(3, 4, "5")   // 7.0710678118654755, +"5" => 5
    +Math.hypot(3, 4, "toto") // NaN, +"toto" => NaN
    +Math.hypot(3, 4, "5")   // 7.0710678118654755, +"5" => 5
     Math.hypot(-3)          // 3, the same as Math.abs(-3)
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Si elle n'est pas disponible, cette fonction peut être émulée de la façon suivante :

    +Si elle n'est pas disponible, cette fonction peut être émulée de la façon suivante : -
    Math.hypot =  Math.hypot || function() {
    +```js
    +Math.hypot =  Math.hypot || function() {
         var y = 0;
         var length = arguments.length;
     
    -    for (var i = 0; i < length; i++) {
    +    for (var i = 0; i < length; i++) {
           if(arguments[i] === Infinity || arguments[i] === -Infinity) {
             return Infinity;
           }
    @@ -71,56 +71,40 @@ Math.hypot(-3)          // 3, the same as Math.abs(-3)
         }
         return Math.sqrt(y);
     };
    -
    +``` -

    Voici une seconde version qui évite les dépassements :

    +Voici une seconde version qui évite les dépassements : -
    Math.hypot = function (x, y) {
    +```js
    +Math.hypot = function (x, y) {
       // https://bugzilla.mozilla.org/show_bug.cgi?id=896264#c28
       var max = 0;
       var s = 0;
    -  for (var i = 0; i < arguments.length; i += 1) {
    +  for (var i = 0; i < arguments.length; i += 1) {
         var arg = Math.abs(Number(arguments[i]));
    -    if (arg > max) {
    +    if (arg > max) {
           s *= (max / arg) * (max / arg);
           max = arg;
         }
    -    s += arg === 0 && max === 0 ? 0 : (arg / max) * (arg / max);
    +    s += arg === 0 && max === 0 ? 0 : (arg / max) * (arg / max);
       }
       return max === 1 / 0 ? 1 / 0 : max * Math.sqrt(s);
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ES2015')}}Définition initiale
    {{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.hypot")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    • {{jsxref("Math.sqrt()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-math.hypot', 'Math.hypot')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.hypot")}} + +## Voir aussi + +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.pow()")}} +- {{jsxref("Math.sqrt()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/imul/index.md b/files/fr/web/javascript/reference/global_objects/math/imul/index.md index bdfb591384..507c94f070 100644 --- a/files/fr/web/javascript/reference/global_objects/math/imul/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/imul/index.md @@ -10,81 +10,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul original_slug: Web/JavaScript/Reference/Objets_globaux/Math/imul --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.imul() renvoie le résultat de la multiplication de deux nombres, calculée avec la représentation sur 32 bits de ces nombres, à la façon du langage C.

    +La fonction **`Math.imul()`** renvoie le résultat de la multiplication de deux nombres, calculée avec la représentation sur 32 bits de ces nombres, à la façon du langage C. -
    {{EmbedInteractiveExample("pages/js/math-imul.html")}}
    +{{EmbedInteractiveExample("pages/js/math-imul.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.imul(a, b)
    + Math.imul(a, b) -

    Paramètres

    +### Paramètres -
    -
    a
    -
    Le premier nombre.
    -
    b
    -
    Le second nombre.
    -
    +- `a` + - : Le premier nombre. +- `b` + - : Le second nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le résultat de la multiplication sur 32 bits des valeurs passées en argument (comme en C).

    +Le résultat de la multiplication sur 32 bits des valeurs passées en argument (comme en C). -

    Description

    +## Description -

    Math.imul() permet d'effectuer une multiplication rapide pour des entiers sur 32 bits avec une sémantique proche du langage C. Cela est utile pour des aspects de performance, notamment pour des projets comme Emscripten. imul() étant une méthode statique de Math, il faut utiliser Math.imul() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur). Attention à l'utilisation de nombres flottants avec Math.imul() car cela implique une opération de conversion des flottants vers les entiers pour la multiplication puis une opération de conversion du résultat en flottant. Dans la pratique, Math.imul() est notamment pertinent pour asm.js.

    +`Math.imul()` permet d'effectuer une multiplication rapide pour des entiers sur 32 bits avec une sémantique proche du langage C. Cela est utile pour des aspects de performance, notamment pour des projets comme [Emscripten](/fr/docs/Mozilla/Projects/Emscripten). `imul() `étant une méthode statique de `Math`, il faut utiliser `Math.imul()` et non pas la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). Attention à l'utilisation de nombres flottants avec `Math.imul()` car cela implique une opération de conversion des flottants vers les entiers pour la multiplication puis une opération de conversion du résultat en flottant. Dans la pratique, ` Math``.imul() ` est notamment pertinent pour asm.js. -

    Exemples

    +## Exemples -

    Utiliser Math.imul()

    +### Utiliser `Math.imul()` -
    Math.imul(2, 4);          // 8
    +```js
    +Math.imul(2, 4);          // 8
     Math.imul(-1, 8);         //-8
     Math.imul(-2, -2);        // 4
     Math.imul(0xffffffff, 5); //-5
     Math.imul(0xfffffffe, 5); //-10
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Si elle n'est pas disponible, cette fonction peut être émulée de la façon suivante :

    +Si elle n'est pas disponible, cette fonction peut être émulée de la façon suivante : -
    Math.imul = Math.imul || function(a, b) {
    -  var ah  = (a >>> 16) & 0xffff;
    -  var al = a & 0xffff;
    -  var bh  = (b >>> 16) & 0xffff;
    -  var bl = b & 0xffff;
    +```js
    +Math.imul = Math.imul || function(a, b) {
    +  var ah  = (a >>> 16) & 0xffff;
    +  var al = a & 0xffff;
    +  var bh  = (b >>> 16) & 0xffff;
    +  var bl = b & 0xffff;
       // Le décalage par 0 rétablit le signe de la partie haute
       // le |0 final convertit la valeur non-signée en une valeur signée
    -  return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
    +  return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.imul', 'Math.imul')}}{{Spec2('ES6')}}Définition initiale
    {{SpecName('ESDraft', '#sec-math.imul', 'Math.imul')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.imul")}}

    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ------------------- | +| {{SpecName('ES6', '#sec-math.imul', 'Math.imul')}} | {{Spec2('ES6')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-math.imul', 'Math.imul')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.imul")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/index.md b/files/fr/web/javascript/reference/global_objects/math/index.md index 86ab1bee47..f0fd2ba0b4 100644 --- a/files/fr/web/javascript/reference/global_objects/math/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/index.md @@ -8,163 +8,138 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math original_slug: Web/JavaScript/Reference/Objets_globaux/Math --- -
    {{JSRef}}
    - -

    L'objet Math est un objet natif dont les méthodes et propriétés permettent l'utilisation de constantes et fonctions mathématiques. Cet objet n'est pas une fonction.

    - -
    -

    Attention : Math fonctionne avec le type {{jsxref("Number")}}. Il ne fonctionne pas avec les grands entiers/{{jsxref("BigInt")}}.

    -
    - -

    Description

    - -

    Contrairement aux autres objets globaux, Math n'est pas un constructeur. Toutes les propriétés et les méthodes de Math sont statiques (pour éventuellement étendre cette API, ce qui est fortement déconseillé, on n'utilisera donc pas Math.prototype).

    - -

    Pour accéder à la constante PI, on utilise Math.PI.
    - Pour accéder à la fonction sinus, on utilise Math.sin(x)x est l'argument de cette méthode.

    - -

    Les constantes sont définies avec la précision des nombres réels en JavaScript.

    - -

    Propriétés

    - -
    -
    {{jsxref("Math.E")}}
    -
    Nombre d'Euler, la base des logarithmes naturels, environ 2,718.
    -
    {{jsxref("Math.LN2")}}
    -
    Logarithme naturel de 2, environ 0,693.
    -
    {{jsxref("Math.LN10")}}
    -
    Logarithme naturel de 10, environ 2,302.
    -
    {{jsxref("Math.LOG2E")}}
    -
    Logarithme de base 2 de E, environ 1,442.
    -
    {{jsxref("Math.LOG10E")}}
    -
    Logarithme de base 10 de E, environ 0,434.
    -
    {{jsxref("Math.PI")}}
    -
    Quotient de la circonférence d'un cercle par son diamètre, environ 3,14159.
    -
    {{jsxref("Math.SQRT1_2")}}
    -
    Racine carrée de 1/2 ; équivalent de 1 sur la racine carrée de 2, environ 0,707.
    -
    {{jsxref("Math.SQRT2")}}
    -
    Racine carrée de 2, environ 1,414.
    -
    - -

    Méthodes

    - -

    Note : Les fonctions trigonométriques (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) acceptent ou retournent des angles en radians. Pour convertir des degrés en radians, multipliez la valeur en degrés par (Math.PI / 180). Pour passer des radians en degrés, divisez la valeur en radians par (Math.PI / 180).

    - -

    Note : La précision des fonctions mathématiques dépend notamment de l'implémentation. Cela signifie que différents navigateurs peuvent fournir des résultats différents. On peut même avoir un même moteur JavaScript qui, sur des architectures et/ou des systèmes d'exploitation différents, fournit des résultats différents.

    - -
    -
    {{jsxref("Objets_globaux/Math/abs", "Math.abs(x)")}}
    -
    Retourne la valeur absolue d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/acos", "Math.acos(x)")}}
    -
    Retourne l'arc cosinus d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/acosh", "Math.acosh(x)")}}
    -
    Retourne l'arc cosinus hyperbolique d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/asin", "Math.asin(x)")}}
    -
    Retourne l'arc sinus d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/asinh", "Math.asinh(x)")}}
    -
    Retourne l'arc sinus hyperbolique d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/atan", "Math.atan(x)")}}
    -
    Retourne l'arc tangente d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/atanh", "Math.atanh(x)")}}
    -
    Retourne l'arc tangente hyperbolique d'un nombre
    -
    {{jsxref("Objets_globaux/Math/atan2", "Math.atan2(y, x)")}}
    -
    Retourne l'arc tangente du quotient de ses arguments.
    -
    {{jsxref("Objets_globaux/Math/cbrt", "Math.cbrt(x)")}}
    -
    Renvoie la racine cubique d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/ceil", "Math.ceil(x)")}}
    -
    Retourne le plus petit entier supérieur ou égal à la valeur passée en paramètre.
    -
    {{jsxref("Objets_globaux/Math/clz32", "Math.clz32(x)")}}
    -
    Renvoie le nombre de zéros qui préfixent un entier sur 32 bits.
    -
    {{jsxref("Objets_globaux/Math/cos", "Math.cos(x)")}}
    -
    Retourne le cosinus d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/cosh", "Math.cosh(x)")}}
    -
    Renvoie le cosinus hyperbolique d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/exp", "Math.exp(x)")}}
    -
    Renvoie l'exponentielle d'un nombre (soit E^nombre) avec E la constante d'Euler (2,718...).
    -
    {{jsxref("Objets_globaux/Math/expm1", "Math.expm1(x)")}}
    -
    Renvoie le résultat de 1 moins l'exponentielle d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/floor", "Math.floor(x)")}}
    -
    Retourne le plus grand entier inférieur ou égal à la valeur passée en paramètre.
    -
    {{jsxref("Objets_globaux/Math/fround", "Math.fround(x)")}}
    -
    Renvoie le nombre flottant exprimé sur 32 bits le plus proche de l'argument.
    -
    {{jsxref("Objets_globaux/Math/hypot", "Math.hypot([x[,y[,…]]])")}}
    -
    Retourne la racine carré de la somme des carrés des arguments.
    -
    {{jsxref("Objets_globaux/Math/imul", "Math.imul(x, y)")}}
    -
    Retourne le résultat de la multiplication d'entiers sur 32 bits.
    -
    {{jsxref("Objets_globaux/Math/log", "Math.log(x)")}}
    -
    Retourne le logarithme naturel (loge) d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/log1p", "Math.log1p(x)")}}
    -
    Retourne le logarithme naturel de 1 + un nombre.
    -
    {{jsxref("Objets_globaux/Math/log10", "Math.log10(x)")}}
    -
    Retourne le logarithme en base 10 d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/log2", "Math.log2(x)")}}
    -
    Retourne le logarithme en base 2 d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/max", "Math.max([x[,y[,…]]])")}}
    -
    Retourne la plus grande valeur d'une liste de nombres.
    -
    {{jsxref("Objets_globaux/Math/min", "Math.min([x[,y[,…]]])")}}
    -
    Retourne la plus petite valeur d'une liste de nombres.
    -
    {{jsxref("Objets_globaux/Math/pow", "Math.pow(x,y)")}}
    -
    Retourne le calcul de x à la puissance y (x correspond à la base et y à l'exposant).
    -
    {{jsxref("Objets_globaux/Math/random", "Math.random()")}}
    -
    Retourne un nombre pseudo-aléatoire compris entre 0 (inclus) et 1 (exclu).
    -
    {{jsxref("Objets_globaux/Math/round", "Math.round(x)")}}
    -
    Retourne l'arrondi d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/sign", "Math.sign(x)")}}
    -
    Retourne le signe d'un nombre, indiquant s'il est positif, négatif ou égal à zéro.
    -
    {{jsxref("Objets_globaux/Math/sin", "Math.sin(x)")}}
    -
    Retourne le sinus d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/sinh", "Math.sinh(x)")}}
    -
    Retourne le sinus hyperbolique d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/sqrt", "Math.sqrt(x)")}}
    -
    Retourne la racine carrée d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/tan", "Math.tan(x)")}}
    -
    Retourne la tangente d'un nombre.
    -
    {{jsxref("Objets_globaux/Math/tanh", "Math.tanh(x)")}}
    -
    Retourne la tangente hyperbolique d'un nombre
    -
    Math.toSource() {{Non-standard_inline}}
    -
    Renvoie la chaîne de caractères "Math".
    -
    {{jsxref("Objets_globaux/Math/trunc", "Math.trunc(x)")}}
    -
    Retourne la partie entière d'un nombre (la partie décimale est retirée).
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1
    {{SpecName('ES5.1', '#sec-15.8', 'Math')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math-object', 'Math')}}{{Spec2('ES6')}}Nouvelles méthodes ajoutées : {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} et {{jsxref("Math.clz32()", "clz32()")}}.
    {{SpecName('ESDraft', '#sec-math-object', 'Math')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number")}}
    • -
    +{{JSRef}} + +L'objet **`Math`** est un objet natif dont les méthodes et propriétés permettent l'utilisation de constantes et fonctions mathématiques. Cet objet n'est pas une fonction. + +> **Attention :** `Math` fonctionne avec le type {{jsxref("Number")}}. Il ne fonctionne pas avec les grands entiers/{{jsxref("BigInt")}}. + +## Description + +Contrairement aux autres objets globaux, `Math` n'est pas un constructeur. Toutes les propriétés et les méthodes de `Math` sont statiques (pour éventuellement étendre cette API, ce qui est fortement déconseillé, on n'utilisera donc pas `Math.prototype`). + +Pour accéder à la constante PI, on utilise `Math.PI`. +Pour accéder à la fonction _sinus_, on utilise `Math.sin(x)` où `x` est l'argument de cette méthode. + +Les constantes sont définies avec la précision des nombres réels en JavaScript. + +## Propriétés + +- {{jsxref("Math.E")}} + - : Nombre d'Euler, la base des logarithmes naturels, environ 2,718. +- {{jsxref("Math.LN2")}} + - : Logarithme naturel de 2, environ 0,693. +- {{jsxref("Math.LN10")}} + - : Logarithme naturel de 10, environ 2,302. +- {{jsxref("Math.LOG2E")}} + - : Logarithme de base 2 de E, environ 1,442. +- {{jsxref("Math.LOG10E")}} + - : Logarithme de base 10 de E, environ 0,434. +- {{jsxref("Math.PI")}} + - : Quotient de la circonférence d'un cercle par son diamètre, environ 3,14159. +- {{jsxref("Math.SQRT1_2")}} + - : Racine carrée de 1/2 ; équivalent de 1 sur la racine carrée de 2, environ 0,707. +- {{jsxref("Math.SQRT2")}} + - : Racine carrée de 2, environ 1,414. + +## Méthodes + +> **Note :** Les fonctions trigonométriques (`sin()`, `cos()`, `tan()`, `asin()`, `acos()`, `atan()`, `atan2()`) acceptent ou retournent des angles en radians. Pour convertir des degrés en radians, multipliez la valeur en degrés par (`Math.PI / 180`). Pour passer des radians en degrés, divisez la valeur en radians par (`Math.PI / 180`). + +> **Note :** La précision des fonctions mathématiques dépend notamment de l'implémentation. Cela signifie que différents navigateurs peuvent fournir des résultats différents. On peut même avoir un même moteur JavaScript qui, sur des architectures et/ou des systèmes d'exploitation différents, fournit des résultats différents. + +- {{jsxref("Objets_globaux/Math/abs", "Math.abs(x)")}} + - : Retourne la valeur absolue d'un nombre. +- {{jsxref("Objets_globaux/Math/acos", "Math.acos(x)")}} + - : Retourne l'arc cosinus d'un nombre. +- {{jsxref("Objets_globaux/Math/acosh", "Math.acosh(x)")}} + - : Retourne l'arc cosinus hyperbolique d'un nombre. +- {{jsxref("Objets_globaux/Math/asin", "Math.asin(x)")}} + - : Retourne l'arc sinus d'un nombre. +- {{jsxref("Objets_globaux/Math/asinh", "Math.asinh(x)")}} + - : Retourne l'arc sinus hyperbolique d'un nombre. +- {{jsxref("Objets_globaux/Math/atan", "Math.atan(x)")}} + - : Retourne l'arc tangente d'un nombre. +- {{jsxref("Objets_globaux/Math/atanh", "Math.atanh(x)")}} + - : Retourne l'arc tangente hyperbolique d'un nombre +- {{jsxref("Objets_globaux/Math/atan2", "Math.atan2(y, x)")}} + - : Retourne l'arc tangente du quotient de ses arguments. +- {{jsxref("Objets_globaux/Math/cbrt", "Math.cbrt(x)")}} + - : Renvoie la racine cubique d'un nombre. +- {{jsxref("Objets_globaux/Math/ceil", "Math.ceil(x)")}} + - : Retourne le plus petit entier supérieur ou égal à la valeur passée en paramètre. +- {{jsxref("Objets_globaux/Math/clz32", "Math.clz32(x)")}} + - : Renvoie le nombre de zéros qui préfixent un entier sur 32 bits. +- {{jsxref("Objets_globaux/Math/cos", "Math.cos(x)")}} + - : Retourne le cosinus d'un nombre. +- {{jsxref("Objets_globaux/Math/cosh", "Math.cosh(x)")}} + - : Renvoie le cosinus hyperbolique d'un nombre. +- {{jsxref("Objets_globaux/Math/exp", "Math.exp(x)")}} + - : Renvoie l'exponentielle d'un nombre (soit E^nombre) avec E la constante d'Euler (2,718...). +- {{jsxref("Objets_globaux/Math/expm1", "Math.expm1(x)")}} + - : Renvoie le résultat de 1 moins l'exponentielle d'un nombre. +- {{jsxref("Objets_globaux/Math/floor", "Math.floor(x)")}} + - : Retourne le plus grand entier inférieur ou égal à la valeur passée en paramètre. +- {{jsxref("Objets_globaux/Math/fround", "Math.fround(x)")}} + - : Renvoie le nombre flottant exprimé sur 32 bits le plus proche de l'argument. +- {{jsxref("Objets_globaux/Math/hypot", "Math.hypot([x[,y[,…]]])")}} + - : Retourne la racine carré de la somme des carrés des arguments. +- {{jsxref("Objets_globaux/Math/imul", "Math.imul(x, y)")}} + - : Retourne le résultat de la multiplication d'entiers sur 32 bits. +- {{jsxref("Objets_globaux/Math/log", "Math.log(x)")}} + + - : Retourne le logarithme naturel (log + + e + + ) d'un nombre. + +- {{jsxref("Objets_globaux/Math/log1p", "Math.log1p(x)")}} + - : Retourne le logarithme naturel de 1 + un nombre. +- {{jsxref("Objets_globaux/Math/log10", "Math.log10(x)")}} + - : Retourne le logarithme en base 10 d'un nombre. +- {{jsxref("Objets_globaux/Math/log2", "Math.log2(x)")}} + - : Retourne le logarithme en base 2 d'un nombre. +- {{jsxref("Objets_globaux/Math/max", "Math.max([x[,y[,…]]])")}} + - : Retourne la plus grande valeur d'une liste de nombres. +- {{jsxref("Objets_globaux/Math/min", "Math.min([x[,y[,…]]])")}} + - : Retourne la plus petite valeur d'une liste de nombres. +- {{jsxref("Objets_globaux/Math/pow", "Math.pow(x,y)")}} + - : Retourne le calcul de x à la puissance y (x correspond à la base et y à l'exposant). +- {{jsxref("Objets_globaux/Math/random", "Math.random()")}} + - : Retourne un nombre pseudo-aléatoire compris entre 0 (inclus) et 1 (exclu). +- {{jsxref("Objets_globaux/Math/round", "Math.round(x)")}} + - : Retourne l'arrondi d'un nombre. +- {{jsxref("Objets_globaux/Math/sign", "Math.sign(x)")}} + - : Retourne le signe d'un nombre, indiquant s'il est positif, négatif ou égal à zéro. +- {{jsxref("Objets_globaux/Math/sin", "Math.sin(x)")}} + - : Retourne le sinus d'un nombre. +- {{jsxref("Objets_globaux/Math/sinh", "Math.sinh(x)")}} + - : Retourne le sinus hyperbolique d'un nombre. +- {{jsxref("Objets_globaux/Math/sqrt", "Math.sqrt(x)")}} + - : Retourne la racine carrée d'un nombre. +- {{jsxref("Objets_globaux/Math/tan", "Math.tan(x)")}} + - : Retourne la tangente d'un nombre. +- {{jsxref("Objets_globaux/Math/tanh", "Math.tanh(x)")}} + - : Retourne la tangente hyperbolique d'un nombre +- `Math.toSource()` {{Non-standard_inline}} + - : Renvoie la chaîne de caractères `"Math"`. +- {{jsxref("Objets_globaux/Math/trunc", "Math.trunc(x)")}} + - : Retourne la partie entière d'un nombre (la partie décimale est retirée). + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1 | +| {{SpecName('ES5.1', '#sec-15.8', 'Math')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math-object', 'Math')}} | {{Spec2('ES6')}} | Nouvelles méthodes ajoutées : {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} et {{jsxref("Math.clz32()", "clz32()")}}. | +| {{SpecName('ESDraft', '#sec-math-object', 'Math')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math")}} + +## Voir aussi + +- {{jsxref("Number")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/ln10/index.md b/files/fr/web/javascript/reference/global_objects/math/ln10/index.md index f3818a3665..2dc07d7187 100644 --- a/files/fr/web/javascript/reference/global_objects/math/ln10/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/ln10/index.md @@ -9,74 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/LN10 --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.LN10 représente la valeur du logarithme naturel de 10, environ 2.302 :

    +La propriété **`Math.LN10`** représente la valeur du logarithme naturel de 10, environ 2.302 : -

    Math.LN10=ln(10)2.302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302

    +Math.LN10=ln(10)2.302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302 -
    {{EmbedInteractiveExample("pages/js/math-ln10.html")}}
    +{{EmbedInteractiveExample("pages/js/math-ln10.html")}}{{js_property_attributes(0,0,0)}} +## Description +`LN10` est une propriété statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.LN10`, et ne pas être appelée comme propriété d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.LN10` -

    LN10 est une propriété statique de Math, elle doit toujours être utilisée avec la syntaxe Math.LN10, et ne pas être appelée comme propriété d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +La fonction suivante renvoie le logarithme naturel de 10 : -

    Exemples

    +```js +function getNatLog10() { + return Math.LN10; +} -

    Utiliser Math.LN10

    +getNatLog10(); // 2.302585092994046 +``` -

    La fonction suivante renvoie le logarithme naturel de 10 :

    +## Spécifications -
    function getNatLog10() {
    -   return Math.LN10;
    -}
    +| Spécification                                                            | Statut                       | Commentaires                                          |
    +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                                 | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.2', 'Math.LN10')}}     | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.ln10', 'Math.LN10')}}     | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.ln10', 'Math.LN10')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.LN10")}}
    +
    +## Voir aussi
     
    -getNatLog10(); // 2.302585092994046
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.2', 'Math.LN10')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.ln10', 'Math.LN10')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.ln10', 'Math.LN10')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.LN10")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/ln2/index.md b/files/fr/web/javascript/reference/global_objects/math/ln2/index.md index 0a7fc56029..25019b09ca 100644 --- a/files/fr/web/javascript/reference/global_objects/math/ln2/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/ln2/index.md @@ -9,74 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/LN2 --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.LN2 représente le logarithme naturel de 2, environ 0.693:

    +La propriété **`Math.LN2`** représente le logarithme naturel de 2, environ 0.693: -

    Math.LN2=ln(2)0.693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693

    +Math.LN2=ln(2)0.693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693 -
    {{EmbedInteractiveExample("pages/js/math-ln2.html")}}
    +{{EmbedInteractiveExample("pages/js/math-ln2.html")}}{{js_property_attributes(0,0,0)}} +## Description +`LN2` est une propriété statique de l'objet `Math`, il doit toujours être utilisé avec la syntaxe `Math.LN2`, et non pas être utilisé comme la propriété d'un objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.LN2` -

    LN2 est une propriété statique de l'objet Math, il doit toujours être utilisé avec la syntaxe Math.LN2, et non pas être utilisé comme la propriété d'un objet qui aurait été créé (Math n'est pas un constructeur).

    +La fonction suivante renvoie le logarithme en base 2 d'un nombre en utilisant la valeur de `Math.LN2` : -

    Exemples

    +```js +function getLog2(x) { + return Math.log(x) / Math.LN2; +} -

    Utiliser Math.LN2

    +getLog2(256); // 8 +``` -

    La fonction suivante renvoie le logarithme en base 2 d'un nombre en utilisant la valeur de Math.LN2 :

    +## Spécifications -
    function getLog2(x) {
    -  return Math.log(x) / Math.LN2;
    -}
    +| Spécification                                                        | Statut                       | Commentaires                                          |
    +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                             | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.3', 'Math.LN2')}} | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.ln2', 'Math.LN2')}}     | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.ln2', 'Math.LN2')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.LN2")}}
    +
    +## Voir aussi
     
    -getLog2(256); // 8
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.3', 'Math.LN2')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.ln2', 'Math.LN2')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.ln2', 'Math.LN2')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.LN2")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log2()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log/index.md b/files/fr/web/javascript/reference/global_objects/math/log/index.md index 25d7a48e8b..14c55bd91d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log/index.md @@ -9,96 +9,73 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/log original_slug: Web/JavaScript/Reference/Objets_globaux/Math/log --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.log() renvoie le logarithme naturel (aussi appelé logarithme népérien) d'un nombre, défini par :

    +La fonction **`Math.log()`** renvoie le logarithme naturel (aussi appelé logarithme népérien) d'un nombre, défini par : -

    x>0,Math.log(x)=ln(x)=le seul ytel queey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique} \; y \; \text{such that} \; e^y = x

    +x>0,Math.log(x)=ln(x)=le seul ytel queey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique} \; y \; \text{such that} \; e^y = x -
    {{EmbedInteractiveExample("pages/js/math-log.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.log(x)
    + Math.log(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le logarithme naturelle de la valeur passée en argument. Si cette valeur est négative, c'est {{jsxref("NaN")}} qui est renvoyé.

    +Le logarithme naturelle de la valeur passée en argument. Si cette valeur est négative, c'est {{jsxref("NaN")}} qui est renvoyé. -

    Description

    +## Description -

    Si la valeur de l'argument est négative, la valeur renvoyée sera {{jsxref("NaN")}}. Si la valeur de l'argument est 0, la valeur de retour sera {{jsxref("Number.NEGATIVE_INFINITY", "-Infinity")}}.

    +Si la valeur de l'argument est négative, la valeur renvoyée sera {{jsxref("NaN")}}. Si la valeur de l'argument est `0`, la valeur de retour sera {{jsxref("Number.NEGATIVE_INFINITY", "-Infinity")}}. -

    log() est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.log(), elle ne doit pas être utilisée à partir d'un autre objet qui aurait été créé (Math n'est pas un constructeur). Si on veut utiliser les constantes données par les logarithmes naturels de 2 ou 10, on pourra utiliser les constantes {{jsxref("Math.LN2")}} ou {{jsxref("Math.LN10")}}. De même pour les logarithmes en base 2 ou en base 10, on pourra utiliser {{jsxref("Math.log2()")}} or {{jsxref("Math.log10()")}}.

    +`log()` est une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.log()`, elle ne doit pas être utilisée à partir d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). Si on veut utiliser les constantes données par les logarithmes naturels de 2 ou 10, on pourra utiliser les constantes {{jsxref("Math.LN2")}} ou {{jsxref("Math.LN10")}}. De même pour les logarithmes en base 2 ou en base 10, on pourra utiliser {{jsxref("Math.log2()")}} or {{jsxref("Math.log10()")}}. -

    Exemples

    +## Exemples -

    Utiliser Math.log()

    +### Utiliser `Math.log()` -
    Math.log(-1); // NaN, valeur en dehors de l'intervalle de définition
    +```js
    +Math.log(-1); // NaN, valeur en dehors de l'intervalle de définition
     Math.log(0);  // -Infinity
     Math.log(1);  // 0
    -Math.log(10); // 2.302585092994046
    +Math.log(10); // 2.302585092994046 +``` -

    Utiliser Math.log pour construire un logarithme sur une autre base

    +### Utiliser `Math.log` pour construire un logarithme sur une autre base -

    La fonction suivante renvoie le logarithme de y en base x (c'est-à-dire logx y):

    +La fonction suivante renvoie le logarithme de `y` en base `x` (c'est-à-dire logx y): -
    function getBaseLog(x, y) {
    +```js
    +function getBaseLog(x, y) {
         return Math.log(y) / Math.log(x);
    -}
    - -

    Si on exécute getBaseLog(10, 1000), on obtiendra 2.9999999999999996 en raison de l'arrondi du à la représentation en nombre flottant (le résultat exact étant 3).

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.10', 'Math.log')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.log', 'Math.log')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.log', 'Math.log')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.log")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +} +``` + +Si on exécute `getBaseLog(10, 1000)`, on obtiendra `2.9999999999999996` en raison de l'arrondi du à la représentation en nombre flottant (le résultat exact étant 3). + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.10', 'Math.log')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.log', 'Math.log')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.log', 'Math.log')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.log")}} + +## Voir aussi + +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log1p()")}} +- {{jsxref("Math.log10()")}} +- {{jsxref("Math.log2()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log10/index.md b/files/fr/web/javascript/reference/global_objects/math/log10/index.md index d0e65dca47..763738f700 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log10/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log10/index.md @@ -11,87 +11,70 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/log10 --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.log10() renvoie le logarithme en base 10 d'un nombre, donné par la formule :

    +La fonction **`Math.log10()`** renvoie le logarithme en base 10 d'un nombre, donné par la formule : -

    x>0,Math.log10(x)=log10(x)=l'unique  ytel que10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x

    +x>0,Math.log10(x)=log10(x)=l'unique  ytel que10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x -
    {{EmbedInteractiveExample("pages/js/math-log10.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log10.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.log10(x)
    + Math.log10(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le logarithme en base 10 du nombre passé en argument. Si cette valeur est négative, c'est {{jsxref("NaN")}} qui sera renvoyé.

    +Le logarithme en base 10 du nombre passé en argument. Si cette valeur est négative, c'est {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    Si la valeur de l'argument est strictement inférieure à 0, la valeur renvoyée à {{jsxref("NaN")}}.

    +Si la valeur de l'argument est strictement inférieure à 0, la valeur renvoyée à {{jsxref("NaN")}}. -

    log10() étant une méthode statique de Math, il faut utiliser Math.log10()et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur). Cette fonction est équivalente à la fonction donnée par Math.log(x) / Math.log(10).

    +`log10()` étant une méthode statique de `Math`, il faut utiliser `Math.log10()`et non pas la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). Cette fonction est équivalente à la fonction donnée par `Math.log(x) / Math.log(10)`. -

    Exemple

    +## Exemple -

    Utiliser Math.log10()

    +### Utiliser `Math.log10()` -
    Math.log10(2);      // 0.3010299956639812
    +```js
    +Math.log10(2);      // 0.3010299956639812
     Math.log10(1);      // 0
     Math.log10(0);      // -Infinity
     Math.log10(-2);     // NaN
     Math.log10(100000); // 5
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Il est possible d'avoir un résultat approximatif avec la fonction suivante :

    +Il est possible d'avoir un résultat approximatif avec la fonction suivante : -
    Math.log10 = Math.log10 || function(x) {
    +```js
    +Math.log10 = Math.log10 || function(x) {
       return Math.log(x) * Math.LOG10E;
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.log10', 'Math.log10')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.log10")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.log10', 'Math.log10')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.log10")}} + +## Voir aussi + +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log1p()")}} +- {{jsxref("Math.log2()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log10e/index.md b/files/fr/web/javascript/reference/global_objects/math/log10e/index.md index 175018cc26..05f9f01a3a 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log10e/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log10e/index.md @@ -9,74 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E original_slug: Web/JavaScript/Reference/Objets_globaux/Math/LOG10E --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.LOG10E fournit la valeur du logarithme en base 10 de e, environ 0.434 :

    +La propriété **`Math.LOG10E`** fournit la valeur du logarithme en base 10 de e, environ 0.434 : -

    Math.LOG10E=log10(e)0.434\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0.434

    +Math.LOG10E=log10(e)0.434\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0.434 -
    {{EmbedInteractiveExample("pages/js/math-log10e.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log10e.html")}}{{js_property_attributes(0,0,0)}} +## Description +`LOG10E` étant une propriété statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.LOG10E` et ne pas être appelée comme propriété d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.LOG10E` -

    LOG10E étant une propriété statique de Math, elle doit toujours être utilisée avec la syntaxe Math.LOG10E et ne pas être appelée comme propriété d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +La fonction suivante renvoie le logarithme en base 10 de e : -

    Exemples

    +```js +function getLog10e() { + return Math.LOG10E; +} -

    Utiliser Math.LOG10E

    +getLog10e(); // 0.4342944819032518 +``` -

    La fonction suivante renvoie le logarithme en base 10 de e :

    +## Spécifications -
    function getLog10e() {
    -   return Math.LOG10E;
    -}
    +| Spécification                                                                | État                         | Commentaires                                          |
    +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                                     | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.5', 'Math.LOG10E')}}     | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.log10e', 'Math.LOG10E')}}     | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.log10e', 'Math.LOG10E')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.LOG10E")}}
    +
    +## Voir aussi
     
    -getLog10e(); // 0.4342944819032518
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.5', 'Math.LOG10E')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.log10e', 'Math.LOG10E')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.log10e', 'Math.LOG10E')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.LOG10E")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log1p/index.md b/files/fr/web/javascript/reference/global_objects/math/log1p/index.md index 04913b856c..1ca30ae91d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log1p/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log1p/index.md @@ -11,86 +11,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p original_slug: Web/JavaScript/Reference/Objets_globaux/Math/log1p --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.log1p() renvoie le logarithme népérien (en base {{jsxref("Math/E","e")}}) d'un nombre +1, donné par la formule :

    +La fonction **`Math.log1p()`** renvoie le logarithme népérien (en base {{jsxref("Math/E","e")}}) d'un nombre +1, donné par la formule : -

    x>-1,Math.log1p(x)=ln(1+x)\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

    +x>-1,Math.log1p(x)=ln(1+x)\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x) -
    {{EmbedInteractiveExample("pages/js/math-log1p.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log1p.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.log1p(x)
    + Math.log1p(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La valeur du logarithme naturel de 1 plus l'argument (log(1 + x)). Si l'argument est inférieur à -1, {{jsxref("NaN")}} est renvoyée.

    +La valeur du logarithme naturel de 1 plus l'argument (`log(1 + x`)). Si l'argument est inférieur à `-1`, {{jsxref("NaN")}} est renvoyée. -

    Description

    +## Description -

    Si x est strictement inférieur à -1, la valeur renvoyée est {{jsxref("NaN")}}.

    +Si `x` est strictement inférieur à -1, la valeur renvoyée est {{jsxref("NaN")}}. -

    log1p étant une méthode statique de Math, il faut utiliser Math.log1p() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`log1p` étant une méthode statique de `Math`, il faut utiliser `Math.log1p()` et non pas la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.log1p()

    +### Utiliser `Math.log1p()` -
    Math.log1p(1);  // 0.6931471805599453
    +```js
    +Math.log1p(1);  // 0.6931471805599453
     Math.log1p(0);  // 0
     Math.log1p(-1); // -Infinity
     Math.log1p(-2); // NaN
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Si cette fonction n'est pas disponible, elle peut être définie grâce au code suivant :

    +Si cette fonction n'est pas disponible, elle peut être définie grâce au code suivant : -
    Math.log1p = Math.log1p || function(x) {
    +```js
    +Math.log1p = Math.log1p || function(x) {
       return Math.log(1 + x);
     };
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.log1p', 'Math.log1p')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.log1p', 'Math.log1p')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.log1p")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.log1p', 'Math.log1p')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.log1p', 'Math.log1p')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.log1p")}} + +## Voir aussi + +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} +- {{jsxref("Math.log2()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log2/index.md b/files/fr/web/javascript/reference/global_objects/math/log2/index.md index c1700ae5c1..8d9d91c64b 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log2/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log2/index.md @@ -11,79 +11,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/log2 --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.log2() renvoie le logarithme en base 2 d'un nombre :

    +La fonction **`Math.log2()`** renvoie le logarithme en base 2 d'un nombre : -

    x>0,Math.log2(x)=log2(x)=l'unique ytel que2y=x\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{the unique} \; y \; \text{such that} \; 2^y = x

    +x>0,Math.log2(x)=log2(x)=l'unique ytel que2y=x\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{the unique} \; y \; \text{such that} \; 2^y = x -
    {{EmbedInteractiveExample("pages/js/math-log2.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log2.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.log2(x)
    + Math.log2(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le logarithme en base 2 du nombre passé en argument. Si ce nombre est négatif, c'est {{jsxref("NaN")}} qui sera renvoyé.

    +Le logarithme en base 2 du nombre passé en argument. Si ce nombre est négatif, c'est {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    Si x est strictement inférieur à 0, la valeur renvoyée sera {{jsxref("NaN")}}.

    +Si `x` est strictement inférieur à 0, la valeur renvoyée sera {{jsxref("NaN")}}. -

    log2() étant une méthode statique de Math, il faut utiliser Math.log2() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur). Si on souhaite utiliser des constantes, on pourra employer {{jsxref("Math.LOG2E")}} ou {{jsxref("Math.LN2")}}.

    +`log2()` étant une méthode statique de `Math`, il faut utiliser `Math.log2()` et non pas la méthode d'un autre objet qui aurait été créé (`Math `n'est pas un constructeur). Si on souhaite utiliser des constantes, on pourra employer {{jsxref("Math.LOG2E")}} ou {{jsxref("Math.LN2")}}. -

    Exemples

    +## Exemples -

    Utiliser Math.log2()

    +### Utiliser `Math.log2()` -
    Math.log2(3);    // 1.584962500721156
    +```js
    +Math.log2(3);    // 1.584962500721156
     Math.log2(2);    // 1
     Math.log2(1);    // 0
     Math.log2(0);    // -Infinity
     Math.log2(-2);   // NaN
     Math.log2(1024); // 10
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.log2', 'Math.log2')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.log2")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log10()")}}
    • -
    • {{jsxref("Math.log1p()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.log2', 'Math.log2')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.log2")}} + +## Voir aussi + +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log10()")}} +- {{jsxref("Math.log1p()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/log2e/index.md b/files/fr/web/javascript/reference/global_objects/math/log2e/index.md index ef33a48cf1..6f986e4bf3 100644 --- a/files/fr/web/javascript/reference/global_objects/math/log2e/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/log2e/index.md @@ -9,74 +9,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E original_slug: Web/JavaScript/Reference/Objets_globaux/Math/LOG2E --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.LOG2E représente la valeur du logarithme en base 2 de e, environ 1.442 :

    +La propriété **`Math.LOG2E`** représente la valeur du logarithme en base 2 de e, environ 1.442 : -

    Math.LOG2E=log2(e)1.442\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1.442

    +Math.LOG2E=log2(e)1.442\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1.442 -
    {{EmbedInteractiveExample("pages/js/math-log2e.html")}}
    +{{EmbedInteractiveExample("pages/js/math-log2e.html")}}{{js_property_attributes(0,0,0)}} +## Description +`LOG2E` est une propriété statique de l'objet `Math` et doit toujours être utilisé avec la syntaxe `Math.LOG2E` plutôt que comme la propriété d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.LOG2E` -

    LOG2E est une propriété statique de l'objet Math et doit toujours être utilisé avec la syntaxe Math.LOG2E plutôt que comme la propriété d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +La fonction suivante renvoie la valeur du logarithme en base 2 de e : -

    Exemples

    +```js +function getLog2e() { + return Math.LOG2E; +} -

    Utiliser Math.LOG2E

    +getLog2e(); // 1.4426950408889634 +``` -

    La fonction suivante renvoie la valeur du logarithme en base 2 de e :

    +## Spécifications -
    function getLog2e() {
    -   return Math.LOG2E;
    -}
    +| Spécification                                                                | Statut                       | Commentaires                                          |
    +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                                     | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.4', 'Math.LOG2E')}}         | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.log2e', 'Math.LOG2E')}}         | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.log2e', 'Math.LOG2E')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.LOG2E")}}
    +
    +## Voir aussi
     
    -getLog2e(); // 1.4426950408889634
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.4', 'Math.LOG2E')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.log2e', 'Math.LOG2E')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.log2e', 'Math.LOG2E')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.LOG2E")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.log2()")}}
    • -
    +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.log2()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/max/index.md b/files/fr/web/javascript/reference/global_objects/math/max/index.md index 78e3810bca..ceae8a1e98 100644 --- a/files/fr/web/javascript/reference/global_objects/math/max/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/max/index.md @@ -9,104 +9,84 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/max original_slug: Web/JavaScript/Reference/Objets_globaux/Math/max --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.max() renvoie le plus grand nombre d'une série de 0 ou plusieurs nombres.

    +La fonction **`Math.max()`** renvoie le plus grand nombre d'une série de 0 ou plusieurs nombres. -
    {{EmbedInteractiveExample("pages/js/math-max.html")}}
    +{{EmbedInteractiveExample("pages/js/math-max.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.max([valeur1[,valeur2, ...]]) 
    + Math.max([valeur1[,valeur2, ...]]) -

    Paramètres

    +### Paramètres -
    -
    valeur1, valeur2, ...
    -
    Des nombres.
    -
    +- `valeur1, valeur2, ...` + - : Des nombres. -

    Valeur de retour

    +### Valeur de retour -

    Le plus grand des nombres passés en arguments. S'il existe un des arguments qui ne peut pas être converti en nombre, c'est {{jsxref("NaN")}} qui sera renvoyé.

    +Le plus grand des nombres passés en arguments. S'il existe un des arguments qui ne peut pas être converti en nombre, c'est {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    max() est une méthode statique de Math et doit toujours être utilisée avec la syntaxe Math.max(), elle ne doit pas être appelée comme la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`max()` est une méthode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.max()`, elle ne doit pas être appelée comme la méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Si aucun argument n'est fourni, le résultat sera -{{jsxref("Infinity")}}.

    +Si aucun argument n'est fourni, le résultat sera -{{jsxref("Infinity")}}. -

    Si au moins un des arguments ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}.

    +Si au moins un des arguments ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}. -

    Exemple

    +## Exemple -

    Utiliser Math.max()

    +### Utiliser `Math.max()` -
    Math.max(10, 20);   //  20
    +```js
    +Math.max(10, 20);   //  20
     Math.max(-10, -20); // -10
     Math.max(-10, 20);  //  20
    -
    +``` -

    Obtenir l'élément maximum d'un tableau

    +### Obtenir l'élément maximum d'un tableau -

    La méthode {{jsxref("Array.prototype.reduce()")}} peut être utilisée pour déterminer la valeur maximale d'un tableau de nombre en comparant les valeurs qui se suivent :

    +La méthode {{jsxref("Array.prototype.reduce()")}} peut être utilisée pour déterminer la valeur maximale d'un tableau de nombre en comparant les valeurs qui se suivent : -
    var arr = [1, 2, 3];
    +```js
    +var arr = [1, 2, 3];
     var max = arr.reduce(function(a,b) {
       return Math.max(a, b);
    -});
    +}); +``` -

    On peut également utiliser {{jsxref("Function.prototype.apply()")}} afin de trouver le maximum parmi un tableau de nombres. getMaxTableau([1,2,3]) sera équivalent à Math.max(1, 2, 3), mais getMaxTableau pourra être utilisé sur des tableaux de n'importe quelle taille.

    +On peut également utiliser {{jsxref("Function.prototype.apply()")}} afin de trouver le maximum parmi un tableau de nombres. `getMaxTableau([1,2,3])` sera équivalent à `Math.max(1, 2, 3)`, mais `getMaxTableau` pourra être utilisé sur des tableaux de n'importe quelle taille. -
    function getMaxTableau(tableauNumérique) {
    +```js
    +function getMaxTableau(tableauNumérique) {
         return Math.max.apply(null, tableauNumérique);
    -}
    - -

    Avec le nouvel {{jsxref("Opérateurs/Affecter_par_décomposition","opérateur de décomposition","","1")}}, on pourra également utiliser cette syntaxe, plus concise et plus simple :

    - -
    var arr = [1, 2, 3];
    -var max = Math.max(...arr);
    - -

    Attention avec la décomposition et apply() qui pourront échouer s'il y a trop d'éléments dans le tableau (car ceux-ci seront passés en arguments). Pour plus d'informations, consulter Utiliser apply() et les fonctions natives. La méthode proposée avec reduce() n'a pas cette contrainte.

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.max', 'Math.max')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.max")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.min()")}}
    • -
    +} +``` + +Avec le nouvel {{jsxref("Opérateurs/Affecter_par_décomposition","opérateur de décomposition","","1")}}, on pourra également utiliser cette syntaxe, plus concise et plus simple : + +```js +var arr = [1, 2, 3]; +var max = Math.max(...arr); +``` + +Attention avec la décomposition et `apply()` qui pourront échouer s'il y a trop d'éléments dans le tableau (car ceux-ci seront passés en arguments). Pour plus d'informations, consulter [Utiliser apply() et les fonctions natives](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/apply#Utiliser_apply_et_des_fonctions_natives). La méthode proposée avec `reduce()` n'a pas cette contrainte. + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.max', 'Math.max')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.max', 'Math.max')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.max")}} + +## Voir aussi + +- {{jsxref("Math.min()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/min/index.md b/files/fr/web/javascript/reference/global_objects/math/min/index.md index 39cd2d8567..0fa9c67c58 100644 --- a/files/fr/web/javascript/reference/global_objects/math/min/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/min/index.md @@ -9,100 +9,77 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/min original_slug: Web/JavaScript/Reference/Objets_globaux/Math/min --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.min() renvoie le plus petit nombre d'une série de 0 ou plusieurs nombres ou bien {{jsxref("NaN")}} si au moins un des arguments fourni n'est pas un nombre ou ne peut pas être converti en nombre.

    +La fonction **`Math.min()`** renvoie le plus petit nombre d'une série de 0 ou plusieurs nombres ou bien {{jsxref("NaN")}} si au moins un des arguments fourni n'est pas un nombre ou ne peut pas être converti en nombre. -
    {{EmbedInteractiveExample("pages/js/math-min.html")}}
    +{{EmbedInteractiveExample("pages/js/math-min.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.min([valeur1[,valeur2, ...]]) 
    + Math.min([valeur1[,valeur2, ...]]) -

    Paramètres

    +### Paramètres -
    -
    valeur1, valeur2, ...
    -
    Des nombres.
    -
    +- `valeur1, valeur2, ...` + - : Des nombres. -

    Valeur de retour

    +### Valeur de retour -

    Le plus petit des nombres passés en arguments. S'il existe un argument qui ne peut pas être converti en nombre, c'est {{jsxref("NaN")}} qui sera renvoyé. Le résultat sera {{jsxref("Infinity")}} si aucun paramètre n'est fourni.

    +Le plus petit des nombres passés en arguments. S'il existe un argument qui ne peut pas être converti en nombre, c'est {{jsxref("NaN")}} qui sera renvoyé. Le résultat sera {{jsxref("Infinity")}} si aucun paramètre n'est fourni. -

    Description

    +## Description -

    min() est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.min() et ne doit pas être utilisée comme la méthode d'un objet qui aurait été créé (Math n'est pas un constructeur).

    +`min()` est une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.min()` et ne doit pas être utilisée comme la méthode d'un objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Si aucun argument n'est fourni, le résultat renvoyé par la fonction sera {{jsxref("Infinity")}}.

    +Si aucun argument n'est fourni, le résultat renvoyé par la fonction sera {{jsxref("Infinity")}}. -

    Si au moins un des arguments ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}.

    +Si au moins un des arguments ne peut pas être converti en un nombre, le résultat sera {{jsxref("NaN")}}. -

    Exemples

    +## Exemples -

    Utiliser Math.min()

    +### Utiliser `Math.min()` -

    Dans cet exemple, on trouve le minimum de x et y et on affecte cette valeur à z :

    +Dans cet exemple, on trouve le minimum de x et y et on affecte cette valeur à z : -
    var x = 10, y = -20;
    +```js
    +var x = 10, y = -20;
     var z = Math.min(x, y);
    -
    +``` -

    Ramener une valeur dans un intervalle (clipping) avec Math.min()

    +### Ramener une valeur dans un intervalle (_clipping_) avec `Math.min()` -

    Math.min() est souvent utilisée afin de ramener une certaine valeur dans un intervalle donné. Par exemple :

    +`Math.min()` est souvent utilisée afin de ramener une certaine valeur dans un intervalle donné. Par exemple : -
    var x = f(toto);
    +```js
    +var x = f(toto);
     
    -if (x > limite) {
    +if (x > limite) {
       x = limite;
     }
    -
    - -

    peut s'écrire

    - -
    var x = Math.min(f(toto), limite);
    - -
    {{jsxref("Math.max()")}} peut être utilisée de façon semblable pour ramener une valeur vers un minimum d'un intervalle donné.
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.12', 'Math.min')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.min', 'Math.min')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.min', 'Math.min')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.min")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.max()")}}
    • -
    +``` + +peut s'écrire + +```js +var x = Math.min(f(toto), limite); +``` + +{{jsxref("Math.max()")}} peut être utilisée de façon semblable pour ramener une valeur vers un minimum d'un intervalle donné. + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.12', 'Math.min')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.min', 'Math.min')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.min', 'Math.min')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.min")}} + +## Voir aussi + +- {{jsxref("Math.max()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/pi/index.md b/files/fr/web/javascript/reference/global_objects/math/pi/index.md index d9aa0848db..d8f6d65a4a 100644 --- a/files/fr/web/javascript/reference/global_objects/math/pi/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/pi/index.md @@ -9,72 +9,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI original_slug: Web/JavaScript/Reference/Objets_globaux/Math/PI --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.PI représente le ratio entre le périmètre d'un cercle et son diamètre. Elle vaut environ 3.14159:

    +La propriété **`Math.PI`** représente le ratio entre le périmètre d'un cercle et son diamètre. Elle vaut environ 3.14159: -

    Math.PI=π3.14159\mathtt{\mi{Math.PI}} = \pi \approx 3.14159

    +Math.PI=π3.14159\mathtt{\mi{Math.PI}} = \pi \approx 3.14159 -
    {{EmbedInteractiveExample("pages/js/math-pi.html")}}
    +{{EmbedInteractiveExample("pages/js/math-pi.html")}}{{js_property_attributes(0,0,0)}} +## Description +`PI` est une propriété statique de l'objet `Math` et doit toujours être utilisée avec la syntaxe `Math.PI` plutôt que d'être appelée comme la propriété d'un autre objet qui aurait été crée (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +### Utiliser `Math.PI` -

    PI est une propriété statique de l'objet Math et doit toujours être utilisée avec la syntaxe Math.PI plutôt que d'être appelée comme la propriété d'un autre objet qui aurait été crée (Math n'est pas un constructeur).

    +La fonction suivante utilise `Math.PI` afin de calculer le périmètre d'un cercle à partir du rayon passé en argument. -

    Exemples

    +```js +function calculPérimètre(rayon) { + return 2 * Math.PI * rayon; +} -

    Utiliser Math.PI

    +calculPérimètre(1); // 6.283185307179586 +``` -

    La fonction suivante utilise Math.PI afin de calculer le périmètre d'un cercle à partir du rayon passé en argument.

    +## Spécifications -
    function calculPérimètre(rayon) {
    -  return 2 * Math.PI * rayon;
    -}
    +| Spécification                                                        | Statut                       | Commentaires                                          |
    +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
    +| {{SpecName('ES1')}}                                             | {{Spec2('ES1')}}         | Définition initiale. Implémentée avec JavaScript 1.0. |
    +| {{SpecName('ES5.1', '#sec-15.8.1.6', 'Math.PI')}}     | {{Spec2('ES5.1')}}     |                                                       |
    +| {{SpecName('ES6', '#sec-math.pi', 'Math.PI')}}         | {{Spec2('ES6')}}         |                                                       |
    +| {{SpecName('ESDraft', '#sec-math.pi', 'Math.PI')}} | {{Spec2('ESDraft')}} |                                                       |
    +
    +## Compatibilité des navigateurs
    +
    +{{Compat("javascript.builtins.Math.PI")}}
    +
    +## Voir aussi
     
    -calculPérimètre(1);  // 6.283185307179586
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.6', 'Math.PI')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.pi', 'Math.PI')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.pi', 'Math.PI')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.PI")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math")}}
    • -
    +- {{jsxref("Math")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/pow/index.md b/files/fr/web/javascript/reference/global_objects/math/pow/index.md index b12f348e80..e85580ec3d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/pow/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/pow/index.md @@ -9,38 +9,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow original_slug: Web/JavaScript/Reference/Objets_globaux/Math/pow --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.pow() renvoie un nombre à une certaine puissance, c'est-à-dire base^exposant.

    +La fonction **`Math.pow()`** renvoie un nombre à une certaine puissance, c'est-à-dire `base^exposant`. -
    {{EmbedInteractiveExample("pages/js/math-pow.html")}}
    +{{EmbedInteractiveExample("pages/js/math-pow.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.pow(base, exposant);
    + Math.pow(base, exposant); -

    Paramètres

    +### Paramètres -
    -
    base
    -
    Le nombre correspondant à la base.
    -
    exponent
    -
    L'exposant auquel on élève le paramètre précédent.
    -
    +- `base` + - : Le nombre correspondant à la base. +- `exponent` + - : L'exposant auquel on élève le paramètre précédent. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre qui représente un nombre (premier argument) élevé à une puissance donné (second argument).

    +Un nombre qui représente un nombre (premier argument) élevé à une puissance donné (second argument). -

    Description

    +## Description -

    pow() est une méthode statique de Math et doit toujours être utilisée avec la syntaxe Math.pow(), elle ne doit pas être utilisée comme une méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`pow()` est une méthode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.pow()`, elle ne doit pas être utilisée comme une méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemple

    +## Exemple -

    Utiliser Math.pow()

    +### Utiliser `Math.pow()` -
    // Utilisation simple
    +```js
    +// Utilisation simple
     Math.pow(7, 2); // 49
     
     // Exposants négatifs
    @@ -54,50 +53,25 @@ Math.pow(-7, 0.5); // NaN
     // (les nombres négatifs n'ont pas de racine carrée)
     Math.pow(-7, 1/3); // NaN
     // Nombre négatif avec une base décimale
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.13', 'Math.pow')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.pow', 'Math.pow')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.pow', 'Math.pow')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.pow")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.cbrt()")}}
    • -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.sqrt()")}}
    • -
    • Opérateur d'exponentiation {{experimental_inline}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.13', 'Math.pow')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.pow', 'Math.pow')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.pow', 'Math.pow')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.pow")}} + +## Voir aussi + +- {{jsxref("Math.cbrt()")}} +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.sqrt()")}} +- [Opérateur d'exponentiation]() {{experimental_inline}} diff --git a/files/fr/web/javascript/reference/global_objects/math/random/index.md b/files/fr/web/javascript/reference/global_objects/math/random/index.md index c5b3df93df..e0ae51c992 100644 --- a/files/fr/web/javascript/reference/global_objects/math/random/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/random/index.md @@ -9,46 +9,49 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/random original_slug: Web/JavaScript/Reference/Objets_globaux/Math/random --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.random() renvoie un nombre flottant pseudo-aléatoire compris dans l'intervalle [0, 1[ (ce qui signifie que 0 est compris dans l'intervalle mais que 1 en est exclu) selon une distribution approximativement uniforme sur cet intervalle. Ce nombre peut ensuite être multiplié afin de couvrir un autre intervalle. La graine (seed) du générateur est choisie par l'algorithme et ne peut pas être choisie ou réinitialisée par l'utilisateur.

    +La fonction **`Math.random()`** renvoie un nombre flottant pseudo-aléatoire compris dans l'intervalle `[0, 1[` (ce qui signifie que 0 est compris dans l'intervalle mais que 1 en est exclu) selon une distribution approximativement uniforme sur cet intervalle. Ce nombre peut ensuite être multiplié afin de couvrir un autre intervalle. La graine (_seed_) du générateur est choisie par l'algorithme et ne peut pas être choisie ou réinitialisée par l'utilisateur. -
    {{EmbedInteractiveExample("pages/js/math-random.html")}}
    +{{EmbedInteractiveExample("pages/js/math-random.html")}} -
    -

    Note : Math.random() ne fournit pas de nombres aléatoires propres à une cryptographie sécurisée. Les résultats de cette méthode ne doivent pas être utilisées dans des applications liées à la sécurité. À la place, on préfèrera utiliser l'API Web Crypto et plus précisément la méthode {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

    -
    +> **Note :** `Math.random()` **ne fournit pas** de nombres aléatoires propres à une cryptographie sécurisée. Les résultats de cette méthode ne doivent pas être utilisées dans des applications liées à la sécurité. À la place, on préfèrera utiliser l'API Web Crypto et plus précisément la méthode {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}. -

    Syntaxe

    +## Syntaxe -
    Math.random()
    + Math.random() -

    Valeur de retour

    +### Valeur de retour -

    Un nombre flottant pseudo-aléatoire, généré entre 0 (inclus) et 1 (exclu)

    +Un nombre flottant pseudo-aléatoire, généré entre 0 (inclus) et 1 (exclu) -

    Exemples

    +## Exemples -

    En JavaScript, les nombres sont représentés comme des nombres flottants selon la norme IEEE 754 et les arrondis sont pris aux plus près. Aussi, les intervalles revendiqués par les fonctions ci-après (en dehors de Math.random()) ne sont pas théoriquement et précisément exacts. Si on utilise des bornes supérieures très grande (2^53 ou plus), il est alors possible, dans de très rares cas, d'obtenir la borne supérieure comme résultat alors que celle-ci devrait être exclue de l'intervalle.

    +En JavaScript, les nombres sont représentés comme des nombres flottants selon la norme IEEE 754 et les arrondis sont pris aux plus près. Aussi, les intervalles revendiqués par les fonctions ci-après (en dehors de `Math.random()`) ne sont pas théoriquement et précisément exacts. Si on utilise des bornes supérieures très grande (2^53 ou plus), il est alors possible, dans de très rares cas, d'obtenir la borne supérieure comme résultat alors que celle-ci devrait être exclue de l'intervalle. -

    Obtenir un nombre aléatoire entre 0 et 1

    +### Obtenir un nombre aléatoire entre 0 et 1 -
    // On renvoie un nombre aléatoire entre 0 (inclus) et 1 (exclus)
    +```js
    +// On renvoie un nombre aléatoire entre 0 (inclus) et 1 (exclus)
     function getRandom() {
       return Math.random();
    -}
    +} +``` -

    Obtenir un nombre aléatoire dans un intervalle

    +### Obtenir un nombre aléatoire dans un intervalle -
    // On renvoie un nombre aléatoire entre une valeur min (incluse)
    +```js
    +// On renvoie un nombre aléatoire entre une valeur min (incluse)
     // et une valeur max (exclue)
     function getRandomArbitrary(min, max) {
       return Math.random() * (max - min) + min;
    -}
    +} +``` -

    Obtenir un entier aléatoire dans un intervalle ouvert à droite

    +### Obtenir un entier aléatoire dans un intervalle ouvert à droite -
    // On renvoie un entier aléatoire entre une valeur min (incluse)
    +```js
    +// On renvoie un entier aléatoire entre une valeur min (incluse)
     // et une valeur max (exclue).
     // Attention : si on utilisait Math.round(), on aurait une distribution
     // non uniforme !
    @@ -57,15 +60,14 @@ function getRandomInt(min, max) {
       max = Math.floor(max);
       return Math.floor(Math.random() * (max - min)) + min;
     }
    -
    +``` -
    -

    Attention : Utiliser Math.round() entraînerait une distribution non-uniforme et réduirait le caractère aléatoire de la méthode.

    -
    +> **Attention :** Utiliser `Math.round()` entraînerait une distribution non-uniforme et réduirait le caractère aléatoire de la méthode. -

    Obtenir un entier aléatoire dans un intervalle fermé

    +### Obtenir un entier aléatoire dans un intervalle fermé -
    // On renvoie un entier aléatoire entre une valeur min (incluse)
    +```js
    +// On renvoie un entier aléatoire entre une valeur min (incluse)
     // et une valeur max (incluse).
     // Attention : si on utilisait Math.round(), on aurait une distribution
     // non uniforme !
    @@ -74,40 +76,17 @@ function getRandomIntInclusive(min, max) {
       max = Math.floor(max);
       return Math.floor(Math.random() * (max - min +1)) + min;
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0 (UNIX) et 1.1 (toutes plateformes).
    {{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.random', 'Math.random')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.random', 'Math.random')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.random")}}

    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0 (UNIX) et 1.1 (toutes plateformes). | +| {{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.random', 'Math.random')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.random', 'Math.random')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.random")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/round/index.md b/files/fr/web/javascript/reference/global_objects/math/round/index.md index fb671af237..f43dc4f6c5 100644 --- a/files/fr/web/javascript/reference/global_objects/math/round/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/round/index.md @@ -9,86 +9,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/round original_slug: Web/JavaScript/Reference/Objets_globaux/Math/round --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.round() retourne la valeur d'un nombre arrondi à l'entier le plus proche.

    +La fonction **`Math.round()`** retourne la valeur d'un nombre arrondi à l'entier le plus proche. -
    {{EmbedInteractiveExample("pages/js/math-round.html")}}
    +{{EmbedInteractiveExample("pages/js/math-round.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.round(x)
    + Math.round(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La valeur de l'entier le plus proche du nombre passé en argument.

    +La valeur de l'entier le plus proche du nombre passé en argument. -

    Description

    +## Description -

    Si la partie décimale du nombre est plus grande que 0.5, l'argument est arrondi à l'entier le plus proche dont la valeur absolue est plus grande. Si elle est plus petite que 0.5, l'argument est arrondi à l'entier le plus proche dont la valeur absolue est plus petite. Si la partie décimale du nombre vaut exactement 0.5, l'argument est arrondi à l'entier le plus proche en direction de l'infini positif (attention, pour la plupart des langages de programmation, c'est le nombre avec la plus grande valeur absolue qui est renvoyé ; on a donc une différence de comportement pour les nombres négatifs dont la partie décimale vaut exactement 0.5).

    +Si la partie décimale du nombre est plus grande que 0.5, l'argument est arrondi à l'entier le plus proche dont la valeur absolue est plus grande. Si elle est plus petite que 0.5, l'argument est arrondi à l'entier le plus proche dont la valeur absolue est plus petite. Si la partie décimale du nombre vaut exactement 0.5, l'argument est arrondi à l'entier le plus proche en direction de l'infini positif (attention, pour la plupart des langages de programmation, c'est le nombre avec la plus grande valeur absolue qui est renvoyé ; on a donc une différence de comportement pour les nombres négatifs dont la partie décimale vaut exactement 0.5). -

    round() étant une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.round(), elle ne doit pas être utilisée comme une méthode d'un objet qui aurait été créé (Math n'est pas un constructeur).

    +`round()` étant une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.round()`, elle ne doit pas être utilisée comme une méthode d'un objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -
    Math.round(20.49); //  20
    +```js
    +Math.round(20.49); //  20
     Math.round(20.5);  //  21
     Math.round(42);    //  42
     Math.round(-20.5); // -20
     Math.round(-20.51);// -21
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-math.round', 'Math.round')}}{{Spec2('ES6')}}
    {{SpecName('ESDraft', '#sec-math.round', 'Math.round')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.round")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.toPrecision()")}}
    • -
    • {{jsxref("Number.toFixed()")}}
    • -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.ceil()")}}
    • -
    • {{jsxref("Math.floor()")}}
    • -
    • {{jsxref("Math.sign()")}}
    • -
    • {{jsxref("Math.trunc()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-math.round', 'Math.round')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-math.round', 'Math.round')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.round")}} + +## Voir aussi + +- {{jsxref("Number.toPrecision()")}} +- {{jsxref("Number.toFixed()")}} +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.ceil()")}} +- {{jsxref("Math.floor()")}} +- {{jsxref("Math.sign()")}} +- {{jsxref("Math.trunc()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sign/index.md b/files/fr/web/javascript/reference/global_objects/math/sign/index.md index c27e808527..44a438171e 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sign/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sign/index.md @@ -11,38 +11,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign original_slug: Web/JavaScript/Reference/Objets_globaux/Math/sign --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.sign() renvoie le signe d'un nombre et permet de savoir si un nombre est positif, négatif ou nul.

    +La fonction **`Math.sign()`** renvoie le signe d'un nombre et permet de savoir si un nombre est positif, négatif ou nul. -
    {{EmbedInteractiveExample("pages/js/math-sign.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sign.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.sign(x)
    + Math.sign(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre qui représente le signe de l'argument. Si l'argument est un nombre positif, négatif, un zéro positif ou un zéro négatif, la fonction renverra respectivement 1, -1, 0, -0. Sinon, ce sera {{jsxref("NaN")}} qui sera renvoyé.

    +Un nombre qui représente le signe de l'argument. Si l'argument est un nombre positif, négatif, un zéro positif ou un zéro négatif, la fonction renverra respectivement `1`, `-1`, `0`, `-0`. Sinon, ce sera {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    sign() étant une méthode statique de Math, il faut utiliser Math.sign() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`sign()` étant une méthode statique de `Math`, il faut utiliser `Math.sign()` et non pas la méthode d'un autre objet qui aurait été créé (`Math `n'est pas un constructeur). -

    Cette fonction peut renvoyer 5 valeurs : 1, -1, 0, -0, NaN, qui indiquent respectivement que x est un nombre positif, un nombre négatif, zéro, la limite négative de zéro, et n'est pas un nombre pour {{jsxref("NaN")}}.

    +Cette fonction peut renvoyer 5 valeurs : `1, -1, 0, -0, NaN,` qui indiquent respectivement que `x` est un nombre positif, un nombre négatif, zéro, la limite négative de zéro, et n'est pas un nombre pour {{jsxref("NaN")}}. -

    L'argument passé à cette fonction sera implicitement converti au type number.

    +L'argument passé à cette fonction sera implicitement converti au type `number`. -

    Exemples

    +## Exemples -
    Math.sign(3)     //  1
    +```js
    +Math.sign(3)     //  1
     Math.sign(-3)    // -1
     Math.sign("-3")  // -1
     Math.sign(0)     //  0
    @@ -50,40 +49,23 @@ Math.sign(-0)    // -0
     Math.sign(NaN)   // NaN
     Math.sign("foo") // NaN
     Math.sign()      // NaN
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.sign")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.ceil()")}}
    • -
    • {{jsxref("Math.floor()")}}
    • -
    • {{jsxref("Math.round()")}}
    • -
    • {{jsxref("Math.trunc()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.sign")}} + +## Voir aussi + +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.ceil()")}} +- {{jsxref("Math.floor()")}} +- {{jsxref("Math.round()")}} +- {{jsxref("Math.trunc()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sin/index.md b/files/fr/web/javascript/reference/global_objects/math/sin/index.md index 3f3ea2afe8..35bb474eef 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sin/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sin/index.md @@ -9,83 +9,58 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin original_slug: Web/JavaScript/Reference/Objets_globaux/Math/sin --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.sin() renvoie le sinus d'un nombre.

    +La fonction **`Math.sin()`** renvoie le sinus d'un nombre. -
    {{EmbedInteractiveExample("pages/js/math-sin.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sin.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.sin(x)
    + Math.sin(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre (qui exprime un angle en radians).
    -
    +- `x` + - : Un nombre (qui exprime un angle en radians). -

    Valeur de retour

    +### Valeur de retour -

    Le sinus de la valeur passée en argument (qui correspond à un angle en radians).

    +Le sinus de la valeur passée en argument (qui correspond à un angle en radians). -

    Description

    +## Description -

    La méthode sin() renvoie une valeur numérique comprise (au sens large) entre 1 et -1 et qui représente le sinus d'un angle donné en radians.

    +La méthode `sin()` renvoie une valeur numérique comprise (au sens large) entre 1 et -1 et qui représente le sinus d'un angle donné en radians. -

    sin() est une méthode statique de Math, elle doit être utilisée avec la syntaxe Math.sin(), elle ne doit pas être utilisée comme une méthode d'un objet qui aurait été créé (Math n'est pas un constructeur).

    +`sin()` est une méthode statique de `Math`, elle doit être utilisée avec la syntaxe `Math.sin()`, elle ne doit pas être utilisée comme une méthode d'un objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -
    Math.sin(0);           // 0
    +```js
    +Math.sin(0);           // 0
     Math.sin(1);           // 0.8414709848078965
     
    -Math.sin(Math.PI / 2); // 1
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.16', 'Math.sin')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.sin', 'Math.sin')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.sin', 'Math.sin')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.sin")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.tan()")}}
    • -
    +Math.sin(Math.PI / 2); // 1 +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.16', 'Math.sin')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.sin', 'Math.sin')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.sin', 'Math.sin')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.sin")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.tan()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sinh/index.md b/files/fr/web/javascript/reference/global_objects/math/sinh/index.md index 4edf3a2ad5..9a74084918 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sinh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sinh/index.md @@ -11,85 +11,72 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/sinh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/sinh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.sinh() renvoie le sinus hyperbolique d'un nombre, dont la formule, utilisant la constante {{jsxref("Math.E","e")}}, est :

    +La fonction **`Math.sinh()`** renvoie le sinus hyperbolique d'un nombre, dont la formule, utilisant la constante {{jsxref("Math.E","e")}}, est : -

    Math.sinh(x)=ex-e-x2\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2}

    +Math.sinh(x)=ex-e-x2\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2} -
    {{EmbedInteractiveExample("pages/js/math-sinh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sinh.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.sinh(x)
    + Math.sinh(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    Le sinus hyperbolique de la valeur passée en argument.

    +Le sinus hyperbolique de la valeur passée en argument. -

    Description

    +## Description -

    sinh() est une méthode statique de Math, il faut utiliser la syntaxe Math.sinh(). Cette méthode ne doit pas être appelée depuis un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`sinh()` est une méthode statique de `Math`, il faut utiliser la syntaxe `Math.sinh()`. Cette méthode ne doit pas être appelée depuis un autre objet qui aurait été créé (`Math `n'est pas un constructeur). -

    Exemples

    +## Exemples -
    Math.sinh(0) // 0
    -Math.sinh(1) // 1.1752011936438014
    +```js +Math.sinh(0) // 0 +Math.sinh(1) // 1.1752011936438014 +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Si cette fonction n'est pas disponible, elle peut être émulée en utilisant la fonction {{jsxref("Math.exp()")}} :

    +Si cette fonction n'est pas disponible, elle peut être émulée en utilisant la fonction {{jsxref("Math.exp()")}}` :` -
    Math.sinh = Math.sinh || function(x){
    +```js
    +Math.sinh = Math.sinh || function(x){
         return (Math.exp(x) - Math.exp(-x)) / 2;
    -};
    +}; +``` -

    ou encore, si on n'utilise qu'une fois {{jsxref("Math.exp()")}}, avec :

    +ou encore, si on n'utilise qu'une fois {{jsxref("Math.exp()")}}, avec : -
    Math.sinh = Math.sinh || function(x){
    +```js
    +Math.sinh = Math.sinh || function(x){
         var y = Math.exp(x);
         return (y - 1/y) / 2;
    -};
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.sinh', 'Math.sinh')}}{{Spec2('ES2015')}}Définition initiale
    {{SpecName('ESDraft', '#sec-math.sinh', 'Math.sinh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.sinh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acosh()")}}
    • -
    • {{jsxref("Math.asinh()")}}
    • -
    • {{jsxref("Math.atanh()")}}
    • -
    • {{jsxref("Math.cosh()")}}
    • -
    • {{jsxref("Math.tanh()")}}
    • -
    +}; +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-math.sinh', 'Math.sinh')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-math.sinh', 'Math.sinh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.sinh")}} + +## Voir aussi + +- {{jsxref("Math.acosh()")}} +- {{jsxref("Math.asinh()")}} +- {{jsxref("Math.atanh()")}} +- {{jsxref("Math.cosh()")}} +- {{jsxref("Math.tanh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sqrt/index.md b/files/fr/web/javascript/reference/global_objects/math/sqrt/index.md index 6b309e4d01..8af569dd19 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sqrt/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sqrt/index.md @@ -9,86 +9,61 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt original_slug: Web/JavaScript/Reference/Objets_globaux/Math/sqrt --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.sqrt() renvoie la racine carrée d'un nombre. Cette fonction est définie par :

    +La fonction **`Math.sqrt()`** renvoie la racine carrée d'un nombre. Cette fonction est définie par : -

    x0,Math.sqrt(x)=x=l'uniquey0tel quey2=x\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{the unique} \; y \geq 0 \; \text{such that} \; y^2 = x

    +x0,Math.sqrt(x)=x=l'uniquey0tel quey2=x\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{the unique} \; y \geq 0 \; \text{such that} \; y^2 = x -
    {{EmbedInteractiveExample("pages/js/math-sqrt.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sqrt.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.sqrt(x)
    + Math.sqrt(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La racine carrée du nombre passé en argument. Si le nombre fourni est négatif, c'est {{jsxref("NaN")}} qui sera renvoyé.

    +La racine carrée du nombre passé en argument. Si le nombre fourni est négatif, c'est {{jsxref("NaN")}} qui sera renvoyé. -

    Description

    +## Description -

    Si la valeur de x est négative, sqrt renverra {{jsxref("NaN")}}.

    +Si la valeur de `x` est négative, `sqrt` renverra {{jsxref("NaN")}}. -

    sqrt() est une méthode statique de Math, elle doit être utilisée avec la syntaxe Math.sqrt(), elle ne doit pas être appelée comme méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`sqrt()` est une méthode statique de `Math`, elle doit être utilisée avec la syntaxe `Math.sqrt()`, elle ne doit pas être appelée comme méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -
    Math.sqrt(9);  // 3
    +```js
    +Math.sqrt(9);  // 3
     Math.sqrt(2);  // 1.414213562373095
     
     Math.sqrt(1);  // 1
     Math.sqrt(0);  // 0
     Math.sqrt(-1); // NaN
    -Math.sqrt(-0); // -0
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.sqrt")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.cbrt()")}}
    • -
    • {{jsxref("Math.exp()")}}
    • -
    • {{jsxref("Math.log()")}}
    • -
    • {{jsxref("Math.pow()")}}
    • -
    +Math.sqrt(-0); // -0 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.sqrt")}} + +## Voir aussi + +- {{jsxref("Math.cbrt()")}} +- {{jsxref("Math.exp()")}} +- {{jsxref("Math.log()")}} +- {{jsxref("Math.pow()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sqrt1_2/index.md b/files/fr/web/javascript/reference/global_objects/math/sqrt1_2/index.md index 7a1037786c..2af49cd3ca 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sqrt1_2/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sqrt1_2/index.md @@ -9,71 +9,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/SQRT1_2 --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.SQRT1_2 représente la racine carrée d'1/2 et vaut environ 0.707 :

    +La propriété **`Math.SQRT1_2`** représente la racine carrée d'1/2 et vaut environ 0.707 : -

    Math.SQRT1_2=12=120.707\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0.707

    +Math.SQRT1_2=12=120.707\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0.707 -
    {{EmbedInteractiveExample("pages/js/math-sqrt1_2.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sqrt1_2.html")}}{{js_property_attributes(0,0,0)}} +## Description +`SQRT1_2` est une propriété statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.SQRT1_2`. Elle ne doit pas être obtenue à partir d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +La fonction suivante renvoie la valeur de cette constante : -

    SQRT1_2 est une propriété statique de Math et doit toujours être utilisée avec la syntaxe Math.SQRT1_2. Elle ne doit pas être obtenue à partir d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    - -

    Exemples

    - -

    La fonction suivante renvoie la valeur de cette constante :

    - -
    function getRoot1_2() {
    +```js
    +function getRoot1_2() {
        return Math.SQRT1_2;
     }
     
    -getRoot1_2(); // 0.7071067811865476
    +getRoot1_2(); // 0.7071067811865476 +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.7', 'Math.SQRT1_2')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.1.7', 'Math.SQRT1_2')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Math.SQRT1_2")}}

    +{{Compat("javascript.builtins.Math.SQRT1_2")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Math.pow()")}}
    • -
    • {{jsxref("Math.sqrt()")}}
    • -
    +- {{jsxref("Math.pow()")}} +- {{jsxref("Math.sqrt()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/sqrt2/index.md b/files/fr/web/javascript/reference/global_objects/math/sqrt2/index.md index 964c355404..a9ba6b6994 100644 --- a/files/fr/web/javascript/reference/global_objects/math/sqrt2/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/sqrt2/index.md @@ -9,71 +9,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 original_slug: Web/JavaScript/Reference/Objets_globaux/Math/SQRT2 --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Math.SQRT2 représente la racine carrée de 2 et vaut environ 1.414 :

    +La propriété **`Math.SQRT2`** représente la racine carrée de 2 et vaut environ 1.414 : -

    Math.SQRT2=21.414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414

    +Math.SQRT2=21.414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414 -
    {{EmbedInteractiveExample("pages/js/math-sqrt2.html")}}
    +{{EmbedInteractiveExample("pages/js/math-sqrt2.html")}}{{js_property_attributes(0,0,0)}} +## Description +`SQRT2` est une propriété statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.SQRT2`, elle ne doit pas être appelée comme propriété d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -
    {{js_property_attributes(0,0,0)}}
    +## Exemples -

    Description

    +La fonction suivante renvoie la valeur de la racine carrée de 2 : -

    SQRT2 est une propriété statique de Math et doit toujours être utilisée avec la syntaxe Math.SQRT2, elle ne doit pas être appelée comme propriété d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    - -

    Exemples

    - -

    La fonction suivante renvoie la valeur de la racine carrée de 2 :

    - -
    function getRoot2() {
    +```js
    +function getRoot2() {
        return Math.SQRT2;
     }
     
    -getRoot2(); // 1.4142135623730951
    +getRoot2(); // 1.4142135623730951 +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.1.8', 'Math.SQRT2')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.sqrt2', 'Math.SQRT2')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.sqrt2', 'Math.SQRT2')}}{{Spec2('ESDraft')}} 
    +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.1.8', 'Math.SQRT2')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.sqrt2', 'Math.SQRT2')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.sqrt2', 'Math.SQRT2')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Math.SQRT2")}}

    +{{Compat("javascript.builtins.Math.SQRT2")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Math.pow()")}}
    • -
    • {{jsxref("Math.sqrt()")}}
    • -
    +- {{jsxref("Math.pow()")}} +- {{jsxref("Math.sqrt()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/tan/index.md b/files/fr/web/javascript/reference/global_objects/math/tan/index.md index 17d938acab..12b35857d3 100644 --- a/files/fr/web/javascript/reference/global_objects/math/tan/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/tan/index.md @@ -9,90 +9,66 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan original_slug: Web/JavaScript/Reference/Objets_globaux/Math/tan --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.tan() renvoie la tangente d'un nombre exprimant un angle en radians.

    +La fonction **`Math.tan()`** renvoie la tangente d'un nombre exprimant un angle en radians. -
    {{EmbedInteractiveExample("pages/js/math-tan.html")}}
    +{{EmbedInteractiveExample("pages/js/math-tan.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.tan(x)
    + Math.tan(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre qui représente un angle en radians.
    -
    +- `x` + - : Un nombre qui représente un angle en radians. -

    Valeur de retour

    +### Valeur de retour -

    La tangente de l'angle fourni en argument (exprimé en radians).

    +La tangente de l'angle fourni en argument (exprimé en radians). -

    Description

    +## Description -

    La méthode Math.tan() renvoie une valeur numérique qui représente la tangente d'un angle.

    +La méthode `Math.tan()` renvoie une valeur numérique qui représente la tangente d'un angle. -

    tan() est une méthode statique de Math et doit toujours être utilisée avec la syntaxe Math.tan(), elle ne doit pas être utilisée comme méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

    +`tan()` est une méthode statique de `Math` et doit toujours être utilisée avec la syntaxe `Math.tan()`, elle ne doit pas être utilisée comme méthode d'un autre objet qui aurait été créé (`Math` n'est pas un constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.tan()

    +### Utiliser `Math.tan()` -
    Math.tan(1); // 1.5574077246549023
    +```js +Math.tan(1); // 1.5574077246549023 +``` -

    Math.tan() considère un argument exprimé en radians. Cependant, on peut vouloir travailler avec des valeurs en degrés. Pour cela, on pourra utiliser la fonction suivante qui calcule la tangente après avoir converti l'argument en radians :

    +`Math.tan()` considère un argument exprimé en radians. Cependant, on peut vouloir travailler avec des valeurs en degrés. Pour cela, on pourra utiliser la fonction suivante qui calcule la tangente après avoir converti l'argument en radians : -
    function getTanDeg(deg) {
    +```js
    +function getTanDeg(deg) {
        var rad = deg * Math.PI/180;
        return Math.tan(rad);
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
    {{SpecName('ES5.1', '#sec-15.8.2.18', 'Math.tan')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-math.tan', 'Math.tan')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-math.tan', 'Math.tan')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.tan")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acos()")}}
    • -
    • {{jsxref("Math.asin()")}}
    • -
    • {{jsxref("Math.atan()")}}
    • -
    • {{jsxref("Math.atan2()")}}
    • -
    • {{jsxref("Math.cos()")}}
    • -
    • {{jsxref("Math.sin()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. | +| {{SpecName('ES5.1', '#sec-15.8.2.18', 'Math.tan')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-math.tan', 'Math.tan')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-math.tan', 'Math.tan')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.tan")}} + +## Voir aussi + +- {{jsxref("Math.acos()")}} +- {{jsxref("Math.asin()")}} +- {{jsxref("Math.atan()")}} +- {{jsxref("Math.atan2()")}} +- {{jsxref("Math.cos()")}} +- {{jsxref("Math.sin()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/tanh/index.md b/files/fr/web/javascript/reference/global_objects/math/tanh/index.md index be6fc10fd0..88505bc59d 100644 --- a/files/fr/web/javascript/reference/global_objects/math/tanh/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/tanh/index.md @@ -11,53 +11,56 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh original_slug: Web/JavaScript/Reference/Objets_globaux/Math/tanh --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.tanh() renvoie la tangente hyperbolique d'un nombre définie par :

    +La fonction **`Math.tanh()`** renvoie la tangente hyperbolique d'un nombre définie par : -

    tanhx=sinhxcoshx=ex-e-xex+e-x=e2x-1e2x+1\tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x}+1}

    +tanhx=sinhxcoshx=ex-e-xex+e-x=e2x-1e2x+1\tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x}+1} -
    {{EmbedInteractiveExample("pages/js/math-tanh.html")}}
    +{{EmbedInteractiveExample("pages/js/math-tanh.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.tanh(x)
    + Math.tanh(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La tangente hyperbolique du nombre fourni en argument.

    +La tangente hyperbolique du nombre fourni en argument. -

    Description

    +## Description -

    tanh() est une méthode statique de l'objet Math, elle doit toujours être utilisée avec la syntaxe Math.tanh(), elle ne doit pas être utilisée comme une méthode d'un objet Math qui aurait été instancié (Math n'est pas une constructeur).

    +`tanh()` est une méthode statique de l'objet `Math`, elle doit toujours être utilisée avec la syntaxe `Math.tanh()`, elle ne doit pas être utilisée comme une méthode d'un objet `Math` qui aurait été instancié (`Math` n'est pas une constructeur). -

    Exemples

    +## Exemples -

    Utiliser Math.tanh()

    +### Utiliser `Math.tanh()` -
    Math.tanh(0);        // 0
    +```js
    +Math.tanh(0);        // 0
     Math.tanh(Infinity); // 1
    -Math.tanh(1);        // 0.7615941559557649
    +Math.tanh(1); // 0.7615941559557649 +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Cette méthode peut être émulée grâce à la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} :

    +Cette méthode peut être émulée grâce à la fonction {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} : -
    Math.tanh = Math.tanh || function(x){
    +```js
    +Math.tanh = Math.tanh || function(x){
       var a = Math.exp(+x), b = Math.exp(-x);
       return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (a + b);
    -}
    +} +``` -

    et si on souhaite n'utiliser qu'un seul appel à {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}} :

    +et si on souhaite n'utiliser qu'un seul appel à {{jsxref("Objets_globaux/Math/exp", "Math.exp()")}}` :` -
    Math.tanhx = Math.tanhx || function(x) {
    +```js
    +Math.tanhx = Math.tanhx || function(x) {
       if(x === Infinity) {
         return 1;
       } else if(x === -Infinity) {
    @@ -66,40 +69,24 @@ Math.tanh(1);        // 0.7615941559557649
    var y = Math.exp(2 * x); return (y - 1) / (y + 1); } -}; - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.tanh")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.acosh()")}}
    • -
    • {{jsxref("Math.asinh()")}}
    • -
    • {{jsxref("Math.atanh()")}}
    • -
    • {{jsxref("Math.cosh()")}}
    • -
    • {{jsxref("Math.sinh()")}}
    • -
    +}; +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.tanh', 'Math.tanh')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.tanh")}} + +## Voir aussi + +- {{jsxref("Math.acosh()")}} +- {{jsxref("Math.asinh()")}} +- {{jsxref("Math.atanh()")}} +- {{jsxref("Math.cosh()")}} +- {{jsxref("Math.sinh()")}} diff --git a/files/fr/web/javascript/reference/global_objects/math/trunc/index.md b/files/fr/web/javascript/reference/global_objects/math/trunc/index.md index c78b0cb6ec..64c918039a 100644 --- a/files/fr/web/javascript/reference/global_objects/math/trunc/index.md +++ b/files/fr/web/javascript/reference/global_objects/math/trunc/index.md @@ -11,84 +11,67 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc original_slug: Web/JavaScript/Reference/Objets_globaux/Math/trunc --- -
    {{JSRef}}
    +{{JSRef}} -

    La fonction Math.trunc() retourne la troncature entière d'un nombre en retirant sa partie décimale.

    +La fonction **`Math.trunc()`** retourne la troncature entière d'un nombre en retirant sa partie décimale. -

    Math.trunc(x)={xsix0xsix<0\mathtt{\operatorname{Math.trunc}(x)} = \begin{cases} \left\lfloor x \right\rfloor & \text{if} & x \geq 0 \\ \left\lceil x \right\rceil & \text{if} &x < 0 \end{cases}

    +Math.trunc(x)={xsix0xsix<0\mathtt{\operatorname{Math.trunc}(x)} = \begin{cases} \left\lfloor x \right\rfloor & \text{if} & x \geq 0 \\ \left\lceil x \right\rceil & \text{if} &x < 0 \end{cases} -
    {{EmbedInteractiveExample("pages/js/math-trunc.html")}}
    +{{EmbedInteractiveExample("pages/js/math-trunc.html")}} -

    Syntaxe

    +## Syntaxe -
    Math.trunc(x)
    + Math.trunc(x) -

    Paramètres

    +### Paramètres -
    -
    x
    -
    Un nombre.
    -
    +- `x` + - : Un nombre. -

    Valeur de retour

    +### Valeur de retour -

    La partie entière du nombre passé en argument.

    +La partie entière du nombre passé en argument. -

    Description

    +## Description -

    Contrairement aux autres méthodes {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} et {{jsxref("Math.round()")}}, Math.trunc() fonctionne de façon très simple : la partie décimale du nombre est retirée et on conserve la partie entière (que le nombre soit positif ou négatif).
    -
    - Ainsi, si l'argument est un nombre positif, Math.trunc() sera équivalent à Math.floor(), sinon Math.trunc() sera équivalent à Math.ceil().

    +Contrairement aux autres méthodes {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} et {{jsxref("Math.round()")}}, `Math.trunc()` fonctionne de façon très simple : la partie décimale du nombre est retirée et on conserve la partie entière (que le nombre soit positif ou négatif). -

    On notera que l'argument passé à la méthode est converti en nombre de façon implicite.

    +Ainsi, si l'argument est un nombre positif, `Math.trunc()` sera équivalent à `Math.floor()`, sinon `Math.trunc()` sera équivalent à `Math.ceil()`. -

    trunc() est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.trunc(), elle ne doit pas être utilisée comme la méthode d'un objet qui aurait été instancié (Math n'est pas un constructeur).

    +On notera que l'argument passé à la méthode est converti en nombre de façon implicite. -

    Exemples

    +`trunc()` est une méthode statique de `Math`, elle doit toujours être utilisée avec la syntaxe `Math.trunc()`, elle ne doit pas être utilisée comme la méthode d'un objet qui aurait été instancié (`Math` n'est pas un constructeur). -

    Utiliser Math.trunc()

    +## Exemples -
    Math.trunc(13.37);   // 13
    +### Utiliser `Math.trunc()`
    +
    +```js
    +Math.trunc(13.37);   // 13
     Math.trunc(42.84);   // 42
     Math.trunc(0.123);   //  0
     Math.trunc(-0.123);  // -0
     Math.trunc("-1.123");// -1
     Math.trunc(NaN);     // NaN
     Math.trunc("toto");  // NaN
    -Math.trunc();        // NaN
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaire
    {{SpecName('ES2015', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ES2015')}}Première définition.
    {{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Math.trunc")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Math.abs()")}}
    • -
    • {{jsxref("Math.ceil()")}}
    • -
    • {{jsxref("Math.floor()")}}
    • -
    • {{jsxref("Math.round()")}}
    • -
    • {{jsxref("Math.sign()")}}
    • -
    +Math.trunc(); // NaN +``` + +## Spécifications + +| Spécification | État | Commentaire | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-math.trunc', 'Math.trunc')}} | {{Spec2('ES2015')}} | Première définition. | +| {{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Math.trunc")}} + +## Voir aussi + +- {{jsxref("Math.abs()")}} +- {{jsxref("Math.ceil()")}} +- {{jsxref("Math.floor()")}} +- {{jsxref("Math.round()")}} +- {{jsxref("Math.sign()")}} diff --git a/files/fr/web/javascript/reference/global_objects/nan/index.md b/files/fr/web/javascript/reference/global_objects/nan/index.md index b2fa6e4105..f6608f929c 100644 --- a/files/fr/web/javascript/reference/global_objects/nan/index.md +++ b/files/fr/web/javascript/reference/global_objects/nan/index.md @@ -8,82 +8,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/NaN original_slug: Web/JavaScript/Reference/Objets_globaux/NaN --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La propriété globale NaN est une valeur utilisée pour représenter une quantité qui n'est pas un nombre (Not a Number en anglais).

    +La propriété globale **`NaN`** est une valeur utilisée pour représenter une quantité qui n'est pas un nombre (**\*N**ot **a** **N**umber\* en anglais). -

    {{js_property_attributes(0,0,0)}}

    +{{js_property_attributes(0,0,0)}} -
    {{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}} -

    Syntaxe

    +## Syntaxe -
    NaN
    + NaN -

    Description

    +## Description -

    NaN est une propriété de l'objet global, c'est-à-dire qu'elle est accessible globalement.

    +`NaN` est une propriété de _l'objet global_, c'est-à-dire qu'elle est accessible globalement. -

    La valeur initiale de NaN est Number.NaN. Dans les navigateurs modernes, NaN est une propriété non-configurable et non-écrivable. Si ce n'est pas le cas, il faut éviter de la modifier et de l'écraser.

    +La valeur initiale de `NaN` est `Number.NaN`. Dans les navigateurs modernes, `NaN` est une propriété non-configurable et non-écrivable. Si ce n'est pas le cas, il faut éviter de la modifier et de l'écraser. -

    Il est rare d'utiliser expressément NaN dans un programme. On récupère généralement NaN comme le résultat d'une fonction mathématique qui échoue (Math.sqrt(-1)) où quand une fonction qui tente d'interpréter un nombre échoue (parseInt("blabla")).

    +Il est rare d'utiliser expressément `NaN` dans un programme. On récupère généralement `NaN` comme le résultat d'une fonction mathématique qui échoue (`Math.sqrt(-1)`) où quand une fonction qui tente d'interpréter un nombre échoue (`parseInt("blabla")`). -

    Tester NaN

    +### Tester `NaN` -

    Les opérateurs d'égalité (== et ===) ne peuvent pas être utilisé pour tester une valeur par rapport à NaN. Il faut utiliser {{jsxref("Number.isNaN()")}} ou {{jsxref("isNaN", "isNaN()")}} à la place.

    +Les [opérateurs d'égalité](/fr/docs/Web/JavaScript/Les_diff%C3%A9rents_tests_d_%C3%A9galit%C3%A9_comment_les_utiliser) (`==` et `===`) ne peuvent pas être utilisé pour tester une valeur par rapport à `NaN`. Il faut utiliser {{jsxref("Number.isNaN()")}} ou {{jsxref("isNaN", "isNaN()")}} à la place. -
    NaN === NaN;        // false
    +```js
    +NaN === NaN;        // false
     Number.NaN === NaN; // false
     isNaN(NaN);         // true
     isNaN(Number.NaN);  // true
    -
    - -

    La différence entre isNaN() et Number.isNaN() est la façon dont les valeurs sont, ou non, converties en nombre avant de vérifier si la valeur est NaN : isNaN() convertira l'argument en nombre avant de vérifier alors que Number.isNaN() ne renverra true que si l'opérande vaut NaN.

    - -
    isNaN('coucou monde');        // renvoie true
    -Number.isNaN('coucou monde'); // renvoie false
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3
    {{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.NaN")}}

    - -

    Voir aussi

    - - +``` + +La différence entre `isNaN()` et `Number.isNaN()` est la façon dont les valeurs sont, ou non, converties en nombre avant de vérifier si la valeur est `NaN` : `isNaN()` convertira l'argument en nombre avant de vérifier alors que `Number.isNaN()` ne renverra `true` que si l'opérande vaut `NaN`. + +```js +isNaN('coucou monde'); // renvoie true +Number.isNaN('coucou monde'); // renvoie false +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ---------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.3 | +| {{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.NaN")}} + +## Voir aussi + +- {{jsxref("Number.NaN")}} +- {{jsxref("Number.isNaN()")}} +- {{jsxref("isNaN", "isNaN()")}} +- [L'égalité en JavaScript](/fr/docs/Web/JavaScript/Guide/%C3%89galit%C3%A9_en_JavaScript) diff --git a/files/fr/web/javascript/reference/global_objects/null/index.md b/files/fr/web/javascript/reference/global_objects/null/index.md index fb9a228f19..265e06cd86 100644 --- a/files/fr/web/javascript/reference/global_objects/null/index.md +++ b/files/fr/web/javascript/reference/global_objects/null/index.md @@ -9,31 +9,34 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/null original_slug: Web/JavaScript/Reference/Objets_globaux/null --- -
    {{jsSidebar("Objects")}}
    +{{jsSidebar("Objects")}} -

    La valeur null est un littéral JavaScript représentant la nullité au sens où aucune valeur pour l'objet n'est présente. C'est une des valeurs primitives de JavaScript.

    +La valeur **`null`** est un littéral JavaScript représentant la nullité au sens où aucune valeur pour l'objet n'est présente. C'est une des valeurs primitives de JavaScript. -
    {{EmbedInteractiveExample("pages/js/globalprops-null.html")}}
    +{{EmbedInteractiveExample("pages/js/globalprops-null.html")}} -

    Syntaxe

    +## Syntaxe -
    null
    + null -

    Description

    +## Description -

    La valeur null est un littéral (et non pas une propriété de l'objet global telle que {{jsxref("undefined")}}). Dans certaines API, null est souvent utilisé en valeur de retour lorsqu'un objet est attendu mais qu'aucun objet ne convient. Lors de tests d'égalité avec null ou undefined, il faut faire attention aux différences entre les opérateurs d'égalité faible (==) et stricte (===) (on aura une conversion de type avec le premier).

    +La valeur `null` est un littéral (et non pas une propriété de l'objet global telle que {{jsxref("undefined")}}). Dans certaines API, `null` est souvent utilisé en valeur de retour lorsqu'un objet est attendu mais qu'aucun objet ne convient. Lors de tests d'égalité avec `null` ou `undefined`, il faut faire attention aux [différences entre les opérateurs d'égalité faible (==) et stricte (===)](/fr/docs/Web/JavaScript/Les_différents_tests_d_égalité_comment_les_utiliser) (on aura une conversion de type avec le premier). -
    // toto n'existe pas, n'a pas été défini et n'a jamais été initialisé
    +```js
    +// toto n'existe pas, n'a pas été défini et n'a jamais été initialisé
     toto;
     "ReferenceError: toto is not defined"
     
     // toto existe mais n'a ni type ni valeur
     var toto = null;
    -console.log(toto); // null
    +console.log(toto); // null +``` -

    Différence entre null et undefined

    +### Différence entre `null` et `undefined` -
    typeof null;           // "object" (pas null pour des raisons historiques)
    +```js
    +typeof null;           // "object" (pas null pour des raisons historiques)
     typeof undefined;      // "undefined"
     null === undefined;    // false
     null  == undefined;    // true
    @@ -42,47 +45,22 @@ null  == null;         // true
     !null;                 // true
     isNaN(1 + null);       // false
     isNaN(1 + undefined);  // true
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale.
    {{SpecName('ES5.1', '#sec-4.3.11', 'null value')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-null-value', 'null value')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-null-value', 'null value')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.null")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("undefined")}}
    • -
    • {{jsxref("NaN")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. | +| {{SpecName('ES5.1', '#sec-4.3.11', 'null value')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-null-value', 'null value')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-null-value', 'null value')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.null")}} + +## Voir aussi + +- {{jsxref("undefined")}} +- {{jsxref("NaN")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/epsilon/index.md b/files/fr/web/javascript/reference/global_objects/number/epsilon/index.md index 88138770c9..cc86d668c0 100644 --- a/files/fr/web/javascript/reference/global_objects/number/epsilon/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/epsilon/index.md @@ -11,65 +11,47 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/EPSILON original_slug: Web/JavaScript/Reference/Objets_globaux/Number/EPSILON --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Number.EPSILON représente la différence entre le chiffre 1 (un) et la plus petite valeur supérieure à 1 qui peut être représentée par un nombre en JavaScript.

    +La propriété **`Number.EPSILON`** représente la différence entre le chiffre 1 (un) et la plus petite valeur supérieure à 1 qui peut être représentée par un nombre en JavaScript. -

    Il n'est pas nécessaire de créer un objet {{jsxref("Number")}} pour accéder à cette propriété statique, elle est accessible avec Number.EPSILON.

    +Il n'est pas nécessaire de créer un objet {{jsxref("Number")}} pour accéder à cette propriété statique, elle est accessible avec `Number.EPSILON`. -
    {{EmbedInteractiveExample("pages/js/number-epsilon.html")}}
    +{{EmbedInteractiveExample("pages/js/number-epsilon.html")}}{{js_property_attributes(0,0,0)}} +## Description +La propriété `EPSILON` vaut environ `2.2204460492503130808472633361816E-16` (ce qui correspond à 2^-52). -
    {{js_property_attributes(0,0,0)}}
    +## Exemple -

    Description

    +### Tester une égalité mathématique avec un seuil de précision -

    La propriété EPSILON vaut environ 2.2204460492503130808472633361816E-16 (ce qui correspond à 2^-52).

    - -

    Exemple

    - -

    Tester une égalité mathématique avec un seuil de précision

    - -
    x = 0.2;
    +```js
    +x = 0.2;
     y = 0.3;
    -equal = (Math.abs(x - y) < Number.EPSILON);
    +equal = (Math.abs(x - y) < Number.EPSILON); +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    if (Number.EPSILON === undefined) {
    +```js
    +if (Number.EPSILON === undefined) {
       Number.EPSILON  =  Math.pow(2, -52);
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.epsilon', 'Number.EPSILON')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.EPSILON")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette propriété.
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.epsilon', 'Number.EPSILON')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.EPSILON")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette propriété. diff --git a/files/fr/web/javascript/reference/global_objects/number/index.md b/files/fr/web/javascript/reference/global_objects/number/index.md index bc4c146cca..67e0253224 100644 --- a/files/fr/web/javascript/reference/global_objects/number/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/index.md @@ -8,137 +8,129 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number original_slug: Web/JavaScript/Reference/Objets_globaux/Number --- -
    {{JSRef}}
    - -

    L'objet Number est une enveloppe objet (wrapper) autour du type primitif numérique. Autrement dit, il est utilisé pour manipuler les nombres comme des objets. Pour créer un objet Number, on utilise le constructeur Number().

    - -

    Le type JavaScript Number utilise une représentation binaire à précision double sur 64 bits telle que décrite par le standard IEEE 754. Les implémentations plus récentes offrent un nouveau type : {{jsxref("BigInt")}} qui permet de représenter des entiers avec une précision arbitraire.

    - -

    Syntaxe

    - -
    new Number(valeur);
    -var a = new Number('123'); // a === 123 donnera false
    -var b = Number('123'); // b === 123 donnera true
    -a instanceof Number; // donnera true
    -b instanceof Number; // donnera false
    - -

    Paramètres

    - -
    -
    valeur
    -
    La valeur numérique pour l'objet qu'on souhaite créer.
    -
    - -

    Description

    - -

    L'objet Number est principalement utilisé dans les cas de figure suivants :

    - -
      -
    • Si l'argument ne peut pas être converti en un nombre, il renverra {{jsxref("NaN")}}.
    • -
    • Dans un contexte de fonction simple (quand il n'est pas utilisé comme un constructeur avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}), Number peut être utilisé afin d'effectuer des conversions.
    • -
    - -

    Propriétés

    - -
    -
    {{jsxref("Number.EPSILON")}}
    -
    Le plus petit intervalle entre deux valeurs qu'il est possible de représenter en JavaScript.
    -
    {{jsxref("Number.MAX_SAFE_INTEGER")}}
    -
    La valeur entière maximale qu'on peut représenter en JavaScript (2^53 - 1).
    -
    {{jsxref("Number.MAX_VALUE")}}
    -
    La valeur numérique maximale qu'on peut représenter en JavaScript.
    -
    {{jsxref("Number.MIN_SAFE_INTEGER")}}
    -
    La valeur entière minimale qu'on peut représenter en JavaScript (-(2^53 - 1)).
    -
    {{jsxref("Number.MIN_VALUE")}}
    -
    La plus petite valeur qu'on peut représenter en JavaScript, c'est-à-dire le plus petit nombre positif (le nombre le plus près de zéro qui n'est pas égal à zéro et qu'on peut représenter en JavaScript).
    -
    {{jsxref("Number.NaN")}}
    -
    Une valeur spéciale pour représenter les valeurs non-numériques (NaN correspond à « not a number » en anglais, qui signifie « n'est pas un nombre »).
    -
    {{jsxref("Number.NEGATIVE_INFINITY")}}
    -
    Une valeur spéciale pour représenter l'infini négatif.
    -
    {{jsxref("Number.POSITIVE_INFINITY")}}
    -
    Une valeur spéciale pour représenter l'infini (positif).
    -
    {{jsxref("Number.prototype")}}
    -
    Cet objet permet d'ajouter des propriétés aux instances de Number.
    -
    - -

    Méthodes

    - -
    -
    {{jsxref("Number.isNaN()")}}
    -
    Cette méthode permet de déterminer si la valeur passée en argument vaut NaN.
    -
    {{jsxref("Number.isFinite()")}}
    -
    Cette méthode permet de déterminer si la valeur numérique passée en argument est un nombre fini.
    -
    {{jsxref("Number.isInteger()")}}
    -
    Cette méthode permet de déterminer si la valeur passée en argument est un entier.
    -
    {{jsxref("Number.isSafeInteger()")}}
    -
    Cette méthode permet de déterminer si la valeur passée en argument peut correctement être représentée comme un entier en JavaScript (savoir si elle est comprise entre -(2^53 - 1) et 2^53 - 1).
    -
    {{jsxref("Number.toInteger()")}} {{obsolete_inline}}
    -
    Cette méthode est utilisée afin d'évaluer et de convertir la valeur passée en argument en entier (ou en l'{{jsxref("Infinity", "infini","",1)}}). Cette méthode a été supprimée.
    -
    {{jsxref("Number.parseFloat()", "Number.parseFloat(string)")}}
    -
    Cette méthode correspond à la méthode {{jsxref("parseFloat", "parseFloat()")}} de l'objet global.
    -
    {{jsxref("Number.parseInt()", "Number.parseInt(string, [radix])")}}
    -
    Cette méthode correspond à la méthode {{jsxref("parseInt", "parseInt()")}} de l'objet global.
    -
    - -

    Les instances de Number

    - -

    Toutes les instances de Number héritent de {{jsxref("Number.prototype")}}. Il est possible de modifier le prototype du constructeur Number pour affecter toutes les instances de Number.

    - -

    Méthodes

    - -
    -
    -
    {{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(fractionDigits)")}}
    -
    Retourne une chaîne représentant le nombre en notation exponentielle.
    -
    {{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(digits)")}}
    -
    Retourne une chaîne représentant le nombre avec la notation virgule fixe.
    -
    {{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([locales [, options]])")}}
    -
    Retourne une chaîne avec une représentation sensible à la langue de ce nombre. Surcharge la méthode {{jsxref("Object.prototype.toLocaleString()")}}.
    -
    {{jsxref("Number.prototype.toPrecision()", "Number.prototype.toPrecision(precision)")}}
    -
    Retourne une chaîne représentant le nombre avec une précision donnée en notation virgule fixe ou exponentielle.
    -
    {{jsxref("Number.prototype.toString()", "Number.prototype.toString([radix])")}}
    -
    Retourne une chaîne représentant le nombre dans une base numérique (radix) donnée. Surcharge la méthode {{jsxref("Object.prototype.toString()")}}.
    -
    {{jsxref("Number.prototype.valueOf()")}}
    -
    Retourne la valeur primitive de l'objet spécifié. Surcharge la méthode {{jsxref("Object.prototype.valueOf()")}}.
    -
    -
    - -

    Exemples

    - -

    Utiliser l'objet Number pour affecter des valeurs numériques à des variables

    - -

    Dans l'exemple suivant, on utilise les propriétés de l'objet Number pour affecter des valeurs à des variables numériques :

    - -
    var plusGrandNombre = Number.MAX_VALUE;
    +{{JSRef}}
    +
    +L'objet **`Number`** est une enveloppe objet (_wrapper_) autour du [type primitif numérique](/fr/docs/Web/JavaScript/Structures_de_données#Le_type_nombre). Autrement dit, il est utilisé pour manipuler les nombres comme des objets. Pour créer un objet `Number`, on utilise le constructeur `Number()`.
    +
    +Le type JavaScript `Number` utilise [une représentation binaire à précision double sur 64 bits telle que décrite par le standard IEEE 754](https://fr.wikipedia.org/wiki/IEEE_754). Les implémentations plus récentes offrent un nouveau type : {{jsxref("BigInt")}} qui permet de représenter des entiers avec une précision arbitraire.
    +
    +## Syntaxe
    +
    +    new Number(valeur);
    +    var a = new Number('123'); // a === 123 donnera false
    +    var b = Number('123'); // b === 123 donnera true
    +    a instanceof Number; // donnera true
    +    b instanceof Number; // donnera false
    +
    +### Paramètres
    +
    +- `valeur`
    +  - : La valeur numérique pour l'objet qu'on souhaite créer.
    +
    +## Description
    +
    +L'objet `Number` est principalement utilisé dans les cas de figure suivants :
    +
    +- Si l'argument ne peut pas être converti en un nombre, il renverra {{jsxref("NaN")}}.
    +- Dans un contexte de fonction simple (quand il n'est pas utilisé comme un constructeur avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}), `Number` peut être utilisé afin d'effectuer des conversions.
    +
    +## Propriétés
    +
    +- {{jsxref("Number.EPSILON")}}
    +  - : Le plus petit intervalle entre deux valeurs qu'il est possible de représenter en JavaScript.
    +- {{jsxref("Number.MAX_SAFE_INTEGER")}}
    +  - : La valeur entière maximale qu'on peut représenter en JavaScript (`2^53 - 1`).
    +- {{jsxref("Number.MAX_VALUE")}}
    +  - : La valeur numérique maximale qu'on peut représenter en JavaScript.
    +- {{jsxref("Number.MIN_SAFE_INTEGER")}}
    +  - : La valeur entière minimale qu'on peut représenter en JavaScript (`-(2^53 - 1)`).
    +- {{jsxref("Number.MIN_VALUE")}}
    +  - : La plus petite valeur qu'on peut représenter en JavaScript, c'est-à-dire le plus petit nombre positif (le nombre le plus près de zéro qui n'est pas égal à zéro et qu'on peut représenter en JavaScript).
    +- {{jsxref("Number.NaN")}}
    +  - : Une valeur spéciale pour représenter les valeurs non-numériques (**NaN** correspond à « **\*n**ot **a** **n**umber\* » en anglais, qui signifie « n'est pas un nombre »).
    +- {{jsxref("Number.NEGATIVE_INFINITY")}}
    +  - : Une valeur spéciale pour représenter l'infini négatif.
    +- {{jsxref("Number.POSITIVE_INFINITY")}}
    +  - : Une valeur spéciale pour représenter l'infini (positif).
    +- {{jsxref("Number.prototype")}}
    +  - : Cet objet permet d'ajouter des propriétés aux instances de `Number`.
    +
    +## Méthodes
    +
    +- {{jsxref("Number.isNaN()")}}
    +  - : Cette méthode permet de déterminer si la valeur passée en argument vaut `NaN`.
    +- {{jsxref("Number.isFinite()")}}
    +  - : Cette méthode permet de déterminer si la valeur numérique passée en argument est un nombre fini.
    +- {{jsxref("Number.isInteger()")}}
    +  - : Cette méthode permet de déterminer si la valeur passée en argument est un entier.
    +- {{jsxref("Number.isSafeInteger()")}}
    +  - : Cette méthode permet de déterminer si la valeur passée en argument peut correctement être représentée comme un entier en JavaScript (savoir si elle est comprise entre `-(2^53 - 1)` et `2^53 - 1`).
    +- {{jsxref("Number.toInteger()")}} {{obsolete_inline}}
    +  - : Cette méthode est utilisée afin d'évaluer et de convertir la valeur passée en argument en entier (ou en l'{{jsxref("Infinity", "infini","",1)}}). Cette méthode a été supprimée.
    +- {{jsxref("Number.parseFloat()", "Number.parseFloat(string)")}}
    +  - : Cette méthode correspond à la méthode {{jsxref("parseFloat", "parseFloat()")}} de l'objet global.
    +- {{jsxref("Number.parseInt()", "Number.parseInt(string, [radix])")}}
    +  - : Cette méthode correspond à la méthode {{jsxref("parseInt", "parseInt()")}} de l'objet global.
    +
    +## Les instances de `Number`
    +
    +Toutes les instances de `Number` héritent de {{jsxref("Number.prototype")}}. Il est possible de modifier le prototype du constructeur `Number` pour affecter toutes les instances de `Number`.
    +
    +### Méthodes
    +
    +- {{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(fractionDigits)")}}
    +  - : Retourne une chaîne représentant le nombre en notation exponentielle.
    +- {{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(digits)")}}
    +  - : Retourne une chaîne représentant le nombre avec la notation virgule fixe.
    +- {{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([locales [, options]])")}}
    +  - : Retourne une chaîne avec une représentation sensible à la langue de ce nombre. Surcharge la méthode {{jsxref("Object.prototype.toLocaleString()")}}.
    +- {{jsxref("Number.prototype.toPrecision()", "Number.prototype.toPrecision(precision)")}}
    +  - : Retourne une chaîne représentant le nombre avec une précision donnée en notation virgule fixe ou exponentielle.
    +- {{jsxref("Number.prototype.toString()", "Number.prototype.toString([radix])")}}
    +  - : Retourne une chaîne représentant le nombre dans une base numérique (radix) donnée. Surcharge la méthode {{jsxref("Object.prototype.toString()")}}.
    +- {{jsxref("Number.prototype.valueOf()")}}
    +  - : Retourne la valeur primitive de l'objet spécifié. Surcharge la méthode {{jsxref("Object.prototype.valueOf()")}}.
    +
    +## Exemples
    +
    +### Utiliser l'objet `Number` pour affecter des valeurs numériques à des variables
    +
    +Dans l'exemple suivant, on utilise les propriétés de l'objet `Number` pour affecter des valeurs à des variables numériques :
    +
    +```js
    +var plusGrandNombre = Number.MAX_VALUE;
     var plusPetitNombre = Number.MIN_VALUE;
     var infini = Number.POSITIVE_INFINITY;
     var infiniNégatif = Number.NEGATIVE_INFINITY;
     var nonNumérique = Number.NaN;
    -
    +``` -

    Intervalle entier pour Number

    +### Intervalle entier pour `Number` -

    Dans l'exemple suivant, on illustre les valeurs numériques maximales et minimales (exclues) qu'on peut représenter avec un nombre en JavaScript (pour plus de détails, voir le chapitre 6.1.6 du standard ECMAScript) :

    +Dans l'exemple suivant, on illustre les valeurs numériques maximales et minimales (exclues) qu'on peut représenter avec un nombre en JavaScript (pour plus de détails, [voir le chapitre 6.1.6 du standard ECMAScript](https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type)) : -
    var biggestInt = 9007199254740992; //Number.MAX_SAFE_INTEGER+1 (2^53-1)
    +```js
    +var biggestInt = 9007199254740992; //Number.MAX_SAFE_INTEGER+1 (2^53-1)
     var smallestInt = -9007199254740992; //Number.MIN_SAFE_INTEGER-1 -(2^53-1)
    -
    +``` -

    Lorsqu'on analyse et convertit des données JSON, les valeurs en dehors de cet intervalle peuvent entraîner des erreurs ou des corruptions de valeurs lors de leurs conversions. Selon les objets qu'on souhaite représenter, on peut utiliser {{jsxref("String")}} dans certains cas pour représenter certaines valeurs.

    +Lorsqu'on analyse et convertit des données JSON, les valeurs en dehors de cet intervalle peuvent entraîner des erreurs ou des corruptions de valeurs lors de leurs conversions. Selon les objets qu'on souhaite représenter, on peut utiliser {{jsxref("String")}} dans certains cas pour représenter certaines valeurs. -

    Utiliser Number pour convertir un objet Date

    +### Utiliser `Number` pour convertir un objet `Date` -

    Dans l'exemple suivant, on convertit un objet {{jsxref("Date")}} en une valeur numérique grâce à la fonction Number :

    +Dans l'exemple suivant, on convertit un objet {{jsxref("Date")}} en une valeur numérique grâce à la fonction `Number` : -
    var d = new Date('December 17, 1995 03:24:00');
    +```js
    +var d = new Date('December 17, 1995 03:24:00');
     console.log(Number(d));
    -
    +``` -

    Ceci affichera "819167040000".

    +Ceci affichera "819167040000". -

    Convertir une chaîne représentant une valeur numérique en un nombre

    +### Convertir une chaîne représentant une valeur numérique en un nombre -
    Number("123");       // 123
    +```js
    +Number("123");       // 123
     Number("12.3");      // 12.3
     Number("12.00");     // 12
     Number("123e-1");    // 12.3
    @@ -149,54 +141,27 @@ Number("0o11");      // 9
     Number("toto");      // NaN
     Number("100a");      // NaN
     Number("-Infinity";) // -Infinity
    -
    - -
    -

    Note : On pourra également convertir null en 0 grâce à Number : Number(null) donnera 0.

    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.7', 'Number')}}{{Spec2('ES5.1')}}
    {{SpecName('ES6', '#sec-number-objects', 'Number')}}{{Spec2('ES6')}}Ajout des méthodes et propriétés suivantes : ({{jsxref("Number.EPSILON", "EPSILON")}}, {{jsxref("Number.isFinite", "isFinite")}}, {{jsxref("Number.isInteger", "isInteger")}}, {{jsxref("Number.isNaN", "isNaN")}}, {{jsxref("Number.parseFloat", "parseFloat")}}, {{jsxref("Number.parseInt", "parseInt")}})
    {{SpecName('ESDraft', '#sec-number-objects', 'Number')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number")}}

    - -

    Voir aussi

    - - +``` + +> **Note :** On pourra également convertir `null` en `0` grâce à `Number` : `Number(null)` donnera `0`. + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.7', 'Number')}} | {{Spec2('ES5.1')}} | | +| {{SpecName('ES6', '#sec-number-objects', 'Number')}} | {{Spec2('ES6')}} | Ajout des méthodes et propriétés suivantes : ({{jsxref("Number.EPSILON", "EPSILON")}}, {{jsxref("Number.isFinite", "isFinite")}}, {{jsxref("Number.isInteger", "isInteger")}}, {{jsxref("Number.isNaN", "isNaN")}}, {{jsxref("Number.parseFloat", "parseFloat")}}, {{jsxref("Number.parseInt", "parseInt")}}) | +| {{SpecName('ESDraft', '#sec-number-objects', 'Number')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number")}} + +## Voir aussi + +- {{jsxref("NaN")}} +- L'objet global {{jsxref("Math")}} +- [Les types de données en JavaScript](/fr/docs/Web/JavaScript/Structures_de_données#Le_type_nombre) +- [Un billet sur le type `Number` (en anglais)](https://medium.com/@maximus.koretskyi/javascripts-number-type-8d59199db1b6#.9whwe88tz) +- Représenter de grands entiers avec une précision arbitraire : {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/isfinite/index.md b/files/fr/web/javascript/reference/global_objects/number/isfinite/index.md index 9cf0331fab..bb0af546ce 100644 --- a/files/fr/web/javascript/reference/global_objects/number/isfinite/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/isfinite/index.md @@ -11,34 +11,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite original_slug: Web/JavaScript/Reference/Objets_globaux/Number/isFinite --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.isFinite() permet de déterminer si la valeur fournie est un nombre fini.

    +La méthode **`Number.isFinite()`** permet de déterminer si la valeur fournie est un nombre fini. -
    {{EmbedInteractiveExample("pages/js/number-isfinite.html")}}
    +{{EmbedInteractiveExample("pages/js/number-isfinite.html")}} -

    Syntaxe

    +## Syntaxe -
    Number.isFinite(valeurÀTester);
    + Number.isFinite(valeurÀTester); -

    Paramètres

    +### Paramètres -
    -
    valeurÀTester
    -
    La valeur dont on souhaite savoir si elle est finie.
    -
    +- `valeurÀTester` + - : La valeur dont on souhaite savoir si elle est finie. -

    Valeur de retour

    +### Valeur de retour -

    Un booléen indiquant si la valeur passée en argument est un nombre fini.

    +Un booléen indiquant si la valeur passée en argument est un nombre fini. -

    Description

    +## Description -

    Par rapport à la fonction de l'objet global {{jsxref("isFinite","isFinite()")}} qui convertit l'argument donné en un nombre, la fonction Number.isFinite ne convertit pas l'argument et ne renvoie pas true.

    +Par rapport à la fonction de l'objet global {{jsxref("isFinite","isFinite()")}} qui convertit l'argument donné en un nombre, la fonction `Number.isFinite `ne convertit pas l'argument et ne renvoie pas `true`. -

    Exemples

    +## Exemples -
    Number.isFinite(Infinity);  // false
    +```js
    +Number.isFinite(Infinity);  // false
     Number.isFinite(NaN);       // false
     Number.isFinite(-Infinity); // false
     
    @@ -50,11 +49,12 @@ Number.isFinite("0");       // false, ce qui aurait
     
     Number.isFinite(null);      // false, ce qui aurait
                                 // renvoyé true avc isFinite(null)
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    // Number.isFinite polyfill
    +```js
    +// Number.isFinite polyfill
     // http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite
     if (typeof Number.isFinite !== 'function') {
         Number.isFinite = function isFinite(value) {
    @@ -70,43 +70,28 @@ if (typeof Number.isFinite !== 'function') {
             return true;
         };
     }
    -
    - -

    Deuxième version plus concise qui utilise la méthode globale isFinite

    - -
    if (Number.isFinite === undefined) Number.isFinite = function(value) {
    -    return typeof value === "number" && isFinite(value);
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.isFinite")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette méthode
    • -
    • La méthode {{jsxref("isFinite", "isFinite()")}} de l'objet global
    • -
    +``` + +Deuxième version plus concise qui utilise la méthode globale `isFinite` + +```js +if (Number.isFinite === undefined) Number.isFinite = function(value) { +    return typeof value === "number" && isFinite(value); +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.isFinite")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette méthode +- La méthode {{jsxref("isFinite", "isFinite()")}} de l'objet global diff --git a/files/fr/web/javascript/reference/global_objects/number/isinteger/index.md b/files/fr/web/javascript/reference/global_objects/number/isinteger/index.md index a6f1f364e5..f299694e36 100644 --- a/files/fr/web/javascript/reference/global_objects/number/isinteger/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/isinteger/index.md @@ -10,34 +10,33 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger original_slug: Web/JavaScript/Reference/Objets_globaux/Number/isInteger --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.isInteger() permet de déterminer si l'argument est un nombre entier.

    +La méthode **`Number.isInteger()`** permet de déterminer si l'argument est un nombre entier. -
    {{EmbedInteractiveExample("pages/js/number-isinteger.html")}}
    +{{EmbedInteractiveExample("pages/js/number-isinteger.html")}} -

    Syntaxe

    +## Syntaxe -
    Number.isInteger(valeurÀTester)
    + Number.isInteger(valeurÀTester) -

    Paramètres

    +### Paramètres -
    -
    valeurÀTester
    -
    La valeur dont on souhaite savoir si elle est entière ou non.
    -
    +- `valeurÀTester` + - : La valeur dont on souhaite savoir si elle est entière ou non. -

    Valeur de retour

    +### Valeur de retour -

    Un booléen qui indique si la valeur fournie en argument est un entier.

    +Un booléen qui indique si la valeur fournie en argument est un entier. -

    Description

    +## Description -

    Si la valeur à tester est un entier, cette méthode renvoie true, false sinon. Si la valeur est {{jsxref("NaN")}} ou l'infini ({{jsxref("Infinity")}}), la méthode renverra false. La méthode renverra également true pour les nombres flottants qui peuvent être représentés comme des entiers.

    +Si la valeur à tester est un entier, cette méthode renvoie `true`, `false` sinon. Si la valeur est {{jsxref("NaN")}} ou l'infini ({{jsxref("Infinity")}}), la méthode renverra `false`. La méthode renverra également `true` pour les nombres flottants qui peuvent être représentés comme des entiers. -

    Exemples

    +## Exemples -
    Number.isInteger(1);         // true
    +```js
    +Number.isInteger(1);         // true
     Number.isInteger(-100000);   // true
     Number.isInteger(0);         // true
     Number.isInteger(1.000)      // true
    @@ -54,46 +53,29 @@ Number.isInteger("10");      // false
     Number.isInteger(5.0);       // true
     Number.isInteger(5.000000000000001);// false
     Number.isInteger(5.0000000000000001); // true
    -
    +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    Number.isInteger = Number.isInteger || function(value) {
    -    return typeof value === "number" &&
    -           isFinite(value) &&
    +```js
    +Number.isInteger = Number.isInteger || function(value) {
    +    return typeof value === "number" &&
    +           isFinite(value) &&
                Math.floor(value) === value;
    -};
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES6', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ES6')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.isInteger")}}

    - -

    Voir aussi

    - -
      -
    • L'objet global {{jsxref("Number")}} auquel appartient cette méthode.
    • -
    +}; +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES6', '#sec-number.isinteger', 'Number.isInteger')}} | {{Spec2('ES6')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.isInteger")}} + +## Voir aussi + +- L'objet global {{jsxref("Number")}} auquel appartient cette méthode. diff --git a/files/fr/web/javascript/reference/global_objects/number/isnan/index.md b/files/fr/web/javascript/reference/global_objects/number/isnan/index.md index 2b7f565807..fef4caa264 100644 --- a/files/fr/web/javascript/reference/global_objects/number/isnan/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/isnan/index.md @@ -10,36 +10,35 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN original_slug: Web/JavaScript/Reference/Objets_globaux/Number/isNaN --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.isNaN() permet de déterminer si la valeur passée en argument est {{jsxref("NaN")}}, avec un type {{jsxref("Number")}}. Cette version est plus robuste que la méthode de l'objet global {{jsxref("isNaN")}}.

    +La méthode **`Number.isNaN()`** permet de déterminer si la valeur passée en argument est {{jsxref("NaN")}}, avec un type {{jsxref("Number")}}. Cette version est plus robuste que la méthode de l'objet global {{jsxref("isNaN")}}. -
    {{EmbedInteractiveExample("pages/js/number-isnan.html", "taller")}}
    +{{EmbedInteractiveExample("pages/js/number-isnan.html", "taller")}} -

    Syntaxe

    +## Syntaxe -
    Number.isNaN(valeurÀTester)
    + Number.isNaN(valeurÀTester) -

    Paramètres

    +### Paramètres -
    -
    valeurÀTester
    -
    La valeur qu'on souhaite comparer à {{jsxref("NaN")}}.
    -
    +- `valeurÀTester` + - : La valeur qu'on souhaite comparer à {{jsxref("NaN")}}. -

    Valeur de retour

    +### Valeur de retour -

    Un booléen qui indique si la valeur fournie en argument est {{jsxref("NaN")}}.

    +Un booléen qui indique si la valeur fournie en argument est {{jsxref("NaN")}}. -

    Description

    +## Description -

    Les deux opérateurs d'égalité, {{jsxref("Opérateurs/Opérateurs_de_comparaison", "==", "#.C3.89galit.C3.A9_simple_(.3D.3D)")}} et {{jsxref("Opérateurs/Opérateurs_de_comparaison", "===", "#.C3.89galit.C3.A9_stricte_(.3D.3D.3D)")}}, renvoient false pour vérifier que {{jsxref("NaN")}} est NaN. La fonction Number.isNaN est nécessaire pour distinguer ce cas. Le résultat de cette comparaison sera différent avec les autres méthodes de comparaisons en JavaScript.

    +Les deux opérateurs d'égalité, {{jsxref("Opérateurs/Opérateurs_de_comparaison", "==", "#.C3.89galit.C3.A9_simple_(.3D.3D)")}} et {{jsxref("Opérateurs/Opérateurs_de_comparaison", "===", "#.C3.89galit.C3.A9_stricte_(.3D.3D.3D)")}}, renvoient `false` pour vérifier que {{jsxref("NaN")}} _est_ NaN. La fonction `Number.isNaN` est nécessaire pour distinguer ce cas. Le résultat de cette comparaison sera différent avec les autres méthodes de comparaisons en JavaScript. -

    En effet, la fonction globale {{jsxref("isNaN")}} convertit l'argument en un nombre.  Number.isNaN ne convertit pas l'argument. Cela signifie qu'on peut passer des valeurs qui, normalement, seraient converties en NaN, mais qui ne sont pas NaN. Cela signifie également que, uniquement lorsque la méthode sera utilisée avec des nombres qui valent NaN, elle renverra true.

    +En effet, la fonction globale {{jsxref("isNaN")}} convertit l'argument en un nombre.  `Number.isNaN` ne convertit pas l'argument. Cela signifie qu'on peut passer des valeurs qui, normalement, seraient converties en NaN, mais qui ne sont pas NaN. Cela signifie également que, uniquement lorsque la méthode sera utilisée avec des nombres qui valent `NaN`, elle renverra `true`. -

    Exemples

    +## Exemples -
    Number.isNaN(NaN); // true
    +```js
    +Number.isNaN(NaN); // true
     Number.isNaN(Number.NaN); // true
     Number.isNaN(0 / 0); // true
     
    @@ -56,46 +55,32 @@ Number.isNaN("37.37");
     Number.isNaN("");
     Number.isNaN(" ");
     Number.isNaN("NaN");
    -Number.isNaN("blabla"); // ex : cette valeur aurait rendu true avec la méthode isNaN de l'objet global
    - -

    Prothèse d'émulation (polyfill)

    - -

    La fonction suivant fonctionne car NaN est la seule valeur JavaScript qui n'est pas égale à elle-même.

    - -
    Number.isNaN = Number.isNaN || function(value) {
    -    return typeof value === "number" && isNaN(value);
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.isNaN")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette méthode.
    • -
    • La méthode {{jsxref("Objets_globaux/Object/is", "Object.is")}} qui permet d'effectuer des comparaisons sur l'égalité de valeur
    • -
    • La méthode {{jsxref("isNaN")}} de l'objet global
    • -
    +Number.isNaN("blabla"); // ex : cette valeur aurait rendu true avec la méthode isNaN de l'objet global +``` + +## Prothèse d'émulation (_polyfill_) + +La fonction suivant fonctionne car `NaN` est la seule valeur JavaScript qui n'est pas égale à elle-même. + +```js +Number.isNaN = Number.isNaN || function(value) { + return typeof value === "number" && isNaN(value); +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.isnan', 'Number.isnan')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.isNaN")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette méthode. +- La méthode {{jsxref("Objets_globaux/Object/is", "Object.is")}} qui permet d'effectuer des comparaisons sur l'égalité de valeur +- La méthode {{jsxref("isNaN")}} de l'objet global diff --git a/files/fr/web/javascript/reference/global_objects/number/issafeinteger/index.md b/files/fr/web/javascript/reference/global_objects/number/issafeinteger/index.md index c992339e23..4958589300 100644 --- a/files/fr/web/javascript/reference/global_objects/number/issafeinteger/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/issafeinteger/index.md @@ -11,49 +11,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger original_slug: Web/JavaScript/Reference/Objets_globaux/Number/isSafeInteger --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.isSafeInteger() permet de déterminer si la valeur, passée en argument, est un entier représentable correctement en JavaScript (c'est-à-dire un nombre compris entre -(2^53-1) et 2^53-1).

    +La méthode **`Number.isSafeInteger()`** permet de déterminer si la valeur, passée en argument, est un entier représentable correctement en JavaScript (c'est-à-dire un nombre compris entre -(2^53-1) et 2^53-1). -
    {{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}
    +{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}} +> **Note :** Pour représenter des entiers qui ne sont pas compris dans cet intervalle, on pourra utiliser le type {{jsxref("BigInt")}}. +## Syntaxe -
    -

    Note : Pour représenter des entiers qui ne sont pas compris dans cet intervalle, on pourra utiliser le type {{jsxref("BigInt")}}.

    -
    + Number.isSafeInteger(valeurÀTester) -

    Syntaxe

    +### Paramètres -
    Number.isSafeInteger(valeurÀTester)
    +- `valeurÀTester` + - : La valeur dont on souhaite savoir si elle représente un entier représentable correctement en une valeur non signée sur 32 bits. (JavaScript utilise [les nombres au format de virgule flottante à double précision](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) comme spécifié dans [IEEE 754](https://fr.wikipedia.org/wiki/IEEE_754) et ne peut représenter avec certitude un entier qu'entre `-(2^53-1)` et `2^53-1` (c'est-à-dire ± `9007199254740991`). -

    Paramètres

    +### Valeur de retour -
    -
    valeurÀTester
    -
    La valeur dont on souhaite savoir si elle représente un entier représentable correctement en une valeur non signée sur 32 bits. (JavaScript utilise les nombres au format de virgule flottante à double précision comme spécifié dans IEEE 754 et ne peut représenter avec certitude un entier qu'entre -(2^53-1) et 2^53-1 (c'est-à-dire ± 9007199254740991).
    -
    +Un booléen qui indique si la valeur fournie en argument est un entier représentable correctement en JavaScript. -

    Valeur de retour

    +## Description -

    Un booléen qui indique si la valeur fournie en argument est un entier représentable correctement en JavaScript.

    +Un entier correctement représentable en JavaScript : -

    Description

    +- peut exactement être représenté avec un nombre à précision double selon IEEE-754 +- la réprésentation IEEE-754 du nombre ne permet pas de l'arrondir à un autre entier pouvant être représenté avec le format décrit par IEEE-754. -

    Un entier correctement représentable en JavaScript :

    +Ainsi, par exemple, `2^53 - 1` peut être représenté correctement, aucun autre entier ne peut être arrondi en cette valeur selon IEEE-754. En revanche, `2^53` ne peut pas être représenté correctement car `2^53 + 1` sera arrondi en `2^53` selon les règles IEEE-754 (arrondi à l'entier le plus proche). -
      -
    • peut exactement être représenté avec un nombre à précision double selon IEEE-754
    • -
    • la réprésentation IEEE-754 du nombre ne permet pas de l'arrondir à un autre entier pouvant être représenté avec le format décrit par IEEE-754.
    • -
    +L'intervalle des entiers qui peuvent être correctement représentés est `[-(2^53 - 1),2^53 - 1` ]. -

    Ainsi, par exemple, 2^53 - 1 peut être représenté correctement, aucun autre entier ne peut être arrondi en cette valeur selon IEEE-754. En revanche, 2^53 ne peut pas être représenté correctement car 2^53 + 1 sera arrondi en 2^53 selon les règles IEEE-754 (arrondi à l'entier le plus proche).

    +## Exemples -

    L'intervalle des entiers qui peuvent être correctement représentés est [-(2^53 - 1),2^53 - 1 ].

    - -

    Exemples

    - -
    Number.isSafeInteger(3);                    // true
    +```js
    +Number.isSafeInteger(3);                    // true
     Number.isSafeInteger(Math.pow(2, 53))       // false
     Number.isSafeInteger(Math.pow(2, 53) - 1)   // true
     Number.isSafeInteger(NaN);                  // false
    @@ -61,39 +54,22 @@ Number.isSafeInteger(Infinity);             // false
     Number.isSafeInteger("3");                  // false
     Number.isSafeInteger(3.1);                  // false
     Number.isSafeInteger(3.0);                  // true
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.isSafeInteger")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette méthode
    • -
    • {{jsxref("Number.MIN_SAFE_INTEGER")}}
    • -
    • {{jsxref("Number.MAX_SAFE_INTEGER")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.isSafeInteger")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette méthode +- {{jsxref("Number.MIN_SAFE_INTEGER")}} +- {{jsxref("Number.MAX_SAFE_INTEGER")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/max_safe_integer/index.md b/files/fr/web/javascript/reference/global_objects/number/max_safe_integer/index.md index 9b389e3531..a38f9c3695 100644 --- a/files/fr/web/javascript/reference/global_objects/number/max_safe_integer/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/max_safe_integer/index.md @@ -10,64 +10,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER original_slug: Web/JavaScript/Reference/Objets_globaux/Number/MAX_SAFE_INTEGER --- -
    {{JSRef}}
    +{{JSRef}} -

    La constante Number.MAX_SAFE_INTEGER représente la valeur (sûre) maximale d’un nombre entier en JavaScript (2^53 -1).

    +La constante **`Number.MAX_SAFE_INTEGER `**représente la valeur (sûre) maximale d’un nombre entier en JavaScript (2^53 -1). -
    -

    Note : Pour représenter des entiers supérieurs à cette valeur, on pourra utiliser le type {{jsxref("BigInt")}}.

    -
    +> **Note :** Pour représenter des entiers supérieurs à cette valeur, on pourra utiliser le type {{jsxref("BigInt")}}. -
    {{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}
    +{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}} +{{js_property_attributes(0,0,0)}} +## Description -

    {{js_property_attributes(0,0,0)}}

    +La constante `MAX_SAFE_INTEGER` a une valeur de `9007199254740991`. Cette valeur s'explique par le fait que JavaScript utilise [les nombres au format de virgule flottante à double précision](http://en.wikipedia.org/wiki/Double_precision_floating-point_format) comme spécifié dans [IEEE 754](http://fr.wikipedia.org/wiki/IEEE_754) et ne peut représenter avec certitude qu’un nombre entre `-(2^53-1)` et `2^53 -1`. -

    Description

    +Dans ce contexte, « sûr » fait référence à la capacité à représenter exactement les entiers et à les comparer entre eux. Par exemple, `Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2` vaudra `true` ce qui est mathématiquement incorrect. Pour plus d'informations, voir également {{jsxref("Number.isSafeInteger()")}}. -

    La constante MAX_SAFE_INTEGER a une valeur de 9007199254740991. Cette valeur s'explique par le fait que JavaScript utilise les nombres au format de virgule flottante à double précision comme spécifié dans IEEE 754 et ne peut représenter avec certitude qu’un nombre entre -(2^53-1) et 2^53 -1.

    +`MAX_SAFE_INTEGER` est une propriété statique de {{jsxref("Number")}}, elle doit toujours être utilisée comme `Number.MAX_SAFE_INTEGER` et non pas comme la propriété d'un objet `Number` qui aurait été instancié. -

    Dans ce contexte, « sûr » fait référence à la capacité à représenter exactement les entiers et à les comparer entre eux. Par exemple, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 vaudra true ce qui est mathématiquement incorrect. Pour plus d'informations, voir également {{jsxref("Number.isSafeInteger()")}}.

    +## Exemples -

    MAX_SAFE_INTEGER est une propriété statique de {{jsxref("Number")}}, elle doit toujours être utilisée comme Number.MAX_SAFE_INTEGER et non pas comme la propriété d'un objet Number qui aurait été instancié.

    +```js +Number.MAX_SAFE_INTEGER // 9007199254740991 +Math.pow(2, 53) -1 // 9007199254740991 +``` -

    Exemples

    +## Spécifications -
    Number.MAX_SAFE_INTEGER // 9007199254740991
    -Math.pow(2, 53) -1      // 9007199254740991
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ES2015')}}Définition initiale
    {{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ESDraft')}}
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.MIN_SAFE_INTEGER")}}
    • -
    • {{jsxref("Number.isSafeInteger()")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}} + +## Voir aussi + +- {{jsxref("Number.MIN_SAFE_INTEGER")}} +- {{jsxref("Number.isSafeInteger()")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/max_value/index.md b/files/fr/web/javascript/reference/global_objects/number/max_value/index.md index a673992a3b..a56ed64592 100644 --- a/files/fr/web/javascript/reference/global_objects/number/max_value/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/max_value/index.md @@ -9,71 +9,44 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE original_slug: Web/JavaScript/Reference/Objets_globaux/Number/MAX_VALUE --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Number.MAX_VALUE représente la valeur maximale qui peut être représentée par un nombre en JavaScript.

    +La propriété **`Number.MAX_VALUE`** représente la valeur maximale qui peut être représentée par un nombre en JavaScript. -
    {{EmbedInteractiveExample("pages/js/number-maxvalue.html")}}
    +{{EmbedInteractiveExample("pages/js/number-maxvalue.html")}}{{js_property_attributes(0,0,0)}} +## Description +La propriété statique `MAX_VALUE` vaut environ `1.79E+308` (soit 2^1024). Les valeurs supérieures à `MAX_VALUE` sont représentées par {{jsxref("Infinity")}} (pour l'infini). -
    {{js_property_attributes(0,0,0)}}
    +`MAX_VALUE` est une propriété statique de {{jsxref("Number")}}, il faut donc l'utiliser avec `Number.MAX_VALUE`, plutôt qu'en faisant appel à la propriété d'un objet` Number` qui aurait été instancié (si on appelle cette propriété sur l'objet `Number` créé, on obtiendra {{jsxref("undefined")}}). -

    Description

    +## Exemples -

    La propriété statique MAX_VALUE vaut environ 1.79E+308 (soit 2^1024). Les valeurs supérieures à MAX_VALUE sont représentées par {{jsxref("Infinity")}} (pour l'infini).

    +Le code suivant teste si le produit de deux nombres est inférieur ou égal à `MAX_VALUE`, selon le résultat de ce test, soit on utilisera `func1`, soit on utilisera `func2`. -

    MAX_VALUE est une propriété statique de {{jsxref("Number")}}, il faut donc l'utiliser avec Number.MAX_VALUE, plutôt qu'en faisant appel à la propriété d'un objet Number qui aurait été instancié (si on appelle cette propriété sur l'objet Number créé, on obtiendra {{jsxref("undefined")}}).

    - -

    Exemples

    - -

    Le code suivant teste si le produit de deux nombres est inférieur ou égal à MAX_VALUE, selon le résultat de ce test, soit on utilisera func1, soit on utilisera func2.

    - -
    if (num1 * num2 <= Number.MAX_VALUE) {
    +```js
    +if (num1 * num2 <= Number.MAX_VALUE) {
        func1();
     } else {
        func2();
    -}
    +} +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Number.MAX_VALUE")}}

    +{{Compat("javascript.builtins.Number.MAX_VALUE")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Number.MIN_VALUE")}}
    • -
    • {{jsxref("Number")}}
    • -
    +- {{jsxref("Number.MIN_VALUE")}} +- {{jsxref("Number")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/min_safe_integer/index.md b/files/fr/web/javascript/reference/global_objects/number/min_safe_integer/index.md index e61fc520fd..befcd40ef6 100644 --- a/files/fr/web/javascript/reference/global_objects/number/min_safe_integer/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/min_safe_integer/index.md @@ -10,62 +10,40 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER original_slug: Web/JavaScript/Reference/Objets_globaux/Number/MIN_SAFE_INTEGER --- -
    {{JSRef}}
    +{{JSRef}} -

    La constante Number.MIN_SAFE_INTEGER représente le plus petit entier représentable correctement en JavaScript (-(2^53 -1)).

    +La constante **`Number.MIN_SAFE_INTEGER`** représente le plus petit entier représentable correctement en JavaScript (-(2^53 -1)). -
    -

    Note : Pour représenter des entiers inférieurs à cette valeur, on pourra utiliser le type {{jsxref("BigInt")}}.

    -
    +> **Note :** Pour représenter des entiers inférieurs à cette valeur, on pourra utiliser le type {{jsxref("BigInt")}}. -
    {{EmbedInteractiveExample("pages/js/number-min-safe-integer.html")}}
    +{{EmbedInteractiveExample("pages/js/number-min-safe-integer.html")}}{{js_property_attributes(0,0,0)}} +## Description +La constante `MIN_SAFE_INTEGER` vaut `-9007199254740991`. Cette valeur provient du fait qu'en JavaScript, les nombres sont représentés [en format à double précision](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) selon la norme [IEEE 754](http://fr.wikipedia.org/wiki/IEEE_754) et on ne peut représenter correctement que les nombres compris entre `-(2^53-1)` et `2^53 -1`. Voir {{jsxref("Number.isSafeInteger()")}} pour plus d'informations. -
    {{js_property_attributes(0,0,0)}}
    +`MIN_SAFE_INTEGER` étant une méthode statique de {{jsxref("Number")}}, il faut utiliser `Number.MIN_SAFE_INTEGER()`et non pas la méthode d'un objet `Number` qui aurait été instancié. -

    Description

    +## Exemples -

    La constante MIN_SAFE_INTEGER vaut -9007199254740991. Cette valeur provient du fait qu'en JavaScript, les nombres sont représentés en format à double précision selon la norme IEEE 754 et on ne peut représenter correctement que les nombres compris entre -(2^53-1) et 2^53 -1. Voir {{jsxref("Number.isSafeInteger()")}} pour plus d'informations.

    - -

    MIN_SAFE_INTEGER étant une méthode statique de {{jsxref("Number")}}, il faut utiliser Number.MIN_SAFE_INTEGER()et non pas la méthode d'un objet Number qui aurait été instancié.

    - -

    Exemples

    - -
    Number.MIN_SAFE_INTEGER // -9007199254740991
    +```js
    +Number.MIN_SAFE_INTEGER // -9007199254740991
     -Math.pow(2, 53) -1     // -9007199254740991
    -
    +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}{{Spec2('ESDraft')}}
    +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}} | {{Spec2('ESDraft')}} | | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Number.MIN_SAFE_INTEGER")}}

    +{{Compat("javascript.builtins.Number.MIN_SAFE_INTEGER")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Number.MAX_SAFE_INTEGER")}}
    • -
    • {{jsxref("Number.isSafeInteger()")}}
    • -
    • {{jsxref("BigInt")}}
    • -
    +- {{jsxref("Number.MAX_SAFE_INTEGER")}} +- {{jsxref("Number.isSafeInteger()")}} +- {{jsxref("BigInt")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/min_value/index.md b/files/fr/web/javascript/reference/global_objects/number/min_value/index.md index 257b17dc9e..6862f18313 100644 --- a/files/fr/web/javascript/reference/global_objects/number/min_value/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/min_value/index.md @@ -9,74 +9,45 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE original_slug: Web/JavaScript/Reference/Objets_globaux/Number/MIN_VALUE --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Number.MIN_VALUE représente la plus petite valeur numérique positive qu'il est possible de représenter en JavaScript.

    +La propriété **`Number.MIN_VALUE`** représente la plus petite valeur numérique positive qu'il est possible de représenter en JavaScript. -
    {{EmbedInteractiveExample("pages/js/number-min-value.html")}}
    +{{EmbedInteractiveExample("pages/js/number-min-value.html")}}{{js_property_attributes(0,0,0)}} +## Description +La propriété `MIN_VALUE` représente le nombre positif le plus proche de 0 et non pas le nombre négatif minimal qu'il est possible de représenter en JavaScript. -
    {{js_property_attributes(0,0,0)}}
    +`MIN_VALUE` vaut environ 5e-324. Les valeurs inférieures à `MIN_VALUE` sont converties en 0. -

    Description

    +`MIN_VALUE` est une propriété statique de {{jsxref("Number")}} et doit donc être utilisée avec la syntaxe `Number.MIN_VALUE`, et non pas via la propriété d'un objet `Number` qui aurait été instancié. -

    La propriété MIN_VALUE représente le nombre positif le plus proche de 0 et non pas le nombre négatif minimal qu'il est possible de représenter en JavaScript.

    +## Exemples -

    MIN_VALUE vaut environ 5e-324. Les valeurs inférieures à MIN_VALUE sont converties en 0.

    +Le code qui suit effectue la division de deux nombres. Si le résultat obtenu est supérieur ou égal à `MIN_VALUE`, la fonction `func1` sera appelée, sinon la fonction `func2` sera utilisée. -

    MIN_VALUE est une propriété statique de {{jsxref("Number")}} et doit donc être utilisée avec la syntaxe Number.MIN_VALUE, et non pas via la propriété d'un objet Number qui aurait été instancié.

    - -

    Exemples

    - -

    Le code qui suit effectue la division de deux nombres. Si le résultat obtenu est supérieur ou égal à MIN_VALUE, la fonction func1 sera appelée, sinon la fonction func2 sera utilisée.

    - -
    if (num1 / num2 >= Number.MIN_VALUE) {
    +```js
    +if (num1 / num2 >= Number.MIN_VALUE) {
         func1();
     } else {
         func2();
    -}
    +} +``` -

    Spécifications

    +## Spécifications - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1
    {{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ESDraft')}} 
    +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1 | +| {{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}} | {{Spec2('ESDraft')}} |   | -

    Compatibilité des navigateurs

    +## Compatibilité des navigateurs -

    {{Compat("javascript.builtins.Number.MIN_VALUE")}}

    +{{Compat("javascript.builtins.Number.MIN_VALUE")}} -

    Voir aussi

    +## Voir aussi -
      -
    • {{jsxref("Number.MAX_VALUE")}}
    • -
    +- {{jsxref("Number.MAX_VALUE")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/nan/index.md b/files/fr/web/javascript/reference/global_objects/number/nan/index.md index 4f16fd16ae..edd02e3b02 100644 --- a/files/fr/web/javascript/reference/global_objects/number/nan/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/nan/index.md @@ -9,55 +9,30 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN original_slug: Web/JavaScript/Reference/Objets_globaux/Number/NaN --- -
    {{JSRef}}
    - -

    La propriété Number.NaN représente une valeur qui n'est pas un nombre (en anglais « Not-A-Number » qui donne NaN). Elle est équivalente à {{jsxref("NaN")}}.

    - -
    {{EmbedInteractiveExample("pages/js/number-nan.html")}}
    - -

    Il n'est pas nécessaire de créer un objet {{jsxref("Number")}} pour accéder à cette propriété statique. Il suffit d'utiliser directement Number.NaN.

    - -

    {{js_property_attributes(0,0,0)}}

    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.7.3.4', 'Number.NaN')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.nan', 'Number.NaN')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.NaN")}}

    - -

    Voir aussi

    - -
      -
    • L'objet global {{jsxref("NaN")}} ;
    • -
    • L'objet {{jsxref("Number")}} auquel appartient cette propriété.
    • -
    +{{JSRef}} + +La propriété **`Number.NaN`** représente une valeur qui n'est pas un nombre (en anglais « *Not-A-Number* » qui donne NaN). Elle est équivalente à {{jsxref("NaN")}}. + +{{EmbedInteractiveExample("pages/js/number-nan.html")}} + +Il n'est pas nécessaire de créer un objet {{jsxref("Number")}} pour accéder à cette propriété statique. Il suffit d'utiliser directement `Number.NaN`. + +{{js_property_attributes(0,0,0)}} + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.7.3.4', 'Number.NaN')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.nan', 'Number.NaN')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.NaN")}} + +## Voir aussi + +- L'objet global {{jsxref("NaN")}} ; +- L'objet {{jsxref("Number")}} auquel appartient cette propriété. diff --git a/files/fr/web/javascript/reference/global_objects/number/negative_infinity/index.md b/files/fr/web/javascript/reference/global_objects/number/negative_infinity/index.md index 634c779d96..0bd45fa9ba 100644 --- a/files/fr/web/javascript/reference/global_objects/number/negative_infinity/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/negative_infinity/index.md @@ -9,90 +9,60 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY original_slug: Web/JavaScript/Reference/Objets_globaux/Number/NEGATIVE_INFINITY --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriété Number.NEGATIVE_INFINITY représente l'infini négatif.

    +La propriété **`Number.NEGATIVE_INFINITY`** représente l'infini négatif. -
    {{EmbedInteractiveExample("pages/js/number-negative-infinity.html")}}
    +{{EmbedInteractiveExample("pages/js/number-negative-infinity.html")}}{{js_property_attributes(0,0,0)}} +## Description +La valeur de `Number.NEGATIVE_INFINITY` est égale à l'opposé de la valeur fournie par la propriété {{jsxref("Infinity")}} de l'objet global. -
    {{js_property_attributes(0,0,0)}}
    +Cette valeur se comporte différemment de l'infini mathématique : -

    Description

    +- Toute valeur positive, y compris {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}, multipliée par `NEGATIVE_INFINITY` sera égale à `NEGATIVE_INFINITY`. +- Toute valeur négative, y compris `NEGATIVE_INFINITY`, multipliée par `NEGATIVE_INFINITY` sera égale à `POSITIVE_INFINITY`. +- Zéro multiplié par `NEGATIVE_INFINITY` sera égal à {{jsxref("NaN")}}. +- NaN multiplié par `NEGATIVE_INFINITY` sera égal à `NaN`. +- `NEGATIVE_INFINITY`, divisé par n'importe quelle valeur négative, à l'exception de  `NEGATIVE_INFINITY`, sera égal à `POSITIVE_INFINITY`. +- `NEGATIVE_INFINITY`, divisé par n'importe quelle valeur positive à l'exception de  `POSITIVE_INFINITY`, sera égal à `NEGATIVE_INFINITY`. +- `NEGATIVE_INFINITY`, divisé par `NEGATIVE_INFINITY` ou `POSITIVE_INFINITY`, sera égal à `NaN`. +- Tout nombre positif divisé par `NEGATIVE_INFINITY` sera égal au zéro négatif. +- Tout nombre négatif divisé par `NEGATIVE_INFINITY` sera égal au zéro positif. -

    La valeur de Number.NEGATIVE_INFINITY est égale à l'opposé de la valeur fournie par la propriété {{jsxref("Infinity")}} de l'objet global.

    +La propriété `Number.NEGATIVE_INFINITY` peut être utilisée pour indiquer une erreur sur un test renvoyant normalement un nombre fini. On notera cependant que la méthode {{jsxref("isFinite")}} est plus pertinente dans ce cas. -

    Cette valeur se comporte différemment de l'infini mathématique :

    +`Number.NEGATIVE_INFINITY` est une propriété statique de {{jsxref("Number")}} et on utilisera directement `Number.NEGATIVE_INFINITY` plutôt que comme une propriété d'un objet (instance) {{jsxref("Number")}}. -
      -
    • Toute valeur positive, y compris {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}, multipliée par NEGATIVE_INFINITY sera égale à NEGATIVE_INFINITY.
    • -
    • Toute valeur négative, y compris NEGATIVE_INFINITY, multipliée par NEGATIVE_INFINITY sera égale à POSITIVE_INFINITY.
    • -
    • Zéro multiplié par NEGATIVE_INFINITY sera égal à {{jsxref("NaN")}}.
    • -
    • NaN multiplié par NEGATIVE_INFINITY sera égal à NaN.
    • -
    • NEGATIVE_INFINITY, divisé par n'importe quelle valeur négative, à l'exception de  NEGATIVE_INFINITY, sera égal à POSITIVE_INFINITY.
    • -
    • NEGATIVE_INFINITY, divisé par n'importe quelle valeur positive à l'exception de  POSITIVE_INFINITY, sera égal à NEGATIVE_INFINITY.
    • -
    • NEGATIVE_INFINITY, divisé par NEGATIVE_INFINITY ou POSITIVE_INFINITY, sera égal à NaN.
    • -
    • Tout nombre positif divisé par NEGATIVE_INFINITY sera égal au zéro négatif.
    • -
    • Tout nombre négatif divisé par NEGATIVE_INFINITY sera égal au zéro positif.
    • -
    +## Exemples -

    La propriété Number.NEGATIVE_INFINITY peut être utilisée pour indiquer une erreur sur un test renvoyant normalement un nombre fini. On notera cependant que la méthode {{jsxref("isFinite")}} est plus pertinente dans ce cas.

    +Dans l'exemple qui suit, on affecte une variable inférieure à la valeur numérique minimale à la variable `petitNombre`. Lorsque l'instruction conditionnelle `if` est exécutée, `petitNombre` possède la valeur "`-Infinity`", on modifie donc la valeur de `petitNombre` afin qu'il puisse être géré. -

    Number.NEGATIVE_INFINITY est une propriété statique de {{jsxref("Number")}} et on utilisera directement Number.NEGATIVE_INFINITY plutôt que comme une propriété d'un objet (instance) {{jsxref("Number")}}.

    - -

    Exemples

    - -

    Dans l'exemple qui suit, on affecte une variable inférieure à la valeur numérique minimale à la variable petitNombre. Lorsque l'instruction conditionnelle if est exécutée, petitNombre possède la valeur "-Infinity", on modifie donc la valeur de petitNombre afin qu'il puisse être géré.

    - -
    var petitNombre = (-Number.MAX_VALUE) * 2
    +```js
    +var petitNombre = (-Number.MAX_VALUE) * 2
     
     if (petitNombre === Number.NEGATIVE_INFINITY) {
      petitNombre = renvoyerUneValeurFinie();
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.NEGATIVE_INFINITY")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.POSITIVE_INFINITY")}}
    • -
    • {{jsxref("Number.isFinite()")}}
    • -
    • {{jsxref("Infinity", "Infinity")}}
    • -
    • {{jsxref("isFinite", "isFinite()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.NEGATIVE_INFINITY")}} + +## Voir aussi + +- {{jsxref("Number.POSITIVE_INFINITY")}} +- {{jsxref("Number.isFinite()")}} +- {{jsxref("Infinity", "Infinity")}} +- {{jsxref("isFinite", "isFinite()")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/parsefloat/index.md b/files/fr/web/javascript/reference/global_objects/number/parsefloat/index.md index e0c630af48..c0b1031793 100644 --- a/files/fr/web/javascript/reference/global_objects/number/parsefloat/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/parsefloat/index.md @@ -10,72 +10,53 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat original_slug: Web/JavaScript/Reference/Objets_globaux/Number/parseFloat --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.parseFloat() analyse et convertit une chaîne de caractères en un nombre flottant. Cette méthode possède un comportement identique à {{jsxref("parseFloat")}} et fait partie d'ECMAScript 2015 (dans le but de « modulariser » les méthodes globales).

    +La méthode **`Number.parseFloat()`** analyse et convertit une chaîne de caractères en un nombre flottant. Cette méthode possède un comportement identique à {{jsxref("parseFloat")}} et fait partie d'ECMAScript 2015 (dans le but de « modulariser » les méthodes globales). -
    {{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}
    +{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}} -

    Syntaxe

    +## Syntaxe -
    Number.parseFloat(chaîne)
    + Number.parseFloat(chaîne) -

    Paramètres

    +### Paramètres -
    -
    chaîne
    -
    Une chaîne de caractères qu'on souhaite convertir en nombre flottant.
    -
    +- `chaîne` + - : Une chaîne de caractères qu'on souhaite convertir en nombre flottant. -

    Valeur de retour

    +### Valeur de retour -

    Un nombre flottant obtenu à partir de l'analyse de la chaîne de caractères passée en argument. Si le premier caractère de la chaîne ne peut pas être converti en un nombre, la  valeur {{jsxref("NaN")}} sera renvoyée.

    +Un nombre flottant obtenu à partir de l'analyse de la chaîne de caractères passée en argument. Si le premier caractère de la chaîne ne peut pas être converti en un nombre, la  valeur {{jsxref("NaN")}} sera renvoyée. -

    Description

    +## Description -

    Cette méthode possède les mêmes fonctionnalités que la fonction globale {{jsxref("parseFloat", "parseFloat()")}} :

    +Cette méthode possède les mêmes fonctionnalités que la fonction globale {{jsxref("parseFloat", "parseFloat()")}} : -
    Number.parseFloat === parseFloat; // true
    -
    + Number.parseFloat === parseFloat; // true -

    Cette méthode fait partie d'ECMAScript 2015 et notamment de la modularisation de certaines fonctions globales. Pour plus de détails et d'exemples, voir {{jsxref("parseFloat", "parseFloat()")}}.

    +Cette méthode fait partie d'ECMAScript 2015 et notamment de la modularisation de certaines fonctions globales. Pour plus de détails et d'exemples, voir {{jsxref("parseFloat", "parseFloat()")}}. -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -
    if (Number.parseFloat === undefined) {
    +```js
    +if (Number.parseFloat === undefined) {
         Number.parseFloat = parseFloat;
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.parseFloat")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette fonction.
    • -
    • La méthode globale {{jsxref("parseFloat")}}.
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.parsefloat', 'Number.parseFloat')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.parseFloat")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette fonction. +- La méthode globale {{jsxref("parseFloat")}}. diff --git a/files/fr/web/javascript/reference/global_objects/number/parseint/index.md b/files/fr/web/javascript/reference/global_objects/number/parseint/index.md index 780ba5b85e..e77f8baff6 100644 --- a/files/fr/web/javascript/reference/global_objects/number/parseint/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/parseint/index.md @@ -10,72 +10,57 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt original_slug: Web/JavaScript/Reference/Objets_globaux/Number/parseInt --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode Number.parseInt() analyse et convertit une chaine de caractères, fournie en argument, en un entier dans la base souhaitée.

    +La méthode **`Number.parseInt()`** analyse et convertit une chaine de caractères, fournie en argument, en un entier dans la base souhaitée. -
    {{EmbedInteractiveExample("pages/js/number-parseint.html")}}
    +{{EmbedInteractiveExample("pages/js/number-parseint.html")}} -

    Syntaxe

    +## Syntaxe -
    Number.parseInt(chaîne [, base])
    + Number.parseInt(chaîne [, base]) -

    Paramètres

    +### Paramètres -
    -
    chaîne
    -
    La valeur à convertir. Si chaine n'est pas une chaîne de caractères, elle sera convertie auparavant. Les blancs qui préfixent la chaîne sont ignorés.
    -
    base {{optional_inline}}
    -
    Paramètre optionnel. Un entier représentant la base dans laquelle est représentée la valeur de la chaîne. Il faut toujours spécifier ce paramètre. Cela permet que le code ne soit pas ambigü et permet de garantir un comportement prévisible. En effet les différentes implémentations peuvent fournir des résultats différents lorsque la base n'est pas spécifiée.
    -
    +- `chaîne` + - : La valeur à convertir. Si `chaine` n'est pas une chaîne de caractères, elle sera convertie auparavant. Les blancs qui préfixent la chaîne sont ignorés. +- `base` {{optional_inline}} + - : Paramètre optionnel. Un entier représentant la base dans laquelle est représentée la valeur de la chaîne. **Il faut toujours spécifier ce paramètre.** Cela permet que le code ne soit pas ambigü et permet de garantir un comportement prévisible. En effet les différentes implémentations peuvent fournir des résultats différents lorsque la base n'est pas spécifiée. -

    Valeur de retour

    +### Valeur de retour -

    Un entier construit à partir de l'analyse de la chaîne de caractères passée en argument. Si le premier caractère ne permet pas de conversion numérique, c'est la valeur {{jsxref("NaN")}} qui sera renvoyée.

    +Un entier construit à partir de l'analyse de la chaîne de caractères passée en argument. Si le premier caractère ne permet pas de conversion numérique, c'est la valeur {{jsxref("NaN")}} qui sera renvoyée. -

    Description

    +## Description -

    Voir la page {{jsxref("Objets_globaux/parseInt", "parseInt()")}} pour plus de détails et d'exemples. Cette méthode se comporte de façon identique à la fonction globale {{jsxref("Objets_globaux/parseInt", "parseInt()")}} et fait partie d'ECMAScript 2015 (dans le but de « modulariser » les méthodes globales) et on aura :

    +Voir la page {{jsxref("Objets_globaux/parseInt", "parseInt()")}} pour plus de détails et d'exemples. Cette méthode se comporte de façon identique à la fonction globale {{jsxref("Objets_globaux/parseInt", "parseInt()")}} et fait partie d'ECMAScript 2015 (dans le but de « modulariser » les méthodes globales) et on aura : -
    Number.parseInt === parseInt; // true
    +```js +Number.parseInt === parseInt; // true +``` -

    Prothèse d'émulation (polyfill)

    +## Prothèse d'émulation (_polyfill_) -

    Si on souhaite bénéficier de cette fonction dans un environnement qui n'en dispose pas, on pourra donc l'émuler de la façon suivante :

    +Si on souhaite bénéficier de cette fonction dans un environnement qui n'en dispose pas, on pourra donc l'émuler de la façon suivante : -
    if(Number.parseInt === undefined) {
    +```js
    +if(Number.parseInt === undefined) {
       Number.parseInt = parseInt;
    -}
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES2015', '#sec-number.parseint', 'Number.parseInt')}}{{Spec2('ES2015')}}Définition initiale.
    {{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.parseInt")}}

    - -

    Voir aussi

    - -
      -
    • L'objet {{jsxref("Number")}} auquel appartient cette fonction.
    • -
    • La méthode {{jsxref("Objets_globaux/parseInt","parseInt()")}} de l'objet global.
    • -
    +} +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-number.parseint', 'Number.parseInt')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.parseInt")}} + +## Voir aussi + +- L'objet {{jsxref("Number")}} auquel appartient cette fonction. +- La méthode {{jsxref("Objets_globaux/parseInt","parseInt()")}} de l'objet global. diff --git a/files/fr/web/javascript/reference/global_objects/number/positive_infinity/index.md b/files/fr/web/javascript/reference/global_objects/number/positive_infinity/index.md index 8ee53b1752..066c2ad931 100644 --- a/files/fr/web/javascript/reference/global_objects/number/positive_infinity/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/positive_infinity/index.md @@ -9,91 +9,63 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY original_slug: Web/JavaScript/Reference/Objets_globaux/Number/POSITIVE_INFINITY --- -
    {{JSRef}}
    +{{JSRef}} -

    La propriéte Number.POSITIVE_INFINITY représente l'infini (positif).

    +La propriéte **`Number.POSITIVE_INFINITY`** représente l'infini (positif). -
    {{EmbedInteractiveExample("pages/js/number-positive-infinity.html")}}
    +{{EmbedInteractiveExample("pages/js/number-positive-infinity.html")}} +{{js_property_attributes(0,0,0)}} +## Description -

    {{js_property_attributes(0,0,0)}}

    +La valeur de `Number.POSITIVE_INFINITY` est identique à la valeur de la propriété de l'objet global {{jsxref("Infinity")}}. -

    Description

    +Cette valeur possède un comportement légèrement différent de l'infini au sens mathématique : -

    La valeur de Number.POSITIVE_INFINITY est identique à la valeur de la propriété de l'objet global {{jsxref("Infinity")}}.

    +- Tout valeur positive, y compris `POSITIVE_INFINITY,` multipliée par  `POSITIVE_INFINITY` sera égale à `POSITIVE_INFINITY`. +- Toute valeur négative, y compris {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}, multipliée par `POSITIVE_INFINITY` sera égale à `NEGATIVE_INFINITY`. +- Zéro multiplié par `POSITIVE_INFINITY` sera égal à {{jsxref("NaN")}}. +- NaN multiplié par `POSITIVE_INFINITY` sera égal à NaN. +- `POSITIVE_INFINITY`, divisé par n'importe quelle valeur négative, à l'exception de `NEGATIVE_INFINITY`, sera égal à `NEGATIVE_INFINITY`. +- `POSITIVE_INFINITY`, divisé par n'importe quelle valeur positive, à l'exception de `POSITIVE_INFINITY`, sera égal à `POSITIVE_INFINITY`. +- `POSITIVE_INFINITY`, divisé par `NEGATIVE_INFINITY` ou `POSITIVE_INFINITY`, sera égal NaN. +- Tout nombre positif divisé par `POSITIVE_INFINITY` sera égal au zéro positif. +- Tout nombre négatif divisé par `POSITIVE_INFINITY` sera égal au zéro négatif. -

    Cette valeur possède un comportement légèrement différent de l'infini au sens mathématique :

    +Il est possible d'utiliser la propriété `Number.POSITIVE_INFINITY` pour faire un test d'erreur sur une valeur qu'on attendait finie. Cependant, la méthode {{jsxref("isFinite")}} sera plus appropriée dans ce cas. -
      -
    • Tout valeur positive, y compris POSITIVE_INFINITY, multipliée par  POSITIVE_INFINITY sera égale à POSITIVE_INFINITY.
    • -
    • Toute valeur négative, y compris {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}, multipliée par POSITIVE_INFINITY sera égale à NEGATIVE_INFINITY.
    • -
    • Zéro multiplié par POSITIVE_INFINITY sera égal à {{jsxref("NaN")}}.
    • -
    • NaN multiplié par POSITIVE_INFINITY sera égal à NaN.
    • -
    • POSITIVE_INFINITY, divisé par n'importe quelle valeur négative, à l'exception de NEGATIVE_INFINITY, sera égal à NEGATIVE_INFINITY.
    • -
    • POSITIVE_INFINITY, divisé par n'importe quelle valeur positive, à l'exception de POSITIVE_INFINITY, sera égal à POSITIVE_INFINITY.
    • -
    • POSITIVE_INFINITY, divisé par NEGATIVE_INFINITY ou POSITIVE_INFINITY, sera égal NaN.
    • -
    • Tout nombre positif divisé par POSITIVE_INFINITY sera égal au zéro positif.
    • -
    • Tout nombre négatif divisé par POSITIVE_INFINITY sera égal au zéro négatif.
    • -
    +`Number.POSITIVE_INFINITY` est une propriété statique de {{jsxref("Number")}} et il n'est donc pas nécessaire de créer un objet {{jsxref("Number")}} afin d'utiliser cette propriété. -

    Il est possible d'utiliser la propriété Number.POSITIVE_INFINITY pour faire un test d'erreur sur une valeur qu'on attendait finie. Cependant, la méthode {{jsxref("isFinite")}} sera plus appropriée dans ce cas.

    +## Exemple -

    Number.POSITIVE_INFINITY est une propriété statique de {{jsxref("Number")}} et il n'est donc pas nécessaire de créer un objet {{jsxref("Number")}} afin d'utiliser cette propriété.

    +### Utiliser `POSITIVE_INFINITY` -

    Exemple

    +Dans l'exemple qui suit, on affecte une valeur plus grande que la valeur maximale à la variable `grosNombre`. Lors de l'exécution de l'instruction `if`, `grosNombre` aura la valeur `Infinity`, pour continuer, on met à jour `grosNombre` avec une valeur plus acceptable. -

    Utiliser POSITIVE_INFINITY

    - -

    Dans l'exemple qui suit, on affecte une valeur plus grande que la valeur maximale à la variable grosNombre. Lors de l'exécution de l'instruction if, grosNombre aura la valeur Infinity, pour continuer, on met à jour grosNombre avec une valeur plus acceptable.

    - -
    var grosNombre = Number.MAX_VALUE * 2
    +```js
    +var grosNombre = Number.MAX_VALUE * 2
     if (grosNombre == Number.POSITIVE_INFINITY) {
      grosNombre = renvoyerUnNombreFini();
     }
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationStatutCommentaires
    {{SpecName('ES1')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.1.
    {{SpecName('ES5.1', '#sec-15.7.3.6', 'Number.POSITIVE_INFINITY')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.POSITIVE_INFINITY")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.NEGATIVE_INFINITY")}}
    • -
    • {{jsxref("Number.isFinite()")}}
    • -
    • {{jsxref("Infinity")}}
    • -
    • {{jsxref("isFinite")}}
    • -
    +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.1. | +| {{SpecName('ES5.1', '#sec-15.7.3.6', 'Number.POSITIVE_INFINITY')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.POSITIVE_INFINITY")}} + +## Voir aussi + +- {{jsxref("Number.NEGATIVE_INFINITY")}} +- {{jsxref("Number.isFinite()")}} +- {{jsxref("Infinity")}} +- {{jsxref("isFinite")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/toexponential/index.md b/files/fr/web/javascript/reference/global_objects/number/toexponential/index.md index 2b3667b776..eb923a599c 100644 --- a/files/fr/web/javascript/reference/global_objects/number/toexponential/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/toexponential/index.md @@ -10,97 +10,69 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/toExponential original_slug: Web/JavaScript/Reference/Objets_globaux/Number/toExponential --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toExponential() renvoie une chaîne de caractères, représentant l'objet Number en notation exponentielle.

    +La méthode **`toExponential()`** renvoie une chaîne de caractères, représentant l'objet Number en notation exponentielle. -
    {{EmbedInteractiveExample("pages/js/number-toexponential.html")}}
    +{{EmbedInteractiveExample("pages/js/number-toexponential.html")}} -

    Syntaxe

    +## Syntaxe -
    numObj.toExponential([nbChiffresDécimaux])
    + numObj.toExponential([nbChiffresDécimaux]) -

    Paramètre

    +### Paramètre -
    -
    nbChiffresDécimaux
    -
    Paramètre optionnel. Un entier donnant le nombre de chiffres qu'on souhaite avoir dans la partie fractionnaire. Le comportement par défaut considèrera autant de chiffres que nécessaire pour représenter le nombre.
    -
    +- `nbChiffresDécimaux` + - : Paramètre optionnel. Un entier donnant le nombre de chiffres qu'on souhaite avoir dans la partie fractionnaire. Le comportement par défaut considèrera autant de chiffres que nécessaire pour représenter le nombre. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne représentant l'objet {{jsxref("Number")}} appelant en notation exponentielle avec un chiffre avant la virgule et arrondi à nbChiffresDécimaux après la virgule.

    +Une chaîne représentant l'objet {{jsxref("Number")}} appelant en notation exponentielle avec un chiffre avant la virgule et arrondi à `nbChiffresDécimaux` après la virgule. -

    Exceptions

    +### Exceptions -
    -
    {{jsxref("RangeError")}}
    -
    Cette exception est causée si nbChiffresDécimaux est trop petit ou trop grand. Les valeurs comprises, au sens large, entre 0 et 20 ne causeront pas d'exception {{jsxref("RangeError")}}. Les implémentations peuvent également autorisér des valeurs en dehors de ces bornes.
    -
    {{jsxref("TypeError")}}
    -
    Si cette méthode est invoquée pour un objet qui n'est pas un objet Number.
    -
    +- {{jsxref("RangeError")}} + - : Cette exception est causée si `nbChiffresDécimaux` est trop petit ou trop grand. Les valeurs comprises, au sens large, entre 0 et 20 ne causeront pas d'exception {{jsxref("RangeError")}}. Les implémentations peuvent également autorisér des valeurs en dehors de ces bornes. +- {{jsxref("TypeError")}} + - : Si cette méthode est invoquée pour un objet qui n'est pas un objet `Number`. -

    Description

    +## Description -

    La valeur renvoyée est une chaîne de caractères correspondant à la représentation du nombre en notation exponentielle. La partie entière est constituée d'un seul chiffre et la partie fractionnaire est composée de nbChiffresDécimaux chiffres. Si l'argument nbChiffresDécimaux est absent, il y aura autant de chiffres dans la partie fractionnaire que nécessaire pour représenter le nombre de façon unique.

    +La valeur renvoyée est une chaîne de caractères correspondant à la représentation du nombre en notation exponentielle. La partie entière est constituée d'un seul chiffre et la partie fractionnaire est composée de `nbChiffresDécimaux` chiffres. Si l'argument `nbChiffresDécimaux `est absent, il y aura autant de chiffres dans la partie fractionnaire que nécessaire pour représenter le nombre de façon unique. -

    Si la méthode toExponential() est utilisée avec un littéral numérique et que celui-ci ne possède aucun exposant ou séparateur décimal ("."), il faut laisser un ou plusieurs espaces entre le littéral et le point indiquant l'appel de la méthode. Cela permet d'éviter que le point, permettant d'accéder à la méthode, soit confondu avec un séparateur décimal.

    +Si la méthode `toExponential()` est utilisée avec un littéral numérique et que celui-ci ne possède aucun exposant ou séparateur décimal ("."), il faut laisser un ou plusieurs espaces entre le littéral et le point indiquant l'appel de la méthode. Cela permet d'éviter que le point, permettant d'accéder à la méthode, soit confondu avec un séparateur décimal. -

    Si un nombre possède plus de chiffres décimaux que nbChiffresDécimaux, le nombre est arrondi au nombre le plus proche, représenté avec nbChiffresDécimaux pour la partie fractionnaire. Voir la discussion sur les arrondis dans la page  de la méthode {{jsxref("Number.toFixed", "toFixed()")}} pour plus de détails, la même méthode est utilisée pour toExponential().

    +Si un nombre possède plus de chiffres décimaux que `nbChiffresDécimaux`, le nombre est arrondi au nombre le plus proche, représenté avec `nbChiffresDécimaux` pour la partie fractionnaire. Voir la discussion sur les arrondis dans la page  de la méthode {{jsxref("Number.toFixed", "toFixed()")}} pour plus de détails, la même méthode est utilisée pour `toExponential()`. -

    Exemples

    +## Exemples -

    Utiliser toExponential

    +### Utiliser `toExponential` -
    var numObj = 77.1234;
    +```js
    +var numObj = 77.1234;
     
     console.log(numObj.toExponential());  // affiche 7.71234e+1
     console.log(numObj.toExponential(4)); // affiche 7.7123e+1
     console.log(numObj.toExponential(2)); // affiche 7.71e+1
     console.log(77.1234.toExponential()); // affiche 7.71234e+1
     console.log(77 .toExponential());     // affiche 7.7e+1
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.5.
    {{SpecName('ES5.1', '#sec-15.7.4.6', 'Number.prototype.toExponential')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.toExponential")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.prototype.toFixed()")}}
    • -
    • {{jsxref("Number.prototype.toPrecision()")}}
    • -
    • {{jsxref("Number.prototype.toString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.5. | +| {{SpecName('ES5.1', '#sec-15.7.4.6', 'Number.prototype.toExponential')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.toExponential")}} + +## Voir aussi + +- {{jsxref("Number.prototype.toFixed()")}} +- {{jsxref("Number.prototype.toPrecision()")}} +- {{jsxref("Number.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/tofixed/index.md b/files/fr/web/javascript/reference/global_objects/number/tofixed/index.md index 04f3a49458..356025f244 100644 --- a/files/fr/web/javascript/reference/global_objects/number/tofixed/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/tofixed/index.md @@ -10,47 +10,42 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed original_slug: Web/JavaScript/Reference/Objets_globaux/Number/toFixed --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toFixed() permet de formater un nombre en notation à point-fixe.

    +La méthode **`toFixed()`** permet de formater un nombre en notation à point-fixe. -
    {{EmbedInteractiveExample("pages/js/number-tofixed.html")}}
    +{{EmbedInteractiveExample("pages/js/number-tofixed.html")}} -

    Syntaxe

    +## Syntaxe -
    numObj.toFixed([nbChiffres])
    + numObj.toFixed([nbChiffres]) -

    Paramètres

    +### Paramètres -
    -
    nbChiffres {{optional_inline}}
    -
    Le nombre de chiffres qu'on souhaite avoir après le séparateur décimal. Cette valeur peut être comprise, au sens large, entre 0 et 20. Les différentes implémentations peuvent éventuellement supporter des valeurs en dehors de cet intervalle. Si l'argument n'est pas utilisé, la valeur par défaut sera 0.
    -
    +- `nbChiffres` {{optional_inline}} + - : Le nombre de chiffres qu'on souhaite avoir après le séparateur décimal. Cette valeur peut être comprise, au sens large, entre 0 et 20. Les différentes implémentations peuvent éventuellement supporter des valeurs en dehors de cet intervalle. Si l'argument n'est pas utilisé, la valeur par défaut sera 0. -

    Valeur de retour

    +### Valeur de retour -

    Une chaîne de caractères qui représente le nombre indiqué avec une notation à point fixe.

    +Une chaîne de caractères qui représente le nombre indiqué avec une notation à point fixe. -

    Exceptions causées

    +### Exceptions causées -
    -
    {{jsxref("RangeError")}}
    -
    Cette exception est renvoyée si nbChiffres est trop grand ou trop petit. Les valeurs comprises, au sens large, entre 0 et 100, n'entraîneront pas de RangeError. Les différentes implémentations peuvent ou non supporter des valeurs plus petites et/ou plus grandes.
    -
    {{jsxref("TypeError")}}
    -
    Cette exception est renvoyée si cette méthode est invoquée depuis un objet qui n'est pas de type numérique.
    -
    +- {{jsxref("RangeError")}} + - : Cette exception est renvoyée si `nbChiffres` est trop grand ou trop petit. Les valeurs comprises, au sens large, entre 0 et 100, n'entraîneront pas de `RangeError`. Les différentes implémentations peuvent ou non supporter des valeurs plus petites et/ou plus grandes. +- {{jsxref("TypeError")}} + - : Cette exception est renvoyée si cette méthode est invoquée depuis un objet qui n'est pas de type numérique. -

    Description

    +## Description -

    toFixed() renvoie une chaîne de caractères représentant objetNumber sans notation exponentielle et qui possède exactement nbChiffres pour la partie fractionnaire. Le nombre est arrondi si nécessaire et la partie fractionnaire est complétée par des zéros si nécessaire pour obtenir la longueur souhaitée. Si le objetNumber est supérieur ou égal à 1e+21, la méthode utilise simplement {{jsxref("Number.prototype.toString()")}} et renvoie une chaîne en notation exponentielle.

    +`toFixed()` renvoie une chaîne de caractères représentant `objetNumber` sans notation exponentielle et qui possède exactement `nbChiffres` pour la partie fractionnaire. Le nombre est arrondi si nécessaire et la partie fractionnaire est complétée par des zéros si nécessaire pour obtenir la longueur souhaitée. Si le `objetNumber` est supérieur ou égal à `1e+21`, la méthode utilise simplement {{jsxref("Number.prototype.toString()")}} et renvoie une chaîne en notation exponentielle. -
    -

    Attention : En raison du standard IEEE 754 qui est utilisé par JavaScript pour représenter les nombres, tous les nombres décimaux ne sont pas représentés exactement en JavaScript, ce qui peut mener à des résultats inattendus (comme 0.1 + 0.2 === 0.3 qui renvoie false).

    -
    +> **Attention :** En raison du standard [IEEE 754](https://fr.wikipedia.org/wiki/IEEE_754) qui est utilisé par JavaScript pour représenter les nombres, tous les nombres décimaux ne sont pas représentés exactement en JavaScript, ce qui peut mener à des résultats inattendus (comme `0.1 + 0.2 === 0.3` qui renvoie `false`). -

    Exemples

    +## Exemples -
    var numObj = 12345.6789;
    +```js
    +var numObj = 12345.6789;
     
     numObj.toFixed();       // Renvoie '12346' : arrondi, aucune partie fractionnaire
     numObj.toFixed(1);      // Renvoie '12345.7' : arrondi ici aussi
    @@ -63,48 +58,23 @@ numObj.toFixed(6);      // Renvoie '12345.678900' : des zéros sont ajoutés
     2.35.toFixed(1);        // Renvoie '2.4' (arrondi supérieur)
     2.55.toFixed(1);        // Renvoie '2.5' (cf. l'avertissement ci-avant)
     (-2.34).toFixed(1);     // Renvoie '-2.3'
    -
    - -

    Spécifications

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SpécificationÉtatCommentaires
    {{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.5.
    {{SpecName('ES5.1', '#sec-15.7.4.5', 'Number.prototype.toFixed')}}{{Spec2('ES5.1')}} 
    {{SpecName('ES6', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}{{Spec2('ES6')}} 
    {{SpecName('ESDraft', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}{{Spec2('ESDraft')}} 
    - -

    Compatibilité des navigateurs

    - -

    {{Compat("javascript.builtins.Number.toFixed")}}

    - -

    Voir aussi

    - -
      -
    • {{jsxref("Number.prototype.toExponential()")}}
    • -
    • {{jsxref("Number.prototype.toPrecision()")}}
    • -
    • {{jsxref("Number.prototype.toString()")}}
    • -
    +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.5. | +| {{SpecName('ES5.1', '#sec-15.7.4.5', 'Number.prototype.toFixed')}} | {{Spec2('ES5.1')}} |   | +| {{SpecName('ES6', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}} | {{Spec2('ES6')}} |   | +| {{SpecName('ESDraft', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Number.toFixed")}} + +## Voir aussi + +- {{jsxref("Number.prototype.toExponential()")}} +- {{jsxref("Number.prototype.toPrecision()")}} +- {{jsxref("Number.prototype.toString()")}} diff --git a/files/fr/web/javascript/reference/global_objects/number/tolocalestring/index.md b/files/fr/web/javascript/reference/global_objects/number/tolocalestring/index.md index af7692098a..9ff73fe256 100644 --- a/files/fr/web/javascript/reference/global_objects/number/tolocalestring/index.md +++ b/files/fr/web/javascript/reference/global_objects/number/tolocalestring/index.md @@ -12,50 +12,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString original_slug: Web/JavaScript/Reference/Objets_globaux/Number/toLocaleString --- -
    {{JSRef}}
    +{{JSRef}} -

    La méthode toLocaleString() permet de renvoyer une chaîne de caractères représentant un nombre en tenant compte de la locale.

    +La méthode **`toLocaleString()`** permet de renvoyer une chaîne de caractères représentant un nombre en tenant compte de la locale. -
    {{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}
    +{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}} +Les arguments `locales` et `options` permettent à l'application de spécifier les options de formatage selon la langue utilisée. Ces arguments ont un effet sur le comportement de la fonction. Les implémentations passées, qui ignoraient les arguments `locales` et `options` se basaient uniquement sur l'implémentation pour ce qui concernait la locale et le format. +## Syntaxe -

    Les arguments locales et options permettent à l'application de spécifier les options de formatage selon la langue utilisée. Ces arguments ont un effet sur le comportement de la fonction. Les implémentations passées, qui ignoraient les arguments locales et options se basaient uniquement sur l'implémentation pour ce qui concernait la locale et le format.

    + objetNumber.toLocaleString([locales [, options]]) -

    Syntaxe

    +### Paramètres -
    objetNumber.toLocaleString([locales [, options]])
    +Voir la section [compatibilité des navigateurs](#compat "#Browser_Compatibility") afin de voir quels navigateurs supportent les arguments `locales` et `options`. L'exemple [Vérifier le support des arguments `locales` et `options`](#check) permet de détecter cette fonctionnalité. -

    Paramètres

    +> **Note :** L'API ECMAScript Internationalization, implémentée avec Firefox 29, a ajouté l'argument `locales` à la méthode [`Number.toLocaleString`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Number/toLocaleString). Si l'argument vaut `undefined`,cette méthode renvoie les nombres selon la locale du système d'exploitation, les versions antérieures de Firefox renvoyaient un résultat correspondant à la locale anglaise. Ce changement a été rapporté comme une régression, avec un risque de manque de rétrocompatibilité, avant d'être corrigé avec Firefox 55, voir le bug ({{bug(999003)}}). -

    Voir la section compatibilité des navigateurs afin de voir quels navigateurs supportent les arguments locales et options. L'exemple Vérifier le support des arguments locales et options permet de détecter cette fonctionnalité.

    +{{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/NumberFormat','Paramètres')}} -
    -

    Note : L'API ECMAScript Internationalization, implémentée avec Firefox 29, a ajouté l'argument locales à la méthode Number.toLocaleString. Si l'argument vaut undefined,cette méthode renvoie les nombres selon la locale du système d'exploitation, les versions antérieures de Firefox renvoyaient un résultat correspondant à la locale anglaise. Ce changement a été rapporté comme une régression, avec un risque de manque de rétrocompatibilité, avant d'être corrigé avec Firefox 55, voir le bug ({{bug(999003)}}).

    -
    +### Valeur de retour -

    {{page('/fr/docs/Web/JavaScript/Reference/Objets_globaux/NumberFormat','Paramètres')}}

    +Une chaîne de caractères qui représente le nombre indiqué en tenant compte de la locale. -

    Valeur de retour

    +## Exemples -

    Une chaîne de caractères qui représente le nombre indiqué en tenant compte de la locale.

    +### Utiliser `toLocaleString()` -

    Exemples

    +En utilisant la fonction simplement, sans spécifier de locale, la chaîne est formatée dans la locale par défaut et avec des options par défaut. -

    Utiliser toLocaleString()

    - -

    En utilisant la fonction simplement, sans spécifier de locale, la chaîne est formatée dans la locale par défaut et avec des options par défaut.

    - -
    var nombre = 3500;
    +```js
    +var nombre = 3500;
     
     console.log(nombre.toLocaleString()); // Affichera "3 500" pour la locale française
    -
    +``` -

    Vérifier le support des arguments locales et options

    +### Vérifier le support des arguments `locales` et `options` -

    Les arguments locales et options ne sont pas supportés par tous les navigateurs. Afin de vérifier qu'une implémentation les prend en charge, on se base sur le fait que les balises de langues incorrectes renvoient une exception{{jsxref("RangeError")}} :

    +Les arguments `locales` et `options` ne sont pas supportés par tous les navigateurs. Afin de vérifier qu'une implémentation les prend en charge, on se base sur le fait que les balises de langues incorrectes renvoient une exception{{jsxref("RangeError")}} : -
    function testSupporttoLocaleString() {
    +```js
    +function testSupporttoLocaleString() {
         var nombre = 0;
         try {
             nombre.toLocaleString("i");
    @@ -64,24 +62,26 @@ console.log(nombre.toLocaleString()); // Affichera "3 500" pour la locale franç
         }
         return false;
     }
    -
    +``` -

    Avant ES5.1, il n'était pas nécessaire pour les implémentations de provoquer une erreur d'intervalle si toLocaleString était appelé avec des arguments.

    +Avant ES5.1, il n'était pas nécessaire pour les implémentations de provoquer une erreur d'intervalle si `toLocaleString` était appelé avec des arguments. -

    Afin de vérifier le support pour tous les environnements, y compris ceux qui supportent ECMA-262 avant la version 5.1, on peut tester les fonctionnalités définies dans ECMA-402, directement sur Number.prototype.toLocaleString :

    +Afin de vérifier le support pour tous les environnements, y compris ceux qui supportent ECMA-262 avant la version 5.1, on peut tester les fonctionnalités définies dans ECMA-402, directement sur `Number.prototype.toLocaleString` : -
    function toLocaleStringSupportsOptions() {
    -  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
    +```js
    +function toLocaleStringSupportsOptions() {
    +  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
     }
    -
    +``` -

    Cela permet de tester la présence d'un objet global Intl, de vérifier que celui-ci n'est pas null et qu'il a une méthode NumberFormat.

    +Cela permet de tester la présence d'un objet global `Intl`, de vérifier que celui-ci n'est pas `null` et qu'il a une méthode `NumberFormat`. -

    Utiliser l'argument locales

    +### Utiliser l'argument `locales` -

    Cet exemple illustre les variations possibles entre les différents formats localisés. Afin que le format de langue utilisé soit celui de votre utilisateur, assurez-vous de fournir la langue utilisée (ainsi que des langues de secours) en utilisant l'argument locales :

    +Cet exemple illustre les variations possibles entre les différents formats localisés. Afin que le format de langue utilisé soit celui de votre utilisateur, assurez-vous de fournir la langue utilisée (ainsi que des langues de secours) en utilisant l'argument `locales` : -
    var nombre= 123456.789;
    +```js
    +var nombre= 123456.789;
     
     // Pour la locale allemande, on utilise un point comme séparateur
     // pour les milliers et une virgule comme séparateur décimal
    @@ -105,13 +105,14 @@ console.log(nombre.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
     // inclure un langage de secours. Exemple ici avec le balinais et l'indonésien
     console.log(nombre.toLocaleString(["ban", "id"]));
     // → 123.456,789
    -
    +``` -

    Utiliser l'argument options

    +### Utiliser l'argument `options` -

    Les résultats fournis par toLocaleString peuvent être déclinés en utilisant l'argument options :

    +Les résultats fournis par `