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 --- .../reference/errors/already_has_pragma/index.html | 42 ----- .../reference/errors/already_has_pragma/index.md | 42 +++++ .../errors/array_sort_argument/index.html | 48 ------ .../reference/errors/array_sort_argument/index.md | 48 ++++++ .../reference/errors/bad_octal/index.html | 53 ------- .../javascript/reference/errors/bad_octal/index.md | 53 +++++++ .../reference/errors/bad_radix/index.html | 64 -------- .../javascript/reference/errors/bad_radix/index.md | 64 ++++++++ .../reference/errors/bad_regexp_flag/index.html | 107 ------------- .../reference/errors/bad_regexp_flag/index.md | 107 +++++++++++++ .../errors/bad_return_or_yield/index.html | 58 ------- .../reference/errors/bad_return_or_yield/index.md | 58 +++++++ .../errors/called_on_incompatible_type/index.html | 76 --------- .../errors/called_on_incompatible_type/index.md | 76 +++++++++ .../index.html | 63 -------- .../index.md | 63 ++++++++ .../errors/cant_access_property/index.html | 60 -------- .../reference/errors/cant_access_property/index.md | 60 ++++++++ .../errors/cant_assign_to_property/index.html | 56 ------- .../errors/cant_assign_to_property/index.md | 56 +++++++ .../index.html | 66 -------- .../index.md | 66 ++++++++ .../reference/errors/cant_delete/index.html | 60 -------- .../reference/errors/cant_delete/index.md | 60 ++++++++ .../errors/cant_redefine_property/index.html | 52 ------- .../errors/cant_redefine_property/index.md | 52 +++++++ .../errors/cyclic_object_value/index.html | 69 --------- .../reference/errors/cyclic_object_value/index.md | 69 +++++++++ .../reference/errors/dead_object/index.html | 50 ------ .../reference/errors/dead_object/index.md | 50 ++++++ .../errors/delete_in_strict_mode/index.html | 69 --------- .../errors/delete_in_strict_mode/index.md | 69 +++++++++ .../index.html | 76 --------- .../deprecated_caller_or_arguments_usage/index.md | 76 +++++++++ .../deprecated_expression_closures/index.html | 80 ---------- .../errors/deprecated_expression_closures/index.md | 80 ++++++++++ .../reference/errors/deprecated_octal/index.html | 69 --------- .../reference/errors/deprecated_octal/index.md | 69 +++++++++ .../errors/deprecated_source_map_pragma/index.html | 59 ------- .../errors/deprecated_source_map_pragma/index.md | 59 +++++++ .../errors/deprecated_string_generics/index.html | 106 ------------- .../errors/deprecated_string_generics/index.md | 106 +++++++++++++ .../errors/deprecated_tolocaleformat/index.html | 92 ----------- .../errors/deprecated_tolocaleformat/index.md | 92 +++++++++++ .../reference/errors/equal_as_assign/index.html | 54 ------- .../reference/errors/equal_as_assign/index.md | 54 +++++++ .../for-each-in_loops_are_deprecated/index.html | 169 --------------------- .../for-each-in_loops_are_deprecated/index.md | 169 +++++++++++++++++++++ .../reference/errors/getter_only/index.html | 85 ----------- .../reference/errors/getter_only/index.md | 85 +++++++++++ .../errors/identifier_after_number/index.html | 57 ------- .../errors/identifier_after_number/index.md | 57 +++++++ .../reference/errors/illegal_character/index.html | 84 ---------- .../reference/errors/illegal_character/index.md | 84 ++++++++++ .../errors/in_operator_no_object/index.html | 74 --------- .../errors/in_operator_no_object/index.md | 74 +++++++++ .../fr/web/javascript/reference/errors/index.html | 24 --- files/fr/web/javascript/reference/errors/index.md | 24 +++ .../errors/invalid_array_length/index.html | 80 ---------- .../reference/errors/invalid_array_length/index.md | 80 ++++++++++ .../invalid_assignment_left-hand_side/index.html | 55 ------- .../invalid_assignment_left-hand_side/index.md | 55 +++++++ .../errors/invalid_const_assignment/index.html | 91 ----------- .../errors/invalid_const_assignment/index.md | 91 +++++++++++ .../reference/errors/invalid_date/index.html | 57 ------- .../reference/errors/invalid_date/index.md | 57 +++++++ .../errors/invalid_for-in_initializer/index.html | 75 --------- .../errors/invalid_for-in_initializer/index.md | 75 +++++++++ .../errors/invalid_for-of_initializer/index.html | 64 -------- .../errors/invalid_for-of_initializer/index.md | 64 ++++++++ .../index.html | 63 -------- .../index.md | 63 ++++++++ .../reference/errors/is_not_iterable/index.html | 129 ---------------- .../reference/errors/is_not_iterable/index.md | 129 ++++++++++++++++ .../reference/errors/json_bad_parse/index.html | 113 -------------- .../reference/errors/json_bad_parse/index.md | 113 ++++++++++++++ .../errors/malformed_formal_parameter/index.html | 65 -------- .../errors/malformed_formal_parameter/index.md | 65 ++++++++ .../reference/errors/malformed_uri/index.html | 67 -------- .../reference/errors/malformed_uri/index.md | 67 ++++++++ .../errors/missing_bracket_after_list/index.html | 58 ------- .../errors/missing_bracket_after_list/index.md | 58 +++++++ .../missing_colon_after_property_id/index.html | 78 ---------- .../missing_colon_after_property_id/index.md | 78 ++++++++++ .../missing_curly_after_function_body/index.html | 68 --------- .../missing_curly_after_function_body/index.md | 68 +++++++++ .../missing_curly_after_property_list/index.html | 53 ------- .../missing_curly_after_property_list/index.md | 53 +++++++ .../errors/missing_formal_parameter/index.html | 78 ---------- .../errors/missing_formal_parameter/index.md | 78 ++++++++++ .../errors/missing_initializer_in_const/index.html | 60 -------- .../errors/missing_initializer_in_const/index.md | 60 ++++++++ .../missing_name_after_dot_operator/index.html | 70 --------- .../missing_name_after_dot_operator/index.md | 70 +++++++++ .../index.html | 57 ------- .../index.md | 57 +++++++ .../missing_parenthesis_after_condition/index.html | 71 --------- .../missing_parenthesis_after_condition/index.md | 71 +++++++++ .../missing_semicolon_before_statement/index.html | 84 ---------- .../missing_semicolon_before_statement/index.md | 84 ++++++++++ .../errors/more_arguments_needed/index.html | 50 ------ .../errors/more_arguments_needed/index.md | 50 ++++++ .../errors/negative_repetition_count/index.html | 46 ------ .../errors/negative_repetition_count/index.md | 46 ++++++ .../reference/errors/no_non-null_object/index.html | 67 -------- .../reference/errors/no_non-null_object/index.md | 67 ++++++++ .../reference/errors/no_properties/index.html | 43 ------ .../reference/errors/no_properties/index.md | 43 ++++++ .../reference/errors/no_variable_name/index.html | 84 ---------- .../reference/errors/no_variable_name/index.md | 84 ++++++++++ .../non_configurable_array_element/index.html | 84 ---------- .../errors/non_configurable_array_element/index.md | 84 ++++++++++ .../reference/errors/not_a_codepoint/index.html | 57 ------- .../reference/errors/not_a_codepoint/index.md | 57 +++++++ .../reference/errors/not_a_constructor/index.html | 97 ------------ .../reference/errors/not_a_constructor/index.md | 97 ++++++++++++ .../reference/errors/not_a_function/index.html | 156 ------------------- .../reference/errors/not_a_function/index.md | 156 +++++++++++++++++++ .../reference/errors/not_defined/index.html | 71 --------- .../reference/errors/not_defined/index.md | 71 +++++++++ .../reference/errors/precision_range/index.html | 99 ------------ .../reference/errors/precision_range/index.md | 99 ++++++++++++ .../errors/property_access_denied/index.html | 48 ------ .../errors/property_access_denied/index.md | 48 ++++++ .../reference/errors/read-only/index.html | 81 ---------- .../javascript/reference/errors/read-only/index.md | 81 ++++++++++ .../errors/redeclared_parameter/index.html | 63 -------- .../reference/errors/redeclared_parameter/index.md | 63 ++++++++ .../index.html | 89 ----------- .../index.md | 89 +++++++++++ .../errors/reserved_identifier/index.html | 82 ---------- .../reference/errors/reserved_identifier/index.md | 82 ++++++++++ .../errors/resulting_string_too_large/index.html | 50 ------ .../errors/resulting_string_too_large/index.md | 50 ++++++ .../reference/errors/stmt_after_return/index.html | 80 ---------- .../reference/errors/stmt_after_return/index.md | 80 ++++++++++ .../errors/strict_non_simple_params/index.html | 116 -------------- .../errors/strict_non_simple_params/index.md | 116 ++++++++++++++ .../reference/errors/too_much_recursion/index.html | 70 --------- .../reference/errors/too_much_recursion/index.md | 70 +++++++++ .../reference/errors/undeclared_var/index.html | 67 -------- .../reference/errors/undeclared_var/index.md | 67 ++++++++ .../reference/errors/undefined_prop/index.html | 58 ------- .../reference/errors/undefined_prop/index.md | 58 +++++++ .../reference/errors/unexpected_token/index.html | 78 ---------- .../reference/errors/unexpected_token/index.md | 78 ++++++++++ .../reference/errors/unexpected_type/index.html | 74 --------- .../reference/errors/unexpected_type/index.md | 74 +++++++++ .../errors/unnamed_function_statement/index.html | 116 -------------- .../errors/unnamed_function_statement/index.md | 116 ++++++++++++++ .../errors/unterminated_string_literal/index.html | 78 ---------- .../errors/unterminated_string_literal/index.md | 78 ++++++++++ .../reference/errors/var_hides_argument/index.html | 56 ------- .../reference/errors/var_hides_argument/index.md | 56 +++++++ 154 files changed, 5618 insertions(+), 5618 deletions(-) delete mode 100644 files/fr/web/javascript/reference/errors/already_has_pragma/index.html create mode 100644 files/fr/web/javascript/reference/errors/already_has_pragma/index.md delete mode 100644 files/fr/web/javascript/reference/errors/array_sort_argument/index.html create mode 100644 files/fr/web/javascript/reference/errors/array_sort_argument/index.md delete mode 100644 files/fr/web/javascript/reference/errors/bad_octal/index.html create mode 100644 files/fr/web/javascript/reference/errors/bad_octal/index.md delete mode 100644 files/fr/web/javascript/reference/errors/bad_radix/index.html create mode 100644 files/fr/web/javascript/reference/errors/bad_radix/index.md delete mode 100644 files/fr/web/javascript/reference/errors/bad_regexp_flag/index.html create mode 100644 files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md delete mode 100644 files/fr/web/javascript/reference/errors/bad_return_or_yield/index.html create mode 100644 files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md delete mode 100644 files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.html create mode 100644 files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_access_property/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_access_property/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_assign_to_property/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_delete/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_delete/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cant_redefine_property/index.html create mode 100644 files/fr/web/javascript/reference/errors/cant_redefine_property/index.md delete mode 100644 files/fr/web/javascript/reference/errors/cyclic_object_value/index.html create mode 100644 files/fr/web/javascript/reference/errors/cyclic_object_value/index.md delete mode 100644 files/fr/web/javascript/reference/errors/dead_object/index.html create mode 100644 files/fr/web/javascript/reference/errors/dead_object/index.md delete mode 100644 files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.html create mode 100644 files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_octal/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_octal/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_string_generics/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md delete mode 100644 files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.html create mode 100644 files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md delete mode 100644 files/fr/web/javascript/reference/errors/equal_as_assign/index.html create mode 100644 files/fr/web/javascript/reference/errors/equal_as_assign/index.md delete mode 100644 files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html create mode 100644 files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md delete mode 100644 files/fr/web/javascript/reference/errors/getter_only/index.html create mode 100644 files/fr/web/javascript/reference/errors/getter_only/index.md delete mode 100644 files/fr/web/javascript/reference/errors/identifier_after_number/index.html create mode 100644 files/fr/web/javascript/reference/errors/identifier_after_number/index.md delete mode 100644 files/fr/web/javascript/reference/errors/illegal_character/index.html create mode 100644 files/fr/web/javascript/reference/errors/illegal_character/index.md delete mode 100644 files/fr/web/javascript/reference/errors/in_operator_no_object/index.html create mode 100644 files/fr/web/javascript/reference/errors/in_operator_no_object/index.md delete mode 100644 files/fr/web/javascript/reference/errors/index.html create mode 100644 files/fr/web/javascript/reference/errors/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_array_length/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_array_length/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_const_assignment/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_date/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_date/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md delete mode 100644 files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html create mode 100644 files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md delete mode 100644 files/fr/web/javascript/reference/errors/is_not_iterable/index.html create mode 100644 files/fr/web/javascript/reference/errors/is_not_iterable/index.md delete mode 100644 files/fr/web/javascript/reference/errors/json_bad_parse/index.html create mode 100644 files/fr/web/javascript/reference/errors/json_bad_parse/index.md delete mode 100644 files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.html create mode 100644 files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md delete mode 100644 files/fr/web/javascript/reference/errors/malformed_uri/index.html create mode 100644 files/fr/web/javascript/reference/errors/malformed_uri/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_formal_parameter/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md delete mode 100644 files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.html create mode 100644 files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md delete mode 100644 files/fr/web/javascript/reference/errors/more_arguments_needed/index.html create mode 100644 files/fr/web/javascript/reference/errors/more_arguments_needed/index.md delete mode 100644 files/fr/web/javascript/reference/errors/negative_repetition_count/index.html create mode 100644 files/fr/web/javascript/reference/errors/negative_repetition_count/index.md delete mode 100644 files/fr/web/javascript/reference/errors/no_non-null_object/index.html create mode 100644 files/fr/web/javascript/reference/errors/no_non-null_object/index.md delete mode 100644 files/fr/web/javascript/reference/errors/no_properties/index.html create mode 100644 files/fr/web/javascript/reference/errors/no_properties/index.md delete mode 100644 files/fr/web/javascript/reference/errors/no_variable_name/index.html create mode 100644 files/fr/web/javascript/reference/errors/no_variable_name/index.md delete mode 100644 files/fr/web/javascript/reference/errors/non_configurable_array_element/index.html create mode 100644 files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md delete mode 100644 files/fr/web/javascript/reference/errors/not_a_codepoint/index.html create mode 100644 files/fr/web/javascript/reference/errors/not_a_codepoint/index.md delete mode 100644 files/fr/web/javascript/reference/errors/not_a_constructor/index.html create mode 100644 files/fr/web/javascript/reference/errors/not_a_constructor/index.md delete mode 100644 files/fr/web/javascript/reference/errors/not_a_function/index.html create mode 100644 files/fr/web/javascript/reference/errors/not_a_function/index.md delete mode 100644 files/fr/web/javascript/reference/errors/not_defined/index.html create mode 100644 files/fr/web/javascript/reference/errors/not_defined/index.md delete mode 100644 files/fr/web/javascript/reference/errors/precision_range/index.html create mode 100644 files/fr/web/javascript/reference/errors/precision_range/index.md delete mode 100644 files/fr/web/javascript/reference/errors/property_access_denied/index.html create mode 100644 files/fr/web/javascript/reference/errors/property_access_denied/index.md delete mode 100644 files/fr/web/javascript/reference/errors/read-only/index.html create mode 100644 files/fr/web/javascript/reference/errors/read-only/index.md delete mode 100644 files/fr/web/javascript/reference/errors/redeclared_parameter/index.html create mode 100644 files/fr/web/javascript/reference/errors/redeclared_parameter/index.md delete mode 100644 files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html create mode 100644 files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md delete mode 100644 files/fr/web/javascript/reference/errors/reserved_identifier/index.html create mode 100644 files/fr/web/javascript/reference/errors/reserved_identifier/index.md delete mode 100644 files/fr/web/javascript/reference/errors/resulting_string_too_large/index.html create mode 100644 files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md delete mode 100644 files/fr/web/javascript/reference/errors/stmt_after_return/index.html create mode 100644 files/fr/web/javascript/reference/errors/stmt_after_return/index.md delete mode 100644 files/fr/web/javascript/reference/errors/strict_non_simple_params/index.html create mode 100644 files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md delete mode 100644 files/fr/web/javascript/reference/errors/too_much_recursion/index.html create mode 100644 files/fr/web/javascript/reference/errors/too_much_recursion/index.md delete mode 100644 files/fr/web/javascript/reference/errors/undeclared_var/index.html create mode 100644 files/fr/web/javascript/reference/errors/undeclared_var/index.md delete mode 100644 files/fr/web/javascript/reference/errors/undefined_prop/index.html create mode 100644 files/fr/web/javascript/reference/errors/undefined_prop/index.md delete mode 100644 files/fr/web/javascript/reference/errors/unexpected_token/index.html create mode 100644 files/fr/web/javascript/reference/errors/unexpected_token/index.md delete mode 100644 files/fr/web/javascript/reference/errors/unexpected_type/index.html create mode 100644 files/fr/web/javascript/reference/errors/unexpected_type/index.md delete mode 100644 files/fr/web/javascript/reference/errors/unnamed_function_statement/index.html create mode 100644 files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md delete mode 100644 files/fr/web/javascript/reference/errors/unterminated_string_literal/index.html create mode 100644 files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md delete mode 100644 files/fr/web/javascript/reference/errors/var_hides_argument/index.html create mode 100644 files/fr/web/javascript/reference/errors/var_hides_argument/index.md (limited to 'files/fr/web/javascript/reference/errors') diff --git a/files/fr/web/javascript/reference/errors/already_has_pragma/index.html b/files/fr/web/javascript/reference/errors/already_has_pragma/index.html deleted file mode 100644 index 506c6bc246..0000000000 --- a/files/fr/web/javascript/reference/errors/already_has_pragma/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: 'Warning: -file- is being assigned a //# sourceMappingURL, but already has one' -slug: Web/JavaScript/Reference/Errors/Already_has_pragma -tags: - - Avertissement - - Erreurs - - JavaScript -translation_of: Web/JavaScript/Reference/Errors/Already_has_pragma -original_slug: Web/JavaScript/Reference/Erreurs/Already_has_pragma ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: -fichier- is being assigned a //# sourceMappingURL, but already has one.
- -

Type d'erreur

- -

Un avertissement. L'exécution du script JavaScript n'est pas interrompue.

- -

Quel est le problème ?

- -

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.

- -

Exemples

- -

Voici une correspondance de source déclarée via un commentaire dans le fichier :

- -
//# 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 :

- -
X-SourceMap: /chemin/vers/le/fichier.js.map
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..506c6bc246 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/already_has_pragma/index.md @@ -0,0 +1,42 @@ +--- +title: 'Warning: -file- is being assigned a //# sourceMappingURL, but already has one' +slug: Web/JavaScript/Reference/Errors/Already_has_pragma +tags: + - Avertissement + - Erreurs + - JavaScript +translation_of: Web/JavaScript/Reference/Errors/Already_has_pragma +original_slug: Web/JavaScript/Reference/Erreurs/Already_has_pragma +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: -fichier- is being assigned a //# sourceMappingURL, but already has one.
+ +

Type d'erreur

+ +

Un avertissement. L'exécution du script JavaScript n'est pas interrompue.

+ +

Quel est le problème ?

+ +

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.

+ +

Exemples

+ +

Voici une correspondance de source déclarée via un commentaire dans le fichier :

+ +
//# 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 :

+ +
X-SourceMap: /chemin/vers/le/fichier.js.map
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/array_sort_argument/index.html b/files/fr/web/javascript/reference/errors/array_sort_argument/index.html deleted file mode 100644 index 6f7c3d07f2..0000000000 --- a/files/fr/web/javascript/reference/errors/array_sort_argument/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 'TypeError: invalid Array.prototype.sort argument' -slug: Web/JavaScript/Reference/Errors/Array_sort_argument -tags: - - Erreurs - - JavaScript - - Reference -translation_of: Web/JavaScript/Reference/Errors/Array_sort_argument -original_slug: Web/JavaScript/Reference/Erreurs/Array_sort_argument ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: argument is not a function object (Edge)
-TypeError: invalid Array.prototype.sort argument (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

Que s'est-il passé ?

- -

L'argument passé à {{jsxref("Array.prototype.sort()")}} devrait être {{jsxref("undefined")}} ou être une fonction comparant ses opérandes.

- -

Exemples

- -

Cas invalides

- -
[1, 3, 2].sort(5);  // TypeError
-
-var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y };
-[1, 3, 2].sort(cmp[this.key] || 'asc');  // TypeError
-
- -

Cas valides

- -
[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]
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..6f7c3d07f2 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/array_sort_argument/index.md @@ -0,0 +1,48 @@ +--- +title: 'TypeError: invalid Array.prototype.sort argument' +slug: Web/JavaScript/Reference/Errors/Array_sort_argument +tags: + - Erreurs + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Errors/Array_sort_argument +original_slug: Web/JavaScript/Reference/Erreurs/Array_sort_argument +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: argument is not a function object (Edge)
+TypeError: invalid Array.prototype.sort argument (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

Que s'est-il passé ?

+ +

L'argument passé à {{jsxref("Array.prototype.sort()")}} devrait être {{jsxref("undefined")}} ou être une fonction comparant ses opérandes.

+ +

Exemples

+ +

Cas invalides

+ +
[1, 3, 2].sort(5);  // TypeError
+
+var cmp = { asc: (x, y) => x >= y, dsc : (x, y) => x <= y };
+[1, 3, 2].sort(cmp[this.key] || 'asc');  // TypeError
+
+ +

Cas valides

+ +
[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]
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/bad_octal/index.html b/files/fr/web/javascript/reference/errors/bad_octal/index.html deleted file mode 100644 index 4b14545161..0000000000 --- a/files/fr/web/javascript/reference/errors/bad_octal/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: 'SyntaxError: "x" is not a legal ECMA-262 octal constant' -slug: Web/JavaScript/Reference/Errors/Bad_octal -tags: - - Erreurs - - JavaScript - - Mode strict - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Bad_octal -original_slug: Web/JavaScript/Reference/Erreurs/Bad_octal ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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

- -

Un avertissement, l'exécution du script JavaScript ne sera pas interrompue.

- -

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 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.

- -

Exemples

- -

Nombres invalides en notation octale

- -
08;
-09;
-// SyntaxError: 08 is not a legal ECMA-262 octal constant
-// SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated
- -

Nombres valides en notation octale

- -

On utilisera un zéro suivi de la lettre « o » pour indiquer un nombre exprimé en notation octale :

- -
0O755;
-0o644;
-
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/bad_octal/index.md b/files/fr/web/javascript/reference/errors/bad_octal/index.md new file mode 100644 index 0000000000..4b14545161 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/bad_octal/index.md @@ -0,0 +1,53 @@ +--- +title: 'SyntaxError: "x" is not a legal ECMA-262 octal constant' +slug: Web/JavaScript/Reference/Errors/Bad_octal +tags: + - Erreurs + - JavaScript + - Mode strict + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Bad_octal +original_slug: Web/JavaScript/Reference/Erreurs/Bad_octal +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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

+ +

Un avertissement, l'exécution du script JavaScript ne sera pas interrompue.

+ +

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 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.

+ +

Exemples

+ +

Nombres invalides en notation octale

+ +
08;
+09;
+// SyntaxError: 08 is not a legal ECMA-262 octal constant
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated
+ +

Nombres valides en notation octale

+ +

On utilisera un zéro suivi de la lettre « o » pour indiquer un nombre exprimé en notation octale :

+ +
0O755;
+0o644;
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/bad_radix/index.html b/files/fr/web/javascript/reference/errors/bad_radix/index.html deleted file mode 100644 index c620439cae..0000000000 --- a/files/fr/web/javascript/reference/errors/bad_radix/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: 'RangeError: radix must be an integer' -slug: Web/JavaScript/Reference/Errors/Bad_radix -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Bad_radix -original_slug: Web/JavaScript/Reference/Erreurs/Bad_radix ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

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.

- -

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 :

- - - -

Examples

- -

Exemples invalides

- -
(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

- -
(42).toString(2);     // "101010" (binary)
-(13).toString(8);     // "15"     (octal)
-(0x42).toString(10);  // "66"     (decimal)
-(100000).toString(16) // "186a0"  (hexadecimal)
-
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/bad_radix/index.md b/files/fr/web/javascript/reference/errors/bad_radix/index.md new file mode 100644 index 0000000000..c620439cae --- /dev/null +++ b/files/fr/web/javascript/reference/errors/bad_radix/index.md @@ -0,0 +1,64 @@ +--- +title: 'RangeError: radix must be an integer' +slug: Web/JavaScript/Reference/Errors/Bad_radix +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Bad_radix +original_slug: Web/JavaScript/Reference/Erreurs/Bad_radix +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("RangeError")}}

+ +

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.

+ +

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 :

+ + + +

Examples

+ +

Exemples invalides

+ +
(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

+ +
(42).toString(2);     // "101010" (binary)
+(13).toString(8);     // "15"     (octal)
+(0x42).toString(10);  // "66"     (decimal)
+(100000).toString(16) // "186a0"  (hexadecimal)
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.html b/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.html deleted file mode 100644 index 9f1632d1a0..0000000000 --- a/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: 'SyntaxError: invalid regular expression flag "x"' -slug: Web/JavaScript/Reference/Errors/Bad_regexp_flag -tags: - - Erreurs - - JavaScript - - SyntaxError -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;
-
-// 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 :

- -
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 :

- -
let obj = {
-  url: '/docs/Web'
-};
- -

Marqueurs valides

- -

Voir le tableau ci-avant pour la liste des marqueurs autorisés pour manipuler les expressions rationnelles en JavaScript.

- -
/toto/g;
-/toto/gim;
-/toto/uy;
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..9f1632d1a0 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/bad_regexp_flag/index.md @@ -0,0 +1,107 @@ +--- +title: 'SyntaxError: invalid regular expression flag "x"' +slug: Web/JavaScript/Reference/Errors/Bad_regexp_flag +tags: + - Erreurs + - JavaScript + - SyntaxError +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;
+
+// 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 :

+ +
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 :

+ +
let obj = {
+  url: '/docs/Web'
+};
+ +

Marqueurs valides

+ +

Voir le tableau ci-avant pour la liste des marqueurs autorisés pour manipuler les expressions rationnelles en JavaScript.

+ +
/toto/g;
+/toto/gim;
+/toto/uy;
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.html b/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.html deleted file mode 100644 index 787f099067..0000000000 --- a/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'SyntaxError: return not in function' -slug: Web/JavaScript/Reference/Errors/Bad_return_or_yield -tags: - - Erreurs - - JavaScript - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Bad_return_or_yield -original_slug: Web/JavaScript/Reference/Erreurs/Bad_return_or_yield ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: 'return' statement outside of function (Edge)
-SyntaxError: return not in function (Firefox)
-SyntaxError: yield not in function (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}.

- -

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.

- -

Exemples

- -
var encouragement = function(score) {
-  if (score === 147)
-    return "Super !";
-  };
-  if (score > 100) {
-    return "Un record!";
-  }
-}
-
-// 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 :

- -
var encouragement = function(score) {
-  if (score === 147) {
-    return "Maximum!";
-  }
-  if (score > 100) {
-    return "Century!";
-  }
-};
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..787f099067 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/bad_return_or_yield/index.md @@ -0,0 +1,58 @@ +--- +title: 'SyntaxError: return not in function' +slug: Web/JavaScript/Reference/Errors/Bad_return_or_yield +tags: + - Erreurs + - JavaScript + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Bad_return_or_yield +original_slug: Web/JavaScript/Reference/Erreurs/Bad_return_or_yield +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: 'return' statement outside of function (Edge)
+SyntaxError: return not in function (Firefox)
+SyntaxError: yield not in function (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}.

+ +

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.

+ +

Exemples

+ +
var encouragement = function(score) {
+  if (score === 147)
+    return "Super !";
+  };
+  if (score > 100) {
+    return "Un record!";
+  }
+}
+
+// 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 :

+ +
var encouragement = function(score) {
+  if (score === 147) {
+    return "Maximum!";
+  }
+  if (score > 100) {
+    return "Century!";
+  }
+};
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.html b/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.html deleted file mode 100644 index 35fcf07a52..0000000000 --- a/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 'TypeError: X.prototype.y called on incompatible type' -slug: Web/JavaScript/Reference/Errors/Called_on_incompatible_type -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type -original_slug: Web/JavaScript/Reference/Erreurs/Called_on_incompatible_type ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

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.

- -

Exemples

- -

Exemples invalides

- -
var monSet = new Set;
-['truc', 'bidule'].forEach(monSet.add);
-// monSet.add est une fonction mais
-// "monSet" n'est pas capturé en tant que this.
-
-var maFonction = function () {
-  console.log(this);
-};
-['truc', 'bidule'].forEach(maFonction.bind);
-// maFonction.bind est une fonction
-// mais "maFonction" n'est pas capturé en tant
-// que this.
-
-
- -

Exemples valides

- -
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));
-// Cela fonctionne car on utilise
-// la fonction "bind" ce qui permet de
-// créer une fonction lambda qui propage
-// l'argument.
-
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..35fcf07a52 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/called_on_incompatible_type/index.md @@ -0,0 +1,76 @@ +--- +title: 'TypeError: X.prototype.y called on incompatible type' +slug: Web/JavaScript/Reference/Errors/Called_on_incompatible_type +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type +original_slug: Web/JavaScript/Reference/Erreurs/Called_on_incompatible_type +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

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.

+ +

Exemples

+ +

Exemples invalides

+ +
var monSet = new Set;
+['truc', 'bidule'].forEach(monSet.add);
+// monSet.add est une fonction mais
+// "monSet" n'est pas capturé en tant que this.
+
+var maFonction = function () {
+  console.log(this);
+};
+['truc', 'bidule'].forEach(maFonction.bind);
+// maFonction.bind est une fonction
+// mais "maFonction" n'est pas capturé en tant
+// que this.
+
+
+ +

Exemples valides

+ +
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));
+// Cela fonctionne car on utilise
+// la fonction "bind" ce qui permet de
+// créer une fonction lambda qui propage
+// l'argument.
+
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html b/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html deleted file mode 100644 index 1ac434163b..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 'ReferenceError: can''t access lexical declaration`X'' before initialization' -slug: Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init -tags: - - Erreur - - JavaScript - - Reference - - ReferenceError -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")}}
- -

Message

- -
ReferenceError: Use before delaration (Edge)
-ReferenceError: can't access lexical declaration `X' before initialization (Firefox)
-ReferenceError: 'x' is not defined (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("ReferenceError")}}

- -

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.

- -

Exemple

- -

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.

- -
function test(){
-   let toto = 33;
-   if (true) {
-      let toto = (toto + 55);
-      // ReferenceError: can't access lexical
-      // declaration `toto` before initialization
-   }
-}
-test();
-
- -

Exemples valides

- -

Afin que toto puisse être modifiée au sein de l'instruction if, on enlèvera la redéclaration dans ce bloc :

- -
function test(){
-   let toto = 33;
-   if (true) {
-      toto = (toto + 55);
-   }
-}
-test();
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..1ac434163b --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.md @@ -0,0 +1,63 @@ +--- +title: 'ReferenceError: can''t access lexical declaration`X'' before initialization' +slug: Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init +tags: + - Erreur + - JavaScript + - Reference + - ReferenceError +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")}}
+ +

Message

+ +
ReferenceError: Use before delaration (Edge)
+ReferenceError: can't access lexical declaration `X' before initialization (Firefox)
+ReferenceError: 'x' is not defined (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("ReferenceError")}}

+ +

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.

+ +

Exemple

+ +

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.

+ +
function test(){
+   let toto = 33;
+   if (true) {
+      let toto = (toto + 55);
+      // ReferenceError: can't access lexical
+      // declaration `toto` before initialization
+   }
+}
+test();
+
+ +

Exemples valides

+ +

Afin que toto puisse être modifiée au sein de l'instruction if, on enlèvera la redéclaration dans ce bloc :

+ +
function test(){
+   let toto = 33;
+   if (true) {
+      toto = (toto + 55);
+   }
+}
+test();
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_access_property/index.html b/files/fr/web/javascript/reference/errors/cant_access_property/index.html deleted file mode 100644 index e9ea7c5e0c..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_access_property/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: 'TypeError: can''t access property "x" of "y"' -slug: Web/JavaScript/Reference/Errors/Cant_access_property -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Cant_access_property -original_slug: Web/JavaScript/Reference/Erreurs/Cant_access_property ---- -
{{jsSidebar("Errors")}}
- -

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)
-
-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

- -

{{jsxref("TypeError")}}.

- -

Quel est le problème ?

- -

On a tenté d'accéder à une propriété sur la valeur {{jsxref("undefined")}} ou {{jsxref("null")}}.

- -

Exemples

- -

Cas invalides

- -
// 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

- -

Pour détecter le cas où la valeur utilisée est undefined ou null, on peut utiliser l'opérateur typeof. Par exemple :

- -
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

- - 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 new file mode 100644 index 0000000000..e9ea7c5e0c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_access_property/index.md @@ -0,0 +1,60 @@ +--- +title: 'TypeError: can''t access property "x" of "y"' +slug: Web/JavaScript/Reference/Errors/Cant_access_property +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cant_access_property +original_slug: Web/JavaScript/Reference/Erreurs/Cant_access_property +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+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

+ +

{{jsxref("TypeError")}}.

+ +

Quel est le problème ?

+ +

On a tenté d'accéder à une propriété sur la valeur {{jsxref("undefined")}} ou {{jsxref("null")}}.

+ +

Exemples

+ +

Cas invalides

+ +
// 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

+ +

Pour détecter le cas où la valeur utilisée est undefined ou null, on peut utiliser l'opérateur typeof. Par exemple :

+ +
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

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.html b/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.html deleted file mode 100644 index 29b72aaa47..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: 'TypeError: can''t assign to property "x" on "y": not an object' -slug: Web/JavaScript/Reference/Errors/Cant_assign_to_property -tags: - - Error - - Errors - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Cant_assign_to_property -original_slug: Web/JavaScript/Reference/Erreurs/Cant_assign_to_property ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: can't assign to property "x" on {y}: not an object (Firefox)
-TypeError: Cannot create property 'x' on {y} (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}.

- -

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.

- -

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

- -

Exemple invalide

- -
'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

- -

On pourra corriger le problème en convertissant la valeur primitive en sont équivalent objet avec un constructeur (ici {{jsxref("String")}} pour .

- -
'use strict';
-
-var foo = new String("my string");
-foo.bar = {};
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..29b72aaa47 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_assign_to_property/index.md @@ -0,0 +1,56 @@ +--- +title: 'TypeError: can''t assign to property "x" on "y": not an object' +slug: Web/JavaScript/Reference/Errors/Cant_assign_to_property +tags: + - Error + - Errors + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cant_assign_to_property +original_slug: Web/JavaScript/Reference/Erreurs/Cant_assign_to_property +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: can't assign to property "x" on {y}: not an object (Firefox)
+TypeError: Cannot create property 'x' on {y} (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}.

+ +

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.

+ +

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

+ +

Exemple invalide

+ +
'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

+ +

On pourra corriger le problème en convertissant la valeur primitive en sont équivalent objet avec un constructeur (ici {{jsxref("String")}} pour .

+ +
'use strict';
+
+var foo = new String("my string");
+foo.bar = {};
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html b/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html deleted file mode 100644 index 674ffd0138..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: 'TypeError: can''t define property "x": "obj" is not extensible' -slug: Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible -tags: - - Erreurs - - JavaScript - - TypeError -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")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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à.

- -

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.

- -
'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.

- -
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.

- -
'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);
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..674ffd0138 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.md @@ -0,0 +1,66 @@ +--- +title: 'TypeError: can''t define property "x": "obj" is not extensible' +slug: Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible +tags: + - Erreurs + - JavaScript + - TypeError +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")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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à.

+ +

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.

+ +
'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.

+ +
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.

+ +
'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);
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_delete/index.html b/files/fr/web/javascript/reference/errors/cant_delete/index.html deleted file mode 100644 index 7ec2b3bac8..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_delete/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: 'TypeError: property "x" is non-configurable and can''t be deleted' -slug: Web/JavaScript/Reference/Errors/Cant_delete -tags: - - Erreurs - - JavaScript - - Mode strict - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Cant_delete -original_slug: Web/JavaScript/Reference/Erreurs/Cant_delete ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}} in strict mode only.

- -

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.

- -

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération de suppression renverra false.

- -

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()")}}.

- -
"use strict";
-var obj = Object.freeze({name: "Elsa", score: 157});
-delete obj.score;  // TypeError
-
-"use strict";
-var obj = {};
-Object.defineProperty(obj, "toto", {value: 2, configurable: false});
-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 :

- -
"use strict";
-delete Math.PI;  // TypeError
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/cant_delete/index.md b/files/fr/web/javascript/reference/errors/cant_delete/index.md new file mode 100644 index 0000000000..7ec2b3bac8 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_delete/index.md @@ -0,0 +1,60 @@ +--- +title: 'TypeError: property "x" is non-configurable and can''t be deleted' +slug: Web/JavaScript/Reference/Errors/Cant_delete +tags: + - Erreurs + - JavaScript + - Mode strict + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cant_delete +original_slug: Web/JavaScript/Reference/Erreurs/Cant_delete +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}} in strict mode only.

+ +

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.

+ +

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération de suppression renverra false.

+ +

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()")}}.

+ +
"use strict";
+var obj = Object.freeze({name: "Elsa", score: 157});
+delete obj.score;  // TypeError
+
+"use strict";
+var obj = {};
+Object.defineProperty(obj, "toto", {value: 2, configurable: false});
+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 :

+ +
"use strict";
+delete Math.PI;  // TypeError
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cant_redefine_property/index.html b/files/fr/web/javascript/reference/errors/cant_redefine_property/index.html deleted file mode 100644 index 5311f957a5..0000000000 --- a/files/fr/web/javascript/reference/errors/cant_redefine_property/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: 'TypeError: can''t redefine non-configurable property "x"' -slug: Web/JavaScript/Reference/Errors/Cant_redefine_property -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property -original_slug: Web/JavaScript/Reference/Erreurs/Cant_redefine_property ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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

- -

{{jsxref("TypeError")}}

- -

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.

- -

Exemples

- -

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 :

- -
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.

- -
var obj = Object.create({});
-Object.defineProperty(obj, "toto", {value: "machin", configurable: true});
-Object.defineProperty(obj, "toto", {value: "bidule", configurable: true});
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..5311f957a5 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cant_redefine_property/index.md @@ -0,0 +1,52 @@ +--- +title: 'TypeError: can''t redefine non-configurable property "x"' +slug: Web/JavaScript/Reference/Errors/Cant_redefine_property +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property +original_slug: Web/JavaScript/Reference/Erreurs/Cant_redefine_property +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Exemples

+ +

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 :

+ +
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.

+ +
var obj = Object.create({});
+Object.defineProperty(obj, "toto", {value: "machin", configurable: true});
+Object.defineProperty(obj, "toto", {value: "bidule", configurable: true});
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/cyclic_object_value/index.html b/files/fr/web/javascript/reference/errors/cyclic_object_value/index.html deleted file mode 100644 index aa50f933f9..0000000000 --- a/files/fr/web/javascript/reference/errors/cyclic_object_value/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: 'TypeError: cyclic object value' -slug: Web/JavaScript/Reference/Errors/Cyclic_object_value -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Cyclic_object_value -original_slug: Web/JavaScript/Reference/Erreurs/Cyclic_object_value ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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

- -

{{jsxref("TypeError")}}

- -

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).

- -

Exemples

- -

Avec une structure circulaire comme la suivante :

- -
var a = {};
-var b = {};
-a.child = b;
-b.child = a;
-
- -

{{jsxref("JSON.stringify()")}} échouera :

- -
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()")}}.

- -
const getCircularReplacer = () => {
-  const seen = new WeakSet();
-  return (key, value) => {
-    if (typeof value === "object" && value !== null) {
-      if (seen.has(value)) {
-        return;
-      }
-      seen.add(value);
-    }
-    return value;
-  };
-};
-
-JSON.stringify(circularReference, getCircularReplacer());
-// {"otherData":123}
- -

On peut également utiliser une bibliothèque ou une fonction utilitaire pour ce scénario. comme cycle.js.

- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..aa50f933f9 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/cyclic_object_value/index.md @@ -0,0 +1,69 @@ +--- +title: 'TypeError: cyclic object value' +slug: Web/JavaScript/Reference/Errors/Cyclic_object_value +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cyclic_object_value +original_slug: Web/JavaScript/Reference/Erreurs/Cyclic_object_value +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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

+ +

{{jsxref("TypeError")}}

+ +

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).

+ +

Exemples

+ +

Avec une structure circulaire comme la suivante :

+ +
var a = {};
+var b = {};
+a.child = b;
+b.child = a;
+
+ +

{{jsxref("JSON.stringify()")}} échouera :

+ +
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()")}}.

+ +
const getCircularReplacer = () => {
+  const seen = new WeakSet();
+  return (key, value) => {
+    if (typeof value === "object" && value !== null) {
+      if (seen.has(value)) {
+        return;
+      }
+      seen.add(value);
+    }
+    return value;
+  };
+};
+
+JSON.stringify(circularReference, getCircularReplacer());
+// {"otherData":123}
+ +

On peut également utiliser une bibliothèque ou une fonction utilitaire pour ce scénario. comme cycle.js.

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/dead_object/index.html b/files/fr/web/javascript/reference/errors/dead_object/index.html deleted file mode 100644 index ba4498fd26..0000000000 --- a/files/fr/web/javascript/reference/errors/dead_object/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: 'TypeError: can''t access dead object' -slug: Web/JavaScript/Reference/Errors/Dead_object -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Dead_object -original_slug: Web/JavaScript/Reference/Erreurs/Dead_object ---- -
{{JSSidebar("Errors")}}
- -

Message

- -
TypeError: can't access dead object
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

Vérifier si un objet est mort

- -

Components.utils fournit une méthode isDeadWrapper() qui peut être utilisée par du code privilégié :

- -
if (Components.utils.isDeadWrapper(window)) {
-  // dead
-}
- -

Du code sans privilège ne pourra pas accéder à Component.utils et pourra simplement intercepter l'exception :

- -
try {
-  String(window);
-}
-catch (e) {
-  console.log("window est problablement mort ");
-}
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/dead_object/index.md b/files/fr/web/javascript/reference/errors/dead_object/index.md new file mode 100644 index 0000000000..ba4498fd26 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/dead_object/index.md @@ -0,0 +1,50 @@ +--- +title: 'TypeError: can''t access dead object' +slug: Web/JavaScript/Reference/Errors/Dead_object +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Dead_object +original_slug: Web/JavaScript/Reference/Erreurs/Dead_object +--- +
{{JSSidebar("Errors")}}
+ +

Message

+ +
TypeError: can't access dead object
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Vérifier si un objet est mort

+ +

Components.utils fournit une méthode isDeadWrapper() qui peut être utilisée par du code privilégié :

+ +
if (Components.utils.isDeadWrapper(window)) {
+  // dead
+}
+ +

Du code sans privilège ne pourra pas accéder à Component.utils et pourra simplement intercepter l'exception :

+ +
try {
+  String(window);
+}
+catch (e) {
+  console.log("window est problablement mort ");
+}
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.html b/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.html deleted file mode 100644 index 4451a729be..0000000000 --- a/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: >- - SyntaxError: applying the 'delete' operator to an unqualified name is - deprecated -slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode -original_slug: Web/JavaScript/Reference/Erreurs/Delete_in_strict_mode ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

- -

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.

- -

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.

- -

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération renvoie simplement false.

- -

Exemples

- -

Essayer de supprimer une variable normale avec delete ne fonctionne pas, voire lève une exception en mode strict :

- -
'use strict';
-
-var x;
-
-// ...
-
-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")}} :

- -
'use strict';
-
-var x;
-// ...
-x = null;
-
-// x peut être ramassée par le ramasse-miettes
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..4451a729be --- /dev/null +++ b/files/fr/web/javascript/reference/errors/delete_in_strict_mode/index.md @@ -0,0 +1,69 @@ +--- +title: >- + SyntaxError: applying the 'delete' operator to an unqualified name is + deprecated +slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode +original_slug: Web/JavaScript/Reference/Erreurs/Delete_in_strict_mode +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+ +

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.

+ +

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.

+ +

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération renvoie simplement false.

+ +

Exemples

+ +

Essayer de supprimer une variable normale avec delete ne fonctionne pas, voire lève une exception en mode strict :

+ +
'use strict';
+
+var x;
+
+// ...
+
+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")}} :

+ +
'use strict';
+
+var x;
+// ...
+x = null;
+
+// x peut être ramassée par le ramasse-miettes
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html b/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html deleted file mode 100644 index 669f4903a9..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 'ReferenceError: deprecated caller or arguments usage' -slug: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage -tags: - - Erreur - - JavaScript - - ReferenceError -translation_of: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage -original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_caller_or_arguments_usage ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

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.

- -

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.

- -

Exemples

- -

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).

- -
"use strict";
-
-function myFunc() {
-  if (myFunc.caller == null) {
-    return 'La fonction a été appelée depuis la portée globale !';
-  } else {
-    return 'L\'appelant est ' + myFunc.caller;
-  }
-}
-
-myFunc();
-// Warning: ReferenceError: deprecated caller usage
-// "La fonction a été appelée depuis la portée globale !"
- -

Function.arguments

- -

{{jsxref("Function.arguments")}} est dépréciée (se référer à l'article sur cette propriété pour plus d'informations).

- -
"use strict";
-
-function f(n) { g(n - 1); }
-
-function g(n) {
-  console.log('before: ' + g.arguments[0]);
-  if (n > 0) { f(n); }
-  console.log('after: ' + g.arguments[0]);
-}
-
-f(2);
-
-console.log('returned: ' + g.arguments);
-// Warning: ReferenceError: deprecated arguments usage
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..669f4903a9 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.md @@ -0,0 +1,76 @@ +--- +title: 'ReferenceError: deprecated caller or arguments usage' +slug: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage +tags: + - Erreur + - JavaScript + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage +original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_caller_or_arguments_usage +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

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.

+ +

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.

+ +

Exemples

+ +

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).

+ +
"use strict";
+
+function myFunc() {
+  if (myFunc.caller == null) {
+    return 'La fonction a été appelée depuis la portée globale !';
+  } else {
+    return 'L\'appelant est ' + myFunc.caller;
+  }
+}
+
+myFunc();
+// Warning: ReferenceError: deprecated caller usage
+// "La fonction a été appelée depuis la portée globale !"
+ +

Function.arguments

+ +

{{jsxref("Function.arguments")}} est dépréciée (se référer à l'article sur cette propriété pour plus d'informations).

+ +
"use strict";
+
+function f(n) { g(n - 1); }
+
+function g(n) {
+  console.log('before: ' + g.arguments[0]);
+  if (n > 0) { f(n); }
+  console.log('after: ' + g.arguments[0]);
+}
+
+f(2);
+
+console.log('returned: ' + g.arguments);
+// Warning: ReferenceError: deprecated arguments usage
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.html b/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.html deleted file mode 100644 index 5cd6889b74..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: 'Warning: expression closures are deprecated' -slug: Web/JavaScript/Reference/Errors/Deprecated_expression_closures -tags: - - Avertissement - - JavaScript - - Warning -translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures -original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_expression_closures ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: expression closures are deprecated
-
- -

Type d'erreur

- -

Un avertissement, l'exécution du code JavaScript ne sera pas interrompue.

- -

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")}}.

- -

Exemples

- -

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.

- -
var x = function() 1;
-
-var obj = {
-  count: function() 1
-};
-
- -

Syntaxe standard

- -

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; }
-
-var obj = {
-  count: function() { return 1; }
-};
-
- -

Syntaxe standard avec les fonctions fléchées

- -

On peut aussi utiliser les fonctions fléchées :

- -
var x = () => 1;
- -

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 :

- -
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 :

- -
var obj = {
-  get x() { return 1 },
-  set x(v) { this.v = v }
-};
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..5cd6889b74 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_expression_closures/index.md @@ -0,0 +1,80 @@ +--- +title: 'Warning: expression closures are deprecated' +slug: Web/JavaScript/Reference/Errors/Deprecated_expression_closures +tags: + - Avertissement + - JavaScript + - Warning +translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures +original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_expression_closures +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: expression closures are deprecated
+
+ +

Type d'erreur

+ +

Un avertissement, l'exécution du code JavaScript ne sera pas interrompue.

+ +

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")}}.

+ +

Exemples

+ +

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.

+ +
var x = function() 1;
+
+var obj = {
+  count: function() 1
+};
+
+ +

Syntaxe standard

+ +

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; }
+
+var obj = {
+  count: function() { return 1; }
+};
+
+ +

Syntaxe standard avec les fonctions fléchées

+ +

On peut aussi utiliser les fonctions fléchées :

+ +
var x = () => 1;
+ +

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 :

+ +
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 :

+ +
var obj = {
+  get x() { return 1 },
+  set x(v) { this.v = v }
+};
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_octal/index.html b/files/fr/web/javascript/reference/errors/deprecated_octal/index.html deleted file mode 100644 index 067c0a363a..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_octal/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: 'SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated' -slug: Web/JavaScript/Reference/Errors/Deprecated_octal -tags: - - Erreurs - - JavaScript - - Mode strict - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Deprecated_octal -original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_octal ---- -
{{jsSidebar("Errors")}}
- -

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
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

- -

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).

- -

Exemples

- -

Littéraux en base octale préfixés par 0

- -
"use strict";
-
-03;
-
-// SyntaxError: "0"-prefixed octal literals and octal escape sequences
-// are deprecated
- -

Séquences d'échappement en base octale

- -
"use strict";
-
-"\251";
-
-// SyntaxError: "0"-prefixed octal literals and octal escape sequences
-// are deprecated
-
- -

Littéraux valides

- -

Pour former un littéral en base octal, on pourra utiliser un zéro suivi de la lettre « o » :

- -
0o3;
-
- -

Pour former une séquence d'échappement en base octale, on écrira une séquence d'échappement en base hexadécimale :

- -
'\xA9';
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/deprecated_octal/index.md b/files/fr/web/javascript/reference/errors/deprecated_octal/index.md new file mode 100644 index 0000000000..067c0a363a --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_octal/index.md @@ -0,0 +1,69 @@ +--- +title: 'SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated' +slug: Web/JavaScript/Reference/Errors/Deprecated_octal +tags: + - Erreurs + - JavaScript + - Mode strict + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Deprecated_octal +original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_octal +--- +
{{jsSidebar("Errors")}}
+ +

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
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+ +

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).

+ +

Exemples

+ +

Littéraux en base octale préfixés par 0

+ +
"use strict";
+
+03;
+
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences
+// are deprecated
+ +

Séquences d'échappement en base octale

+ +
"use strict";
+
+"\251";
+
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences
+// are deprecated
+
+ +

Littéraux valides

+ +

Pour former un littéral en base octal, on pourra utiliser un zéro suivi de la lettre « o » :

+ +
0o3;
+
+ +

Pour former une séquence d'échappement en base octale, on écrira une séquence d'échappement en base hexadécimale :

+ +
'\xA9';
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.html b/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.html deleted file mode 100644 index 8d36de23af..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: >- - SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# - instead -slug: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma -original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_source_map_pragma ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
-
-Warning: SyntaxError: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
-
- -

Type d'erreur

- -

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 ?

- -

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.

- -

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.

- -

Exemples

- -

Syntaxe dépréciée

- -

La syntaxe utilisant l'arobase (@) est dépréciée :

- -
//@ sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map
-
- -

Syntaxe standard

- -

Il faut utiliser le dièse (#) :

- -
//# 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 :

- -
X-SourceMap: /path/to/file.js.map
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..8d36de23af --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_source_map_pragma/index.md @@ -0,0 +1,59 @@ +--- +title: >- + SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# + instead +slug: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma +original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_source_map_pragma +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
+
+Warning: SyntaxError: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
+
+ +

Type d'erreur

+ +

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 ?

+ +

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.

+ +

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.

+ +

Exemples

+ +

Syntaxe dépréciée

+ +

La syntaxe utilisant l'arobase (@) est dépréciée :

+ +
//@ sourceMappingURL=http://exemple.com/chemin/vers/la/sourcemap.map
+
+ +

Syntaxe standard

+ +

Il faut utiliser le dièse (#) :

+ +
//# 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 :

+ +
X-SourceMap: /path/to/file.js.map
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.html b/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.html deleted file mode 100644 index f348c0b4d8..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: 'Warning: String.x is deprecated; use String.prototype.x instead' -slug: Web/JavaScript/Reference/Errors/Deprecated_String_generics -tags: - - Avertissement - - JavaScript - - Warning -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;
-String(num).replace(/5/, '2');
-
- -

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 :

- -
/*globals define*/
-// Assumes all supplied String instance methods already present
-// (one may use shims for these if not available)
-(function() {
-  'use strict';
-
-  var i,
-    // We could also build the array of methods with the following, but the
-    //   getOwnPropertyNames() method is non-shimable:
-    // Object.getOwnPropertyNames(String).filter(function(methodName) {
-    //   return typeof String[methodName] === 'function';
-    // });
-    methods = [
-      'contains', 'substring', 'toLowerCase', 'toUpperCase', 'charAt',
-      'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith',
-      'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase', 'normalize',
-      'toLocaleUpperCase', 'localeCompare', 'match', 'search', 'slice',
-      'replace', 'split', 'substr', 'concat', 'localeCompare'
-    ],
-    methodCount = methods.length,
-    assignStringGeneric = function(methodName) {
-      var method = String.prototype[methodName];
-      String[methodName] = function(arg1) {
-        return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
-      };
-    };
-
-  for (i = 0; i < methodCount; i++) {
-    assignStringGeneric(methods[i]);
-  }
-}());
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..f348c0b4d8 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_string_generics/index.md @@ -0,0 +1,106 @@ +--- +title: 'Warning: String.x is deprecated; use String.prototype.x instead' +slug: Web/JavaScript/Reference/Errors/Deprecated_String_generics +tags: + - Avertissement + - JavaScript + - Warning +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;
+String(num).replace(/5/, '2');
+
+ +

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 :

+ +
/*globals define*/
+// Assumes all supplied String instance methods already present
+// (one may use shims for these if not available)
+(function() {
+  'use strict';
+
+  var i,
+    // We could also build the array of methods with the following, but the
+    //   getOwnPropertyNames() method is non-shimable:
+    // Object.getOwnPropertyNames(String).filter(function(methodName) {
+    //   return typeof String[methodName] === 'function';
+    // });
+    methods = [
+      'contains', 'substring', 'toLowerCase', 'toUpperCase', 'charAt',
+      'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith',
+      'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase', 'normalize',
+      'toLocaleUpperCase', 'localeCompare', 'match', 'search', 'slice',
+      'replace', 'split', 'substr', 'concat', 'localeCompare'
+    ],
+    methodCount = methods.length,
+    assignStringGeneric = function(methodName) {
+      var method = String.prototype[methodName];
+      String[methodName] = function(arg1) {
+        return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
+      };
+    };
+
+  for (i = 0; i < methodCount; i++) {
+    assignStringGeneric(methods[i]);
+  }
+}());
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.html b/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.html deleted file mode 100644 index 444295566c..0000000000 --- a/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: 'Warning: Date.prototype.toLocaleFormat is deprecated' -slug: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat -tags: - - Avertissement - - JavaScript - - Warning -translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat -original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_toLocaleFormat ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead
-
- -

Type d'erreur

- -

Un avertissement, l'exécution du script JavaScript n'est pas interrompue.

- -

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.

- -

Exemples

- -

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).

- -
var today = new Date();
-var date = today.toLocaleFormat('%A %e %B %Y');
-
-console.log(date);
-// En français
-// "Vendredi 10 mars 2017"
- -

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).

- -

Si on souhaite uniquement formater une date, on pourra utiliser la méthode {{jsxref("Date.prototype.toLocaleDateString")}}.

- -
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) :

- -
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)));
-
-// "Donnerstag, 20. Dezember 2012"
-// "Montag, 12. Mai 2014"
-
- -

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

- -
(new Date()).toLocaleFormat("%Y%m%d");
-// "20170310"
-
- -

Pourra être converti en :

- -
let now = new Date();
-let date = now.getFullYear() * 10000 +
-          (now.getMonth() + 1) * 100 + now.getDate();
-
-console.log(date);
-// "20170310"
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md b/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md new file mode 100644 index 0000000000..444295566c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/deprecated_tolocaleformat/index.md @@ -0,0 +1,92 @@ +--- +title: 'Warning: Date.prototype.toLocaleFormat is deprecated' +slug: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat +tags: + - Avertissement + - JavaScript + - Warning +translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat +original_slug: Web/JavaScript/Reference/Erreurs/Deprecated_toLocaleFormat +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead
+
+ +

Type d'erreur

+ +

Un avertissement, l'exécution du script JavaScript n'est pas interrompue.

+ +

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.

+ +

Exemples

+ +

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).

+ +
var today = new Date();
+var date = today.toLocaleFormat('%A %e %B %Y');
+
+console.log(date);
+// En français
+// "Vendredi 10 mars 2017"
+ +

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).

+ +

Si on souhaite uniquement formater une date, on pourra utiliser la méthode {{jsxref("Date.prototype.toLocaleDateString")}}.

+ +
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) :

+ +
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)));
+
+// "Donnerstag, 20. Dezember 2012"
+// "Montag, 12. Mai 2014"
+
+ +

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

+ +
(new Date()).toLocaleFormat("%Y%m%d");
+// "20170310"
+
+ +

Pourra être converti en :

+ +
let now = new Date();
+let date = now.getFullYear() * 10000 +
+          (now.getMonth() + 1) * 100 + now.getDate();
+
+console.log(date);
+// "20170310"
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/equal_as_assign/index.html b/files/fr/web/javascript/reference/errors/equal_as_assign/index.html deleted file mode 100644 index 2e420be691..0000000000 --- a/files/fr/web/javascript/reference/errors/equal_as_assign/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: 'SyntaxError: test for equality (==) mistyped as assignment (=)?' -slug: Web/JavaScript/Reference/Errors/Equal_as_assign -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign -original_slug: Web/JavaScript/Reference/Erreurs/Equal_as_assign ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: SyntaxError: test for equality (==) mistyped as assignment (=)?
-
- -

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.

- -

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.

- -

Exemples

- -

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 :

- -
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 :

- -
if ((x = y)) {
-  // exécuter le code
-}
- -

Autrement (généralement), on veut plutôt utiliser un opérateur de comparaison (== ou === par exemple) :

- -
if (x == y) {
-  // exécuter le code
-}
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..2e420be691 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/equal_as_assign/index.md @@ -0,0 +1,54 @@ +--- +title: 'SyntaxError: test for equality (==) mistyped as assignment (=)?' +slug: Web/JavaScript/Reference/Errors/Equal_as_assign +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign +original_slug: Web/JavaScript/Reference/Erreurs/Equal_as_assign +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: SyntaxError: test for equality (==) mistyped as assignment (=)?
+
+ +

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.

+ +

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.

+ +

Exemples

+ +

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 :

+ +
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 :

+ +
if ((x = y)) {
+  // exécuter le code
+}
+ +

Autrement (généralement), on veut plutôt utiliser un opérateur de comparaison (== ou === par exemple) :

+ +
if (x == y) {
+  // exécuter le code
+}
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html b/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html deleted file mode 100644 index 26954d8e79..0000000000 --- a/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: 'Warning: JavaScript 1.6''s for-each-in loops are deprecated' -slug: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated -tags: - - Avertissement - - JavaScript -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")}}
- -

Message

- -
Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead
-
- -

Type d'erreur

- -

Avertissement.

- -

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.

- -

Exemples

- -

Itérer sur 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

- -
var objet = { a: 10, b: 20 };
-
-for each (var x in objet) {
-  console.log(x);        // 10
-                         // 20
-}
-
- -

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 :

- -
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 :

- -
var objet = { a: 10, b: 20 };
-
-for (var x of Object.values(objet)) {
-  console.log(x);        // 10
-                         // 20
-}
-
- -

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.

- -

Syntaxe dépréciée

- -
var array = [10, 20, 30];
-
-for each (var x in array) {
-  console.log(x);        // 10
-                         // 20
-                         // 30
-}
-
- -

Syntaxe alternative, standard

- -

On peut obtenir le même effet avec les boucles {{jsxref("Instructions/for...of", "for...of")}} (ES2015).

- -
var array = [10, 20, 30];
-
-for (var x of array) {
-  console.log(x);        // 10
-                         // 20
-                         // 30
-}
-
- -

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.

- -

Syntaxe dépréciée

- -
function func(array) {
-  for each (var x in array) {
-    console.log(x);
-  }
-}
-func([10, 20]);        // 10
-                       // 20
-func(null);            // rien ne s'affiche
-func(undefined);       // rien ne s'affiche
-
- -

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 :

- -
function func(array) {
-  if (array) {
-    for (var x of array) {
-      console.log(x);
-    }
-  }
-}
-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

- -

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")}}.

- -
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

- -

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 };
-
-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 :

- -
var object = { a: 10, b: 20 };
-
-for (var [key, value] of Object.entries(object)) {
-  console.log(key, value);  // "a", 10
-                            // "b", 20
-}
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..26954d8e79 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.md @@ -0,0 +1,169 @@ +--- +title: 'Warning: JavaScript 1.6''s for-each-in loops are deprecated' +slug: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated +tags: + - Avertissement + - JavaScript +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")}}
+ +

Message

+ +
Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead
+
+ +

Type d'erreur

+ +

Avertissement.

+ +

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.

+ +

Exemples

+ +

Itérer sur 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

+ +
var objet = { a: 10, b: 20 };
+
+for each (var x in objet) {
+  console.log(x);        // 10
+                         // 20
+}
+
+ +

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 :

+ +
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 :

+ +
var objet = { a: 10, b: 20 };
+
+for (var x of Object.values(objet)) {
+  console.log(x);        // 10
+                         // 20
+}
+
+ +

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.

+ +

Syntaxe dépréciée

+ +
var array = [10, 20, 30];
+
+for each (var x in array) {
+  console.log(x);        // 10
+                         // 20
+                         // 30
+}
+
+ +

Syntaxe alternative, standard

+ +

On peut obtenir le même effet avec les boucles {{jsxref("Instructions/for...of", "for...of")}} (ES2015).

+ +
var array = [10, 20, 30];
+
+for (var x of array) {
+  console.log(x);        // 10
+                         // 20
+                         // 30
+}
+
+ +

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.

+ +

Syntaxe dépréciée

+ +
function func(array) {
+  for each (var x in array) {
+    console.log(x);
+  }
+}
+func([10, 20]);        // 10
+                       // 20
+func(null);            // rien ne s'affiche
+func(undefined);       // rien ne s'affiche
+
+ +

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 :

+ +
function func(array) {
+  if (array) {
+    for (var x of array) {
+      console.log(x);
+    }
+  }
+}
+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

+ +

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")}}.

+ +
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

+ +

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 };
+
+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 :

+ +
var object = { a: 10, b: 20 };
+
+for (var [key, value] of Object.entries(object)) {
+  console.log(key, value);  // "a", 10
+                            // "b", 20
+}
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/getter_only/index.html b/files/fr/web/javascript/reference/errors/getter_only/index.html deleted file mode 100644 index 01fd2c0e14..0000000000 --- a/files/fr/web/javascript/reference/errors/getter_only/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: 'TypeError: setting a property that has only a getter' -slug: Web/JavaScript/Reference/Errors/Getter_only -tags: - - Erreurs - - JavaScript - - Mode strict - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Getter_only -original_slug: Web/JavaScript/Reference/Erreurs/Getter_only ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}, uniquement en mode strict.

- -

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.

- -

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()")}}.

- -
"use strict";
-
-function Archiver() {
-  var temperature = null;
-  Object.defineProperty(this, 'temperature', {
-    get: function() {
-      console.log('get!');
-      return temperature;
-    }
-  });
-}
-
-var arc = new Archiver();
-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 :

- -
"use strict";
-
-function Archiver() {
-  var temperature = null;
-  var archive = [];
-
-  Object.defineProperty(this, 'temperature', {
-    get: function() {
-      console.log('get!');
-      return temperature;
-    },
-    set: function(value) {
-      temperature = value;
-      archive.push({ val: temperature });
-    }
-  });
-
-  this.getArchive = function() { return archive; };
-}
-
-var arc = new Archiver();
-arc.temperature; // 'get!'
-arc.temperature = 11;
-arc.temperature = 13;
-arc.getArchive(); // [{ val: 11 }, { val: 13 }]
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/getter_only/index.md b/files/fr/web/javascript/reference/errors/getter_only/index.md new file mode 100644 index 0000000000..01fd2c0e14 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/getter_only/index.md @@ -0,0 +1,85 @@ +--- +title: 'TypeError: setting a property that has only a getter' +slug: Web/JavaScript/Reference/Errors/Getter_only +tags: + - Erreurs + - JavaScript + - Mode strict + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Getter_only +original_slug: Web/JavaScript/Reference/Erreurs/Getter_only +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}, uniquement en mode strict.

+ +

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.

+ +

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()")}}.

+ +
"use strict";
+
+function Archiver() {
+  var temperature = null;
+  Object.defineProperty(this, 'temperature', {
+    get: function() {
+      console.log('get!');
+      return temperature;
+    }
+  });
+}
+
+var arc = new Archiver();
+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 :

+ +
"use strict";
+
+function Archiver() {
+  var temperature = null;
+  var archive = [];
+
+  Object.defineProperty(this, 'temperature', {
+    get: function() {
+      console.log('get!');
+      return temperature;
+    },
+    set: function(value) {
+      temperature = value;
+      archive.push({ val: temperature });
+    }
+  });
+
+  this.getArchive = function() { return archive; };
+}
+
+var arc = new Archiver();
+arc.temperature; // 'get!'
+arc.temperature = 11;
+arc.temperature = 13;
+arc.getArchive(); // [{ val: 11 }, { val: 13 }]
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/identifier_after_number/index.html b/files/fr/web/javascript/reference/errors/identifier_after_number/index.html deleted file mode 100644 index 1401b41432..0000000000 --- a/files/fr/web/javascript/reference/errors/identifier_after_number/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'SyntaxError: identifier starts immediately after numeric literal' -slug: Web/JavaScript/Reference/Errors/Identifier_after_number -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Identifier_after_number -original_slug: Web/JavaScript/Reference/Erreurs/Identifier_after_number ---- -
{{JSSidebar("Errors")}}
- -

Message

- -
SyntaxError: Unexpected identifier after numeric literal (Edge)
-SyntaxError: identifier starts immediately after numeric literal (Firefox)
-SyntaxError: Unexpected number (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

Quel est le problème ?

- -

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.

- -

Exemples

- -

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 :

- -
var 1vie = 'toto';
-// SyntaxError: identifier starts immediately after numeric literal
-
-var toto = 1vie;
-// SyntaxError: identifier starts immediately after numeric literal
-
-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 :

- -
var vie1 = 'toto';
-var toto = vie1;
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..1401b41432 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/identifier_after_number/index.md @@ -0,0 +1,57 @@ +--- +title: 'SyntaxError: identifier starts immediately after numeric literal' +slug: Web/JavaScript/Reference/Errors/Identifier_after_number +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Identifier_after_number +original_slug: Web/JavaScript/Reference/Erreurs/Identifier_after_number +--- +
{{JSSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Unexpected identifier after numeric literal (Edge)
+SyntaxError: identifier starts immediately after numeric literal (Firefox)
+SyntaxError: Unexpected number (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

Quel est le problème ?

+ +

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.

+ +

Exemples

+ +

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 :

+ +
var 1vie = 'toto';
+// SyntaxError: identifier starts immediately after numeric literal
+
+var toto = 1vie;
+// SyntaxError: identifier starts immediately after numeric literal
+
+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 :

+ +
var vie1 = 'toto';
+var toto = vie1;
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/illegal_character/index.html b/files/fr/web/javascript/reference/errors/illegal_character/index.html deleted file mode 100644 index 9c886718f5..0000000000 --- a/files/fr/web/javascript/reference/errors/illegal_character/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'SyntaxError: illegal character' -slug: Web/JavaScript/Reference/Errors/Illegal_character -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Illegal_character -original_slug: Web/JavaScript/Reference/Erreurs/Illegal_character ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Invalid character (Edge)
-SyntaxError: illegal character (Firefox)
-SyntaxError: Invalid or unexpected token (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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 ( " ).

- -

Exemples

- -

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.

- -
“Ceci ressemble à une chaîne de caractères.”;
-// “ n'est pas le caractère "
-// SyntaxError: illegal character
-
-42 – 13;
-// – n'est pas le caractère -
-// SyntaxError: illegal character
-
-var toto = "truc";
-// ; (<37e>) n'est pas le caractère ;
-// SyntaxError: illegal character
-
- -

On peut corriger ce point en utilisant les bons caractères :

- -
"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.

- -

Caractères oubliés

- -

On oublie parfois un caractère.

- -
var couleurs = ['#000', #333', '#666'];
-// SyntaxError: illegal character
-
- -

Dans ce cas, il suffit de rajouter la quote pour '#333'.

- -
var couleurs = ['#000', '#333', '#666'];
- -

Caractères cachés

- -

Lorsque vous copiez/collez du code depuis des sources externes, celles-ci peuvent contenir des caractères invalides difficiles à discerner.

- -
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).

- -
var toto = 'truc';​<200b>
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/illegal_character/index.md b/files/fr/web/javascript/reference/errors/illegal_character/index.md new file mode 100644 index 0000000000..9c886718f5 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/illegal_character/index.md @@ -0,0 +1,84 @@ +--- +title: 'SyntaxError: illegal character' +slug: Web/JavaScript/Reference/Errors/Illegal_character +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Illegal_character +original_slug: Web/JavaScript/Reference/Erreurs/Illegal_character +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Invalid character (Edge)
+SyntaxError: illegal character (Firefox)
+SyntaxError: Invalid or unexpected token (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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 ( " ).

+ +

Exemples

+ +

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.

+ +
“Ceci ressemble à une chaîne de caractères.”;
+// “ n'est pas le caractère "
+// SyntaxError: illegal character
+
+42 – 13;
+// – n'est pas le caractère -
+// SyntaxError: illegal character
+
+var toto = "truc";
+// ; (<37e>) n'est pas le caractère ;
+// SyntaxError: illegal character
+
+ +

On peut corriger ce point en utilisant les bons caractères :

+ +
"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.

+ +

Caractères oubliés

+ +

On oublie parfois un caractère.

+ +
var couleurs = ['#000', #333', '#666'];
+// SyntaxError: illegal character
+
+ +

Dans ce cas, il suffit de rajouter la quote pour '#333'.

+ +
var couleurs = ['#000', '#333', '#666'];
+ +

Caractères cachés

+ +

Lorsque vous copiez/collez du code depuis des sources externes, celles-ci peuvent contenir des caractères invalides difficiles à discerner.

+ +
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).

+ +
var toto = 'truc';​<200b>
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/in_operator_no_object/index.html b/files/fr/web/javascript/reference/errors/in_operator_no_object/index.html deleted file mode 100644 index 104971982d..0000000000 --- a/files/fr/web/javascript/reference/errors/in_operator_no_object/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'TypeError: invalid ''in'' operand "x"' -slug: Web/JavaScript/Reference/Errors/in_operator_no_object -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object -original_slug: Web/JavaScript/Reference/Erreurs/in_operator_no_object ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

Exemples

- -

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.

- -
"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()")}} :

- -
"Coucou monde".indexOf("Coucou") !== -1;
-// true
- -

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")}}.

- -
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.

- -
var toto = { machin: "bidule" };
-"truc" in toto; // false
-
-"PI" in Math; // true
-"pi" in Math; // false
-
- -

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.

- -
var arbres = ['cèdre', 'bouleau', 'pin', 'sapin', 'érable'];
-3 in arbres; // true
-"pin" in arbres; // false
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..104971982d --- /dev/null +++ b/files/fr/web/javascript/reference/errors/in_operator_no_object/index.md @@ -0,0 +1,74 @@ +--- +title: 'TypeError: invalid ''in'' operand "x"' +slug: Web/JavaScript/Reference/Errors/in_operator_no_object +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object +original_slug: Web/JavaScript/Reference/Erreurs/in_operator_no_object +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Exemples

+ +

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.

+ +
"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()")}} :

+ +
"Coucou monde".indexOf("Coucou") !== -1;
+// true
+ +

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")}}.

+ +
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.

+ +
var toto = { machin: "bidule" };
+"truc" in toto; // false
+
+"PI" in Math; // true
+"pi" in Math; // false
+
+ +

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.

+ +
var arbres = ['cèdre', 'bouleau', 'pin', 'sapin', 'érable'];
+3 in arbres; // true
+"pin" in arbres; // false
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/index.html b/files/fr/web/javascript/reference/errors/index.html deleted file mode 100644 index 7110b7682a..0000000000 --- a/files/fr/web/javascript/reference/errors/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Référence des erreurs JavaScript -slug: Web/JavaScript/Reference/Errors -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/Errors -original_slug: Web/JavaScript/Reference/Erreurs ---- -

{{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.

- -

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

- -

{{ListSubPages("/fr/docs/Web/JavaScript/Reference/Erreurs")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/index.md b/files/fr/web/javascript/reference/errors/index.md new file mode 100644 index 0000000000..7110b7682a --- /dev/null +++ b/files/fr/web/javascript/reference/errors/index.md @@ -0,0 +1,24 @@ +--- +title: Référence des erreurs JavaScript +slug: Web/JavaScript/Reference/Errors +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Errors +original_slug: Web/JavaScript/Reference/Erreurs +--- +

{{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.

+ +

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

+ +

{{ListSubPages("/fr/docs/Web/JavaScript/Reference/Erreurs")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_array_length/index.html b/files/fr/web/javascript/reference/errors/invalid_array_length/index.html deleted file mode 100644 index aa5fd0d701..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_array_length/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: 'RangeError: invalid array length' -slug: Web/JavaScript/Reference/Errors/Invalid_array_length -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_array_length ---- -
{{jsSidebar("Erreurs")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

Quel est le problème ?

- -

Deux cas de figures peuvent causer cette erreur :

- - - -

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.

- -

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 invalides

- -
new Array(Math.pow(2, 40))
-new Array(-1)
-new ArrayBuffer(Math.pow(2, 32))
-new ArrayBuffer(-1)
-
-let a = [];
-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

- -
[ Math.pow(2, 40) ]                     // [ 1099511627776 ]
-[ -1 ]                                  // [ -1 ]
-new ArrayBuffer(Math.pow(2, 32) - 1)
-new ArrayBuffer(0)
-
-let a = [];
-a.length = Math.max(0, a.length - 1);
-
-let b = new Array(Math.pow(2, 32) - 1);
-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)
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..aa5fd0d701 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_array_length/index.md @@ -0,0 +1,80 @@ +--- +title: 'RangeError: invalid array length' +slug: Web/JavaScript/Reference/Errors/Invalid_array_length +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_array_length +--- +
{{jsSidebar("Erreurs")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("RangeError")}}

+ +

Quel est le problème ?

+ +

Deux cas de figures peuvent causer cette erreur :

+ + + +

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.

+ +

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 invalides

+ +
new Array(Math.pow(2, 40))
+new Array(-1)
+new ArrayBuffer(Math.pow(2, 32))
+new ArrayBuffer(-1)
+
+let a = [];
+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

+ +
[ Math.pow(2, 40) ]                     // [ 1099511627776 ]
+[ -1 ]                                  // [ -1 ]
+new ArrayBuffer(Math.pow(2, 32) - 1)
+new ArrayBuffer(0)
+
+let a = [];
+a.length = Math.max(0, a.length - 1);
+
+let b = new Array(Math.pow(2, 32) - 1);
+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)
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html b/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html deleted file mode 100644 index 5a441e32a9..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: 'ReferenceError: invalid assignment left-hand side' -slug: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side -tags: - - Erreurs - - JavaScript - - ReferenceError -translation_of: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_assignment_left-hand_side ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
ReferenceError: invalid assignment left-hand side
-
- -

Type d'erreur

- -

{{jsxref("ReferenceError")}}.

- -

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.

- -

Exemples

- -
if (Math.PI = 3 || Math.PI = 4) {
-  console.log('Nope !');
-}
-// ReferenceError: invalid assignment left-hand side
-
-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.

- -
if (Math.PI == 3 || Math.PI == 4) {
-  console.log('no way!');
-}
-
-var str = 'Hello, '
-+ 'from the '
-+ 'other side!';
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..5a441e32a9 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.md @@ -0,0 +1,55 @@ +--- +title: 'ReferenceError: invalid assignment left-hand side' +slug: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side +tags: + - Erreurs + - JavaScript + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_assignment_left-hand_side +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
ReferenceError: invalid assignment left-hand side
+
+ +

Type d'erreur

+ +

{{jsxref("ReferenceError")}}.

+ +

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.

+ +

Exemples

+ +
if (Math.PI = 3 || Math.PI = 4) {
+  console.log('Nope !');
+}
+// ReferenceError: invalid assignment left-hand side
+
+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.

+ +
if (Math.PI == 3 || Math.PI == 4) {
+  console.log('no way!');
+}
+
+var str = 'Hello, '
++ 'from the '
++ 'other side!';
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.html b/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.html deleted file mode 100644 index 76219c8d9f..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: 'TypeError: invalid assignment to const "x"' -slug: Web/JavaScript/Reference/Errors/Invalid_const_assignment -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_const_assignment ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: invalid assignment to const "x" (Firefox)
-TypeError: Assignment to constant variable. (Chrome)
-TypeError: Redeclaration of const 'x' (Edge)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

Exemples

- -

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 :

- -
const COLUMNS = 80;
-
-// ...
-
-COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'
- -

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.

- -

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 :

- -
const COLUMNS = 80;
-const WIDE_COLUMNS = 120;
- -

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.

- -
let columns = 80;
-
-// ...
-
-let columns = 120;
-
- -

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 ?

- -
const COLUMNS = 80;
-
-function setupBigScreenEnvironment() {
-  const COLUMNS = 120;
-}
- -

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é :

- -
const obj = {toto: 'truc'};
-obj = {toto: 'bidule'}; // TypeError: invalid assignment to const `obj'
-
- -

En revanche, on peut modifier les propriétés :

- -
obj.toto = 'bidule';
-obj; // Object { toto: "bidule" }
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..76219c8d9f --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_const_assignment/index.md @@ -0,0 +1,91 @@ +--- +title: 'TypeError: invalid assignment to const "x"' +slug: Web/JavaScript/Reference/Errors/Invalid_const_assignment +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_const_assignment +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: invalid assignment to const "x" (Firefox)
+TypeError: Assignment to constant variable. (Chrome)
+TypeError: Redeclaration of const 'x' (Edge)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Exemples

+ +

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 :

+ +
const COLUMNS = 80;
+
+// ...
+
+COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'
+ +

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.

+ +

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 :

+ +
const COLUMNS = 80;
+const WIDE_COLUMNS = 120;
+ +

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.

+ +
let columns = 80;
+
+// ...
+
+let columns = 120;
+
+ +

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 ?

+ +
const COLUMNS = 80;
+
+function setupBigScreenEnvironment() {
+  const COLUMNS = 120;
+}
+ +

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é :

+ +
const obj = {toto: 'truc'};
+obj = {toto: 'bidule'}; // TypeError: invalid assignment to const `obj'
+
+ +

En revanche, on peut modifier les propriétés :

+ +
obj.toto = 'bidule';
+obj; // Object { toto: "bidule" }
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_date/index.html b/files/fr/web/javascript/reference/errors/invalid_date/index.html deleted file mode 100644 index a89f979fbc..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_date/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'RangeError: invalid date' -slug: Web/JavaScript/Reference/Errors/Invalid_date -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Invalid_date -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_date ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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

- -

{{jsxref("RangeError")}}

- -

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()")}}.

- -

Exemples

- -

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 :

- -
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 :

- -
Date.parse('toto-truc 2014'); // NaN
- -

Pour plus de détails, consulter la documentation sur {{jsxref("Date.parse()")}}.

- -

Exemples valides

- -
new Date('05 October 2011 14:48 UTC');
-new Date(1317826080); // timestamp Unix pour le 5 octobre 2011 14:48:00 UTC
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/invalid_date/index.md b/files/fr/web/javascript/reference/errors/invalid_date/index.md new file mode 100644 index 0000000000..a89f979fbc --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_date/index.md @@ -0,0 +1,57 @@ +--- +title: 'RangeError: invalid date' +slug: Web/JavaScript/Reference/Errors/Invalid_date +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Invalid_date +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_date +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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

+ +

{{jsxref("RangeError")}}

+ +

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()")}}.

+ +

Exemples

+ +

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 :

+ +
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 :

+ +
Date.parse('toto-truc 2014'); // NaN
+ +

Pour plus de détails, consulter la documentation sur {{jsxref("Date.parse()")}}.

+ +

Exemples valides

+ +
new Date('05 October 2011 14:48 UTC');
+new Date(1317826080); // timestamp Unix pour le 5 octobre 2011 14:48:00 UTC
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.html b/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.html deleted file mode 100644 index 2ae766aadc..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: 'SyntaxError: for-in loop head declarations may not have initializers' -slug: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer -tags: - - Erreurs - - JavaScript - - Mode strict - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-in_initializer ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}, uniquement en mode strict.

- -

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).

- -

Exemples

- -

Cet exemple déclenchera une exception SyntaxError :

- -
"use strict";
-
-var obj = {a: 1, b: 2, c: 3 };
-
-for (var i = 0 in obj) {
-  console.log(obj[i]);
-}
-
-// SyntaxError: for-in loop head declarations may not have initializers
-
- -

Boucle for-in valide

- -

On peut retirer l'initialisateur de l'en-tête de la boucle :

- -
"use strict";
-
-var obj = {a: 1, b: 2, c: 3 };
-
-for (var i in obj) {
-  console.log(obj[i]);
-}
-
- -

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 :

- -
var arr = [ "a", "b", "c" ]
-
-for (var i = 2; i < arr.length; i++) {
-  console.log(arr[i]);
-}
-
-// "c"
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..2ae766aadc --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_for-in_initializer/index.md @@ -0,0 +1,75 @@ +--- +title: 'SyntaxError: for-in loop head declarations may not have initializers' +slug: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer +tags: + - Erreurs + - JavaScript + - Mode strict + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-in_initializer +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}, uniquement en mode strict.

+ +

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).

+ +

Exemples

+ +

Cet exemple déclenchera une exception SyntaxError :

+ +
"use strict";
+
+var obj = {a: 1, b: 2, c: 3 };
+
+for (var i = 0 in obj) {
+  console.log(obj[i]);
+}
+
+// SyntaxError: for-in loop head declarations may not have initializers
+
+ +

Boucle for-in valide

+ +

On peut retirer l'initialisateur de l'en-tête de la boucle :

+ +
"use strict";
+
+var obj = {a: 1, b: 2, c: 3 };
+
+for (var i in obj) {
+  console.log(obj[i]);
+}
+
+ +

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 :

+ +
var arr = [ "a", "b", "c" ]
+
+for (var i = 2; i < arr.length; i++) {
+  console.log(arr[i]);
+}
+
+// "c"
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.html b/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.html deleted file mode 100644 index 943b5399fc..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: >- - SyntaxError: a declaration in the head of a for-of loop can't have an - initializer -slug: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer -original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-of_initializer ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Boucles for-of invalides

- -
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
- -

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.

- -
let iterable = [10, 20, 30];
-
-for (let value of iterable) {
-  value += 50;
-  console.log(value);
-}
-// 60
-// 70
-// 80
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..943b5399fc --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_for-of_initializer/index.md @@ -0,0 +1,64 @@ +--- +title: >- + SyntaxError: a declaration in the head of a for-of loop can't have an + initializer +slug: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer +original_slug: Web/JavaScript/Reference/Erreurs/Invalid_for-of_initializer +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Boucles for-of invalides

+ +
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
+ +

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.

+ +
let iterable = [10, 20, 30];
+
+for (let value of iterable) {
+  value += 50;
+  console.log(value);
+}
+// 60
+// 70
+// 80
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html b/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html deleted file mode 100644 index a9fe80e977..0000000000 --- a/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 'TypeError: invalid ''instanceof'' operand ''x''' -slug: Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand -tags: - - Error - - Errors - - JavaScript - - Reference - - TypeError -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")}}
- -

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)
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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é.

- -

Exemples

- -
"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
-42 instanceof 0;      // TypeError: invalid 'instanceof' operand 0
-
-function Toto() {}
-var f = Toto();        // Toto() est appelé et renvoie undefined
-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.

- -
typeof "test" == "string";  // true
-typeof 42 == "number"       // true
-
-function Toto() {}
-var f = Toto;               // On n'appelle pas Toto.
-var x = new Toto();
-
-x instanceof f;             // true
-x instanceof Toto;          // true
-
- -

Voir aussi

- - - -

 

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 new file mode 100644 index 0000000000..a9fe80e977 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.md @@ -0,0 +1,63 @@ +--- +title: 'TypeError: invalid ''instanceof'' operand ''x''' +slug: Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand +tags: + - Error + - Errors + - JavaScript + - Reference + - TypeError +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")}}
+ +

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)
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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é.

+ +

Exemples

+ +
"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
+42 instanceof 0;      // TypeError: invalid 'instanceof' operand 0
+
+function Toto() {}
+var f = Toto();        // Toto() est appelé et renvoie undefined
+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.

+ +
typeof "test" == "string";  // true
+typeof 42 == "number"       // true
+
+function Toto() {}
+var f = Toto;               // On n'appelle pas Toto.
+var x = new Toto();
+
+x instanceof f;             // true
+x instanceof Toto;          // true
+
+ +

Voir aussi

+ + + +

 

diff --git a/files/fr/web/javascript/reference/errors/is_not_iterable/index.html b/files/fr/web/javascript/reference/errors/is_not_iterable/index.html deleted file mode 100644 index 1aba992ca7..0000000000 --- a/files/fr/web/javascript/reference/errors/is_not_iterable/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 'TypeError: ''x'' is not iterable' -slug: Web/JavaScript/Reference/Errors/is_not_iterable -tags: - - Error - - JavaScript - - Reference - - TypeError -translation_of: Web/JavaScript/Reference/Errors/is_not_iterable -original_slug: Web/JavaScript/Reference/Erreurs/is_not_iterable ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: 'x' is not iterable (Firefox, Chrome)
-TypeError: 'x' is not a function or its return value is not iterable (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

Exemples

- -

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.

- -
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 :

- -
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];
-    console.log(country, capital);
-}
-
-for (const [country, capital] of Object.entries(obj))
-    console.log(country, capital);
-
- -

On pourrait également utiliser un objet {{jsxref("Map")}} :

- -
var map = new Map;
-map.set('France', 'Paris');
-map.set('England', 'London');
-// On parcourt les noms des propriétés
-for (let country of map.keys()) {
-    let capital = map[country];
-    console.log(country, capital);
-}
-
-for (let capital of map.values())
-    console.log(capital);
-
-for (const [country, capital] of map.entries())
-    console.log(country, capital);
-
- -

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.

- -
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.

- -
function* generate(a, b) {
-    yield a;
-    yield b;
-}
-
-for (let x of generate(1,2))
-    console.log(x);
-
- -

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().

- -
const monIterableVide = {
-    [Symbol.iterator]() {
-        return [] // [] est un iterable mais pas un itérateur
-                  // car il n'a pas de méthode next
-    }
-}
-
-Array.from(monIterableVide);  // TypeError: monIterableVide is not iterable
-
- -

Voici une implémentation correcte :

- -
const monIterableVide = {
-    [Symbol.iterator]() {
-        return [][Symbol.iterator]()
-    }
-}
-
-Array.from(monIterableVide);  // []
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..1aba992ca7 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/is_not_iterable/index.md @@ -0,0 +1,129 @@ +--- +title: 'TypeError: ''x'' is not iterable' +slug: Web/JavaScript/Reference/Errors/is_not_iterable +tags: + - Error + - JavaScript + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Errors/is_not_iterable +original_slug: Web/JavaScript/Reference/Erreurs/is_not_iterable +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: 'x' is not iterable (Firefox, Chrome)
+TypeError: 'x' is not a function or its return value is not iterable (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Exemples

+ +

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.

+ +
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 :

+ +
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];
+    console.log(country, capital);
+}
+
+for (const [country, capital] of Object.entries(obj))
+    console.log(country, capital);
+
+ +

On pourrait également utiliser un objet {{jsxref("Map")}} :

+ +
var map = new Map;
+map.set('France', 'Paris');
+map.set('England', 'London');
+// On parcourt les noms des propriétés
+for (let country of map.keys()) {
+    let capital = map[country];
+    console.log(country, capital);
+}
+
+for (let capital of map.values())
+    console.log(capital);
+
+for (const [country, capital] of map.entries())
+    console.log(country, capital);
+
+ +

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.

+ +
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.

+ +
function* generate(a, b) {
+    yield a;
+    yield b;
+}
+
+for (let x of generate(1,2))
+    console.log(x);
+
+ +

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().

+ +
const monIterableVide = {
+    [Symbol.iterator]() {
+        return [] // [] est un iterable mais pas un itérateur
+                  // car il n'a pas de méthode next
+    }
+}
+
+Array.from(monIterableVide);  // TypeError: monIterableVide is not iterable
+
+ +

Voici une implémentation correcte :

+ +
const monIterableVide = {
+    [Symbol.iterator]() {
+        return [][Symbol.iterator]()
+    }
+}
+
+Array.from(monIterableVide);  // []
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/json_bad_parse/index.html b/files/fr/web/javascript/reference/errors/json_bad_parse/index.html deleted file mode 100644 index 800d8fd05f..0000000000 --- a/files/fr/web/javascript/reference/errors/json_bad_parse/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 'SyntaxError: JSON.parse: bad parsing' -slug: Web/JavaScript/Reference/Errors/JSON_bad_parse -tags: - - Erreurs - - JSON - - JavaScript - - NeedsExample - - SyntaxError -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, ]');
-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 :

- -
JSON.parse('[1, 2, 3, 4 ]');
-JSON.parse('{"foo" : 1 }');
- -

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').

- -
JSON.parse("{'toto' : 1 }");
-// SyntaxError: JSON.parse: expected property name or '}'
-// at line 1 column 2 of the JSON data
- -

À la place, on écrira "toto" :

- -
JSON.parse('{"toto" : 1 }');
- -

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.

- -
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 :

- -
JSON.parse('{"toto" : 1 }');
-JSON.parse('{"toto" : 1.0 }');
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..800d8fd05f --- /dev/null +++ b/files/fr/web/javascript/reference/errors/json_bad_parse/index.md @@ -0,0 +1,113 @@ +--- +title: 'SyntaxError: JSON.parse: bad parsing' +slug: Web/JavaScript/Reference/Errors/JSON_bad_parse +tags: + - Erreurs + - JSON + - JavaScript + - NeedsExample + - SyntaxError +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, ]');
+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 :

+ +
JSON.parse('[1, 2, 3, 4 ]');
+JSON.parse('{"foo" : 1 }');
+ +

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').

+ +
JSON.parse("{'toto' : 1 }");
+// SyntaxError: JSON.parse: expected property name or '}'
+// at line 1 column 2 of the JSON data
+ +

À la place, on écrira "toto" :

+ +
JSON.parse('{"toto" : 1 }');
+ +

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.

+ +
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 :

+ +
JSON.parse('{"toto" : 1 }');
+JSON.parse('{"toto" : 1.0 }');
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.html b/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.html deleted file mode 100644 index a06f5cc5c9..0000000000 --- a/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: 'SyntaxError: Malformed formal parameter' -slug: Web/JavaScript/Reference/Errors/Malformed_formal_parameter -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Malformed_formal_parameter -original_slug: Web/JavaScript/Reference/Erreurs/Malformed_formal_parameter ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected {x} (Edge)
-SyntaxError: malformed formal parameter (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

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 ?

- -

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

- -

Exemples invalides

- -
var f = Function("x y", "return x + y;");
-// SyntaxError (virgule manquante)
-
-var f = Function("x,", "return x;");
-// SyntaxError (virgule mal placée)
-
-var f = Function(37, "console.log('OK')");
-// SyntaxError (des nombres ne peuvent être des noms)
-
- -

Exemples valides

- -
 // Ponctuation correcte
-var f = Function("x, y", "return x + y;");
-
-var f = Function("x", "return x;");
-
-// Voici une alternative plus rapide
-// si vous pouvez éviter Function
-var f = function (x) { return x; };
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..a06f5cc5c9 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/malformed_formal_parameter/index.md @@ -0,0 +1,65 @@ +--- +title: 'SyntaxError: Malformed formal parameter' +slug: Web/JavaScript/Reference/Errors/Malformed_formal_parameter +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Malformed_formal_parameter +original_slug: Web/JavaScript/Reference/Erreurs/Malformed_formal_parameter +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected {x} (Edge)
+SyntaxError: malformed formal parameter (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

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 ?

+ +

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

+ +

Exemples invalides

+ +
var f = Function("x y", "return x + y;");
+// SyntaxError (virgule manquante)
+
+var f = Function("x,", "return x;");
+// SyntaxError (virgule mal placée)
+
+var f = Function(37, "console.log('OK')");
+// SyntaxError (des nombres ne peuvent être des noms)
+
+ +

Exemples valides

+ +
 // Ponctuation correcte
+var f = Function("x, y", "return x + y;");
+
+var f = Function("x", "return x;");
+
+// Voici une alternative plus rapide
+// si vous pouvez éviter Function
+var f = function (x) { return x; };
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/malformed_uri/index.html b/files/fr/web/javascript/reference/errors/malformed_uri/index.html deleted file mode 100644 index dfe037e1aa..0000000000 --- a/files/fr/web/javascript/reference/errors/malformed_uri/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 'URIError: malformed URI sequence' -slug: Web/JavaScript/Reference/Errors/Malformed_URI -tags: - - Erreurs - - JavaScript - - URIError -translation_of: Web/JavaScript/Reference/Errors/Malformed_URI -original_slug: Web/JavaScript/Reference/Erreurs/Malformed_URI ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
URIError: The URI to be encoded contains invalid character (Edge)
-URIError: malformed URI sequence (Firefox)
-URIError: URI malformed (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("URIError")}}

- -

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.

- -

Exemples

- -

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 :

- -
encodeURI('\uD800');
-// "URIError: malformed URI sequence"
-
-encodeURI('\uDFFF');
-// "URIError: malformed URI sequence"
-
- -

En revanche, si on dispose de la paire de codets :

- -
encodeURI('\uD800\uDFFF');
-// "%F0%90%8F%BF"
- -

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 :

- -
decodeURIComponent('%E0%A4%A');
-// "URIError: malformed URI sequence"
-
- -

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_шеллы"
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/malformed_uri/index.md b/files/fr/web/javascript/reference/errors/malformed_uri/index.md new file mode 100644 index 0000000000..dfe037e1aa --- /dev/null +++ b/files/fr/web/javascript/reference/errors/malformed_uri/index.md @@ -0,0 +1,67 @@ +--- +title: 'URIError: malformed URI sequence' +slug: Web/JavaScript/Reference/Errors/Malformed_URI +tags: + - Erreurs + - JavaScript + - URIError +translation_of: Web/JavaScript/Reference/Errors/Malformed_URI +original_slug: Web/JavaScript/Reference/Erreurs/Malformed_URI +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
URIError: The URI to be encoded contains invalid character (Edge)
+URIError: malformed URI sequence (Firefox)
+URIError: URI malformed (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("URIError")}}

+ +

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.

+ +

Exemples

+ +

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 :

+ +
encodeURI('\uD800');
+// "URIError: malformed URI sequence"
+
+encodeURI('\uDFFF');
+// "URIError: malformed URI sequence"
+
+ +

En revanche, si on dispose de la paire de codets :

+ +
encodeURI('\uD800\uDFFF');
+// "%F0%90%8F%BF"
+ +

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 :

+ +
decodeURIComponent('%E0%A4%A');
+// "URIError: malformed URI sequence"
+
+ +

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_шеллы"
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.html b/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.html deleted file mode 100644 index c51fef7551..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'SyntaxError: missing ] after element list' -slug: Web/JavaScript/Reference/Errors/Missing_bracket_after_list -tags: - - Erreurs - - JavaScript - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_bracket_after_list -original_slug: Web/JavaScript/Reference/Erreurs/Missing_bracket_after_list ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: missing ] after element list
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}.

- -

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.

- -

Exemples

- -

Littéraux de tableaux incomplets

- -
var liste = [1, 2,
-
-var instruments = [
-  "Ukulele",
-  "Guitare",
-  "Piano"
-};
-
-var data = [{toto: "truc"} {titi: "bidule"}];
-
- -

Les versions correctes seraient :

- -
var liste = [1, 2];
-
-var instruments = [
- "Ukulele",
- "Guitare",
- "Piano"
-];
-
-var data = [{toto: "truc"}, {titi: "bidule"}];
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..c51fef7551 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_bracket_after_list/index.md @@ -0,0 +1,58 @@ +--- +title: 'SyntaxError: missing ] after element list' +slug: Web/JavaScript/Reference/Errors/Missing_bracket_after_list +tags: + - Erreurs + - JavaScript + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_bracket_after_list +original_slug: Web/JavaScript/Reference/Erreurs/Missing_bracket_after_list +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: missing ] after element list
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}.

+ +

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.

+ +

Exemples

+ +

Littéraux de tableaux incomplets

+ +
var liste = [1, 2,
+
+var instruments = [
+  "Ukulele",
+  "Guitare",
+  "Piano"
+};
+
+var data = [{toto: "truc"} {titi: "bidule"}];
+
+ +

Les versions correctes seraient :

+ +
var liste = [1, 2];
+
+var instruments = [
+ "Ukulele",
+ "Guitare",
+ "Piano"
+];
+
+var data = [{toto: "truc"}, {titi: "bidule"}];
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.html b/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.html deleted file mode 100644 index 9e6595726c..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'SyntaxError: missing : after property id' -slug: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id -original_slug: Web/JavaScript/Reference/Erreurs/Missing_colon_after_property_id ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected ':' (Edge)
-SyntaxError: missing : after property id (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -
var obj = { cleDeLaPropriete: 'valeur' };
-
- -

Exemples

- -

Deux-points et signe égal

- -

Le code qui suit provoquera une erreur car on utilise un signe égal (=) à la place du deux-points.

- -
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 :

- -
var obj = { cleDeLaPropriete: 'valeur' };
-
-// ou encore :
-
-var obj = { };
-obj['cleDeLaPropriete'] = 'valeur';
-
- -

Propriétés vides

- -

On ne peut pas créer de propriétés vides de cette façon :

- -
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")}} :

- -
var obj = { cleDeLaPropriete: null };
- -

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é) :

- -
var obj = { 'tr'+'uc': 'toto' };
-// SyntaxError: missing : after property id
-
- -

Pour corriger l'erreur, il faudra placer l'expression entre crochets :

- -
var obj = { ['tr'+'uc']: 'toto' };
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..9e6595726c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_colon_after_property_id/index.md @@ -0,0 +1,78 @@ +--- +title: 'SyntaxError: missing : after property id' +slug: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id +original_slug: Web/JavaScript/Reference/Erreurs/Missing_colon_after_property_id +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected ':' (Edge)
+SyntaxError: missing : after property id (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +
var obj = { cleDeLaPropriete: 'valeur' };
+
+ +

Exemples

+ +

Deux-points et signe égal

+ +

Le code qui suit provoquera une erreur car on utilise un signe égal (=) à la place du deux-points.

+ +
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 :

+ +
var obj = { cleDeLaPropriete: 'valeur' };
+
+// ou encore :
+
+var obj = { };
+obj['cleDeLaPropriete'] = 'valeur';
+
+ +

Propriétés vides

+ +

On ne peut pas créer de propriétés vides de cette façon :

+ +
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")}} :

+ +
var obj = { cleDeLaPropriete: null };
+ +

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é) :

+ +
var obj = { 'tr'+'uc': 'toto' };
+// SyntaxError: missing : after property id
+
+ +

Pour corriger l'erreur, il faudra placer l'expression entre crochets :

+ +
var obj = { ['tr'+'uc']: 'toto' };
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.html b/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.html deleted file mode 100644 index c8ee04b3c8..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: 'SyntaxError: missing } after function body' -slug: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body -original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_function_body ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected '}' (Edge)
-SyntaxError: missing } after function body (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Oubli d'une accolade fermante

- -

La plupart du temps, il s'agit d'une accolade manquante dans le code de la fonction :

- -
var charge = function() {
-  if (soleil) {
-    utiliserPanneauSolaire();
-  } else {
-    utiliserVelo();
-};
-
- -

La forme correcte est :

- -
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 :

- -
(function() { if (true) { return false; } );
-
- -

Généralement, mettre en forme et vérifier l'indentation permet de repérer ces erreurs.

- -
(function() {
-  if (true) {
-    return false;
-  }
-});
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..c8ee04b3c8 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_curly_after_function_body/index.md @@ -0,0 +1,68 @@ +--- +title: 'SyntaxError: missing } after function body' +slug: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body +original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_function_body +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected '}' (Edge)
+SyntaxError: missing } after function body (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Oubli d'une accolade fermante

+ +

La plupart du temps, il s'agit d'une accolade manquante dans le code de la fonction :

+ +
var charge = function() {
+  if (soleil) {
+    utiliserPanneauSolaire();
+  } else {
+    utiliserVelo();
+};
+
+ +

La forme correcte est :

+ +
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 :

+ +
(function() { if (true) { return false; } );
+
+ +

Généralement, mettre en forme et vérifier l'indentation permet de repérer ces erreurs.

+ +
(function() {
+  if (true) {
+    return false;
+  }
+});
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.html b/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.html deleted file mode 100644 index f845a673c6..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: 'SyntaxError: missing } after property list' -slug: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list -original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_property_list ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected '}' (Edge)
-SyntaxError: missing } after property list (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Une virgule oubliée

- -

Il arrive parfois que ce soit une virgule absente dans le littéral qui entraîne cette erreur :

- -
var obj = {
-  a: 1,
-  b: { maProp: 2 }
-  c: 3
-};
-
- -

La version correcte correspondante est :

- -
var obj = {
-  a: 1,
-  b: { maProp: 2 },
-  c: 3
-};
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..f845a673c6 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_curly_after_property_list/index.md @@ -0,0 +1,53 @@ +--- +title: 'SyntaxError: missing } after property list' +slug: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list +original_slug: Web/JavaScript/Reference/Erreurs/Missing_curly_after_property_list +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected '}' (Edge)
+SyntaxError: missing } after property list (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Une virgule oubliée

+ +

Il arrive parfois que ce soit une virgule absente dans le littéral qui entraîne cette erreur :

+ +
var obj = {
+  a: 1,
+  b: { maProp: 2 }
+  c: 3
+};
+
+ +

La version correcte correspondante est :

+ +
var obj = {
+  a: 1,
+  b: { maProp: 2 },
+  c: 3
+};
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.html b/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.html deleted file mode 100644 index e5956f0f04..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'SyntaxError: missing formal parameter' -slug: Web/JavaScript/Reference/Errors/Missing_formal_parameter -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_formal_parameter -original_slug: Web/JavaScript/Reference/Erreurs/Missing_formal_parameter ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: missing formal parameter (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

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

- -

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) {
-  return nombre * nombre;
-};
-// SyntaxError: missing formal parameter
-
-function salutation("Coucou") {
-  return salut;
-};
-// SyntaxError: missing formal parameter
-
-function log({ obj: "value"}) {
-  console.log(arg)
-};
-// SyntaxError: missing formal parameter
-
- -

Il faut utiliser des identifiants lors de la déclaration des fonctions :

- -
function carre(nombre) {
-  return nombre * nombre;
-};
-
-function salutation(salut) {
-  return salut;
-};
-
-function log(arg) {
-  console.log(arg)
-};
- -

Ensuite, on pourra appeler ces fonctions avec les arguments voulus :

- -
carre(2); // 4
-salutation("Coucou"); // "Coucou"
-log({obj: "value"});  // Object { obj: "value" }
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..e5956f0f04 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_formal_parameter/index.md @@ -0,0 +1,78 @@ +--- +title: 'SyntaxError: missing formal parameter' +slug: Web/JavaScript/Reference/Errors/Missing_formal_parameter +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_formal_parameter +original_slug: Web/JavaScript/Reference/Erreurs/Missing_formal_parameter +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: missing formal parameter (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

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

+ +

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) {
+  return nombre * nombre;
+};
+// SyntaxError: missing formal parameter
+
+function salutation("Coucou") {
+  return salut;
+};
+// SyntaxError: missing formal parameter
+
+function log({ obj: "value"}) {
+  console.log(arg)
+};
+// SyntaxError: missing formal parameter
+
+ +

Il faut utiliser des identifiants lors de la déclaration des fonctions :

+ +
function carre(nombre) {
+  return nombre * nombre;
+};
+
+function salutation(salut) {
+  return salut;
+};
+
+function log(arg) {
+  console.log(arg)
+};
+ +

Ensuite, on pourra appeler ces fonctions avec les arguments voulus :

+ +
carre(2); // 4
+salutation("Coucou"); // "Coucou"
+log({obj: "value"});  // Object { obj: "value" }
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.html b/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.html deleted file mode 100644 index e368d0982c..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: 'SyntaxError: missing = in const declaration' -slug: Web/JavaScript/Reference/Errors/Missing_initializer_in_const -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_initializer_in_const -original_slug: Web/JavaScript/Reference/Erreurs/Missing_initializer_in_const ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Const must be initalized (Edge)
-SyntaxError: missing = in const declaration (Firefox)
-SyntaxError: Missing initializer in const declaration (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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).

- -

Exemples

- -

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 :

- -
const COLUMNS;
-// SyntaxError: missing = in const declaration
- -

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.

- -

Ajouter une valeur constante

- -

On peut indiquer la valeur de la constante dans la même instruction :

- -
const COLONNES = 80;
- -

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.

- -
let colonnes;
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..e368d0982c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_initializer_in_const/index.md @@ -0,0 +1,60 @@ +--- +title: 'SyntaxError: missing = in const declaration' +slug: Web/JavaScript/Reference/Errors/Missing_initializer_in_const +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_initializer_in_const +original_slug: Web/JavaScript/Reference/Erreurs/Missing_initializer_in_const +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Const must be initalized (Edge)
+SyntaxError: missing = in const declaration (Firefox)
+SyntaxError: Missing initializer in const declaration (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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).

+ +

Exemples

+ +

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 :

+ +
const COLUMNS;
+// SyntaxError: missing = in const declaration
+ +

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.

+ +

Ajouter une valeur constante

+ +

On peut indiquer la valeur de la constante dans la même instruction :

+ +
const COLONNES = 80;
+ +

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.

+ +
let colonnes;
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.html b/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.html deleted file mode 100644 index d46591c96f..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: 'SyntaxError: missing name after . operator' -slug: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator -original_slug: Web/JavaScript/Reference/Erreurs/Missing_name_after_dot_operator ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: missing name after . operator
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

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é.

- -
var obj = { toto: { truc: "bidule", machin2: "bidule2" } };
-var i = 2;
-
-obj.[toto].[truc]
-// SyntaxError: missing name after . operator
-
-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 :

- -
obj.toto.truc; // "bidule"
-// ou autrement
-obj["toto"]["truc"]; // "bidule"
-
-// pour les propriétés dont le
-// nom est calculé, il faut les
-// crochets
-obj.toto["machin" + i]; // "bidule2"
-
- -

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 :

- -
console.log("Coucou " . "monde");
-
-// SyntaxError: missing name after . operator
- -

À la place, on écrira :

- -
console.log("Coucou " + "monde");
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..d46591c96f --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_name_after_dot_operator/index.md @@ -0,0 +1,70 @@ +--- +title: 'SyntaxError: missing name after . operator' +slug: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator +original_slug: Web/JavaScript/Reference/Erreurs/Missing_name_after_dot_operator +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: missing name after . operator
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

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é.

+ +
var obj = { toto: { truc: "bidule", machin2: "bidule2" } };
+var i = 2;
+
+obj.[toto].[truc]
+// SyntaxError: missing name after . operator
+
+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 :

+ +
obj.toto.truc; // "bidule"
+// ou autrement
+obj["toto"]["truc"]; // "bidule"
+
+// pour les propriétés dont le
+// nom est calculé, il faut les
+// crochets
+obj.toto["machin" + i]; // "bidule2"
+
+ +

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 :

+ +
console.log("Coucou " . "monde");
+
+// SyntaxError: missing name after . operator
+ +

À la place, on écrira :

+ +
console.log("Coucou " + "monde");
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html deleted file mode 100644 index f59707b152..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'SyntaxError: missing ) after argument list' -slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list -original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_argument_list ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected ')' (Edge)
-SyntaxError: missing ) after argument list (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}.

- -

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

- -

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. 

- -
console.log("PI: " Math.PI);
-// SyntaxError: missing ) after argument list
-
- -

La fonction log peut être corrigée en ajoutant un opérateur "+".

- -
console.log("PI: " + Math.PI);
-// "PI: 3.141592653589793"
- -

Chaînes non terminées

- -
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" :

- -
console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"');
-// '"Java" + "Script" = "JavaScript"'
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..f59707b152 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.md @@ -0,0 +1,57 @@ +--- +title: 'SyntaxError: missing ) after argument list' +slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list +original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_argument_list +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected ')' (Edge)
+SyntaxError: missing ) after argument list (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}.

+ +

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

+ +

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. 

+ +
console.log("PI: " Math.PI);
+// SyntaxError: missing ) after argument list
+
+ +

La fonction log peut être corrigée en ajoutant un opérateur "+".

+ +
console.log("PI: " + Math.PI);
+// "PI: 3.141592653589793"
+ +

Chaînes non terminées

+ +
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" :

+ +
console.log('"Java" + "Script" = \"' + 'Java' + 'Script\"');
+// '"Java" + "Script" = "JavaScript"'
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html deleted file mode 100644 index 52018f1d8d..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: 'SyntaxError: missing ) after condition' -slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition -original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_condition ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected ')' (Edge)
-SyntaxError: missing ) after condition (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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 :

- -
if (condition) {
-  // faire quelque chose si la condition est vraie
-}
- -

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) :

- -
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 :

- -
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 ?

- -
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 :

- -
if (done === true) {
- console.log("Et voilà !");
-}
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..52018f1d8d --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_parenthesis_after_condition/index.md @@ -0,0 +1,71 @@ +--- +title: 'SyntaxError: missing ) after condition' +slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition +original_slug: Web/JavaScript/Reference/Erreurs/Missing_parenthesis_after_condition +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected ')' (Edge)
+SyntaxError: missing ) after condition (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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 :

+ +
if (condition) {
+  // faire quelque chose si la condition est vraie
+}
+ +

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) :

+ +
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 :

+ +
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 ?

+ +
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 :

+ +
if (done === true) {
+ console.log("Et voilà !");
+}
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.html b/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.html deleted file mode 100644 index cb9e5c0312..0000000000 --- a/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'SyntaxError: missing ; before statement' -slug: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement -tags: - - Erreurs - - JavaScript - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement -original_slug: Web/JavaScript/Reference/Erreurs/Missing_semicolon_before_statement ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Expected ';' (Edge)
-SyntaxError: missing ; before statement (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}.

- -

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.

- -

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

- -

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 :

- -
var toto = 'Ouvrir l'œil';
-// SyntaxError: missing ; before statement
- -

Pour éviter cela, on pourra utiliser des doubles quotes ou échapper l'apostrophe :

- -
var toto = "Ouvrir l'œil";
-var toto = 'Ouvrir l\'œil';
-
- -

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.

- -
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 :

- -
var obj = {};
-obj.toto = "coucou";
-
-var array = [];
-array[0] = "monde";
-
- -

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 :

- -
def print(info){
-  console.log(info);
-}; // SyntaxError missing ; before statement
- -

À la place de def, on utilisera le mot-clé function :

- -
function print(info){
-  console.log(info);
-};
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..cb9e5c0312 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/missing_semicolon_before_statement/index.md @@ -0,0 +1,84 @@ +--- +title: 'SyntaxError: missing ; before statement' +slug: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement +tags: + - Erreurs + - JavaScript + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement +original_slug: Web/JavaScript/Reference/Erreurs/Missing_semicolon_before_statement +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Expected ';' (Edge)
+SyntaxError: missing ; before statement (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}.

+ +

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.

+ +

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

+ +

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 :

+ +
var toto = 'Ouvrir l'œil';
+// SyntaxError: missing ; before statement
+ +

Pour éviter cela, on pourra utiliser des doubles quotes ou échapper l'apostrophe :

+ +
var toto = "Ouvrir l'œil";
+var toto = 'Ouvrir l\'œil';
+
+ +

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.

+ +
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 :

+ +
var obj = {};
+obj.toto = "coucou";
+
+var array = [];
+array[0] = "monde";
+
+ +

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 :

+ +
def print(info){
+  console.log(info);
+}; // SyntaxError missing ; before statement
+ +

À la place de def, on utilisera le mot-clé function :

+ +
function print(info){
+  console.log(info);
+};
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/more_arguments_needed/index.html b/files/fr/web/javascript/reference/errors/more_arguments_needed/index.html deleted file mode 100644 index 3417499581..0000000000 --- a/files/fr/web/javascript/reference/errors/more_arguments_needed/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: 'TypeError: More arguments needed' -slug: Web/JavaScript/Reference/Errors/More_arguments_needed -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed -original_slug: Web/JavaScript/Reference/Erreurs/More_arguments_needed ---- -
{{jsSidebar("Errors")}}
- -

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
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}.

- -

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.

- -

Exemples

- -

La méthode {{jsxref("Object.create()")}} nécessite au moins un argument et {{jsxref("Object.setPrototypeOf()")}} requiert deux paramètres :

- -
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 :

- -
var obj = Object.create(null);
-
-var obj = Object.setPrototypeOf({}, null);
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..3417499581 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/more_arguments_needed/index.md @@ -0,0 +1,50 @@ +--- +title: 'TypeError: More arguments needed' +slug: Web/JavaScript/Reference/Errors/More_arguments_needed +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed +original_slug: Web/JavaScript/Reference/Erreurs/More_arguments_needed +--- +
{{jsSidebar("Errors")}}
+ +

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
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}.

+ +

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.

+ +

Exemples

+ +

La méthode {{jsxref("Object.create()")}} nécessite au moins un argument et {{jsxref("Object.setPrototypeOf()")}} requiert deux paramètres :

+ +
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 :

+ +
var obj = Object.create(null);
+
+var obj = Object.setPrototypeOf({}, null);
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/negative_repetition_count/index.html b/files/fr/web/javascript/reference/errors/negative_repetition_count/index.html deleted file mode 100644 index 2b653b11f0..0000000000 --- a/files/fr/web/javascript/reference/errors/negative_repetition_count/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: 'RangeError: repeat count must be non-negative' -slug: Web/JavaScript/Reference/Errors/Negative_repetition_count -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count -original_slug: Web/JavaScript/Reference/Erreurs/Negative_repetition_count ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
RangeError: argument out of range (Edge)
-RangeError: repeat count must be non-negative (Firefox)
-RangeError: Invalid count value (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

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, +∞).

- -

Exemples

- -

Exemples invalides

- -
'abc'.repeat(-1); // RangeError 
- -

Exemples valides

- -
'abc'.repeat(0);    // ''
-'abc'.repeat(1);    // 'abc'
-'abc'.repeat(2);    // 'abcabc'
-'abc'.repeat(3.5);  // 'abcabcabc' (converti en entier)
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..2b653b11f0 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/negative_repetition_count/index.md @@ -0,0 +1,46 @@ +--- +title: 'RangeError: repeat count must be non-negative' +slug: Web/JavaScript/Reference/Errors/Negative_repetition_count +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count +original_slug: Web/JavaScript/Reference/Erreurs/Negative_repetition_count +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
RangeError: argument out of range (Edge)
+RangeError: repeat count must be non-negative (Firefox)
+RangeError: Invalid count value (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("RangeError")}}

+ +

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, +∞).

+ +

Exemples

+ +

Exemples invalides

+ +
'abc'.repeat(-1); // RangeError 
+ +

Exemples valides

+ +
'abc'.repeat(0);    // ''
+'abc'.repeat(1);    // 'abc'
+'abc'.repeat(2);    // 'abcabc'
+'abc'.repeat(3.5);  // 'abcabcabc' (converti en entier)
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/no_non-null_object/index.html b/files/fr/web/javascript/reference/errors/no_non-null_object/index.html deleted file mode 100644 index 2dd59d1667..0000000000 --- a/files/fr/web/javascript/reference/errors/no_non-null_object/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 'TypeError: "x" is not a non-null object' -slug: Web/JavaScript/Reference/Errors/No_non-null_object -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/No_non-null_object -original_slug: Web/JavaScript/Reference/Erreurs/No_non-null_object ---- -
{{JSSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

Exemples

- -

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 :

- -
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 :

- -
Object.defineProperty({}, 'cle', { value: 'toto', writable: false });
-
- -

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.

- -
var ws = new WeakSet();
-ws.add('toto');
-// TypeError: "toto" is not a non-null object
- -

À la place, on utilisera des objets :

- -
ws.add({toto: 'truc'});
-ws.add(window);
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..2dd59d1667 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/no_non-null_object/index.md @@ -0,0 +1,67 @@ +--- +title: 'TypeError: "x" is not a non-null object' +slug: Web/JavaScript/Reference/Errors/No_non-null_object +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/No_non-null_object +original_slug: Web/JavaScript/Reference/Erreurs/No_non-null_object +--- +
{{JSSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

Exemples

+ +

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 :

+ +
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 :

+ +
Object.defineProperty({}, 'cle', { value: 'toto', writable: false });
+
+ +

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.

+ +
var ws = new WeakSet();
+ws.add('toto');
+// TypeError: "toto" is not a non-null object
+ +

À la place, on utilisera des objets :

+ +
ws.add({toto: 'truc'});
+ws.add(window);
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/no_properties/index.html b/files/fr/web/javascript/reference/errors/no_properties/index.html deleted file mode 100644 index d45bd65c93..0000000000 --- a/files/fr/web/javascript/reference/errors/no_properties/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: 'TypeError: "x" has no properties' -slug: Web/JavaScript/Reference/Errors/No_properties -tags: - - Erreurs - - JavaScript - - Reference - - TypeError -translation_of: Web/JavaScript/Reference/Errors/No_properties -original_slug: Web/JavaScript/Reference/Erreurs/No_properties ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}.

- -

Quel est le problème ?

- -

Les valeurs {{jsxref("null")}} et {{jsxref("undefined")}} n'ont aucunes propriétés auxquelles accéder.

- -

Exemples

- -
null.toto;
-// TypeError: null has no properties
-
-undefined.truc;
-// TypeError: undefined has no properties
-
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/no_properties/index.md b/files/fr/web/javascript/reference/errors/no_properties/index.md new file mode 100644 index 0000000000..d45bd65c93 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/no_properties/index.md @@ -0,0 +1,43 @@ +--- +title: 'TypeError: "x" has no properties' +slug: Web/JavaScript/Reference/Errors/No_properties +tags: + - Erreurs + - JavaScript + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Errors/No_properties +original_slug: Web/JavaScript/Reference/Erreurs/No_properties +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}.

+ +

Quel est le problème ?

+ +

Les valeurs {{jsxref("null")}} et {{jsxref("undefined")}} n'ont aucunes propriétés auxquelles accéder.

+ +

Exemples

+ +
null.toto;
+// TypeError: null has no properties
+
+undefined.truc;
+// TypeError: undefined has no properties
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/no_variable_name/index.html b/files/fr/web/javascript/reference/errors/no_variable_name/index.html deleted file mode 100644 index 035c83faa9..0000000000 --- a/files/fr/web/javascript/reference/errors/no_variable_name/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'SyntaxError: missing variable name' -slug: Web/JavaScript/Reference/Errors/No_variable_name -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/No_variable_name -original_slug: Web/JavaScript/Reference/Erreurs/No_variable_name ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: missing variable name (Firefox)
-SyntaxError: Unexpected token = (Chrome)
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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).

- -

Exemples

- -

Absence d'un nom pour une variable

- -
var = "toto";
-
- -

Il est souvent compliqué de trouver le bon nom pour une variable…

- -
var àDéfautDeMieux = "toto";
- -

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 :

- -
var debugger = "zuuuuut";
-// SyntaxError: missing variable name
-
- -

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 ?

- -
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 :

- -
var x, y = "toto";
-var x = "toto";
-
-var un = document.getElementById('un');
-var deux = document.getElementById('deux');
- -

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 :

- -
var arr = 1,2,3,4,5;
-// SyntaxError: missing variable name
-
- -

Voici la forme équivalente correcte :

- -
var arr = [1,2,3,4,5];
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..035c83faa9 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/no_variable_name/index.md @@ -0,0 +1,84 @@ +--- +title: 'SyntaxError: missing variable name' +slug: Web/JavaScript/Reference/Errors/No_variable_name +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/No_variable_name +original_slug: Web/JavaScript/Reference/Erreurs/No_variable_name +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: missing variable name (Firefox)
+SyntaxError: Unexpected token = (Chrome)
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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).

+ +

Exemples

+ +

Absence d'un nom pour une variable

+ +
var = "toto";
+
+ +

Il est souvent compliqué de trouver le bon nom pour une variable…

+ +
var àDéfautDeMieux = "toto";
+ +

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 :

+ +
var debugger = "zuuuuut";
+// SyntaxError: missing variable name
+
+ +

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 ?

+ +
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 :

+ +
var x, y = "toto";
+var x = "toto";
+
+var un = document.getElementById('un');
+var deux = document.getElementById('deux');
+ +

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 :

+ +
var arr = 1,2,3,4,5;
+// SyntaxError: missing variable name
+
+ +

Voici la forme équivalente correcte :

+ +
var arr = [1,2,3,4,5];
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.html b/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.html deleted file mode 100644 index bbb5b3569c..0000000000 --- a/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'TypeError: can''t delete non-configurable array element' -slug: Web/JavaScript/Reference/Errors/Non_configurable_array_element -tags: - - Erreur - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element -original_slug: Web/JavaScript/Reference/Erreurs/Non_configurable_array_element ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: can't delete non-configurable array element (Firefox)
-TypeError: Cannot delete property '2' of [object Array] (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

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.

- -

Exemples

- -

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 :

- -
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 :

- -
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)

- -

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];
-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.

- -
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

- - 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 new file mode 100644 index 0000000000..bbb5b3569c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/non_configurable_array_element/index.md @@ -0,0 +1,84 @@ +--- +title: 'TypeError: can''t delete non-configurable array element' +slug: Web/JavaScript/Reference/Errors/Non_configurable_array_element +tags: + - Erreur + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element +original_slug: Web/JavaScript/Reference/Erreurs/Non_configurable_array_element +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: can't delete non-configurable array element (Firefox)
+TypeError: Cannot delete property '2' of [object Array] (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

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.

+ +

Exemples

+ +

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 :

+ +
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 :

+ +
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)

+ +

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];
+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.

+ +
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

+ + diff --git a/files/fr/web/javascript/reference/errors/not_a_codepoint/index.html b/files/fr/web/javascript/reference/errors/not_a_codepoint/index.html deleted file mode 100644 index 2da0d021ee..0000000000 --- a/files/fr/web/javascript/reference/errors/not_a_codepoint/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'RangeError: argument is not a valid code point' -slug: Web/JavaScript/Reference/Errors/Not_a_codepoint -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint -original_slug: Web/JavaScript/Reference/Erreurs/Not_a_codepoint ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
RangeError: Invalid code point {0} (Edge)
-RangeError: {0} is not a valid code point (Firefox)
-RangeError: Invalid code point {0} (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

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).

- -

Un 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.

- -

Examples

- -

Exemples invalides

- -
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
- -

Exemples valides

- -
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

- - 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 new file mode 100644 index 0000000000..2da0d021ee --- /dev/null +++ b/files/fr/web/javascript/reference/errors/not_a_codepoint/index.md @@ -0,0 +1,57 @@ +--- +title: 'RangeError: argument is not a valid code point' +slug: Web/JavaScript/Reference/Errors/Not_a_codepoint +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint +original_slug: Web/JavaScript/Reference/Erreurs/Not_a_codepoint +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
RangeError: Invalid code point {0} (Edge)
+RangeError: {0} is not a valid code point (Firefox)
+RangeError: Invalid code point {0} (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("RangeError")}}

+ +

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).

+ +

Un 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.

+ +

Examples

+ +

Exemples invalides

+ +
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
+ +

Exemples valides

+ +
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

+ + diff --git a/files/fr/web/javascript/reference/errors/not_a_constructor/index.html b/files/fr/web/javascript/reference/errors/not_a_constructor/index.html deleted file mode 100644 index 211e4e952c..0000000000 --- a/files/fr/web/javascript/reference/errors/not_a_constructor/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: 'TypeError: "x" is not a constructor' -slug: Web/JavaScript/Reference/Errors/Not_a_constructor -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor -original_slug: Web/JavaScript/Reference/Erreurs/Not_a_constructor ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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.

- -

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.

- -

Exemples

- -

Exemples invalides

- -
var Voiture = 1;
-new Voiture();
-// TypeError: Voiture is not a constructor
-
-new Math();
-// TypeError: Math is not a constructor
-
-new Symbol();
-// TypeError: Symbol is not a constructor
-
-function* f() {};
-var obj = new f;
-// TypeError: f is not a constructor
-
- -

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 :

- -
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 :

- -
var maVoiture = new Voiture("Renault", "Twingo", 2006);
- -

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()")}} :

- -
// Dans ce cas on aura une exception
-// "this is not a constructor"
-return new Promise.resolve(true);
-
- -
// Cette formulation fonctionne mais
-// est inutilement longue
-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

- - 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 new file mode 100644 index 0000000000..211e4e952c --- /dev/null +++ b/files/fr/web/javascript/reference/errors/not_a_constructor/index.md @@ -0,0 +1,97 @@ +--- +title: 'TypeError: "x" is not a constructor' +slug: Web/JavaScript/Reference/Errors/Not_a_constructor +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor +original_slug: Web/JavaScript/Reference/Erreurs/Not_a_constructor +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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.

+ +

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.

+ +

Exemples

+ +

Exemples invalides

+ +
var Voiture = 1;
+new Voiture();
+// TypeError: Voiture is not a constructor
+
+new Math();
+// TypeError: Math is not a constructor
+
+new Symbol();
+// TypeError: Symbol is not a constructor
+
+function* f() {};
+var obj = new f;
+// TypeError: f is not a constructor
+
+ +

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 :

+ +
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 :

+ +
var maVoiture = new Voiture("Renault", "Twingo", 2006);
+ +

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()")}} :

+ +
// Dans ce cas on aura une exception
+// "this is not a constructor"
+return new Promise.resolve(true);
+
+ +
// Cette formulation fonctionne mais
+// est inutilement longue
+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

+ + diff --git a/files/fr/web/javascript/reference/errors/not_a_function/index.html b/files/fr/web/javascript/reference/errors/not_a_function/index.html deleted file mode 100644 index 8675a249ae..0000000000 --- a/files/fr/web/javascript/reference/errors/not_a_function/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: 'TypeError: "x" is not a function' -slug: Web/JavaScript/Reference/Errors/Not_a_function -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Not_a_function -original_slug: Web/JavaScript/Reference/Erreurs/Not_a_function ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: Object doesn't support property or method {x} (Edge)
-TypeError: "x" is not a function
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}.

- -

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.

- -

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 :

- - - -

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 :

- -
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) :

- -
var x = document.getElementById("toto");
-
- -

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")}}.

- -
var obj = { a: 13, b: 37, c: 42 };
-
-obj.map(function(num) {
-  return num * 2;
-});
-
-// TypeError: obj.map is not a function
- -

Il faudra utiliser un tableau à la place :

- -
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é

- -

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 () {
- this.age = 11;
- this.couleur = "noir";
- this.nom = "Ralph";
- return this;
-}
-
-Chien.prototype.nom = function(nom) {
- this.nom = nom;
- return this;
-}
-
-
-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 :

- -
var Chien = function () {
- this.age = 11;
- this.couleur = "noir";
- this.nomChien = "Ralph";
- return this;
-}
-
-Chien.prototype.nom = function(nom) {
- this.nomChien = nom;
- return this;
-}
-
-
-var monNouveauChien = new Chien();
-monNouveauChien.nom("Cassidy"); // Chien { age: 11, couleur: "noir", nomChien: "Cassidy" }
-
- -

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 :

- -
var seize = 2(3 + 5);
-console.log('2 x (3 + 5) vaut ' + String(seize));
-// Uncaught TypeError: 2 is not a function
- -

Pour corriger, il suffit d'ajouter l'opérateur * :

- -
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

- -

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 () { };
-helpers.log = function(msg) {
-  console.log(msg);
-};
-
-export default helpers;
- -

Pour l'importer côté application, on écrira :

- -
import helpers from './helpers'
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..8675a249ae --- /dev/null +++ b/files/fr/web/javascript/reference/errors/not_a_function/index.md @@ -0,0 +1,156 @@ +--- +title: 'TypeError: "x" is not a function' +slug: Web/JavaScript/Reference/Errors/Not_a_function +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Not_a_function +original_slug: Web/JavaScript/Reference/Erreurs/Not_a_function +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: Object doesn't support property or method {x} (Edge)
+TypeError: "x" is not a function
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}.

+ +

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.

+ +

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 :

+ + + +

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 :

+ +
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) :

+ +
var x = document.getElementById("toto");
+
+ +

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")}}.

+ +
var obj = { a: 13, b: 37, c: 42 };
+
+obj.map(function(num) {
+  return num * 2;
+});
+
+// TypeError: obj.map is not a function
+ +

Il faudra utiliser un tableau à la place :

+ +
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é

+ +

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 () {
+ this.age = 11;
+ this.couleur = "noir";
+ this.nom = "Ralph";
+ return this;
+}
+
+Chien.prototype.nom = function(nom) {
+ this.nom = nom;
+ return this;
+}
+
+
+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 :

+ +
var Chien = function () {
+ this.age = 11;
+ this.couleur = "noir";
+ this.nomChien = "Ralph";
+ return this;
+}
+
+Chien.prototype.nom = function(nom) {
+ this.nomChien = nom;
+ return this;
+}
+
+
+var monNouveauChien = new Chien();
+monNouveauChien.nom("Cassidy"); // Chien { age: 11, couleur: "noir", nomChien: "Cassidy" }
+
+ +

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 :

+ +
var seize = 2(3 + 5);
+console.log('2 x (3 + 5) vaut ' + String(seize));
+// Uncaught TypeError: 2 is not a function
+ +

Pour corriger, il suffit d'ajouter l'opérateur * :

+ +
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

+ +

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 () { };
+helpers.log = function(msg) {
+  console.log(msg);
+};
+
+export default helpers;
+ +

Pour l'importer côté application, on écrira :

+ +
import helpers from './helpers'
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/not_defined/index.html b/files/fr/web/javascript/reference/errors/not_defined/index.html deleted file mode 100644 index d88edd4f04..0000000000 --- a/files/fr/web/javascript/reference/errors/not_defined/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: 'ReferenceError: "x" is not defined' -slug: Web/JavaScript/Reference/Errors/Not_defined -tags: - - Erreur - - JavaScript - - Reference - - ReferenceError -translation_of: Web/JavaScript/Reference/Errors/Not_defined -original_slug: Web/JavaScript/Reference/Erreurs/Not_defined ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
ReferenceError: "x" is not defined
-
- -

Type d'erreur

- -

{{jsxref("ReferenceError")}}.

- -

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.

- -
-

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

- -

Exemple de variable non déclarée

- -
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.

- -
var toto = "truc";
-toto.substring(1); // "ruc"
- -

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.

- -
function numbers () {
-  var num1 = 2,
-      num2 = 3;
-  return num1 + num2;
-}
-
-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.

- -
var num1 = 2,
-    num2 = 3;
-
-function numbers () {
-  return num1 + num2;
-}
-
-console.log(num1); // 2
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/not_defined/index.md b/files/fr/web/javascript/reference/errors/not_defined/index.md new file mode 100644 index 0000000000..d88edd4f04 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/not_defined/index.md @@ -0,0 +1,71 @@ +--- +title: 'ReferenceError: "x" is not defined' +slug: Web/JavaScript/Reference/Errors/Not_defined +tags: + - Erreur + - JavaScript + - Reference + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Not_defined +original_slug: Web/JavaScript/Reference/Erreurs/Not_defined +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
ReferenceError: "x" is not defined
+
+ +

Type d'erreur

+ +

{{jsxref("ReferenceError")}}.

+ +

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.

+ +
+

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

+ +

Exemple de variable non déclarée

+ +
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.

+ +
var toto = "truc";
+toto.substring(1); // "ruc"
+ +

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.

+ +
function numbers () {
+  var num1 = 2,
+      num2 = 3;
+  return num1 + num2;
+}
+
+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.

+ +
var num1 = 2,
+    num2 = 3;
+
+function numbers () {
+  return num1 + num2;
+}
+
+console.log(num1); // 2
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/precision_range/index.html b/files/fr/web/javascript/reference/errors/precision_range/index.html deleted file mode 100644 index 52adf5bcd1..0000000000 --- a/files/fr/web/javascript/reference/errors/precision_range/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: 'RangeError: precision is out of range' -slug: Web/JavaScript/Reference/Errors/Precision_range -tags: - - Erreurs - - JavaScript - - RangeError -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 :

- - - -

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
-77.1234.toExponential(101); // RangeError
-
-2.34.toFixed(-100);         // RangeError
-2.34.toFixed(1001);         // RangeError
-
-1234.5.toPrecision(-1);     // RangeError
-1234.5.toPrecision(101);    // RangeError
-
- -

Exemples valides

- -
77.1234.toExponential(4); // 7.7123e+1
-77.1234.toExponential(2); // 7.71e+1
-
-2.34.toFixed(1); // 2.3
-2.35.toFixed(1); // 2.4 (note that it rounds up in this case)
-
-5.123456.toPrecision(5); // 5.1235
-5.123456.toPrecision(2); // 5.1
-5.123456.toPrecision(1); // 5
-
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/precision_range/index.md b/files/fr/web/javascript/reference/errors/precision_range/index.md new file mode 100644 index 0000000000..52adf5bcd1 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/precision_range/index.md @@ -0,0 +1,99 @@ +--- +title: 'RangeError: precision is out of range' +slug: Web/JavaScript/Reference/Errors/Precision_range +tags: + - Erreurs + - JavaScript + - RangeError +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 :

+ + + +

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
+77.1234.toExponential(101); // RangeError
+
+2.34.toFixed(-100);         // RangeError
+2.34.toFixed(1001);         // RangeError
+
+1234.5.toPrecision(-1);     // RangeError
+1234.5.toPrecision(101);    // RangeError
+
+ +

Exemples valides

+ +
77.1234.toExponential(4); // 7.7123e+1
+77.1234.toExponential(2); // 7.71e+1
+
+2.34.toFixed(1); // 2.3
+2.35.toFixed(1); // 2.4 (note that it rounds up in this case)
+
+5.123456.toPrecision(5); // 5.1235
+5.123456.toPrecision(2); // 5.1
+5.123456.toPrecision(1); // 5
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/property_access_denied/index.html b/files/fr/web/javascript/reference/errors/property_access_denied/index.html deleted file mode 100644 index cb7818d3c3..0000000000 --- a/files/fr/web/javascript/reference/errors/property_access_denied/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 'Error: Permission denied to access property "x"' -slug: Web/JavaScript/Reference/Errors/Property_access_denied -tags: - - Erreurs - - Error - - JavaScript - - Sécurité -translation_of: Web/JavaScript/Reference/Errors/Property_access_denied -original_slug: Web/JavaScript/Reference/Erreurs/Property_access_denied ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Error: Permission denied to access property "x"
-
- -

Type d'erreur

- -

{{jsxref("Error")}}.

- -

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.

- -

Exemples

- -
<!DOCTYPE html>
-<html>
-  <head>
-    <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
-    <script>
-      onload = function() {
-        console.log(frames[0].document);
-        // Error: Permission denied to access property "document"
-      }
-    </script>
-  </head>
-  <body></body>
-</html>
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..cb7818d3c3 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/property_access_denied/index.md @@ -0,0 +1,48 @@ +--- +title: 'Error: Permission denied to access property "x"' +slug: Web/JavaScript/Reference/Errors/Property_access_denied +tags: + - Erreurs + - Error + - JavaScript + - Sécurité +translation_of: Web/JavaScript/Reference/Errors/Property_access_denied +original_slug: Web/JavaScript/Reference/Erreurs/Property_access_denied +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Error: Permission denied to access property "x"
+
+ +

Type d'erreur

+ +

{{jsxref("Error")}}.

+ +

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.

+ +

Exemples

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
+    <script>
+      onload = function() {
+        console.log(frames[0].document);
+        // Error: Permission denied to access property "document"
+      }
+    </script>
+  </head>
+  <body></body>
+</html>
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/read-only/index.html b/files/fr/web/javascript/reference/errors/read-only/index.html deleted file mode 100644 index d46e5a80e7..0000000000 --- a/files/fr/web/javascript/reference/errors/read-only/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: 'TypeError: "x" is read-only' -slug: Web/JavaScript/Reference/Errors/Read-only -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Read-only -original_slug: Web/JavaScript/Reference/Erreurs/Read-only ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

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).

- -

Cette erreur ne se produit qu'avec le mode strict. En mode non-strict, l'affectation est ignorée silencieusement.

- -

Exemples

- -

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()")}}.

- -
"use strict";
-var obj = Object.freeze({name: "Elsa", score: 157});
-obj.score = 0;  // TypeError
-
-"use strict";
-Object.defineProperty(this, "NB_POUMONS", {value: 2, writable: false});
-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.

- -
"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 :

- -
"use strict";
-undefined = function () {};
-// TypeError: "undefined" is read-only
-
- -

Exemples valides

- -
"use strict";
-var obj = Object.freeze({name: "Score", points: 157});
-obj = {name: obj.name, points: 0};
-// En changeant d'objet, ça fonctionne
-
-"use strict";
-var NB_POUMONS = 2;  // `var` fonctionne
-NB_POUMONS = 3;  // ok
-
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/read-only/index.md b/files/fr/web/javascript/reference/errors/read-only/index.md new file mode 100644 index 0000000000..d46e5a80e7 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/read-only/index.md @@ -0,0 +1,81 @@ +--- +title: 'TypeError: "x" is read-only' +slug: Web/JavaScript/Reference/Errors/Read-only +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Read-only +original_slug: Web/JavaScript/Reference/Erreurs/Read-only +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

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).

+ +

Cette erreur ne se produit qu'avec le mode strict. En mode non-strict, l'affectation est ignorée silencieusement.

+ +

Exemples

+ +

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()")}}.

+ +
"use strict";
+var obj = Object.freeze({name: "Elsa", score: 157});
+obj.score = 0;  // TypeError
+
+"use strict";
+Object.defineProperty(this, "NB_POUMONS", {value: 2, writable: false});
+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.

+ +
"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 :

+ +
"use strict";
+undefined = function () {};
+// TypeError: "undefined" is read-only
+
+ +

Exemples valides

+ +
"use strict";
+var obj = Object.freeze({name: "Score", points: 157});
+obj = {name: obj.name, points: 0};
+// En changeant d'objet, ça fonctionne
+
+"use strict";
+var NB_POUMONS = 2;  // `var` fonctionne
+NB_POUMONS = 3;  // ok
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/redeclared_parameter/index.html b/files/fr/web/javascript/reference/errors/redeclared_parameter/index.html deleted file mode 100644 index 55c0e38653..0000000000 --- a/files/fr/web/javascript/reference/errors/redeclared_parameter/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 'SyntaxError: redeclaration of formal parameter "x"' -slug: Web/JavaScript/Reference/Errors/Redeclared_parameter -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter -original_slug: Web/JavaScript/Reference/Erreurs/Redeclared_parameter ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Let/Const redeclaration (Edge)
-SyntaxError: redeclaration of formal parameter "x" (Firefox)
-SyntaxError: Identifier "x" has already been declared (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Dans le fragment de code qui suit, la variable arg redéclare l'argument passé à la fonction.

- -
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.

- -
function f(arg) {
-  arg = "toto";
-}
-
-function f(arg) {
-  let truc = "toto";
-}
-
- -

Notes de compatibilité

- - - -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md b/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md new file mode 100644 index 0000000000..55c0e38653 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/redeclared_parameter/index.md @@ -0,0 +1,63 @@ +--- +title: 'SyntaxError: redeclaration of formal parameter "x"' +slug: Web/JavaScript/Reference/Errors/Redeclared_parameter +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter +original_slug: Web/JavaScript/Reference/Erreurs/Redeclared_parameter +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Let/Const redeclaration (Edge)
+SyntaxError: redeclaration of formal parameter "x" (Firefox)
+SyntaxError: Identifier "x" has already been declared (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Dans le fragment de code qui suit, la variable arg redéclare l'argument passé à la fonction.

+ +
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.

+ +
function f(arg) {
+  arg = "toto";
+}
+
+function f(arg) {
+  let truc = "toto";
+}
+
+ +

Notes de compatibilité

+ + + +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html b/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html deleted file mode 100644 index 4afa3f08ed..0000000000 --- a/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 'TypeError: Reduce of empty array with no initial value' -slug: Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value -tags: - - Error - - JavaScript - - Reference - - TypeError -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")}}
- -

Message

- -
TypeError: reduce of empty array with no initial value
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}

- -

Quel est le problème ?

- -

En JavaScript, il existe plusieurs fonctions qui permettent de réduire un tableau :

- - - -

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 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.

- -
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:

- -
var names = document.getElementsByClassName("names");
-var name_list = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
-
- -

Exemples valides

- -

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).

- -
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.

- -
var names = document.getElementsByClassName("names");
-
-var nameList1 = "";
-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) => {
-  if (acc == "") // la valeur initiale
-    return name;
-  return acc + ", " + name;
-}, "");
-// nameList2 == "" lorsque names est vide
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..4afa3f08ed --- /dev/null +++ b/files/fr/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.md @@ -0,0 +1,89 @@ +--- +title: 'TypeError: Reduce of empty array with no initial value' +slug: Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value +tags: + - Error + - JavaScript + - Reference + - TypeError +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")}}
+ +

Message

+ +
TypeError: reduce of empty array with no initial value
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}

+ +

Quel est le problème ?

+ +

En JavaScript, il existe plusieurs fonctions qui permettent de réduire un tableau :

+ + + +

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 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.

+ +
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:

+ +
var names = document.getElementsByClassName("names");
+var name_list = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
+
+ +

Exemples valides

+ +

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).

+ +
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.

+ +
var names = document.getElementsByClassName("names");
+
+var nameList1 = "";
+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) => {
+  if (acc == "") // la valeur initiale
+    return name;
+  return acc + ", " + name;
+}, "");
+// nameList2 == "" lorsque names est vide
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/reserved_identifier/index.html b/files/fr/web/javascript/reference/errors/reserved_identifier/index.html deleted file mode 100644 index f632ea336e..0000000000 --- a/files/fr/web/javascript/reference/errors/reserved_identifier/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: 'SyntaxError: "x" is a reserved identifier' -slug: Web/JavaScript/Reference/Errors/Reserved_identifier -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier -original_slug: Web/JavaScript/Reference/Erreurs/Reserved_identifier ---- -
{{jsSidebar("Errors")}}
- -

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)
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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 :

- - - -

Voici les mots-clés uniquement réservés en mode strict :

- - - -

Exemples

- -

Mots-clés réservés en modes strict et non-strict

- -

L'identifiant enum est réservé dans les différents cas :

- -
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 :

- -
"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 :

- -
var enumCouleurs = { RED: 0, GREEN: 1, BLUE: 2 };
-var liste = ["pomme", "poire", "pêches"];
- -

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 :

- -
"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

- - diff --git a/files/fr/web/javascript/reference/errors/reserved_identifier/index.md b/files/fr/web/javascript/reference/errors/reserved_identifier/index.md new file mode 100644 index 0000000000..f632ea336e --- /dev/null +++ b/files/fr/web/javascript/reference/errors/reserved_identifier/index.md @@ -0,0 +1,82 @@ +--- +title: 'SyntaxError: "x" is a reserved identifier' +slug: Web/JavaScript/Reference/Errors/Reserved_identifier +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier +original_slug: Web/JavaScript/Reference/Erreurs/Reserved_identifier +--- +
{{jsSidebar("Errors")}}
+ +

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)
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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 :

+ + + +

Voici les mots-clés uniquement réservés en mode strict :

+ + + +

Exemples

+ +

Mots-clés réservés en modes strict et non-strict

+ +

L'identifiant enum est réservé dans les différents cas :

+ +
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 :

+ +
"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 :

+ +
var enumCouleurs = { RED: 0, GREEN: 1, BLUE: 2 };
+var liste = ["pomme", "poire", "pêches"];
+ +

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 :

+ +
"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

+ + diff --git a/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.html b/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.html deleted file mode 100644 index 78ad63d9f3..0000000000 --- a/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: 'RangeError: repeat count must be less than infinity' -slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large -tags: - - Erreurs - - JavaScript - - RangeError -translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large -original_slug: Web/JavaScript/Reference/Erreurs/Resulting_string_too_large ---- -
{{jsSidebar("Errors")}}
- -

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)
-
- -

Type d'erreur

- -

{{jsxref("RangeError")}}

- -

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 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 invalides

- -
'abc'.repeat(Infinity); // RangeError
-'a'.repeat(2**28);      // RangeError
-
- -

Exemples valides

- -
'abc'.repeat(0);    // ''
-'abc'.repeat(1);    // 'abc'
-'abc'.repeat(2);    // 'abcabc'
-'abc'.repeat(3.5);  // 'abcabcabc' (count will be converted to integer)
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..78ad63d9f3 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/resulting_string_too_large/index.md @@ -0,0 +1,50 @@ +--- +title: 'RangeError: repeat count must be less than infinity' +slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large +tags: + - Erreurs + - JavaScript + - RangeError +translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large +original_slug: Web/JavaScript/Reference/Erreurs/Resulting_string_too_large +--- +
{{jsSidebar("Errors")}}
+ +

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)
+
+ +

Type d'erreur

+ +

{{jsxref("RangeError")}}

+ +

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 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 invalides

+ +
'abc'.repeat(Infinity); // RangeError
+'a'.repeat(2**28);      // RangeError
+
+ +

Exemples valides

+ +
'abc'.repeat(0);    // ''
+'abc'.repeat(1);    // 'abc'
+'abc'.repeat(2);    // 'abcabc'
+'abc'.repeat(3.5);  // 'abcabcabc' (count will be converted to integer)
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/stmt_after_return/index.html b/files/fr/web/javascript/reference/errors/stmt_after_return/index.html deleted file mode 100644 index 4d506a6285..0000000000 --- a/files/fr/web/javascript/reference/errors/stmt_after_return/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: 'Warning: unreachable code after return statement' -slug: Web/JavaScript/Reference/Errors/Stmt_after_return -tags: - - JavaScript - - Warning -translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return -original_slug: Web/JavaScript/Reference/Erreurs/Stmt_after_return ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Warning: unreachable code after return statement (Firefox)
-
- -

Type d'erreur

- -

Avertissement

- -

Quel est le problème ?

- -

Ce problème peut avoir deux origines :

- - - -

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.

- -

Les avertissements ne seront pas affichés pour les return sans point-virgule si ces instructions suivent :

- - - -

Exemples

- -

Exemples invalides

- -
function f() {
-  var x = 3;
-  x += 4;
-  return x;   // return permet de finir la fonction sur le champ
-  x -= 3;     // Cette ligne ne sera jamais lue donc exécutée
-}
-
-function f() {
-  return     // Cette instruction est traitée `return;`
-    3 + 4;   // La fonction termine et cette ligne n'est jamais traitée
-}
-
- -

Exemples valides

- -
function f() {
-  var x = 3;
-  x += 4;
-  x -= 3;
-  return x;  // OK : return est après
-             // toutes les autres instructions
-}
-
-function f() {
-  return 3 + 4  // OK : un return sans point-virgule
-                // avec une expression sur la même ligne
-}
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..4d506a6285 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/stmt_after_return/index.md @@ -0,0 +1,80 @@ +--- +title: 'Warning: unreachable code after return statement' +slug: Web/JavaScript/Reference/Errors/Stmt_after_return +tags: + - JavaScript + - Warning +translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return +original_slug: Web/JavaScript/Reference/Erreurs/Stmt_after_return +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Warning: unreachable code after return statement (Firefox)
+
+ +

Type d'erreur

+ +

Avertissement

+ +

Quel est le problème ?

+ +

Ce problème peut avoir deux origines :

+ + + +

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.

+ +

Les avertissements ne seront pas affichés pour les return sans point-virgule si ces instructions suivent :

+ + + +

Exemples

+ +

Exemples invalides

+ +
function f() {
+  var x = 3;
+  x += 4;
+  return x;   // return permet de finir la fonction sur le champ
+  x -= 3;     // Cette ligne ne sera jamais lue donc exécutée
+}
+
+function f() {
+  return     // Cette instruction est traitée `return;`
+    3 + 4;   // La fonction termine et cette ligne n'est jamais traitée
+}
+
+ +

Exemples valides

+ +
function f() {
+  var x = 3;
+  x += 4;
+  x -= 3;
+  return x;  // OK : return est après
+             // toutes les autres instructions
+}
+
+function f() {
+  return 3 + 4  // OK : un return sans point-virgule
+                // avec une expression sur la même ligne
+}
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.html b/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.html deleted file mode 100644 index 26abbf3a40..0000000000 --- a/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: 'SyntaxError: "use strict" not allowed in function with "x" parameter' -slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params -tags: - - Erreurs - - JavaScript - - Reference - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params -original_slug: Web/JavaScript/Reference/Erreurs/Strict_Non_Simple_Params ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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
-
-Chrome:
-SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}.

- -

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 :

- - - -

Selon la spécification ECMAScript, une directive "use strict" ne peut pas être utilisée pour de telles fonctions.

- -

Exemples

- -

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.

- -
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.

- -
"use strict";
-function somme(a = 1, b = 2) {
-  return a + b;
-}
-
- -

Expression de fonction

- -

Il est également possible d'utiliser les expressions de fonction pour résoudre ce problème :

- -
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 :

- -
var somme = (function() {
-  "use strict";
-  return function somme([a, b]) {
-    return a + b;
-  };
-})();
-
- -

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 :

- -
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.

- -
var callback = (() => {
-  "use strict";
-  return (...args) => {
-    return this.run(args);
-  };
-})();
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..26abbf3a40 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/strict_non_simple_params/index.md @@ -0,0 +1,116 @@ +--- +title: 'SyntaxError: "use strict" not allowed in function with "x" parameter' +slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +tags: + - Erreurs + - JavaScript + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +original_slug: Web/JavaScript/Reference/Erreurs/Strict_Non_Simple_Params +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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
+
+Chrome:
+SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}.

+ +

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 :

+ + + +

Selon la spécification ECMAScript, une directive "use strict" ne peut pas être utilisée pour de telles fonctions.

+ +

Exemples

+ +

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.

+ +
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.

+ +
"use strict";
+function somme(a = 1, b = 2) {
+  return a + b;
+}
+
+ +

Expression de fonction

+ +

Il est également possible d'utiliser les expressions de fonction pour résoudre ce problème :

+ +
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 :

+ +
var somme = (function() {
+  "use strict";
+  return function somme([a, b]) {
+    return a + b;
+  };
+})();
+
+ +

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 :

+ +
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.

+ +
var callback = (() => {
+  "use strict";
+  return (...args) => {
+    return this.run(args);
+  };
+})();
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/too_much_recursion/index.html b/files/fr/web/javascript/reference/errors/too_much_recursion/index.html deleted file mode 100644 index 097eff25b7..0000000000 --- a/files/fr/web/javascript/reference/errors/too_much_recursion/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: 'InternalError: too much recursion' -slug: Web/JavaScript/Reference/Errors/Too_much_recursion -tags: - - Erreurs - - InternalError - - JavaScript - - Reference -translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion -original_slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Error: Out of stack space (Edge)
-InternalError: too much recursion (Firefox)
-RangeError: Maximum call stack size exceeded (Chrome)
-
- -

Type d'erreur

- -

{{jsxref("InternalError")}}.

- -

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.

- -

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

- -

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
-    return;
-  // do stuff
-  loop(x + 1); // the recursive call
-}
-loop(0);
- -

Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas :

- -
function loop(x) {
-  if (x >= 1000000000000)
-    return;
-  // do stuff
-  loop(x + 1);
-}
-loop(0);
-
-// 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.

- -
function boucle(x) {
-  boucle(x + 1);
-  // il n'y a pas de cas initial
-}
-
-boucle(0);
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..097eff25b7 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/too_much_recursion/index.md @@ -0,0 +1,70 @@ +--- +title: 'InternalError: too much recursion' +slug: Web/JavaScript/Reference/Errors/Too_much_recursion +tags: + - Erreurs + - InternalError + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion +original_slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Error: Out of stack space (Edge)
+InternalError: too much recursion (Firefox)
+RangeError: Maximum call stack size exceeded (Chrome)
+
+ +

Type d'erreur

+ +

{{jsxref("InternalError")}}.

+ +

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.

+ +

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

+ +

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
+    return;
+  // do stuff
+  loop(x + 1); // the recursive call
+}
+loop(0);
+ +

Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas :

+ +
function loop(x) {
+  if (x >= 1000000000000)
+    return;
+  // do stuff
+  loop(x + 1);
+}
+loop(0);
+
+// 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.

+ +
function boucle(x) {
+  boucle(x + 1);
+  // il n'y a pas de cas initial
+}
+
+boucle(0);
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/undeclared_var/index.html b/files/fr/web/javascript/reference/errors/undeclared_var/index.html deleted file mode 100644 index 26293dc271..0000000000 --- a/files/fr/web/javascript/reference/errors/undeclared_var/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 'ReferenceError: assignment to undeclared variable "x"' -slug: Web/JavaScript/Reference/Errors/Undeclared_var -tags: - - Erreurs - - JavaScript - - ReferenceError -translation_of: Web/JavaScript/Reference/Errors/Undeclared_var -original_slug: Web/JavaScript/Reference/Erreurs/Undeclared_var ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
ReferenceError: assignment to undeclared variable "x" (Firefox)
-ReferenceError: "x" is not defined (Chrome)
-ReferenceError: Variable undefined in strict mode (Edge)
-
- -

Type d'erreur

- -

Une erreur {{jsxref("ReferenceError")}}, uniquement en mode strict.

- -

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.

- -

Trois choses à noter lorsqu'on évoque les variables déclarées/non déclarées :

- - - -

Pour plus de détails et d'exemple, se référer à la page sur 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.

- -

Exemples

- -

Exemples invalides

- -

Ici, la variable truc n'est pas déclarée :

- -
function toto() {
-  "use strict";
-  truc = true;
-}
-toto(); // ReferenceError: assignment to undeclared variable truc
-
- -

Exemples valides

- -

Afin de déclarer truc, on peut ajouter le mot-clé var devant.

- -
function toto() {
-  "use strict";
-  var truc = true;
-}
-toto();
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/undeclared_var/index.md b/files/fr/web/javascript/reference/errors/undeclared_var/index.md new file mode 100644 index 0000000000..26293dc271 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/undeclared_var/index.md @@ -0,0 +1,67 @@ +--- +title: 'ReferenceError: assignment to undeclared variable "x"' +slug: Web/JavaScript/Reference/Errors/Undeclared_var +tags: + - Erreurs + - JavaScript + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Undeclared_var +original_slug: Web/JavaScript/Reference/Erreurs/Undeclared_var +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
ReferenceError: assignment to undeclared variable "x" (Firefox)
+ReferenceError: "x" is not defined (Chrome)
+ReferenceError: Variable undefined in strict mode (Edge)
+
+ +

Type d'erreur

+ +

Une erreur {{jsxref("ReferenceError")}}, uniquement en mode strict.

+ +

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.

+ +

Trois choses à noter lorsqu'on évoque les variables déclarées/non déclarées :

+ + + +

Pour plus de détails et d'exemple, se référer à la page sur 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.

+ +

Exemples

+ +

Exemples invalides

+ +

Ici, la variable truc n'est pas déclarée :

+ +
function toto() {
+  "use strict";
+  truc = true;
+}
+toto(); // ReferenceError: assignment to undeclared variable truc
+
+ +

Exemples valides

+ +

Afin de déclarer truc, on peut ajouter le mot-clé var devant.

+ +
function toto() {
+  "use strict";
+  var truc = true;
+}
+toto();
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/undefined_prop/index.html b/files/fr/web/javascript/reference/errors/undefined_prop/index.html deleted file mode 100644 index b3b000d302..0000000000 --- a/files/fr/web/javascript/reference/errors/undefined_prop/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'ReferenceError: reference to undefined property "x"' -slug: Web/JavaScript/Reference/Errors/Undefined_prop -tags: - - Erreurs - - JavaScript - - Reference - - ReferenceError -translation_of: Web/JavaScript/Reference/Errors/Undefined_prop -original_slug: Web/JavaScript/Reference/Erreurs/Undefined_prop ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
ReferenceError: reference to undefined property "x" (Firefox)
-
- -

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.

- -

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é.

- -

Exemples

- -

Exemples invalides

- -

Ici, la propriété truc n'est pas une propriété définie et on obtient alors une ReferenceError.

- -
"use strict";
-
-var toto = {};
-toto.truc; // ReferenceError: reference to undefined property "bar"
-
- -

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()")}}).

- -
"use strict";
-
-var toto = {};
-
-toto.truc = "lune";
-console.log(toto.truc); // "lune"
-
-if (foo.hasOwnProperty("truc")) {
-  console.log(toto.truc);
-}
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/undefined_prop/index.md b/files/fr/web/javascript/reference/errors/undefined_prop/index.md new file mode 100644 index 0000000000..b3b000d302 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/undefined_prop/index.md @@ -0,0 +1,58 @@ +--- +title: 'ReferenceError: reference to undefined property "x"' +slug: Web/JavaScript/Reference/Errors/Undefined_prop +tags: + - Erreurs + - JavaScript + - Reference + - ReferenceError +translation_of: Web/JavaScript/Reference/Errors/Undefined_prop +original_slug: Web/JavaScript/Reference/Erreurs/Undefined_prop +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
ReferenceError: reference to undefined property "x" (Firefox)
+
+ +

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.

+ +

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é.

+ +

Exemples

+ +

Exemples invalides

+ +

Ici, la propriété truc n'est pas une propriété définie et on obtient alors une ReferenceError.

+ +
"use strict";
+
+var toto = {};
+toto.truc; // ReferenceError: reference to undefined property "bar"
+
+ +

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()")}}).

+ +
"use strict";
+
+var toto = {};
+
+toto.truc = "lune";
+console.log(toto.truc); // "lune"
+
+if (foo.hasOwnProperty("truc")) {
+  console.log(toto.truc);
+}
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/unexpected_token/index.html b/files/fr/web/javascript/reference/errors/unexpected_token/index.html deleted file mode 100644 index 771455c514..0000000000 --- a/files/fr/web/javascript/reference/errors/unexpected_token/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'SyntaxError: Unexpected token' -slug: Web/JavaScript/Reference/Errors/Unexpected_token -tags: - - Erreurs - - JavaScript - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Unexpected_token -original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_token ---- -
{{jsSidebar("Errors")}}
- -

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"
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Expression attendue

- -

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) {
-  console.log(i);
-}
-// SyntaxError: expected expression, got ')'
-
- -

Pour corriger cette erreur, on peut retirer la virgule superflue ou bien ajouter une autre expression :

- -
for (let i = 0; i < 5; ++i) {
-  console.log(i);
-}
-
- -

Parenthèses manquantes

- -

Il peut également arriver que des parenthèses manquent autour des instructions if :

- -
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)){
-    return lowerBound;
-  }else{
-    return upperBound;
-  }
-} // 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.

- -

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)){
-    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
-  }else if(n < ((upperBound + lowerBound)/2)){
-    return lowerBound;
-  }else{
-    return upperBound;
-  }
-}
-
diff --git a/files/fr/web/javascript/reference/errors/unexpected_token/index.md b/files/fr/web/javascript/reference/errors/unexpected_token/index.md new file mode 100644 index 0000000000..771455c514 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/unexpected_token/index.md @@ -0,0 +1,78 @@ +--- +title: 'SyntaxError: Unexpected token' +slug: Web/JavaScript/Reference/Errors/Unexpected_token +tags: + - Erreurs + - JavaScript + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Unexpected_token +original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_token +--- +
{{jsSidebar("Errors")}}
+ +

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"
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Expression attendue

+ +

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) {
+  console.log(i);
+}
+// SyntaxError: expected expression, got ')'
+
+ +

Pour corriger cette erreur, on peut retirer la virgule superflue ou bien ajouter une autre expression :

+ +
for (let i = 0; i < 5; ++i) {
+  console.log(i);
+}
+
+ +

Parenthèses manquantes

+ +

Il peut également arriver que des parenthèses manquent autour des instructions if :

+ +
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)){
+    return lowerBound;
+  }else{
+    return upperBound;
+  }
+} // 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.

+ +

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)){
+    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
+  }else if(n < ((upperBound + lowerBound)/2)){
+    return lowerBound;
+  }else{
+    return upperBound;
+  }
+}
+
diff --git a/files/fr/web/javascript/reference/errors/unexpected_type/index.html b/files/fr/web/javascript/reference/errors/unexpected_type/index.html deleted file mode 100644 index 6b54febd7b..0000000000 --- a/files/fr/web/javascript/reference/errors/unexpected_type/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'TypeError: "x" is (not) "y"' -slug: Web/JavaScript/Reference/Errors/Unexpected_type -tags: - - Erreurs - - JavaScript - - Reference - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Unexpected_type -original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_type ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
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
-
- -

Type d'erreur

- -

{{jsxref("TypeError")}}.

- -

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")}}.

- -

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 invalides

- -
// undefined et null : des valeurs
-// sur lesquelles la méthode substring
-// ne fonctionnera pas
-var toto = undefined;
-toto.substring(1); // TypeError: toto is undefined
-
-var toto = null;
-toto.substring(1); // TypeError: toto is null
-
-
-// Certaines méthodes nécessitent une valeur
-// d'un type spécifique
-var toto = {}
-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

- -

Pour résoudre ce problème et écarter les cas où la valeur vaut undefined, on peut par exemple utiliser l'opérateur typeof.

- -
if (typeof toto !== 'undefined') {
-  // Désormais, on sait que toto est bien
-  // défini et on peut poursuivre.
-}
- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/errors/unexpected_type/index.md b/files/fr/web/javascript/reference/errors/unexpected_type/index.md new file mode 100644 index 0000000000..6b54febd7b --- /dev/null +++ b/files/fr/web/javascript/reference/errors/unexpected_type/index.md @@ -0,0 +1,74 @@ +--- +title: 'TypeError: "x" is (not) "y"' +slug: Web/JavaScript/Reference/Errors/Unexpected_type +tags: + - Erreurs + - JavaScript + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Unexpected_type +original_slug: Web/JavaScript/Reference/Erreurs/Unexpected_type +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
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
+
+ +

Type d'erreur

+ +

{{jsxref("TypeError")}}.

+ +

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")}}.

+ +

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 invalides

+ +
// undefined et null : des valeurs
+// sur lesquelles la méthode substring
+// ne fonctionnera pas
+var toto = undefined;
+toto.substring(1); // TypeError: toto is undefined
+
+var toto = null;
+toto.substring(1); // TypeError: toto is null
+
+
+// Certaines méthodes nécessitent une valeur
+// d'un type spécifique
+var toto = {}
+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

+ +

Pour résoudre ce problème et écarter les cas où la valeur vaut undefined, on peut par exemple utiliser l'opérateur typeof.

+ +
if (typeof toto !== 'undefined') {
+  // Désormais, on sait que toto est bien
+  // défini et on peut poursuivre.
+}
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.html deleted file mode 100644 index 286bd78e7e..0000000000 --- a/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: 'SyntaxError: function statement requires a name' -slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement -tags: - - Erreurs - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement -original_slug: Web/JavaScript/Reference/Erreurs/Unnamed_function_statement ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
Syntax Error: Expected identifier (Edge)
-SyntaxError: function statement requires a name [Firefox]
-SyntaxError: Unexpected token ( [Chrome]
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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.

- -

Exemples

- -

Déclaration / Expression

- -

Une déclaration de fonction requiert un nom. Le fragment de code suivant ne fonctionnera pas :

- -
function () {
-  return 'Coucou monde :)';
-}
-// SyntaxError: function statement requires a name
-
- -

On peut utiliser une expression de fonction à la place :

- -
var salutations = function() {
-  return 'Coucou monde :)';
-};
- -

Si la fonction devait être appelé immédiatement, il suffit d'ajouter des parenthèses autour :

- -
(function () {
-
-})();
- -

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 :

- -
function Greeter() {
-  german: function () {
-    return "Moin";
-  }
-}
-// SyntaxError: function statement requires a name
-
- -

En revanche, ceci fonctionnera :

- -
function Greeter() {
-  german: function g() {
-    return "Moin";
-  }
-}
- -

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 :

- -
var greeter = {
-  german: function () {
-    return "Moin";
-  }
-};
- -

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 :

- -
promise.then(
-  function() {
-    console.log("success");
-  });
-  function() {
-    console.log("error");
-}
-// SyntaxError: function statement requires a name
-
- -

La forme correcte serait :

- -
promise.then(
-  function() {
-    console.log("success");
-  },
-  function() {
-    console.log("error");
-  }
-);
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..286bd78e7e --- /dev/null +++ b/files/fr/web/javascript/reference/errors/unnamed_function_statement/index.md @@ -0,0 +1,116 @@ +--- +title: 'SyntaxError: function statement requires a name' +slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement +tags: + - Erreurs + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement +original_slug: Web/JavaScript/Reference/Erreurs/Unnamed_function_statement +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
Syntax Error: Expected identifier (Edge)
+SyntaxError: function statement requires a name [Firefox]
+SyntaxError: Unexpected token ( [Chrome]
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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.

+ +

Exemples

+ +

Déclaration / Expression

+ +

Une déclaration de fonction requiert un nom. Le fragment de code suivant ne fonctionnera pas :

+ +
function () {
+  return 'Coucou monde :)';
+}
+// SyntaxError: function statement requires a name
+
+ +

On peut utiliser une expression de fonction à la place :

+ +
var salutations = function() {
+  return 'Coucou monde :)';
+};
+ +

Si la fonction devait être appelé immédiatement, il suffit d'ajouter des parenthèses autour :

+ +
(function () {
+
+})();
+ +

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 :

+ +
function Greeter() {
+  german: function () {
+    return "Moin";
+  }
+}
+// SyntaxError: function statement requires a name
+
+ +

En revanche, ceci fonctionnera :

+ +
function Greeter() {
+  german: function g() {
+    return "Moin";
+  }
+}
+ +

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 :

+ +
var greeter = {
+  german: function () {
+    return "Moin";
+  }
+};
+ +

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 :

+ +
promise.then(
+  function() {
+    console.log("success");
+  });
+  function() {
+    console.log("error");
+}
+// SyntaxError: function statement requires a name
+
+ +

La forme correcte serait :

+ +
promise.then(
+  function() {
+    console.log("success");
+  },
+  function() {
+    console.log("error");
+  }
+);
+
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.html b/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.html deleted file mode 100644 index f6ad8afa09..0000000000 --- a/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'SyntaxError: unterminated string literal' -slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal -tags: - - Erreurs - - JavaScript - - Reference - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal -original_slug: Web/JavaScript/Reference/Erreurs/Unterminated_string_literal ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
SyntaxError: Unterminated string constant (Edge)
-SyntaxError: unterminated string literal (Firefox)
-
- -

Type d'erreur

- -

{{jsxref("SyntaxError")}}

- -

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 :

- - - -

Exemples

- -

Gérer plusieurs lignes

- -

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
-                  to wrap across multiple lines because
-                  otherwise my code is unreadable.";
-// SyntaxError: unterminated string literal
- -

Pour écrire une chaîne sur plusieurs lignes, on pourra utiliser :

- - - -

Voici la première variante avec l'opérateur de concaténation :

- -
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) :

- -
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 :

- -
var longString = `This is a very long string which needs
-                  to wrap across multiple lines because
-                  otherwise my code is unreadable.`;
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..f6ad8afa09 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/unterminated_string_literal/index.md @@ -0,0 +1,78 @@ +--- +title: 'SyntaxError: unterminated string literal' +slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal +tags: + - Erreurs + - JavaScript + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal +original_slug: Web/JavaScript/Reference/Erreurs/Unterminated_string_literal +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
SyntaxError: Unterminated string constant (Edge)
+SyntaxError: unterminated string literal (Firefox)
+
+ +

Type d'erreur

+ +

{{jsxref("SyntaxError")}}

+ +

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 :

+ + + +

Exemples

+ +

Gérer plusieurs lignes

+ +

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
+                  to wrap across multiple lines because
+                  otherwise my code is unreadable.";
+// SyntaxError: unterminated string literal
+ +

Pour écrire une chaîne sur plusieurs lignes, on pourra utiliser :

+ + + +

Voici la première variante avec l'opérateur de concaténation :

+ +
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) :

+ +
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 :

+ +
var longString = `This is a very long string which needs
+                  to wrap across multiple lines because
+                  otherwise my code is unreadable.`;
+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/errors/var_hides_argument/index.html b/files/fr/web/javascript/reference/errors/var_hides_argument/index.html deleted file mode 100644 index dda8687316..0000000000 --- a/files/fr/web/javascript/reference/errors/var_hides_argument/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: 'TypeError: variable "x" redeclares argument' -slug: Web/JavaScript/Reference/Errors/Var_hides_argument -tags: - - Erreurs - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument -original_slug: Web/JavaScript/Reference/Erreurs/Var_hides_argument ---- -
{{jsSidebar("Errors")}}
- -

Message

- -
TypeError: variable "x" redeclares argument (Firefox)
-
- -

Type d'erreur

- -

Une erreur {{jsxref("TypeError")}}, uniquement en mode strict.

- -

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.

- -

Cette erreur ne se produit qu'en mode strict. Pour du code non-strict, la redéclaration est ignorée silencieusement..

- -

Exemples

- -

Exemples invalides

- -

Ici, la variable arg redéclare l'argument de la fonction :

- -
"use strict";
-
-function f(arg) {
-  var arg = "foo";
-}
-
- -

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é.

- -
"use strict";
-
-function f(arg) {
-  arg = "foo";
-}
-
- -

Voir aussi

- - 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 new file mode 100644 index 0000000000..dda8687316 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/var_hides_argument/index.md @@ -0,0 +1,56 @@ +--- +title: 'TypeError: variable "x" redeclares argument' +slug: Web/JavaScript/Reference/Errors/Var_hides_argument +tags: + - Erreurs + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument +original_slug: Web/JavaScript/Reference/Erreurs/Var_hides_argument +--- +
{{jsSidebar("Errors")}}
+ +

Message

+ +
TypeError: variable "x" redeclares argument (Firefox)
+
+ +

Type d'erreur

+ +

Une erreur {{jsxref("TypeError")}}, uniquement en mode strict.

+ +

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.

+ +

Cette erreur ne se produit qu'en mode strict. Pour du code non-strict, la redéclaration est ignorée silencieusement..

+ +

Exemples

+ +

Exemples invalides

+ +

Ici, la variable arg redéclare l'argument de la fonction :

+ +
"use strict";
+
+function f(arg) {
+  var arg = "foo";
+}
+
+ +

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é.

+ +
"use strict";
+
+function f(arg) {
+  arg = "foo";
+}
+
+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf